From 5f975cb0bf8a7e8ddc76bf9a21e99767654caa31 Mon Sep 17 00:00:00 2001 From: will0684 <31868510+will0684@users.noreply.github.com> Date: Tue, 12 Nov 2024 14:40:16 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20=20@=203cf5c?= =?UTF-8?q?934ec80990840fb0b7e2e659883a6e4b32b=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/coverage/clover.xml | 2435 +++++++ main/coverage/coverage-final.json | 167 + main/coverage/lcov-report/base.css | 224 + main/coverage/lcov-report/block-navigation.js | 87 + .../components/atoms/ActionButton.js.html | 829 +++ .../atoms/ActionButton.stories.js.html | 229 + .../components/atoms/Alert.js.html | 235 + .../components/atoms/Alert.stories.js.html | 130 + .../components/atoms/Banner.js.html | 205 + .../components/atoms/Banner.stories.js.html | 133 + .../components/atoms/Breadcrumb.js.html | 286 + .../atoms/Breadcrumb.stories.js.html | 142 + .../components/atoms/CheckBox.js.html | 469 ++ .../components/atoms/CheckBox.stories.js.html | 256 + .../components/atoms/DSButton.js.html | 622 ++ .../components/atoms/DSButton.stories.js.html | 268 + .../components/atoms/DateModified.js.html | 178 + .../atoms/DateModified.stories.js.html | 127 + .../components/atoms/ErrorLabel.js.html | 154 + .../atoms/ErrorLabel.stories.js.html | 127 + .../components/atoms/HTMList.js.html | 163 + .../components/atoms/Image.js.html | 199 + .../components/atoms/Image.stories.js.html | 208 + .../lcov-report/components/atoms/Link.js.html | 445 ++ .../components/atoms/Link.stories.js.html | 253 + .../components/atoms/MultiSelectField.js.html | 796 +++ .../atoms/MultiSelectField.stories.js.html | 250 + .../components/atoms/MultiTextField.js.html | 508 ++ .../atoms/MultiTextField.stories.js.html | 232 + .../components/atoms/ProjectInfo.js.html | 238 + .../atoms/ProjectInfo.stories.js.html | 136 + .../components/atoms/RadioButton.js.html | 418 ++ .../atoms/RadioButton.stories.js.html | 259 + .../components/atoms/RadioField.js.html | 412 ++ .../atoms/RadioField.stories.js.html | 226 + .../components/atoms/SearchBar.js.html | 244 + .../atoms/SearchBar.stories.js.html | 127 + .../components/atoms/SelectField.js.html | 571 ++ .../atoms/SelectField.stories.js.html | 232 + .../components/atoms/TableOfContents.js.html | 187 + .../atoms/TableOfContents.stories.js.html | 130 + .../components/atoms/TextField.js.html | 595 ++ .../atoms/TextField.stories.js.html | 229 + .../components/atoms/UpdateInfo.js.html | 205 + .../lcov-report/components/atoms/index.html | 701 ++ .../fragment_renderer/FragmentRender.js.html | 826 +++ .../FragmentRender.stories.js.html | 4360 +++++++++++++ .../fragment_renderer/PageHead.js.html | 568 ++ .../fragment_components/ArticleCTA.js.html | 124 + .../ArticleCTA.stories.js.html | 151 + .../BasicTextWithImage.js.html | 184 + .../BasicTextWithImage.stories.js.html | 172 + .../fragment_components/Button.js.html | 154 + .../Button.stories.js.html | 160 + .../fragment_components/ImageFragment.js.html | 178 + .../ImageFragment.stories.js.html | 145 + .../ImageVerticalLineContent.js.html | 214 + .../ImageVerticalLineContent.stories.js.html | 475 ++ .../ImageWithCollapse.js.html | 214 + .../ImageWithCollapse.stories.js.html | 157 + .../QuoteVerticalLineContent.js.html | 154 + .../QuoteVerticalLineContent.stories.js.html | 196 + .../fragment_components/TextContent.js.html | 118 + .../TextContent.stories.js.html | 163 + .../fragment_components/TextWithImage.js.html | 220 + .../TextWithImage.stories.js.html | 517 ++ .../fragment_components/index.html | 371 ++ .../components/fragment_renderer/index.html | 146 + .../lcov-report/components/index.html | 116 + .../lcov-report/components/index.js.html | 88 + .../components/molecules/CTA.js.html | 208 + .../components/molecules/CTA.stories.js.html | 175 + .../components/molecules/Card.js.html | 601 ++ .../components/molecules/Card.stories.js.html | 262 + .../components/molecules/Collapse.js.html | 235 + .../molecules/Collapse.stories.js.html | 193 + .../molecules/ContextualAlert.js.html | 448 ++ .../molecules/ContextualAlert.stories.js.html | 295 + .../molecules/CopyToClipboard.js.html | 478 ++ .../molecules/CopyToClipboard.stories.js.html | 151 + .../components/molecules/Details.js.html | 217 + .../molecules/Details.stories.js.html | 136 + .../components/molecules/ErrorBox.js.html | 280 + .../molecules/ErrorBox.stories.js.html | 208 + .../molecules/FeedbackWidget.js.html | 1006 +++ .../molecules/FeedbackWidget.stories.js.html | 130 + .../components/molecules/Filter.js.html | 298 + .../molecules/Filter.stories.js.html | 181 + .../components/molecules/Heading.js.html | 241 + .../molecules/Heading.stories.js.html | 154 + .../components/molecules/List.js.html | 208 + .../components/molecules/List.stories.js.html | 130 + .../components/molecules/MainBand.js.html | 214 + .../components/molecules/Menu.js.html | 448 ++ .../components/molecules/Menu.stories.js.html | 175 + .../molecules/OptionalListField.js.html | 529 ++ .../OptionalListField.stories.js.html | 562 ++ .../molecules/OptionalTextField.js.html | 865 +++ .../OptionalTextField.stories.js.html | 340 + .../components/molecules/Quote.js.html | 193 + .../molecules/Quote.stories.js.html | 133 + .../molecules/SubFooterBand.js.html | 511 ++ .../components/molecules/SurveyCTA.js.html | 166 + .../molecules/SurveyCTA.stories.js.html | 142 + .../molecules/TextButtonField.js.html | 379 ++ .../molecules/TextButtonField.stories.js.html | 220 + .../components/molecules/TopNavBar.js.html | 520 ++ .../molecules/TopNavBar.stories.js.html | 151 + .../components/molecules/index.html | 671 ++ .../organisms/ExploreProjects.js.html | 253 + .../organisms/ExploreProjects.stories.js.html | 382 ++ .../organisms/ExploreUpdates.js.html | 289 + .../organisms/ExploreUpdates.stories.js.html | 874 +++ .../components/organisms/Feedback.js.html | 526 ++ .../components/organisms/Footer.js.html | 511 ++ .../organisms/Footer.stories.js.html | 133 + .../components/organisms/HelpIcon.js.html | 313 + .../organisms/HelpIcon.stories.js.html | 178 + .../components/organisms/Layout.js.html | 805 +++ .../organisms/Layout.stories.js.html | 205 + .../components/organisms/PhaseBanner.js.html | 490 ++ .../organisms/PhaseBanner.stories.js.html | 154 + .../organisms/ReportAProblem.js.html | 1219 ++++ .../organisms/ReportAProblem.stories.js.html | 118 + .../components/organisms/index.html | 326 + .../text_node_renderer/TextRecur.jsx.html | 295 + .../text_node_renderer/TextRender.jsx.html | 160 + .../components/text_node_renderer/index.html | 131 + .../nodes/HeaderText.jsx.html | 181 + .../nodes/LineBreak.jsx.html | 94 + .../text_node_renderer/nodes/Link.jsx.html | 115 + .../nodes/ListItem.jsx.html | 94 + .../nodes/OrderedList.jsx.html | 94 + .../nodes/Paragraph.jsx.html | 94 + .../text_node_renderer/nodes/Span.jsx.html | 94 + .../text_node_renderer/nodes/Text.jsx.html | 118 + .../nodes/UnorderedList.jsx.html | 94 + .../text_node_renderer/nodes/index.html | 236 + main/coverage/lcov-report/favicon.png | Bin 0 -> 445 bytes main/coverage/lcov-report/index.html | 401 ++ .../lcov-report/lib/notify/index.html | 131 + .../lib/notify/postFeedbackToGcNotify.js.html | 142 + .../lib/notify/submitEmail.js.html | 280 + .../lib/utils/createBreadcrumbs.js.html | 121 + .../lcov-report/lib/utils/filterItems.js.html | 106 + .../utils/generateCollapseElements.js.html | 214 + .../lib/utils/getAllUpdateIds.js.html | 133 + .../lib/utils/getDictionaryTerm.js.html | 97 + .../coverage/lcov-report/lib/utils/index.html | 236 + .../lcov-report/lib/utils/maskEmail.js.html | 142 + .../lcov-report/lib/utils/shuffle.js.html | 109 + .../lib/utils/sortUpdatesByDate.js.html | 100 + .../lib/utils/stripFeedback.js.html | 178 + .../lcov-report/middlewares/index.html | 131 + .../middlewares/initMiddleware.js.html | 124 + .../lcov-report/middlewares/joi.js.html | 160 + main/coverage/lcov-report/pages/404.js.html | 820 +++ main/coverage/lcov-report/pages/500.js.html | 907 +++ main/coverage/lcov-report/pages/_app.js.html | 199 + .../lcov-report/pages/api/healthcheck.js.html | 97 + .../coverage/lcov-report/pages/api/index.html | 161 + .../pages/api/report-a-problem.js.html | 274 + .../lcov-report/pages/api/robots.js.html | 142 + .../pages/api/submit-feedback.js.html | 145 + main/coverage/lcov-report/pages/error.js.html | 1438 +++++ main/coverage/lcov-report/pages/home.js.html | 1585 +++++ main/coverage/lcov-report/pages/index.html | 236 + main/coverage/lcov-report/pages/index.js.html | 673 ++ .../lcov-report/pages/notsupported.js.html | 1537 +++++ .../lcov-report/pages/projects.js.html | 799 +++ .../projects/benefits-finder/[id].js.html | 589 ++ .../pages/projects/benefits-finder/index.html | 131 + .../projects/benefits-finder/index.js.html | 1393 ++++ .../projects/benefits-navigator/[id].js.html | 805 +++ .../projects/benefits-navigator/index.html | 131 + .../projects/benefits-navigator/index.js.html | 2200 +++++++ .../pages/projects/dashboard/[id].js.html | 784 +++ .../pages/projects/dashboard/index.html | 131 + .../pages/projects/dashboard/index.js.html | 1369 ++++ .../digital-standards-playbook/[id].js.html | 790 +++ .../digital-standards-playbook/index.html | 131 + .../digital-standards-playbook/index.js.html | 1615 +++++ .../making-easier-get-benefits/[id].js.html | 742 +++ .../making-easier-get-benefits/index.html | 131 + .../making-easier-get-benefits/index.js.html | 1354 ++++ .../oas-benefits-estimator/[id].js.html | 796 +++ .../oas-benefits-estimator/index.html | 131 + .../oas-benefits-estimator/index.js.html | 1540 +++++ .../[id].js.html | 673 ++ .../index.html | 131 + .../index.js.html | 1438 +++++ .../lcov-report/pages/updates.js.html | 823 +++ main/coverage/lcov-report/prettify.css | 1 + main/coverage/lcov-report/prettify.js | 2 + .../lcov-report/sort-arrow-sprite.png | Bin 0 -> 138 bytes main/coverage/lcov-report/sorter.js | 196 + main/coverage/lcov.info | 5677 +++++++++++++++++ 197 files changed, 81990 insertions(+) create mode 100644 main/coverage/clover.xml create mode 100644 main/coverage/coverage-final.json create mode 100644 main/coverage/lcov-report/base.css create mode 100644 main/coverage/lcov-report/block-navigation.js create mode 100644 main/coverage/lcov-report/components/atoms/ActionButton.js.html create mode 100644 main/coverage/lcov-report/components/atoms/ActionButton.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/Alert.js.html create mode 100644 main/coverage/lcov-report/components/atoms/Alert.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/Banner.js.html create mode 100644 main/coverage/lcov-report/components/atoms/Banner.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/Breadcrumb.js.html create mode 100644 main/coverage/lcov-report/components/atoms/Breadcrumb.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/CheckBox.js.html create mode 100644 main/coverage/lcov-report/components/atoms/CheckBox.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/DSButton.js.html create mode 100644 main/coverage/lcov-report/components/atoms/DSButton.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/DateModified.js.html create mode 100644 main/coverage/lcov-report/components/atoms/DateModified.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/ErrorLabel.js.html create mode 100644 main/coverage/lcov-report/components/atoms/ErrorLabel.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/HTMList.js.html create mode 100644 main/coverage/lcov-report/components/atoms/Image.js.html create mode 100644 main/coverage/lcov-report/components/atoms/Image.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/Link.js.html create mode 100644 main/coverage/lcov-report/components/atoms/Link.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/MultiSelectField.js.html create mode 100644 main/coverage/lcov-report/components/atoms/MultiSelectField.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/MultiTextField.js.html create mode 100644 main/coverage/lcov-report/components/atoms/MultiTextField.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/ProjectInfo.js.html create mode 100644 main/coverage/lcov-report/components/atoms/ProjectInfo.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/RadioButton.js.html create mode 100644 main/coverage/lcov-report/components/atoms/RadioButton.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/RadioField.js.html create mode 100644 main/coverage/lcov-report/components/atoms/RadioField.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/SearchBar.js.html create mode 100644 main/coverage/lcov-report/components/atoms/SearchBar.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/SelectField.js.html create mode 100644 main/coverage/lcov-report/components/atoms/SelectField.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/TableOfContents.js.html create mode 100644 main/coverage/lcov-report/components/atoms/TableOfContents.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/TextField.js.html create mode 100644 main/coverage/lcov-report/components/atoms/TextField.stories.js.html create mode 100644 main/coverage/lcov-report/components/atoms/UpdateInfo.js.html create mode 100644 main/coverage/lcov-report/components/atoms/index.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/FragmentRender.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/FragmentRender.stories.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/PageHead.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/ArticleCTA.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/ArticleCTA.stories.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/BasicTextWithImage.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/BasicTextWithImage.stories.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/Button.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/Button.stories.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageFragment.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageFragment.stories.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageVerticalLineContent.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageVerticalLineContent.stories.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageWithCollapse.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageWithCollapse.stories.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/QuoteVerticalLineContent.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/QuoteVerticalLineContent.stories.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextContent.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextContent.stories.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextWithImage.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextWithImage.stories.js.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/fragment_components/index.html create mode 100644 main/coverage/lcov-report/components/fragment_renderer/index.html create mode 100644 main/coverage/lcov-report/components/index.html create mode 100644 main/coverage/lcov-report/components/index.js.html create mode 100644 main/coverage/lcov-report/components/molecules/CTA.js.html create mode 100644 main/coverage/lcov-report/components/molecules/CTA.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Card.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Card.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Collapse.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Collapse.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/ContextualAlert.js.html create mode 100644 main/coverage/lcov-report/components/molecules/ContextualAlert.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/CopyToClipboard.js.html create mode 100644 main/coverage/lcov-report/components/molecules/CopyToClipboard.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Details.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Details.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/ErrorBox.js.html create mode 100644 main/coverage/lcov-report/components/molecules/ErrorBox.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/FeedbackWidget.js.html create mode 100644 main/coverage/lcov-report/components/molecules/FeedbackWidget.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Filter.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Filter.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Heading.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Heading.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/List.js.html create mode 100644 main/coverage/lcov-report/components/molecules/List.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/MainBand.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Menu.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Menu.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/OptionalListField.js.html create mode 100644 main/coverage/lcov-report/components/molecules/OptionalListField.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/OptionalTextField.js.html create mode 100644 main/coverage/lcov-report/components/molecules/OptionalTextField.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Quote.js.html create mode 100644 main/coverage/lcov-report/components/molecules/Quote.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/SubFooterBand.js.html create mode 100644 main/coverage/lcov-report/components/molecules/SurveyCTA.js.html create mode 100644 main/coverage/lcov-report/components/molecules/SurveyCTA.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/TextButtonField.js.html create mode 100644 main/coverage/lcov-report/components/molecules/TextButtonField.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/TopNavBar.js.html create mode 100644 main/coverage/lcov-report/components/molecules/TopNavBar.stories.js.html create mode 100644 main/coverage/lcov-report/components/molecules/index.html create mode 100644 main/coverage/lcov-report/components/organisms/ExploreProjects.js.html create mode 100644 main/coverage/lcov-report/components/organisms/ExploreProjects.stories.js.html create mode 100644 main/coverage/lcov-report/components/organisms/ExploreUpdates.js.html create mode 100644 main/coverage/lcov-report/components/organisms/ExploreUpdates.stories.js.html create mode 100644 main/coverage/lcov-report/components/organisms/Feedback.js.html create mode 100644 main/coverage/lcov-report/components/organisms/Footer.js.html create mode 100644 main/coverage/lcov-report/components/organisms/Footer.stories.js.html create mode 100644 main/coverage/lcov-report/components/organisms/HelpIcon.js.html create mode 100644 main/coverage/lcov-report/components/organisms/HelpIcon.stories.js.html create mode 100644 main/coverage/lcov-report/components/organisms/Layout.js.html create mode 100644 main/coverage/lcov-report/components/organisms/Layout.stories.js.html create mode 100644 main/coverage/lcov-report/components/organisms/PhaseBanner.js.html create mode 100644 main/coverage/lcov-report/components/organisms/PhaseBanner.stories.js.html create mode 100644 main/coverage/lcov-report/components/organisms/ReportAProblem.js.html create mode 100644 main/coverage/lcov-report/components/organisms/ReportAProblem.stories.js.html create mode 100644 main/coverage/lcov-report/components/organisms/index.html create mode 100644 main/coverage/lcov-report/components/text_node_renderer/TextRecur.jsx.html create mode 100644 main/coverage/lcov-report/components/text_node_renderer/TextRender.jsx.html create mode 100644 main/coverage/lcov-report/components/text_node_renderer/index.html create mode 100644 main/coverage/lcov-report/components/text_node_renderer/nodes/HeaderText.jsx.html create mode 100644 main/coverage/lcov-report/components/text_node_renderer/nodes/LineBreak.jsx.html create mode 100644 main/coverage/lcov-report/components/text_node_renderer/nodes/Link.jsx.html create mode 100644 main/coverage/lcov-report/components/text_node_renderer/nodes/ListItem.jsx.html create mode 100644 main/coverage/lcov-report/components/text_node_renderer/nodes/OrderedList.jsx.html create mode 100644 main/coverage/lcov-report/components/text_node_renderer/nodes/Paragraph.jsx.html create mode 100644 main/coverage/lcov-report/components/text_node_renderer/nodes/Span.jsx.html create mode 100644 main/coverage/lcov-report/components/text_node_renderer/nodes/Text.jsx.html create mode 100644 main/coverage/lcov-report/components/text_node_renderer/nodes/UnorderedList.jsx.html create mode 100644 main/coverage/lcov-report/components/text_node_renderer/nodes/index.html create mode 100644 main/coverage/lcov-report/favicon.png create mode 100644 main/coverage/lcov-report/index.html create mode 100644 main/coverage/lcov-report/lib/notify/index.html create mode 100644 main/coverage/lcov-report/lib/notify/postFeedbackToGcNotify.js.html create mode 100644 main/coverage/lcov-report/lib/notify/submitEmail.js.html create mode 100644 main/coverage/lcov-report/lib/utils/createBreadcrumbs.js.html create mode 100644 main/coverage/lcov-report/lib/utils/filterItems.js.html create mode 100644 main/coverage/lcov-report/lib/utils/generateCollapseElements.js.html create mode 100644 main/coverage/lcov-report/lib/utils/getAllUpdateIds.js.html create mode 100644 main/coverage/lcov-report/lib/utils/getDictionaryTerm.js.html create mode 100644 main/coverage/lcov-report/lib/utils/index.html create mode 100644 main/coverage/lcov-report/lib/utils/maskEmail.js.html create mode 100644 main/coverage/lcov-report/lib/utils/shuffle.js.html create mode 100644 main/coverage/lcov-report/lib/utils/sortUpdatesByDate.js.html create mode 100644 main/coverage/lcov-report/lib/utils/stripFeedback.js.html create mode 100644 main/coverage/lcov-report/middlewares/index.html create mode 100644 main/coverage/lcov-report/middlewares/initMiddleware.js.html create mode 100644 main/coverage/lcov-report/middlewares/joi.js.html create mode 100644 main/coverage/lcov-report/pages/404.js.html create mode 100644 main/coverage/lcov-report/pages/500.js.html create mode 100644 main/coverage/lcov-report/pages/_app.js.html create mode 100644 main/coverage/lcov-report/pages/api/healthcheck.js.html create mode 100644 main/coverage/lcov-report/pages/api/index.html create mode 100644 main/coverage/lcov-report/pages/api/report-a-problem.js.html create mode 100644 main/coverage/lcov-report/pages/api/robots.js.html create mode 100644 main/coverage/lcov-report/pages/api/submit-feedback.js.html create mode 100644 main/coverage/lcov-report/pages/error.js.html create mode 100644 main/coverage/lcov-report/pages/home.js.html create mode 100644 main/coverage/lcov-report/pages/index.html create mode 100644 main/coverage/lcov-report/pages/index.js.html create mode 100644 main/coverage/lcov-report/pages/notsupported.js.html create mode 100644 main/coverage/lcov-report/pages/projects.js.html create mode 100644 main/coverage/lcov-report/pages/projects/benefits-finder/[id].js.html create mode 100644 main/coverage/lcov-report/pages/projects/benefits-finder/index.html create mode 100644 main/coverage/lcov-report/pages/projects/benefits-finder/index.js.html create mode 100644 main/coverage/lcov-report/pages/projects/benefits-navigator/[id].js.html create mode 100644 main/coverage/lcov-report/pages/projects/benefits-navigator/index.html create mode 100644 main/coverage/lcov-report/pages/projects/benefits-navigator/index.js.html create mode 100644 main/coverage/lcov-report/pages/projects/dashboard/[id].js.html create mode 100644 main/coverage/lcov-report/pages/projects/dashboard/index.html create mode 100644 main/coverage/lcov-report/pages/projects/dashboard/index.js.html create mode 100644 main/coverage/lcov-report/pages/projects/digital-standards-playbook/[id].js.html create mode 100644 main/coverage/lcov-report/pages/projects/digital-standards-playbook/index.html create mode 100644 main/coverage/lcov-report/pages/projects/digital-standards-playbook/index.js.html create mode 100644 main/coverage/lcov-report/pages/projects/making-easier-get-benefits/[id].js.html create mode 100644 main/coverage/lcov-report/pages/projects/making-easier-get-benefits/index.html create mode 100644 main/coverage/lcov-report/pages/projects/making-easier-get-benefits/index.js.html create mode 100644 main/coverage/lcov-report/pages/projects/oas-benefits-estimator/[id].js.html create mode 100644 main/coverage/lcov-report/pages/projects/oas-benefits-estimator/index.html create mode 100644 main/coverage/lcov-report/pages/projects/oas-benefits-estimator/index.js.html create mode 100644 main/coverage/lcov-report/pages/projects/transforming-ei-indigenous-peoples/[id].js.html create mode 100644 main/coverage/lcov-report/pages/projects/transforming-ei-indigenous-peoples/index.html create mode 100644 main/coverage/lcov-report/pages/projects/transforming-ei-indigenous-peoples/index.js.html create mode 100644 main/coverage/lcov-report/pages/updates.js.html create mode 100644 main/coverage/lcov-report/prettify.css create mode 100644 main/coverage/lcov-report/prettify.js create mode 100644 main/coverage/lcov-report/sort-arrow-sprite.png create mode 100644 main/coverage/lcov-report/sorter.js create mode 100644 main/coverage/lcov.info diff --git a/main/coverage/clover.xml b/main/coverage/clover.xml new file mode 100644 index 0000000000..f1255955b7 --- /dev/null +++ b/main/coverage/clover.xml @@ -0,0 +1,2435 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/main/coverage/coverage-final.json b/main/coverage/coverage-final.json new file mode 100644 index 0000000000..8a8150b715 --- /dev/null +++ b/main/coverage/coverage-final.json @@ -0,0 +1,167 @@ +{"/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":{"0":{"start":{"line":1,"column":7},"end":{"line":1,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":0},"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":8,"column":16},"end":{"line":8,"column":29}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":26},"end":{"line":3,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"5":{"start":{"line":13,"column":4},"end":{"line":13,"column":null}},"6":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}},"7":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}},"8":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"9":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},"10":{"start":{"line":24,"column":4},"end":{"line":36,"column":null}},"11":{"start":{"line":39,"column":2},"end":{"line":49,"column":null}},"12":{"start":{"line":40,"column":15},"end":{"line":40,"column":null}},"13":{"start":{"line":41,"column":4},"end":{"line":48,"column":null}},"14":{"start":{"line":42,"column":6},"end":{"line":47,"column":null}},"15":{"start":{"line":43,"column":8},"end":{"line":46,"column":null}},"16":{"start":{"line":44,"column":10},"end":{"line":44,"column":null}},"17":{"start":{"line":45,"column":10},"end":{"line":45,"column":null}},"18":{"start":{"line":118,"column":0},"end":{"line":248,"column":null}}},"fnMap":{"0":{"name":"ActionButton","decl":{"start":{"line":8,"column":16},"end":{"line":8,"column":29}},"loc":{"start":{"line":8,"column":34},"end":{"line":116,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":39,"column":12},"end":{"line":39,"column":null}},"loc":{"start":{"line":39,"column":12},"end":{"line":49,"column":null}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":42,"column":39},"end":{"line":42,"column":40}},"loc":{"start":{"line":42,"column":40},"end":{"line":47,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":4},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":25,"column":8},"end":{"line":25,"column":null}},{"start":{"line":26,"column":8},"end":{"line":36,"column":null}}]},"1":{"loc":{"start":{"line":26,"column":8},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":27,"column":8},"end":{"line":27,"column":null}},{"start":{"line":28,"column":8},"end":{"line":36,"column":null}}]},"2":{"loc":{"start":{"line":28,"column":8},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":29,"column":8},"end":{"line":29,"column":null}},{"start":{"line":30,"column":8},"end":{"line":36,"column":null}}]},"3":{"loc":{"start":{"line":30,"column":8},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":31,"column":8},"end":{"line":31,"column":null}},{"start":{"line":32,"column":8},"end":{"line":36,"column":null}}]},"4":{"loc":{"start":{"line":32,"column":8},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":33,"column":8},"end":{"line":33,"column":null}},{"start":{"line":34,"column":8},"end":{"line":36,"column":null}}]},"5":{"loc":{"start":{"line":34,"column":8},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":35,"column":8},"end":{"line":35,"column":null}},{"start":{"line":36,"column":8},"end":{"line":36,"column":null}}]},"6":{"loc":{"start":{"line":41,"column":4},"end":{"line":48,"column":null}},"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":48,"column":null}}]},"7":{"loc":{"start":{"line":43,"column":8},"end":{"line":46,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":8},"end":{"line":46,"column":null}}]},"8":{"loc":{"start":{"line":43,"column":12},"end":{"line":43,"column":59}},"type":"binary-expr","locations":[{"start":{"line":43,"column":12},"end":{"line":43,"column":40}},{"start":{"line":43,"column":40},"end":{"line":43,"column":59}}]},"9":{"loc":{"start":{"line":52,"column":4},"end":{"line":79,"column":5}},"type":"cond-expr","locations":[{"start":{"line":52,"column":4},"end":{"line":79,"column":5}}]},"10":{"loc":{"start":{"line":54,"column":21},"end":{"line":54,"column":67}},"type":"cond-expr","locations":[{"start":{"line":54,"column":39},"end":{"line":54,"column":54}},{"start":{"line":54,"column":57},"end":{"line":54,"column":67}}]},"11":{"loc":{"start":{"line":59,"column":15},"end":{"line":59,"column":39}},"type":"binary-expr","locations":[{"start":{"line":59,"column":15},"end":{"line":59,"column":27}},{"start":{"line":59,"column":31},"end":{"line":59,"column":39}}]},"12":{"loc":{"start":{"line":66,"column":7},"end":{"line":68,"column":null}},"type":"cond-expr","locations":[{"start":{"line":67,"column":8},"end":{"line":68,"column":null}},{"start":{"line":68,"column":10},"end":{"line":68,"column":null}}]},"13":{"loc":{"start":{"line":66,"column":7},"end":{"line":66,"column":35}},"type":"binary-expr","locations":[{"start":{"line":66,"column":7},"end":{"line":66,"column":17}},{"start":{"line":66,"column":21},"end":{"line":66,"column":35}}]},"14":{"loc":{"start":{"line":71,"column":7},"end":{"line":76,"column":null}},"type":"cond-expr","locations":[{"start":{"line":72,"column":8},"end":{"line":76,"column":null}},{"start":{"line":76,"column":10},"end":{"line":76,"column":null}}]},"15":{"loc":{"start":{"line":71,"column":7},"end":{"line":71,"column":34}},"type":"binary-expr","locations":[{"start":{"line":71,"column":7},"end":{"line":71,"column":17}},{"start":{"line":71,"column":21},"end":{"line":71,"column":34}}]},"16":{"loc":{"start":{"line":80,"column":24},"end":{"line":80,"column":76}},"type":"cond-expr","locations":[{"start":{"line":80,"column":45},"end":{"line":80,"column":63}},{"start":{"line":80,"column":66},"end":{"line":80,"column":76}}]},"17":{"loc":{"start":{"line":81,"column":21},"end":{"line":81,"column":67}},"type":"cond-expr","locations":[{"start":{"line":81,"column":39},"end":{"line":81,"column":54}},{"start":{"line":81,"column":57},"end":{"line":81,"column":67}}]},"18":{"loc":{"start":{"line":87,"column":15},"end":{"line":87,"column":39}},"type":"binary-expr","locations":[{"start":{"line":87,"column":15},"end":{"line":87,"column":27}},{"start":{"line":87,"column":31},"end":{"line":87,"column":39}}]},"19":{"loc":{"start":{"line":90,"column":32},"end":{"line":90,"column":null}},"type":"cond-expr","locations":[{"start":{"line":90,"column":58},"end":{"line":90,"column":69}},{"start":{"line":90,"column":69},"end":{"line":90,"column":null}}]},"20":{"loc":{"start":{"line":92,"column":7},"end":{"line":94,"column":null}},"type":"cond-expr","locations":[{"start":{"line":93,"column":8},"end":{"line":94,"column":null}},{"start":{"line":94,"column":10},"end":{"line":94,"column":null}}]},"21":{"loc":{"start":{"line":92,"column":7},"end":{"line":92,"column":35}},"type":"binary-expr","locations":[{"start":{"line":92,"column":7},"end":{"line":92,"column":17}},{"start":{"line":92,"column":21},"end":{"line":92,"column":35}}]},"22":{"loc":{"start":{"line":95,"column":7},"end":{"line":102,"column":null}},"type":"cond-expr","locations":[{"start":{"line":96,"column":8},"end":{"line":102,"column":null}},{"start":{"line":102,"column":10},"end":{"line":102,"column":null}}]},"23":{"loc":{"start":{"line":95,"column":7},"end":{"line":95,"column":42}},"type":"binary-expr","locations":[{"start":{"line":95,"column":7},"end":{"line":95,"column":24}},{"start":{"line":95,"column":28},"end":{"line":95,"column":42}}]},"24":{"loc":{"start":{"line":108,"column":7},"end":{"line":113,"column":null}},"type":"cond-expr","locations":[{"start":{"line":109,"column":8},"end":{"line":113,"column":null}},{"start":{"line":113,"column":10},"end":{"line":113,"column":null}}]},"25":{"loc":{"start":{"line":108,"column":7},"end":{"line":108,"column":34}},"type":"binary-expr","locations":[{"start":{"line":108,"column":7},"end":{"line":108,"column":17}},{"start":{"line":108,"column":21},"end":{"line":108,"column":34}}]}},"s":{"0":78,"1":25,"2":25,"3":25,"4":76,"5":76,"6":76,"7":76,"8":76,"9":76,"10":76,"11":71,"12":71,"13":71,"14":63,"15":1,"16":1,"17":1,"18":25},"f":{"0":76,"1":71,"2":1},"b":{"0":[10,61],"1":[5,56],"2":[3,53],"3":[1,52],"4":[1,51],"5":[2,49],"6":[63],"7":[1],"8":[1,0],"9":[28],"10":[6,22],"11":[28,20],"12":[0,28],"13":[28,3],"14":[3,25],"15":[28,3],"16":[0,43],"17":[12,31],"18":[43,15],"19":[13,30],"20":[0,43],"21":[43,0],"22":[6,37],"23":[43,6],"24":[0,43],"25":[43,0]}} +,"/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":13,"column":13},"end":{"line":13,"column":19}},"1":{"start":{"line":14,"column":13},"end":{"line":14,"column":17}},"2":{"start":{"line":10,"column":13},"end":{"line":10,"column":20}},"3":{"start":{"line":11,"column":13},"end":{"line":11,"column":22}},"4":{"start":{"line":12,"column":13},"end":{"line":12,"column":22}},"5":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"6":{"start":{"line":1,"column":29},"end":{"line":1,"column":null}},"7":{"start":{"line":3,"column":15},"end":{"line":6,"column":2}},"8":{"start":{"line":10,"column":23},"end":{"line":10,"column":null}},"9":{"start":{"line":11,"column":25},"end":{"line":11,"column":null}},"10":{"start":{"line":12,"column":25},"end":{"line":12,"column":null}},"11":{"start":{"line":13,"column":22},"end":{"line":13,"column":null}},"12":{"start":{"line":14,"column":20},"end":{"line":14,"column":null}},"13":{"start":{"line":16,"column":0},"end":{"line":20,"column":null}},"14":{"start":{"line":22,"column":0},"end":{"line":27,"column":null}},"15":{"start":{"line":29,"column":0},"end":{"line":34,"column":null}},"16":{"start":{"line":36,"column":0},"end":{"line":41,"column":null}},"17":{"start":{"line":43,"column":0},"end":{"line":48,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":5,"2":5,"3":3,"4":3,"5":0,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1},"f":{},"b":{}} +,"/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":11,"column":16},"end":{"line":11,"column":22}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":32},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":29},"end":{"line":3,"column":null}},"4":{"start":{"line":41,"column":0},"end":{"line":50,"column":null}}},"fnMap":{"0":{"name":"Alert","decl":{"start":{"line":11,"column":16},"end":{"line":11,"column":22}},"loc":{"start":{"line":11,"column":27},"end":{"line":39,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":10},"end":{"line":16,"column":null}},"type":"cond-expr","locations":[{"start":{"line":16,"column":27},"end":{"line":16,"column":48}},{"start":{"line":16,"column":48},"end":{"line":16,"column":null}}]},"1":{"loc":{"start":{"line":21,"column":12},"end":{"line":27,"column":13}},"type":"cond-expr","locations":[{"start":{"line":21,"column":12},"end":{"line":27,"column":13}}]}},"s":{"0":3,"1":1,"2":1,"3":1,"4":1},"f":{"0":2},"b":{"0":[0,2],"1":[0]}} +,"/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":10,"column":13},"end":{"line":10,"column":20}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"2":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"3":{"start":{"line":3,"column":15},"end":{"line":6,"column":2}},"4":{"start":{"line":10,"column":23},"end":{"line":10,"column":null}},"5":{"start":{"line":12,"column":0},"end":{"line":15,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":4,"1":0,"2":1,"3":1,"4":1,"5":1},"f":{},"b":{}} +,"/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":13},"end":{"line":8,"column":19}},"1":{"start":{"line":40,"column":0},"end":{"line":40,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":22},"end":{"line":2,"column":null}},"4":{"start":{"line":8,"column":22},"end":{"line":26,"column":null}},"5":{"start":{"line":28,"column":0},"end":{"line":38,"column":null}},"6":{"start":{"line":40,"column":15},"end":{"line":40,"column":22}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":8,"column":22},"end":{"line":8,"column":23}},"loc":{"start":{"line":8,"column":46},"end":{"line":26,"column":null}}}},"branchMap":{},"s":{"0":2,"1":3,"2":9,"3":9,"4":9,"5":9,"6":9},"f":{"0":4},"b":{}} +,"/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":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":19},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":0},"end":{"line":16,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":4,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/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":9,"column":16},"end":{"line":9,"column":27}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":32},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":31},"end":{"line":4,"column":null}},"5":{"start":{"line":24,"column":14},"end":{"line":26,"column":null}},"6":{"start":{"line":50,"column":0},"end":{"line":67,"column":null}}},"fnMap":{"0":{"name":"Breadcrumb","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":27}},"loc":{"start":{"line":9,"column":32},"end":{"line":48,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":23,"column":28},"end":{"line":23,"column":29}},"loc":{"start":{"line":23,"column":35},"end":{"line":43,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":9},"end":{"line":44,"column":null}},"type":"cond-expr","locations":[{"start":{"line":23,"column":12},"end":{"line":43,"column":null}},{"start":{"line":44,"column":12},"end":{"line":44,"column":null}}]}},"s":{"0":16,"1":9,"2":9,"3":9,"4":9,"5":9,"6":9},"f":{"0":16,"1":9},"b":{"0":[7,8]}} +,"/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":10,"column":13},"end":{"line":10,"column":20}},"1":{"start":{"line":11,"column":13},"end":{"line":11,"column":22}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"3":{"start":{"line":1,"column":27},"end":{"line":1,"column":null}},"4":{"start":{"line":3,"column":15},"end":{"line":6,"column":2}},"5":{"start":{"line":10,"column":23},"end":{"line":10,"column":null}},"6":{"start":{"line":11,"column":25},"end":{"line":11,"column":null}},"7":{"start":{"line":13,"column":0},"end":{"line":19,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":4,"1":3,"2":0,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{},"b":{}} +,"/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":6,"column":16},"end":{"line":6,"column":25}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":12,"column":28},"end":{"line":16,"column":null}},"3":{"start":{"line":30,"column":10},"end":{"line":33,"column":null}},"4":{"start":{"line":59,"column":0},"end":{"line":128,"column":null}}},"fnMap":{"0":{"name":"CheckBox","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":25}},"loc":{"start":{"line":11,"column":1},"end":{"line":57,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":29,"column":18},"end":{"line":29,"column":19}},"loc":{"start":{"line":30,"column":10},"end":{"line":33,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":2},"end":{"line":7,"column":17}},"type":"default-arg","locations":[{"start":{"line":7,"column":12},"end":{"line":7,"column":17}}]},"1":{"loc":{"start":{"line":8,"column":2},"end":{"line":8,"column":16}},"type":"default-arg","locations":[{"start":{"line":8,"column":10},"end":{"line":8,"column":16}}]},"2":{"loc":{"start":{"line":9,"column":2},"end":{"line":9,"column":27}},"type":"default-arg","locations":[{"start":{"line":9,"column":22},"end":{"line":9,"column":27}}]},"3":{"loc":{"start":{"line":12,"column":28},"end":{"line":16,"column":null}},"type":"cond-expr","locations":[{"start":{"line":13,"column":6},"end":{"line":15,"column":null}},{"start":{"line":16,"column":6},"end":{"line":16,"column":null}}]},"4":{"loc":{"start":{"line":20,"column":8},"end":{"line":20,"column":null}},"type":"cond-expr","locations":[{"start":{"line":20,"column":26},"end":{"line":20,"column":47}},{"start":{"line":20,"column":50},"end":{"line":20,"column":null}}]},"5":{"loc":{"start":{"line":31,"column":12},"end":{"line":31,"column":null}},"type":"cond-expr","locations":[{"start":{"line":31,"column":33},"end":{"line":31,"column":57}},{"start":{"line":31,"column":60},"end":{"line":31,"column":null}}]},"6":{"loc":{"start":{"line":37,"column":22},"end":{"line":37,"column":null}},"type":"cond-expr","locations":[{"start":{"line":37,"column":36},"end":{"line":37,"column":45}},{"start":{"line":37,"column":45},"end":{"line":37,"column":null}}]},"7":{"loc":{"start":{"line":44,"column":10},"end":{"line":44,"column":null}},"type":"cond-expr","locations":[{"start":{"line":44,"column":25},"end":{"line":44,"column":43}},{"start":{"line":44,"column":43},"end":{"line":44,"column":null}}]},"8":{"loc":{"start":{"line":45,"column":21},"end":{"line":45,"column":72}},"type":"cond-expr","locations":[{"start":{"line":45,"column":35},"end":{"line":45,"column":62}},{"start":{"line":45,"column":62},"end":{"line":45,"column":72}}]},"9":{"loc":{"start":{"line":48,"column":9},"end":{"line":52,"column":23}},"type":"cond-expr","locations":[{"start":{"line":49,"column":10},"end":{"line":52,"column":23}},{"start":{"line":52,"column":12},"end":{"line":52,"column":23}}]}},"s":{"0":72,"1":4,"2":68,"3":6,"4":4},"f":{"0":68,"1":6},"b":{"0":[64],"1":[8],"2":[68],"3":[12,56],"4":[50,18],"5":[4,2],"6":[0,68],"7":[0,68],"8":[0,68],"9":[0,68]}} +,"/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":29,"column":13},"end":{"line":29,"column":20}},"1":{"start":{"line":49,"column":13},"end":{"line":49,"column":21}},"2":{"start":{"line":20,"column":13},"end":{"line":20,"column":22}},"3":{"start":{"line":39,"column":13},"end":{"line":39,"column":25}},"4":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"5":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"6":{"start":{"line":2,"column":25},"end":{"line":2,"column":null}},"7":{"start":{"line":4,"column":15},"end":{"line":16,"column":2}},"8":{"start":{"line":20,"column":25},"end":{"line":20,"column":null}},"9":{"start":{"line":21,"column":0},"end":{"line":27,"column":null}},"10":{"start":{"line":29,"column":23},"end":{"line":29,"column":null}},"11":{"start":{"line":30,"column":0},"end":{"line":37,"column":null}},"12":{"start":{"line":39,"column":28},"end":{"line":39,"column":null}},"13":{"start":{"line":40,"column":0},"end":{"line":47,"column":null}},"14":{"start":{"line":49,"column":24},"end":{"line":49,"column":null}},"15":{"start":{"line":50,"column":0},"end":{"line":57,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":6,"1":0,"2":7,"3":0,"4":0,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/DSButton.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/DSButton.js","statementMap":{"0":{"start":{"line":6,"column":16},"end":{"line":6,"column":25}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":22},"end":{"line":2,"column":null}},"3":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}},"4":{"start":{"line":17,"column":4},"end":{"line":17,"column":null}},"5":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"6":{"start":{"line":21,"column":4},"end":{"line":21,"column":null}},"7":{"start":{"line":23,"column":4},"end":{"line":23,"column":null}},"8":{"start":{"line":25,"column":2},"end":{"line":36,"column":null}},"9":{"start":{"line":100,"column":0},"end":{"line":179,"column":null}}},"fnMap":{"0":{"name":"DSButton","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":25}},"loc":{"start":{"line":12,"column":1},"end":{"line":98,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":2},"end":{"line":7,"column":13}},"type":"default-arg","locations":[{"start":{"line":7,"column":7},"end":{"line":7,"column":13}}]},"1":{"loc":{"start":{"line":8,"column":2},"end":{"line":8,"column":23}},"type":"default-arg","locations":[{"start":{"line":8,"column":12},"end":{"line":8,"column":23}}]},"2":{"loc":{"start":{"line":9,"column":2},"end":{"line":9,"column":18}},"type":"default-arg","locations":[{"start":{"line":9,"column":9},"end":{"line":9,"column":18}}]},"3":{"loc":{"start":{"line":10,"column":2},"end":{"line":10,"column":17}},"type":"default-arg","locations":[{"start":{"line":10,"column":9},"end":{"line":10,"column":17}}]},"4":{"loc":{"start":{"line":26,"column":4},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":27,"column":8},"end":{"line":27,"column":null}},{"start":{"line":28,"column":8},"end":{"line":36,"column":null}}]},"5":{"loc":{"start":{"line":28,"column":8},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":29,"column":8},"end":{"line":29,"column":null}},{"start":{"line":30,"column":8},"end":{"line":36,"column":null}}]},"6":{"loc":{"start":{"line":30,"column":8},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":31,"column":8},"end":{"line":31,"column":null}},{"start":{"line":32,"column":8},"end":{"line":36,"column":null}}]},"7":{"loc":{"start":{"line":32,"column":8},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":33,"column":8},"end":{"line":33,"column":null}},{"start":{"line":34,"column":8},"end":{"line":36,"column":null}}]},"8":{"loc":{"start":{"line":34,"column":8},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":35,"column":8},"end":{"line":35,"column":null}},{"start":{"line":36,"column":8},"end":{"line":36,"column":null}}]},"9":{"loc":{"start":{"line":39,"column":4},"end":{"line":68,"column":5}},"type":"cond-expr","locations":[{"start":{"line":39,"column":4},"end":{"line":68,"column":5}}]},"10":{"loc":{"start":{"line":48,"column":7},"end":{"line":52,"column":null}},"type":"cond-expr","locations":[{"start":{"line":49,"column":8},"end":{"line":52,"column":null}},{"start":{"line":52,"column":10},"end":{"line":52,"column":null}}]},"11":{"loc":{"start":{"line":48,"column":7},"end":{"line":48,"column":35}},"type":"binary-expr","locations":[{"start":{"line":48,"column":7},"end":{"line":48,"column":17}},{"start":{"line":48,"column":21},"end":{"line":48,"column":35}}]},"12":{"loc":{"start":{"line":55,"column":10},"end":{"line":55,"column":null}},"type":"cond-expr","locations":[{"start":{"line":55,"column":36},"end":{"line":55,"column":44}},{"start":{"line":55,"column":44},"end":{"line":55,"column":null}}]},"13":{"loc":{"start":{"line":61,"column":7},"end":{"line":65,"column":null}},"type":"cond-expr","locations":[{"start":{"line":62,"column":8},"end":{"line":65,"column":null}},{"start":{"line":65,"column":10},"end":{"line":65,"column":null}}]},"14":{"loc":{"start":{"line":61,"column":7},"end":{"line":61,"column":34}},"type":"binary-expr","locations":[{"start":{"line":61,"column":7},"end":{"line":61,"column":17}},{"start":{"line":61,"column":21},"end":{"line":61,"column":34}}]},"15":{"loc":{"start":{"line":71,"column":8},"end":{"line":71,"column":null}},"type":"cond-expr","locations":[{"start":{"line":71,"column":29},"end":{"line":71,"column":42}},{"start":{"line":71,"column":42},"end":{"line":71,"column":null}}]},"16":{"loc":{"start":{"line":78,"column":7},"end":{"line":84,"column":null}},"type":"cond-expr","locations":[{"start":{"line":79,"column":8},"end":{"line":84,"column":null}},{"start":{"line":84,"column":10},"end":{"line":84,"column":null}}]},"17":{"loc":{"start":{"line":78,"column":7},"end":{"line":78,"column":35}},"type":"binary-expr","locations":[{"start":{"line":78,"column":7},"end":{"line":78,"column":17}},{"start":{"line":78,"column":21},"end":{"line":78,"column":35}}]},"18":{"loc":{"start":{"line":87,"column":7},"end":{"line":95,"column":null}},"type":"cond-expr","locations":[{"start":{"line":88,"column":8},"end":{"line":95,"column":null}},{"start":{"line":95,"column":10},"end":{"line":95,"column":null}}]},"19":{"loc":{"start":{"line":87,"column":7},"end":{"line":87,"column":34}},"type":"binary-expr","locations":[{"start":{"line":87,"column":7},"end":{"line":87,"column":17}},{"start":{"line":87,"column":21},"end":{"line":87,"column":34}}]}},"s":{"0":11,"1":13,"2":13,"3":10,"4":10,"5":10,"6":10,"7":10,"8":10,"9":13},"f":{"0":10},"b":{"0":[4],"1":[0],"2":[0],"3":[8],"4":[6,4],"5":[1,3],"6":[1,2],"7":[1,1],"8":[1,0],"9":[8],"10":[0,8],"11":[8,0],"12":[0,8],"13":[0,8],"14":[8,0],"15":[2,0],"16":[0,2],"17":[2,0],"18":[0,2],"19":[2,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/DSButton.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/DSButton.stories.js","statementMap":{"0":{"start":{"line":14,"column":13},"end":{"line":14,"column":19}},"1":{"start":{"line":15,"column":13},"end":{"line":15,"column":17}},"2":{"start":{"line":12,"column":13},"end":{"line":12,"column":20}},"3":{"start":{"line":13,"column":13},"end":{"line":13,"column":22}},"4":{"start":{"line":10,"column":13},"end":{"line":10,"column":22}},"5":{"start":{"line":11,"column":13},"end":{"line":11,"column":26}},"6":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"7":{"start":{"line":1,"column":25},"end":{"line":1,"column":null}},"8":{"start":{"line":3,"column":15},"end":{"line":6,"column":2}},"9":{"start":{"line":10,"column":25},"end":{"line":10,"column":null}},"10":{"start":{"line":11,"column":29},"end":{"line":11,"column":null}},"11":{"start":{"line":12,"column":23},"end":{"line":12,"column":null}},"12":{"start":{"line":13,"column":25},"end":{"line":13,"column":null}},"13":{"start":{"line":14,"column":22},"end":{"line":14,"column":null}},"14":{"start":{"line":15,"column":20},"end":{"line":15,"column":null}},"15":{"start":{"line":17,"column":0},"end":{"line":22,"column":null}},"16":{"start":{"line":24,"column":0},"end":{"line":31,"column":null}},"17":{"start":{"line":33,"column":0},"end":{"line":38,"column":null}},"18":{"start":{"line":40,"column":0},"end":{"line":46,"column":null}},"19":{"start":{"line":48,"column":0},"end":{"line":53,"column":null}},"20":{"start":{"line":55,"column":0},"end":{"line":61,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":2,"5":0,"6":0,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"f":{},"b":{}} +,"/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":4,"column":16},"end":{"line":4,"column":29}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":31},"end":{"line":2,"column":null}},"3":{"start":{"line":5,"column":16},"end":{"line":5,"column":null}},"4":{"start":{"line":7,"column":22},"end":{"line":7,"column":null}},"5":{"start":{"line":8,"column":2},"end":{"line":12,"column":null}},"6":{"start":{"line":9,"column":4},"end":{"line":11,"column":null}},"7":{"start":{"line":10,"column":6},"end":{"line":10,"column":null}},"8":{"start":{"line":11,"column":11},"end":{"line":11,"column":null}},"9":{"start":{"line":28,"column":0},"end":{"line":31,"column":null}}},"fnMap":{"0":{"name":"DateModified","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":29}},"loc":{"start":{"line":4,"column":74},"end":{"line":26,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":31},"end":{"line":4,"column":72}},"type":"default-arg","locations":[{"start":{"line":4,"column":38},"end":{"line":4,"column":72}}]},"1":{"loc":{"start":{"line":8,"column":2},"end":{"line":12,"column":null}},"type":"if","locations":[{"start":{"line":8,"column":2},"end":{"line":12,"column":null}}]},"2":{"loc":{"start":{"line":9,"column":4},"end":{"line":11,"column":null}},"type":"if","locations":[{"start":{"line":9,"column":4},"end":{"line":11,"column":null}},{"start":{"line":11,"column":11},"end":{"line":11,"column":null}}]},"3":{"loc":{"start":{"line":19,"column":10},"end":{"line":21,"column":11}},"type":"cond-expr","locations":[{"start":{"line":19,"column":10},"end":{"line":21,"column":11}}]}},"s":{"0":16,"1":9,"2":9,"3":15,"4":15,"5":15,"6":8,"7":2,"8":6,"9":9},"f":{"0":15},"b":{"0":[6],"1":[8],"2":[2,6],"3":[7]}} +,"/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":10,"column":13},"end":{"line":10,"column":20}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"2":{"start":{"line":1,"column":29},"end":{"line":1,"column":null}},"3":{"start":{"line":3,"column":15},"end":{"line":6,"column":2}},"4":{"start":{"line":10,"column":23},"end":{"line":10,"column":null}},"5":{"start":{"line":12,"column":0},"end":{"line":14,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":5,"1":0,"2":1,"3":1,"4":1,"5":1},"f":{},"b":{}} +,"/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":6,"column":16},"end":{"line":6,"column":27}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":16,"column":0},"end":{"line":23,"column":null}}},"fnMap":{"0":{"name":"ErrorLabel","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":27}},"loc":{"start":{"line":6,"column":32},"end":{"line":14,"column":null}}}},"branchMap":{},"s":{"0":7,"1":16,"2":16},"f":{"0":5},"b":{}} +,"/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":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":27},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":12,"column":0},"end":{"line":14,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":5,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/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":3,"column":16},"end":{"line":3,"column":24}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":20},"end":{"line":9,"column":null}},"3":{"start":{"line":5,"column":4},"end":{"line":9,"column":null}},"4":{"start":{"line":7,"column":24},"end":{"line":7,"column":30}},"5":{"start":{"line":9,"column":8},"end":{"line":9,"column":null}},"6":{"start":{"line":21,"column":0},"end":{"line":26,"column":null}}},"fnMap":{"0":{"name":"HTMList","decl":{"start":{"line":3,"column":16},"end":{"line":3,"column":24}},"loc":{"start":{"line":3,"column":75},"end":{"line":19,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":4,"column":20},"end":{"line":4,"column":21}},"loc":{"start":{"line":5,"column":4},"end":{"line":9,"column":null}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":7,"column":14},"end":{"line":7,"column":15}},"loc":{"start":{"line":7,"column":24},"end":{"line":7,"column":30}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":8,"column":11},"end":{"line":8,"column":12}},"loc":{"start":{"line":9,"column":8},"end":{"line":9,"column":null}}}},"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}}]},"1":{"loc":{"start":{"line":15,"column":4},"end":{"line":17,"column":5}},"type":"cond-expr","locations":[{"start":{"line":15,"column":4},"end":{"line":17,"column":5}}]}},"s":{"0":7,"1":1,"2":7,"3":7,"4":18,"5":13,"6":1},"f":{"0":7,"1":7,"2":18,"3":13},"b":{"0":[5],"1":[6]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Image.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Image.js","statementMap":{"0":{"start":{"line":3,"column":16},"end":{"line":3,"column":22}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":53},"end":{"line":4,"column":null}},"3":{"start":{"line":13,"column":0},"end":{"line":38,"column":null}}},"fnMap":{"0":{"name":"Image","decl":{"start":{"line":3,"column":16},"end":{"line":3,"column":22}},"loc":{"start":{"line":3,"column":27},"end":{"line":11,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":4,"column":20},"end":{"line":4,"column":32}},"type":"default-arg","locations":[{"start":{"line":4,"column":30},"end":{"line":4,"column":32}}]},"1":{"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":48}},"type":"default-arg","locations":[{"start":{"line":4,"column":46},"end":{"line":4,"column":48}}]}},"s":{"0":23,"1":16,"2":23,"3":16},"f":{"0":23},"b":{"0":[20],"1":[4]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Image.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Image.stories.js","statementMap":{"0":{"start":{"line":12,"column":13},"end":{"line":12,"column":20}},"1":{"start":{"line":14,"column":13},"end":{"line":14,"column":31}},"2":{"start":{"line":13,"column":13},"end":{"line":13,"column":19}},"3":{"start":{"line":15,"column":13},"end":{"line":15,"column":30}},"4":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"5":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"6":{"start":{"line":7,"column":22},"end":{"line":7,"column":null}},"7":{"start":{"line":8,"column":23},"end":{"line":8,"column":null}},"8":{"start":{"line":3,"column":15},"end":{"line":6,"column":2}},"9":{"start":{"line":12,"column":23},"end":{"line":12,"column":null}},"10":{"start":{"line":13,"column":22},"end":{"line":13,"column":null}},"11":{"start":{"line":14,"column":34},"end":{"line":14,"column":null}},"12":{"start":{"line":15,"column":33},"end":{"line":15,"column":null}},"13":{"start":{"line":17,"column":0},"end":{"line":21,"column":null}},"14":{"start":{"line":23,"column":0},"end":{"line":28,"column":null}},"15":{"start":{"line":30,"column":0},"end":{"line":34,"column":null}},"16":{"start":{"line":36,"column":0},"end":{"line":41,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":0,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Link.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Link.js","statementMap":{"0":{"start":{"line":6,"column":16},"end":{"line":6,"column":21}},"1":{"start":{"line":2,"column":22},"end":{"line":2,"column":null}},"2":{"start":{"line":8,"column":19},"end":{"line":8,"column":null}},"3":{"start":{"line":9,"column":2},"end":{"line":38,"column":null}},"4":{"start":{"line":11,"column":6},"end":{"line":12,"column":null}},"5":{"start":{"line":13,"column":6},"end":{"line":13,"column":null}},"6":{"start":{"line":15,"column":6},"end":{"line":16,"column":null}},"7":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"8":{"start":{"line":19,"column":6},"end":{"line":20,"column":null}},"9":{"start":{"line":21,"column":6},"end":{"line":21,"column":null}},"10":{"start":{"line":23,"column":6},"end":{"line":24,"column":null}},"11":{"start":{"line":25,"column":6},"end":{"line":25,"column":null}},"12":{"start":{"line":27,"column":6},"end":{"line":28,"column":null}},"13":{"start":{"line":29,"column":6},"end":{"line":29,"column":null}},"14":{"start":{"line":31,"column":6},"end":{"line":32,"column":null}},"15":{"start":{"line":33,"column":6},"end":{"line":33,"column":null}},"16":{"start":{"line":35,"column":6},"end":{"line":36,"column":null}},"17":{"start":{"line":37,"column":6},"end":{"line":37,"column":null}},"18":{"start":{"line":40,"column":20},"end":{"line":40,"column":null}},"19":{"start":{"line":43,"column":4},"end":{"line":43,"column":null}},"20":{"start":{"line":76,"column":0},"end":{"line":120,"column":null}}},"fnMap":{"0":{"name":"Link","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":63},"end":{"line":74,"column":null}}},"1":{"name":"onKeyDown","decl":{"start":{"line":42,"column":11},"end":{"line":42,"column":null}},"loc":{"start":{"line":42,"column":11},"end":{"line":44,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":23},"end":{"line":6,"column":39}},"type":"default-arg","locations":[{"start":{"line":6,"column":32},"end":{"line":6,"column":39}}]},"1":{"loc":{"start":{"line":6,"column":41},"end":{"line":6,"column":51}},"type":"default-arg","locations":[{"start":{"line":6,"column":48},"end":{"line":6,"column":51}}]},"2":{"loc":{"start":{"line":9,"column":2},"end":{"line":38,"column":null}},"type":"switch","locations":[{"start":{"line":10,"column":4},"end":{"line":13,"column":null}},{"start":{"line":14,"column":4},"end":{"line":17,"column":null}},{"start":{"line":18,"column":4},"end":{"line":21,"column":null}},{"start":{"line":22,"column":4},"end":{"line":25,"column":null}},{"start":{"line":26,"column":4},"end":{"line":29,"column":null}},{"start":{"line":30,"column":4},"end":{"line":33,"column":null}},{"start":{"line":34,"column":4},"end":{"line":37,"column":null}}]},"3":{"loc":{"start":{"line":40,"column":20},"end":{"line":40,"column":null}},"type":"binary-expr","locations":[{"start":{"line":40,"column":20},"end":{"line":40,"column":35}},{"start":{"line":40,"column":39},"end":{"line":40,"column":null}}]},"4":{"loc":{"start":{"line":47,"column":4},"end":{"line":59,"column":5}},"type":"cond-expr","locations":[{"start":{"line":47,"column":4},"end":{"line":59,"column":5}}]},"5":{"loc":{"start":{"line":52,"column":18},"end":{"line":52,"column":47}},"type":"binary-expr","locations":[{"start":{"line":52,"column":18},"end":{"line":52,"column":33}},{"start":{"line":52,"column":37},"end":{"line":52,"column":47}}]},"6":{"loc":{"start":{"line":66,"column":18},"end":{"line":66,"column":47}},"type":"binary-expr","locations":[{"start":{"line":66,"column":18},"end":{"line":66,"column":33}},{"start":{"line":66,"column":37},"end":{"line":66,"column":47}}]},"7":{"loc":{"start":{"line":68,"column":15},"end":{"line":68,"column":null}},"type":"cond-expr","locations":[{"start":{"line":68,"column":31},"end":{"line":68,"column":44}},{"start":{"line":68,"column":47},"end":{"line":68,"column":null}}]}},"s":{"0":357,"1":14,"2":356,"3":356,"4":1,"5":1,"6":1,"7":1,"8":66,"9":66,"10":273,"11":273,"12":1,"13":1,"14":1,"15":1,"16":13,"17":13,"18":356,"19":0,"20":14},"f":{"0":356,"1":0},"b":{"0":[330],"1":[3],"2":[1,1,66,273,1,1,13],"3":[356,348],"4":[8],"5":[8,8],"6":[348,348],"7":[0,348]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Link.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/Link.stories.js","statementMap":{"0":{"start":{"line":14,"column":13},"end":{"line":14,"column":28}},"1":{"start":{"line":15,"column":13},"end":{"line":15,"column":27}},"2":{"start":{"line":10,"column":13},"end":{"line":10,"column":20}},"3":{"start":{"line":13,"column":13},"end":{"line":13,"column":27}},"4":{"start":{"line":11,"column":13},"end":{"line":11,"column":36}},"5":{"start":{"line":12,"column":13},"end":{"line":12,"column":22}},"6":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"7":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"8":{"start":{"line":3,"column":15},"end":{"line":6,"column":2}},"9":{"start":{"line":10,"column":23},"end":{"line":10,"column":null}},"10":{"start":{"line":11,"column":39},"end":{"line":11,"column":null}},"11":{"start":{"line":12,"column":25},"end":{"line":12,"column":null}},"12":{"start":{"line":13,"column":30},"end":{"line":13,"column":null}},"13":{"start":{"line":14,"column":31},"end":{"line":14,"column":null}},"14":{"start":{"line":15,"column":30},"end":{"line":15,"column":null}},"15":{"start":{"line":17,"column":0},"end":{"line":21,"column":null}},"16":{"start":{"line":23,"column":0},"end":{"line":28,"column":null}},"17":{"start":{"line":30,"column":0},"end":{"line":35,"column":null}},"18":{"start":{"line":37,"column":0},"end":{"line":42,"column":null}},"19":{"start":{"line":44,"column":0},"end":{"line":49,"column":null}},"20":{"start":{"line":51,"column":0},"end":{"line":56,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":3,"2":5,"3":3,"4":3,"5":3,"6":0,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/MultiSelectField.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/MultiSelectField.js","statementMap":{"0":{"start":{"line":6,"column":16},"end":{"line":6,"column":33}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":31},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":35},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":25},"end":{"line":4,"column":null}},"5":{"start":{"line":7,"column":16},"end":{"line":7,"column":null}},"6":{"start":{"line":9,"column":21},"end":{"line":14,"column":null}},"7":{"start":{"line":10,"column":24},"end":{"line":12,"column":null}},"8":{"start":{"line":11,"column":6},"end":{"line":11,"column":null}},"9":{"start":{"line":13,"column":4},"end":{"line":13,"column":null}},"10":{"start":{"line":16,"column":17},"end":{"line":33,"column":null}},"11":{"start":{"line":25,"column":28},"end":{"line":25,"column":null}},"12":{"start":{"line":35,"column":31},"end":{"line":62,"column":null}},"13":{"start":{"line":37,"column":33},"end":{"line":37,"column":null}},"14":{"start":{"line":38,"column":6},"end":{"line":38,"column":null}},"15":{"start":{"line":38,"column":43},"end":{"line":38,"column":null}},"16":{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},"17":{"start":{"line":42,"column":6},"end":{"line":44,"column":null}},"18":{"start":{"line":96,"column":43},"end":{"line":102,"column":null}},"19":{"start":{"line":103,"column":46},"end":{"line":106,"column":null}},"20":{"start":{"line":107,"column":47},"end":{"line":110,"column":null}},"21":{"start":{"line":111,"column":43},"end":{"line":115,"column":null}},"22":{"start":{"line":116,"column":40},"end":{"line":120,"column":null}},"23":{"start":{"line":121,"column":33},"end":{"line":127,"column":null}},"24":{"start":{"line":128,"column":42},"end":{"line":134,"column":null}},"25":{"start":{"line":135,"column":44},"end":{"line":139,"column":null}},"26":{"start":{"line":140,"column":45},"end":{"line":145,"column":null}},"27":{"start":{"line":155,"column":0},"end":{"line":157,"column":null}},"28":{"start":{"line":159,"column":0},"end":{"line":237,"column":null}}},"fnMap":{"0":{"name":"MultiSelectField","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":33}},"loc":{"start":{"line":6,"column":38},"end":{"line":153,"column":null}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":9,"column":21},"end":{"line":9,"column":22}},"loc":{"start":{"line":9,"column":22},"end":{"line":14,"column":null}}},"2":{"name":"(anonymous_7)","decl":{"start":{"line":10,"column":53},"end":{"line":10,"column":54}},"loc":{"start":{"line":10,"column":54},"end":{"line":12,"column":null}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":16,"column":17},"end":{"line":16,"column":18}},"loc":{"start":{"line":16,"column":18},"end":{"line":33,"column":null}}},"4":{"name":"(anonymous_9)","decl":{"start":{"line":25,"column":22},"end":{"line":25,"column":28}},"loc":{"start":{"line":25,"column":28},"end":{"line":25,"column":null}}},"5":{"name":"(anonymous_10)","decl":{"start":{"line":36,"column":12},"end":{"line":36,"column":13}},"loc":{"start":{"line":36,"column":13},"end":{"line":40,"column":null}}},"6":{"name":"(anonymous_11)","decl":{"start":{"line":38,"column":36},"end":{"line":38,"column":37}},"loc":{"start":{"line":38,"column":43},"end":{"line":38,"column":null}}},"7":{"name":"(anonymous_12)","decl":{"start":{"line":41,"column":9},"end":{"line":41,"column":10}},"loc":{"start":{"line":41,"column":10},"end":{"line":62,"column":null}}},"8":{"name":"(anonymous_13)","decl":{"start":{"line":96,"column":19},"end":{"line":96,"column":20}},"loc":{"start":{"line":96,"column":43},"end":{"line":102,"column":null}}},"9":{"name":"(anonymous_14)","decl":{"start":{"line":103,"column":29},"end":{"line":103,"column":30}},"loc":{"start":{"line":103,"column":46},"end":{"line":106,"column":null}}},"10":{"name":"(anonymous_15)","decl":{"start":{"line":107,"column":30},"end":{"line":107,"column":31}},"loc":{"start":{"line":107,"column":47},"end":{"line":110,"column":null}}},"11":{"name":"(anonymous_16)","decl":{"start":{"line":111,"column":26},"end":{"line":111,"column":27}},"loc":{"start":{"line":111,"column":43},"end":{"line":115,"column":null}}},"12":{"name":"(anonymous_17)","decl":{"start":{"line":116,"column":23},"end":{"line":116,"column":24}},"loc":{"start":{"line":116,"column":40},"end":{"line":120,"column":null}}},"13":{"name":"(anonymous_18)","decl":{"start":{"line":121,"column":16},"end":{"line":121,"column":17}},"loc":{"start":{"line":121,"column":33},"end":{"line":127,"column":null}}},"14":{"name":"(anonymous_19)","decl":{"start":{"line":128,"column":18},"end":{"line":128,"column":19}},"loc":{"start":{"line":128,"column":42},"end":{"line":134,"column":null}}},"15":{"name":"(anonymous_20)","decl":{"start":{"line":135,"column":27},"end":{"line":135,"column":28}},"loc":{"start":{"line":135,"column":44},"end":{"line":139,"column":null}}},"16":{"name":"(anonymous_21)","decl":{"start":{"line":140,"column":28},"end":{"line":140,"column":29}},"loc":{"start":{"line":140,"column":45},"end":{"line":145,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":67,"column":8},"end":{"line":67,"column":null}},"type":"cond-expr","locations":[{"start":{"line":67,"column":26},"end":{"line":67,"column":47}},{"start":{"line":67,"column":50},"end":{"line":67,"column":null}}]},"1":{"loc":{"start":{"line":73,"column":10},"end":{"line":73,"column":null}},"type":"cond-expr","locations":[{"start":{"line":73,"column":28},"end":{"line":73,"column":46}},{"start":{"line":73,"column":46},"end":{"line":73,"column":null}}]},"2":{"loc":{"start":{"line":101,"column":23},"end":{"line":101,"column":null}},"type":"cond-expr","locations":[{"start":{"line":101,"column":41},"end":{"line":101,"column":63}},{"start":{"line":101,"column":63},"end":{"line":101,"column":null}}]},"3":{"loc":{"start":{"line":133,"column":29},"end":{"line":133,"column":null}},"type":"cond-expr","locations":[{"start":{"line":133,"column":47},"end":{"line":133,"column":59}},{"start":{"line":133,"column":59},"end":{"line":133,"column":null}}]}},"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},"f":{"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},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/MultiSelectField.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/MultiSelectField.stories.js","statementMap":{"0":{"start":{"line":20,"column":13},"end":{"line":20,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":33},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":16,"column":2}},"5":{"start":{"line":20,"column":23},"end":{"line":20,"column":null}},"6":{"start":{"line":21,"column":0},"end":{"line":55,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"f":{},"b":{}} +,"/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":8,"column":16},"end":{"line":8,"column":31}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":27},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":31},"end":{"line":3,"column":null}},"4":{"start":{"line":9,"column":16},"end":{"line":9,"column":null}},"5":{"start":{"line":41,"column":25},"end":{"line":41,"column":null}},"6":{"start":{"line":57,"column":0},"end":{"line":141,"column":null}}},"fnMap":{"0":{"name":"MultiTextField","decl":{"start":{"line":8,"column":16},"end":{"line":8,"column":31}},"loc":{"start":{"line":8,"column":77},"end":{"line":55,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":41,"column":18},"end":{"line":41,"column":19}},"loc":{"start":{"line":41,"column":25},"end":{"line":41,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":33},"end":{"line":8,"column":50}},"type":"default-arg","locations":[{"start":{"line":8,"column":46},"end":{"line":8,"column":50}}]},"1":{"loc":{"start":{"line":8,"column":52},"end":{"line":8,"column":65}},"type":"default-arg","locations":[{"start":{"line":8,"column":59},"end":{"line":8,"column":65}}]},"2":{"loc":{"start":{"line":14,"column":8},"end":{"line":14,"column":null}},"type":"cond-expr","locations":[{"start":{"line":14,"column":26},"end":{"line":14,"column":47}},{"start":{"line":14,"column":50},"end":{"line":14,"column":null}}]},"3":{"loc":{"start":{"line":19,"column":10},"end":{"line":19,"column":null}},"type":"cond-expr","locations":[{"start":{"line":19,"column":28},"end":{"line":19,"column":42}},{"start":{"line":19,"column":42},"end":{"line":19,"column":null}}]},"4":{"loc":{"start":{"line":23,"column":9},"end":{"line":27,"column":23}},"type":"cond-expr","locations":[{"start":{"line":24,"column":10},"end":{"line":27,"column":23}},{"start":{"line":27,"column":12},"end":{"line":27,"column":23}}]},"5":{"loc":{"start":{"line":33,"column":7},"end":{"line":33,"column":null}},"type":"cond-expr","locations":[{"start":{"line":33,"column":21},"end":{"line":33,"column":null}},{"start":{"line":33,"column":60},"end":{"line":33,"column":null}}]},"6":{"loc":{"start":{"line":36,"column":10},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":36,"column":24},"end":{"line":36,"column":52}},{"start":{"line":36,"column":52},"end":{"line":36,"column":null}}]}},"s":{"0":5,"1":3,"2":3,"3":3,"4":4,"5":1,"6":3},"f":{"0":4,"1":1},"b":{"0":[4],"1":[3],"2":[0,4],"3":[1,3],"4":[0,4],"5":[0,4],"6":[0,4]}} +,"/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":29,"column":13},"end":{"line":29,"column":22}},"1":{"start":{"line":39,"column":13},"end":{"line":39,"column":21}},"2":{"start":{"line":20,"column":13},"end":{"line":20,"column":20}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"4":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"5":{"start":{"line":2,"column":31},"end":{"line":2,"column":null}},"6":{"start":{"line":4,"column":15},"end":{"line":16,"column":2}},"7":{"start":{"line":20,"column":23},"end":{"line":20,"column":null}},"8":{"start":{"line":21,"column":0},"end":{"line":27,"column":null}},"9":{"start":{"line":29,"column":25},"end":{"line":29,"column":null}},"10":{"start":{"line":30,"column":0},"end":{"line":37,"column":null}},"11":{"start":{"line":39,"column":24},"end":{"line":39,"column":null}},"12":{"start":{"line":40,"column":0},"end":{"line":49,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":0,"2":4,"3":0,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1},"f":{},"b":{}} +,"/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":4,"column":16},"end":{"line":4,"column":28}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":25},"end":{"line":2,"column":null}},"3":{"start":{"line":44,"column":0},"end":{"line":51,"column":null}}},"fnMap":{"0":{"name":"ProjectInfo","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":28}},"loc":{"start":{"line":4,"column":33},"end":{"line":42,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":11},"end":{"line":12,"column":null}},"type":"binary-expr","locations":[{"start":{"line":12,"column":11},"end":{"line":12,"column":28}},{"start":{"line":12,"column":32},"end":{"line":12,"column":null}}]},"1":{"loc":{"start":{"line":18,"column":11},"end":{"line":18,"column":null}},"type":"binary-expr","locations":[{"start":{"line":18,"column":11},"end":{"line":18,"column":26}},{"start":{"line":18,"column":30},"end":{"line":18,"column":null}}]}},"s":{"0":9,"1":7,"2":7,"3":7},"f":{"0":8},"b":{"0":[8,8],"1":[8,2]}} +,"/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":10,"column":13},"end":{"line":10,"column":20}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"2":{"start":{"line":1,"column":28},"end":{"line":1,"column":null}},"3":{"start":{"line":3,"column":15},"end":{"line":6,"column":2}},"4":{"start":{"line":10,"column":23},"end":{"line":10,"column":null}},"5":{"start":{"line":12,"column":0},"end":{"line":17,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":4,"1":0,"2":1,"3":1,"4":1,"5":1},"f":{},"b":{}} +,"/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":6,"column":16},"end":{"line":6,"column":28}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":7,"column":28},"end":{"line":13,"column":null}},"3":{"start":{"line":23,"column":10},"end":{"line":23,"column":null}},"4":{"start":{"line":26,"column":10},"end":{"line":32,"column":null}},"5":{"start":{"line":27,"column":12},"end":{"line":27,"column":null}},"6":{"start":{"line":28,"column":12},"end":{"line":30,"column":null}},"7":{"start":{"line":29,"column":14},"end":{"line":29,"column":null}},"8":{"start":{"line":31,"column":12},"end":{"line":31,"column":null}},"9":{"start":{"line":51,"column":0},"end":{"line":111,"column":null}}},"fnMap":{"0":{"name":"RadioButton","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":28}},"loc":{"start":{"line":6,"column":57},"end":{"line":49,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":22,"column":18},"end":{"line":22,"column":19}},"loc":{"start":{"line":22,"column":19},"end":{"line":24,"column":null}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":25,"column":17},"end":{"line":25,"column":18}},"loc":{"start":{"line":25,"column":18},"end":{"line":33,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":45}},"type":"default-arg","locations":[{"start":{"line":6,"column":40},"end":{"line":6,"column":45}}]},"1":{"loc":{"start":{"line":7,"column":28},"end":{"line":13,"column":null}},"type":"cond-expr","locations":[{"start":{"line":8,"column":6},"end":{"line":10,"column":null}},{"start":{"line":11,"column":6},"end":{"line":13,"column":null}}]},"2":{"loc":{"start":{"line":12,"column":24},"end":{"line":12,"column":null}},"type":"binary-expr","locations":[{"start":{"line":12,"column":24},"end":{"line":12,"column":35}},{"start":{"line":12,"column":35},"end":{"line":12,"column":null}}]},"3":{"loc":{"start":{"line":26,"column":10},"end":{"line":32,"column":null}},"type":"if","locations":[{"start":{"line":26,"column":10},"end":{"line":32,"column":null}}]},"4":{"loc":{"start":{"line":28,"column":12},"end":{"line":30,"column":null}},"type":"if","locations":[{"start":{"line":28,"column":12},"end":{"line":30,"column":null}}]},"5":{"loc":{"start":{"line":41,"column":10},"end":{"line":41,"column":null}},"type":"cond-expr","locations":[{"start":{"line":41,"column":31},"end":{"line":41,"column":49}},{"start":{"line":41,"column":49},"end":{"line":41,"column":null}}]},"6":{"loc":{"start":{"line":42,"column":11},"end":{"line":42,"column":52}},"type":"cond-expr","locations":[{"start":{"line":42,"column":31},"end":{"line":42,"column":49}},{"start":{"line":42,"column":49},"end":{"line":42,"column":52}}]}},"s":{"0":17,"1":2,"2":16,"3":3,"4":1,"5":1,"6":1,"7":0,"8":1,"9":2},"f":{"0":16,"1":3,"2":1},"b":{"0":[6],"1":[15,1],"2":[1,1],"3":[1],"4":[0],"5":[4,12],"6":[4,12]}} +,"/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":20,"column":13},"end":{"line":20,"column":20}},"1":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"2":{"start":{"line":50,"column":13},"end":{"line":50,"column":24}},"3":{"start":{"line":40,"column":13},"end":{"line":40,"column":25}},"4":{"start":{"line":30,"column":13},"end":{"line":30,"column":25}},"5":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"6":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"7":{"start":{"line":2,"column":28},"end":{"line":2,"column":null}},"8":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"9":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"10":{"start":{"line":12,"column":0},"end":{"line":18,"column":null}},"11":{"start":{"line":20,"column":23},"end":{"line":20,"column":null}},"12":{"start":{"line":21,"column":0},"end":{"line":28,"column":null}},"13":{"start":{"line":30,"column":28},"end":{"line":30,"column":null}},"14":{"start":{"line":31,"column":0},"end":{"line":38,"column":null}},"15":{"start":{"line":40,"column":28},"end":{"line":40,"column":null}},"16":{"start":{"line":41,"column":0},"end":{"line":48,"column":null}},"17":{"start":{"line":50,"column":27},"end":{"line":50,"column":null}},"18":{"start":{"line":51,"column":0},"end":{"line":58,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":12,"2":3,"3":3,"4":3,"5":0,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"f":{},"b":{}} +,"/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":6,"column":16},"end":{"line":6,"column":27}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":7,"column":28},"end":{"line":11,"column":null}},"3":{"start":{"line":25,"column":10},"end":{"line":28,"column":null}},"4":{"start":{"line":42,"column":23},"end":{"line":42,"column":null}},"5":{"start":{"line":50,"column":0},"end":{"line":109,"column":null}}},"fnMap":{"0":{"name":"RadioField","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":27}},"loc":{"start":{"line":6,"column":72},"end":{"line":48,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":24,"column":18},"end":{"line":24,"column":19}},"loc":{"start":{"line":25,"column":10},"end":{"line":28,"column":null}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":42,"column":17},"end":{"line":42,"column":23}},"loc":{"start":{"line":42,"column":23},"end":{"line":42,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":29},"end":{"line":6,"column":44}},"type":"default-arg","locations":[{"start":{"line":6,"column":39},"end":{"line":6,"column":44}}]},"1":{"loc":{"start":{"line":6,"column":46},"end":{"line":6,"column":60}},"type":"default-arg","locations":[{"start":{"line":6,"column":54},"end":{"line":6,"column":60}}]},"2":{"loc":{"start":{"line":7,"column":28},"end":{"line":11,"column":null}},"type":"cond-expr","locations":[{"start":{"line":8,"column":6},"end":{"line":10,"column":null}},{"start":{"line":11,"column":6},"end":{"line":11,"column":null}}]},"3":{"loc":{"start":{"line":15,"column":8},"end":{"line":15,"column":null}},"type":"cond-expr","locations":[{"start":{"line":15,"column":26},"end":{"line":15,"column":47}},{"start":{"line":15,"column":50},"end":{"line":15,"column":null}}]},"4":{"loc":{"start":{"line":26,"column":12},"end":{"line":26,"column":null}},"type":"cond-expr","locations":[{"start":{"line":26,"column":33},"end":{"line":26,"column":57}},{"start":{"line":26,"column":60},"end":{"line":26,"column":null}}]},"5":{"loc":{"start":{"line":32,"column":22},"end":{"line":32,"column":null}},"type":"cond-expr","locations":[{"start":{"line":32,"column":36},"end":{"line":32,"column":45}},{"start":{"line":32,"column":45},"end":{"line":32,"column":null}}]},"6":{"loc":{"start":{"line":39,"column":10},"end":{"line":39,"column":null}},"type":"cond-expr","locations":[{"start":{"line":39,"column":24},"end":{"line":39,"column":51}},{"start":{"line":39,"column":51},"end":{"line":39,"column":null}}]}},"s":{"0":10,"1":4,"2":8,"3":1,"4":0,"5":4},"f":{"0":8,"1":1,"2":0},"b":{"0":[4],"1":[2],"2":[8,0],"3":[0,8],"4":[0,1],"5":[0,8],"6":[0,8]}} +,"/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":29,"column":13},"end":{"line":29,"column":20}},"1":{"start":{"line":20,"column":13},"end":{"line":20,"column":22}},"2":{"start":{"line":39,"column":13},"end":{"line":39,"column":25}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"4":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"5":{"start":{"line":2,"column":27},"end":{"line":2,"column":null}},"6":{"start":{"line":4,"column":15},"end":{"line":16,"column":2}},"7":{"start":{"line":20,"column":25},"end":{"line":20,"column":null}},"8":{"start":{"line":21,"column":0},"end":{"line":27,"column":null}},"9":{"start":{"line":29,"column":23},"end":{"line":29,"column":null}},"10":{"start":{"line":30,"column":0},"end":{"line":37,"column":null}},"11":{"start":{"line":39,"column":28},"end":{"line":39,"column":null}},"12":{"start":{"line":40,"column":0},"end":{"line":47,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":4,"1":7,"2":0,"3":0,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1},"f":{},"b":{}} +,"/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":6,"column":16},"end":{"line":6,"column":26}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":33,"column":0},"end":{"line":53,"column":null}}},"fnMap":{"0":{"name":"SearchBar","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":26}},"loc":{"start":{"line":6,"column":31},"end":{"line":31,"column":null}}}},"branchMap":{},"s":{"0":3,"1":1,"2":1},"f":{"0":2},"b":{}} +,"/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":10,"column":13},"end":{"line":10,"column":20}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"2":{"start":{"line":1,"column":26},"end":{"line":1,"column":null}},"3":{"start":{"line":3,"column":15},"end":{"line":6,"column":2}},"4":{"start":{"line":10,"column":23},"end":{"line":10,"column":null}},"5":{"start":{"line":12,"column":0},"end":{"line":14,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":4,"1":0,"2":1,"3":1,"4":1,"5":1},"f":{},"b":{}} +,"/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":5,"column":16},"end":{"line":5,"column":28}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":27},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":31},"end":{"line":3,"column":null}},"4":{"start":{"line":6,"column":16},"end":{"line":6,"column":null}},"5":{"start":{"line":8,"column":28},"end":{"line":12,"column":null}},"6":{"start":{"line":14,"column":2},"end":{"line":19,"column":null}},"7":{"start":{"line":15,"column":4},"end":{"line":18,"column":null}},"8":{"start":{"line":16,"column":21},"end":{"line":16,"column":null}},"9":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}},"10":{"start":{"line":49,"column":25},"end":{"line":49,"column":null}},"11":{"start":{"line":61,"column":10},"end":{"line":62,"column":29}},"12":{"start":{"line":84,"column":0},"end":{"line":162,"column":null}}},"fnMap":{"0":{"name":"SelectField","decl":{"start":{"line":5,"column":16},"end":{"line":5,"column":28}},"loc":{"start":{"line":5,"column":52},"end":{"line":82,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":15,"column":23},"end":{"line":15,"column":33}},"loc":{"start":{"line":15,"column":37},"end":{"line":18,"column":null}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":49,"column":18},"end":{"line":49,"column":19}},"loc":{"start":{"line":49,"column":25},"end":{"line":49,"column":null}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":60,"column":27},"end":{"line":60,"column":28}},"loc":{"start":{"line":60,"column":47},"end":{"line":66,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":30},"end":{"line":5,"column":40}},"type":"default-arg","locations":[{"start":{"line":5,"column":38},"end":{"line":5,"column":40}}]},"1":{"loc":{"start":{"line":8,"column":28},"end":{"line":12,"column":null}},"type":"cond-expr","locations":[{"start":{"line":9,"column":6},"end":{"line":11,"column":null}},{"start":{"line":12,"column":6},"end":{"line":12,"column":null}}]},"2":{"loc":{"start":{"line":14,"column":2},"end":{"line":19,"column":null}},"type":"if","locations":[{"start":{"line":14,"column":2},"end":{"line":19,"column":null}}]},"3":{"loc":{"start":{"line":24,"column":8},"end":{"line":24,"column":null}},"type":"cond-expr","locations":[{"start":{"line":24,"column":26},"end":{"line":24,"column":47}},{"start":{"line":24,"column":50},"end":{"line":24,"column":null}}]},"4":{"loc":{"start":{"line":29,"column":10},"end":{"line":29,"column":null}},"type":"cond-expr","locations":[{"start":{"line":29,"column":28},"end":{"line":29,"column":42}},{"start":{"line":29,"column":42},"end":{"line":29,"column":null}}]},"5":{"loc":{"start":{"line":33,"column":9},"end":{"line":37,"column":23}},"type":"cond-expr","locations":[{"start":{"line":34,"column":10},"end":{"line":37,"column":23}},{"start":{"line":37,"column":12},"end":{"line":37,"column":23}}]},"6":{"loc":{"start":{"line":40,"column":7},"end":{"line":40,"column":null}},"type":"cond-expr","locations":[{"start":{"line":40,"column":21},"end":{"line":40,"column":null}},{"start":{"line":40,"column":60},"end":{"line":40,"column":null}}]},"7":{"loc":{"start":{"line":43,"column":10},"end":{"line":43,"column":null}},"type":"cond-expr","locations":[{"start":{"line":43,"column":24},"end":{"line":43,"column":52}},{"start":{"line":43,"column":52},"end":{"line":43,"column":null}}]},"8":{"loc":{"start":{"line":48,"column":22},"end":{"line":48,"column":null}},"type":"cond-expr","locations":[{"start":{"line":48,"column":36},"end":{"line":48,"column":45}},{"start":{"line":48,"column":45},"end":{"line":48,"column":null}}]},"9":{"loc":{"start":{"line":67,"column":9},"end":{"line":77,"column":null}},"type":"cond-expr","locations":[{"start":{"line":68,"column":10},"end":{"line":69,"column":null}},{"start":{"line":77,"column":10},"end":{"line":77,"column":null}}]}},"s":{"0":4,"1":1,"2":1,"3":1,"4":2,"5":2,"6":2,"7":2,"8":6,"9":6,"10":0,"11":8,"12":1},"f":{"0":2,"1":6,"2":0,"3":8},"b":{"0":[2],"1":[0,2],"2":[2],"3":[0,2],"4":[0,2],"5":[0,2],"6":[0,2],"7":[0,2],"8":[0,2],"9":[0,2]}} +,"/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":20,"column":13},"end":{"line":20,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":28},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":16,"column":2}},"5":{"start":{"line":20,"column":23},"end":{"line":20,"column":null}},"6":{"start":{"line":21,"column":0},"end":{"line":49,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":4,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/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":3,"column":16},"end":{"line":3,"column":32}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":10,"column":12},"end":{"line":10,"column":null}},"3":{"start":{"line":25,"column":0},"end":{"line":34,"column":null}}},"fnMap":{"0":{"name":"TableOfContents","decl":{"start":{"line":3,"column":16},"end":{"line":3,"column":32}},"loc":{"start":{"line":3,"column":37},"end":{"line":23,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":9,"column":30},"end":{"line":9,"column":31}},"loc":{"start":{"line":10,"column":12},"end":{"line":10,"column":null}}}},"branchMap":{},"s":{"0":3,"1":1,"2":2,"3":1},"f":{"0":2,"1":2},"b":{}} +,"/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":10,"column":13},"end":{"line":10,"column":20}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"2":{"start":{"line":1,"column":32},"end":{"line":1,"column":null}},"3":{"start":{"line":3,"column":15},"end":{"line":6,"column":2}},"4":{"start":{"line":10,"column":23},"end":{"line":10,"column":null}},"5":{"start":{"line":12,"column":0},"end":{"line":15,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":4,"1":0,"2":1,"3":1,"4":1,"5":1},"f":{},"b":{}} +,"/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":8,"column":16},"end":{"line":8,"column":26}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":27},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":31},"end":{"line":3,"column":null}},"4":{"start":{"line":9,"column":16},"end":{"line":9,"column":null}},"5":{"start":{"line":11,"column":28},"end":{"line":15,"column":null}},"6":{"start":{"line":61,"column":25},"end":{"line":61,"column":null}},"7":{"start":{"line":70,"column":0},"end":{"line":170,"column":null}}},"fnMap":{"0":{"name":"TextField","decl":{"start":{"line":8,"column":16},"end":{"line":8,"column":26}},"loc":{"start":{"line":8,"column":65},"end":{"line":69,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":61,"column":18},"end":{"line":61,"column":19}},"loc":{"start":{"line":61,"column":25},"end":{"line":61,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":28},"end":{"line":8,"column":38}},"type":"default-arg","locations":[{"start":{"line":8,"column":36},"end":{"line":8,"column":38}}]},"1":{"loc":{"start":{"line":8,"column":40},"end":{"line":8,"column":53}},"type":"default-arg","locations":[{"start":{"line":8,"column":47},"end":{"line":8,"column":53}}]},"2":{"loc":{"start":{"line":11,"column":28},"end":{"line":15,"column":null}},"type":"cond-expr","locations":[{"start":{"line":12,"column":6},"end":{"line":14,"column":null}},{"start":{"line":15,"column":6},"end":{"line":15,"column":null}}]},"3":{"loc":{"start":{"line":19,"column":8},"end":{"line":19,"column":null}},"type":"cond-expr","locations":[{"start":{"line":19,"column":26},"end":{"line":19,"column":47}},{"start":{"line":19,"column":50},"end":{"line":19,"column":null}}]},"4":{"loc":{"start":{"line":24,"column":10},"end":{"line":24,"column":null}},"type":"cond-expr","locations":[{"start":{"line":24,"column":28},"end":{"line":24,"column":42}},{"start":{"line":24,"column":42},"end":{"line":24,"column":null}}]},"5":{"loc":{"start":{"line":28,"column":9},"end":{"line":32,"column":23}},"type":"cond-expr","locations":[{"start":{"line":29,"column":10},"end":{"line":32,"column":23}},{"start":{"line":32,"column":12},"end":{"line":32,"column":23}}]},"6":{"loc":{"start":{"line":35,"column":7},"end":{"line":43,"column":null}},"type":"cond-expr","locations":[{"start":{"line":36,"column":8},"end":{"line":43,"column":null}},{"start":{"line":43,"column":8},"end":{"line":43,"column":null}}]},"7":{"loc":{"start":{"line":46,"column":7},"end":{"line":46,"column":null}},"type":"cond-expr","locations":[{"start":{"line":46,"column":21},"end":{"line":46,"column":null}},{"start":{"line":46,"column":60},"end":{"line":46,"column":null}}]},"8":{"loc":{"start":{"line":49,"column":10},"end":{"line":49,"column":null}},"type":"cond-expr","locations":[{"start":{"line":49,"column":24},"end":{"line":49,"column":52}},{"start":{"line":49,"column":52},"end":{"line":49,"column":null}}]},"9":{"loc":{"start":{"line":50,"column":12},"end":{"line":50,"column":43}},"type":"cond-expr","locations":[{"start":{"line":50,"column":28},"end":{"line":50,"column":40}},{"start":{"line":50,"column":40},"end":{"line":50,"column":43}}]},"10":{"loc":{"start":{"line":60,"column":22},"end":{"line":60,"column":null}},"type":"cond-expr","locations":[{"start":{"line":60,"column":36},"end":{"line":60,"column":45}},{"start":{"line":60,"column":45},"end":{"line":60,"column":null}}]}},"s":{"0":7,"1":3,"2":3,"3":3,"4":6,"5":6,"6":2,"7":3},"f":{"0":6,"1":2},"b":{"0":[6],"1":[6],"2":[3,3],"3":[0,6],"4":[1,5],"5":[0,6],"6":[0,6],"7":[0,6],"8":[0,6],"9":[0,6],"10":[0,6]}} +,"/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":39,"column":13},"end":{"line":39,"column":22}},"1":{"start":{"line":20,"column":13},"end":{"line":20,"column":20}},"2":{"start":{"line":29,"column":13},"end":{"line":29,"column":25}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"4":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"5":{"start":{"line":2,"column":26},"end":{"line":2,"column":null}},"6":{"start":{"line":4,"column":15},"end":{"line":16,"column":2}},"7":{"start":{"line":20,"column":23},"end":{"line":20,"column":null}},"8":{"start":{"line":21,"column":0},"end":{"line":27,"column":null}},"9":{"start":{"line":29,"column":28},"end":{"line":29,"column":null}},"10":{"start":{"line":30,"column":0},"end":{"line":37,"column":null}},"11":{"start":{"line":39,"column":25},"end":{"line":39,"column":null}},"12":{"start":{"line":40,"column":0},"end":{"line":48,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":4,"2":2,"3":0,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/UpdateInfo.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/atoms/UpdateInfo.js","statementMap":{"0":{"start":{"line":4,"column":16},"end":{"line":4,"column":27}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":21},"end":{"line":2,"column":null}},"3":{"start":{"line":32,"column":0},"end":{"line":40,"column":null}}},"fnMap":{"0":{"name":"UpdateInfo","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":27}},"loc":{"start":{"line":4,"column":32},"end":{"line":30,"column":null}}}},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0},"f":{"0":0},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/FragmentRender.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/FragmentRender.js","statementMap":{"0":{"start":{"line":221,"column":24},"end":{"line":221,"column":39}},"1":{"start":{"line":2,"column":27},"end":{"line":2,"column":null}},"2":{"start":{"line":5,"column":26},"end":{"line":5,"column":null}},"3":{"start":{"line":6,"column":24},"end":{"line":6,"column":null}},"4":{"start":{"line":7,"column":19},"end":{"line":7,"column":null}},"5":{"start":{"line":8,"column":23},"end":{"line":8,"column":null}},"6":{"start":{"line":9,"column":37},"end":{"line":9,"column":null}},"7":{"start":{"line":10,"column":30},"end":{"line":10,"column":null}},"8":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"9":{"start":{"line":18,"column":18},"end":{"line":25,"column":null}},"10":{"start":{"line":37,"column":28},"end":{"line":209,"column":null}},"11":{"start":{"line":38,"column":2},"end":{"line":208,"column":null}},"12":{"start":{"line":41,"column":6},"end":{"line":64,"column":null}},"13":{"start":{"line":68,"column":6},"end":{"line":129,"column":null}},"14":{"start":{"line":71,"column":10},"end":{"line":89,"column":null}},"15":{"start":{"line":92,"column":10},"end":{"line":126,"column":null}},"16":{"start":{"line":128,"column":10},"end":{"line":128,"column":null}},"17":{"start":{"line":133,"column":6},"end":{"line":142,"column":null}},"18":{"start":{"line":146,"column":6},"end":{"line":151,"column":null}},"19":{"start":{"line":155,"column":6},"end":{"line":163,"column":null}},"20":{"start":{"line":167,"column":6},"end":{"line":205,"column":null}},"21":{"start":{"line":207,"column":6},"end":{"line":207,"column":null}},"22":{"start":{"line":223,"column":24},"end":{"line":244,"column":null}},"23":{"start":{"line":225,"column":21},"end":{"line":225,"column":58}},"24":{"start":{"line":228,"column":4},"end":{"line":230,"column":null}},"25":{"start":{"line":229,"column":6},"end":{"line":229,"column":null}},"26":{"start":{"line":233,"column":4},"end":{"line":235,"column":null}},"27":{"start":{"line":246,"column":2},"end":{"line":246,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":37,"column":28},"end":{"line":37,"column":29}},"loc":{"start":{"line":37,"column":65},"end":{"line":209,"column":null}}},"1":{"name":"FragmentRender","decl":{"start":{"line":221,"column":24},"end":{"line":221,"column":39}},"loc":{"start":{"line":221,"column":44},"end":{"line":247,"column":null}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":223,"column":44},"end":{"line":223,"column":45}},"loc":{"start":{"line":223,"column":45},"end":{"line":244,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":38,"column":2},"end":{"line":208,"column":null}},"type":"switch","locations":[{"start":{"line":40,"column":4},"end":{"line":64,"column":null}},{"start":{"line":67,"column":4},"end":{"line":129,"column":null}},{"start":{"line":132,"column":4},"end":{"line":142,"column":null}},{"start":{"line":145,"column":4},"end":{"line":151,"column":null}},{"start":{"line":154,"column":4},"end":{"line":163,"column":null}},{"start":{"line":166,"column":4},"end":{"line":205,"column":null}},{"start":{"line":206,"column":4},"end":{"line":207,"column":null}}]},"1":{"loc":{"start":{"line":43,"column":10},"end":{"line":43,"column":75}},"type":"cond-expr","locations":[{"start":{"line":43,"column":28},"end":{"line":43,"column":50}},{"start":{"line":43,"column":53},"end":{"line":43,"column":75}}]},"2":{"loc":{"start":{"line":47,"column":14},"end":{"line":49,"column":47}},"type":"cond-expr","locations":[{"start":{"line":48,"column":18},"end":{"line":48,"column":47}},{"start":{"line":49,"column":18},"end":{"line":49,"column":47}}]},"3":{"loc":{"start":{"line":56,"column":12},"end":{"line":58,"column":54}},"type":"cond-expr","locations":[{"start":{"line":57,"column":16},"end":{"line":57,"column":54}},{"start":{"line":58,"column":16},"end":{"line":58,"column":54}}]},"4":{"loc":{"start":{"line":60,"column":12},"end":{"line":62,"column":63}},"type":"cond-expr","locations":[{"start":{"line":61,"column":16},"end":{"line":61,"column":63}},{"start":{"line":62,"column":16},"end":{"line":62,"column":63}}]},"5":{"loc":{"start":{"line":68,"column":6},"end":{"line":129,"column":null}},"type":"switch","locations":[{"start":{"line":70,"column":8},"end":{"line":89,"column":null}},{"start":{"line":91,"column":8},"end":{"line":126,"column":null}},{"start":{"line":127,"column":8},"end":{"line":128,"column":null}}]},"6":{"loc":{"start":{"line":73,"column":14},"end":{"line":75,"column":63}},"type":"cond-expr","locations":[{"start":{"line":74,"column":18},"end":{"line":74,"column":63}},{"start":{"line":75,"column":18},"end":{"line":75,"column":63}}]},"7":{"loc":{"start":{"line":76,"column":17},"end":{"line":80,"column":null}},"type":"cond-expr","locations":[{"start":{"line":77,"column":16},"end":{"line":79,"column":58}},{"start":{"line":80,"column":16},"end":{"line":80,"column":null}}]},"8":{"loc":{"start":{"line":77,"column":16},"end":{"line":79,"column":58}},"type":"cond-expr","locations":[{"start":{"line":78,"column":18},"end":{"line":78,"column":58}},{"start":{"line":79,"column":18},"end":{"line":79,"column":58}}]},"9":{"loc":{"start":{"line":84,"column":14},"end":{"line":86,"column":63}},"type":"cond-expr","locations":[{"start":{"line":85,"column":18},"end":{"line":85,"column":63}},{"start":{"line":86,"column":18},"end":{"line":86,"column":63}}]},"10":{"loc":{"start":{"line":94,"column":14},"end":{"line":96,"column":63}},"type":"cond-expr","locations":[{"start":{"line":95,"column":18},"end":{"line":95,"column":63}},{"start":{"line":96,"column":18},"end":{"line":96,"column":63}}]},"11":{"loc":{"start":{"line":97,"column":17},"end":{"line":101,"column":null}},"type":"cond-expr","locations":[{"start":{"line":98,"column":16},"end":{"line":100,"column":58}},{"start":{"line":101,"column":16},"end":{"line":101,"column":null}}]},"12":{"loc":{"start":{"line":98,"column":16},"end":{"line":100,"column":58}},"type":"cond-expr","locations":[{"start":{"line":99,"column":18},"end":{"line":99,"column":58}},{"start":{"line":100,"column":18},"end":{"line":100,"column":58}}]},"13":{"loc":{"start":{"line":105,"column":14},"end":{"line":107,"column":63}},"type":"cond-expr","locations":[{"start":{"line":106,"column":18},"end":{"line":106,"column":63}},{"start":{"line":107,"column":18},"end":{"line":107,"column":63}}]},"14":{"loc":{"start":{"line":110,"column":14},"end":{"line":112,"column":61}},"type":"cond-expr","locations":[{"start":{"line":111,"column":18},"end":{"line":111,"column":61}},{"start":{"line":112,"column":18},"end":{"line":112,"column":61}}]},"15":{"loc":{"start":{"line":114,"column":14},"end":{"line":116,"column":54}},"type":"cond-expr","locations":[{"start":{"line":115,"column":18},"end":{"line":115,"column":54}},{"start":{"line":116,"column":18},"end":{"line":116,"column":54}}]},"16":{"loc":{"start":{"line":120,"column":18},"end":{"line":122,"column":null}},"type":"cond-expr","locations":[{"start":{"line":121,"column":22},"end":{"line":121,"column":null}},{"start":{"line":122,"column":22},"end":{"line":122,"column":null}}]},"17":{"loc":{"start":{"line":135,"column":10},"end":{"line":137,"column":59}},"type":"cond-expr","locations":[{"start":{"line":136,"column":14},"end":{"line":136,"column":59}},{"start":{"line":137,"column":14},"end":{"line":137,"column":59}}]},"18":{"loc":{"start":{"line":139,"column":10},"end":{"line":141,"column":59}},"type":"cond-expr","locations":[{"start":{"line":140,"column":14},"end":{"line":140,"column":59}},{"start":{"line":141,"column":14},"end":{"line":141,"column":59}}]},"19":{"loc":{"start":{"line":148,"column":10},"end":{"line":150,"column":43}},"type":"cond-expr","locations":[{"start":{"line":149,"column":14},"end":{"line":149,"column":43}},{"start":{"line":150,"column":14},"end":{"line":150,"column":43}}]},"20":{"loc":{"start":{"line":159,"column":10},"end":{"line":161,"column":45}},"type":"cond-expr","locations":[{"start":{"line":160,"column":14},"end":{"line":160,"column":45}},{"start":{"line":161,"column":14},"end":{"line":161,"column":45}}]},"21":{"loc":{"start":{"line":162,"column":14},"end":{"line":162,"column":79}},"type":"cond-expr","locations":[{"start":{"line":162,"column":32},"end":{"line":162,"column":54}},{"start":{"line":162,"column":57},"end":{"line":162,"column":79}}]},"22":{"loc":{"start":{"line":170,"column":10},"end":{"line":172,"column":48}},"type":"cond-expr","locations":[{"start":{"line":171,"column":14},"end":{"line":171,"column":48}},{"start":{"line":172,"column":14},"end":{"line":172,"column":48}}]},"23":{"loc":{"start":{"line":174,"column":10},"end":{"line":176,"column":43}},"type":"cond-expr","locations":[{"start":{"line":175,"column":14},"end":{"line":175,"column":43}},{"start":{"line":176,"column":14},"end":{"line":176,"column":43}}]},"24":{"loc":{"start":{"line":182,"column":14},"end":{"line":184,"column":52}},"type":"cond-expr","locations":[{"start":{"line":183,"column":18},"end":{"line":183,"column":52}},{"start":{"line":184,"column":18},"end":{"line":184,"column":52}}]},"25":{"loc":{"start":{"line":189,"column":10},"end":{"line":191,"column":46}},"type":"cond-expr","locations":[{"start":{"line":190,"column":14},"end":{"line":190,"column":46}},{"start":{"line":191,"column":14},"end":{"line":191,"column":46}}]},"26":{"loc":{"start":{"line":193,"column":10},"end":{"line":195,"column":39}},"type":"cond-expr","locations":[{"start":{"line":194,"column":14},"end":{"line":194,"column":39}},{"start":{"line":195,"column":14},"end":{"line":195,"column":39}}]},"27":{"loc":{"start":{"line":199,"column":14},"end":{"line":201,"column":48}},"type":"cond-expr","locations":[{"start":{"line":200,"column":18},"end":{"line":200,"column":48}},{"start":{"line":201,"column":18},"end":{"line":201,"column":48}}]},"28":{"loc":{"start":{"line":228,"column":4},"end":{"line":230,"column":null}},"type":"if","locations":[{"start":{"line":228,"column":4},"end":{"line":230,"column":null}}]}},"s":{"0":11,"1":4,"2":4,"3":4,"4":4,"5":4,"6":4,"7":4,"8":4,"9":4,"10":4,"11":17,"12":1,"13":3,"14":2,"15":1,"16":0,"17":1,"18":6,"19":5,"20":1,"21":0,"22":11,"23":17,"24":17,"25":0,"26":17,"27":10},"f":{"0":17,"1":11,"2":17},"b":{"0":[1,3,1,6,5,1,0],"1":[1,0],"2":[1,0],"3":[1,0],"4":[1,0],"5":[2,1,0],"6":[1,1],"7":[1,1],"8":[1,0],"9":[1,1],"10":[1,0],"11":[1,0],"12":[1,0],"13":[1,0],"14":[1,0],"15":[1,0],"16":[1,0],"17":[1,0],"18":[1,0],"19":[1,5],"20":[1,4],"21":[1,4],"22":[1,0],"23":[1,0],"24":[1,0],"25":[1,0],"26":[1,0],"27":[1,0],"28":[0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/FragmentRender.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/FragmentRender.stories.js","statementMap":{"0":{"start":{"line":13,"column":13},"end":{"line":13,"column":23}},"1":{"start":{"line":18,"column":13},"end":{"line":18,"column":19}},"2":{"start":{"line":19,"column":13},"end":{"line":19,"column":30}},"3":{"start":{"line":16,"column":13},"end":{"line":16,"column":37}},"4":{"start":{"line":17,"column":13},"end":{"line":17,"column":24}},"5":{"start":{"line":14,"column":13},"end":{"line":14,"column":26}},"6":{"start":{"line":15,"column":13},"end":{"line":15,"column":34}},"7":{"start":{"line":5,"column":0},"end":{"line":5,"column":15}},"8":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"9":{"start":{"line":2,"column":27},"end":{"line":2,"column":null}},"10":{"start":{"line":3,"column":29},"end":{"line":3,"column":null}},"11":{"start":{"line":5,"column":15},"end":{"line":9,"column":2}},"12":{"start":{"line":13,"column":26},"end":{"line":13,"column":null}},"13":{"start":{"line":14,"column":29},"end":{"line":14,"column":null}},"14":{"start":{"line":15,"column":37},"end":{"line":15,"column":null}},"15":{"start":{"line":16,"column":40},"end":{"line":16,"column":null}},"16":{"start":{"line":17,"column":27},"end":{"line":17,"column":null}},"17":{"start":{"line":18,"column":22},"end":{"line":18,"column":null}},"18":{"start":{"line":19,"column":33},"end":{"line":19,"column":null}},"19":{"start":{"line":21,"column":0},"end":{"line":87,"column":null}},"20":{"start":{"line":89,"column":0},"end":{"line":680,"column":null}},"21":{"start":{"line":682,"column":0},"end":{"line":1212,"column":null}},"22":{"start":{"line":1214,"column":0},"end":{"line":1270,"column":null}},"23":{"start":{"line":1272,"column":0},"end":{"line":1327,"column":null}},"24":{"start":{"line":1329,"column":0},"end":{"line":1346,"column":null}},"25":{"start":{"line":1348,"column":0},"end":{"line":1425,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":0,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/PageHead.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/PageHead.js","statementMap":{"0":{"start":{"line":3,"column":24},"end":{"line":3,"column":33}},"1":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}}},"fnMap":{"0":{"name":"PageHead","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":33}},"loc":{"start":{"line":3,"column":38},"end":{"line":161,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":9},"end":{"line":10,"column":74}},"type":"cond-expr","locations":[{"start":{"line":9,"column":12},"end":{"line":9,"column":63}},{"start":{"line":10,"column":12},"end":{"line":10,"column":74}}]},"1":{"loc":{"start":{"line":15,"column":10},"end":{"line":17,"column":69}},"type":"cond-expr","locations":[{"start":{"line":16,"column":14},"end":{"line":16,"column":69}},{"start":{"line":17,"column":14},"end":{"line":17,"column":69}}]},"2":{"loc":{"start":{"line":26,"column":10},"end":{"line":28,"column":41}},"type":"cond-expr","locations":[{"start":{"line":27,"column":14},"end":{"line":27,"column":41}},{"start":{"line":28,"column":14},"end":{"line":28,"column":41}}]},"3":{"loc":{"start":{"line":36,"column":10},"end":{"line":38,"column":38}},"type":"cond-expr","locations":[{"start":{"line":37,"column":14},"end":{"line":37,"column":38}},{"start":{"line":38,"column":14},"end":{"line":38,"column":38}}]},"4":{"loc":{"start":{"line":43,"column":17},"end":{"line":43,"column":null}},"type":"cond-expr","locations":[{"start":{"line":43,"column":41},"end":{"line":43,"column":49}},{"start":{"line":43,"column":49},"end":{"line":43,"column":null}}]},"5":{"loc":{"start":{"line":49,"column":10},"end":{"line":51,"column":null}},"type":"cond-expr","locations":[{"start":{"line":50,"column":14},"end":{"line":50,"column":null}},{"start":{"line":51,"column":14},"end":{"line":51,"column":null}}]},"6":{"loc":{"start":{"line":62,"column":10},"end":{"line":64,"column":38}},"type":"cond-expr","locations":[{"start":{"line":63,"column":14},"end":{"line":63,"column":38}},{"start":{"line":64,"column":14},"end":{"line":64,"column":38}}]},"7":{"loc":{"start":{"line":82,"column":12},"end":{"line":84,"column":43}},"type":"cond-expr","locations":[{"start":{"line":83,"column":16},"end":{"line":83,"column":43}},{"start":{"line":84,"column":16},"end":{"line":84,"column":43}}]},"8":{"loc":{"start":{"line":91,"column":10},"end":{"line":93,"column":38}},"type":"cond-expr","locations":[{"start":{"line":92,"column":14},"end":{"line":92,"column":38}},{"start":{"line":93,"column":14},"end":{"line":93,"column":38}}]},"9":{"loc":{"start":{"line":99,"column":10},"end":{"line":101,"column":38}},"type":"cond-expr","locations":[{"start":{"line":100,"column":14},"end":{"line":100,"column":38}},{"start":{"line":101,"column":14},"end":{"line":101,"column":38}}]},"10":{"loc":{"start":{"line":111,"column":10},"end":{"line":113,"column":38}},"type":"cond-expr","locations":[{"start":{"line":112,"column":14},"end":{"line":112,"column":38}},{"start":{"line":113,"column":14},"end":{"line":113,"column":38}}]},"11":{"loc":{"start":{"line":124,"column":12},"end":{"line":126,"column":43}},"type":"cond-expr","locations":[{"start":{"line":125,"column":16},"end":{"line":125,"column":43}},{"start":{"line":126,"column":16},"end":{"line":126,"column":43}}]},"12":{"loc":{"start":{"line":133,"column":10},"end":{"line":135,"column":38}},"type":"cond-expr","locations":[{"start":{"line":134,"column":14},"end":{"line":134,"column":38}},{"start":{"line":135,"column":14},"end":{"line":135,"column":38}}]},"13":{"loc":{"start":{"line":142,"column":10},"end":{"line":144,"column":38}},"type":"cond-expr","locations":[{"start":{"line":143,"column":14},"end":{"line":143,"column":38}},{"start":{"line":144,"column":14},"end":{"line":144,"column":38}}]},"14":{"loc":{"start":{"line":154,"column":10},"end":{"line":156,"column":38}},"type":"cond-expr","locations":[{"start":{"line":155,"column":14},"end":{"line":155,"column":38}},{"start":{"line":156,"column":14},"end":{"line":156,"column":38}}]}},"s":{"0":0,"1":0},"f":{"0":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]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ArticleCTA.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ArticleCTA.js","statementMap":{"0":{"start":{"line":3,"column":24},"end":{"line":3,"column":35}},"1":{"start":{"line":1,"column":20},"end":{"line":1,"column":null}}},"fnMap":{"0":{"name":"ArticleCTA","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":35}},"loc":{"start":{"line":3,"column":76},"end":{"line":13,"column":null}}}},"branchMap":{},"s":{"0":6,"1":5},"f":{"0":2},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ArticleCTA.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ArticleCTA.stories.js","statementMap":{"0":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":23},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":12,"column":0},"end":{"line":22,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/BasicTextWithImage.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/BasicTextWithImage.js","statementMap":{"0":{"start":{"line":4,"column":24},"end":{"line":4,"column":43}},"1":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":23},"end":{"line":2,"column":null}}},"fnMap":{"0":{"name":"BasicTextWithImage","decl":{"start":{"line":4,"column":24},"end":{"line":4,"column":43}},"loc":{"start":{"line":11,"column":1},"end":{"line":33,"column":null}}}},"branchMap":{},"s":{"0":5,"1":6,"2":6},"f":{"0":4},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/BasicTextWithImage.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/BasicTextWithImage.stories.js","statementMap":{"0":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":31},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":12,"column":0},"end":{"line":29,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/Button.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/Button.js","statementMap":{"0":{"start":{"line":3,"column":24},"end":{"line":3,"column":31}},"1":{"start":{"line":1,"column":29},"end":{"line":1,"column":null}},"2":{"start":{"line":5,"column":4},"end":{"line":11,"column":null}}},"fnMap":{"0":{"name":"Button","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":31}},"loc":{"start":{"line":3,"column":61},"end":{"line":23,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":4},"end":{"line":11,"column":null}},"type":"cond-expr","locations":[{"start":{"line":6,"column":8},"end":{"line":6,"column":null}},{"start":{"line":7,"column":8},"end":{"line":11,"column":null}}]},"1":{"loc":{"start":{"line":7,"column":8},"end":{"line":11,"column":null}},"type":"cond-expr","locations":[{"start":{"line":8,"column":8},"end":{"line":8,"column":null}},{"start":{"line":9,"column":8},"end":{"line":11,"column":null}}]},"2":{"loc":{"start":{"line":9,"column":8},"end":{"line":11,"column":null}},"type":"cond-expr","locations":[{"start":{"line":10,"column":8},"end":{"line":10,"column":null}},{"start":{"line":11,"column":8},"end":{"line":11,"column":null}}]}},"s":{"0":7,"1":5,"2":7},"f":{"0":7},"b":{"0":[0,7],"1":[4,3],"2":[3,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/Button.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/Button.stories.js","statementMap":{"0":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":12,"column":13},"end":{"line":12,"column":22}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"3":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"4":{"start":{"line":2,"column":19},"end":{"line":2,"column":null}},"5":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"6":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"7":{"start":{"line":12,"column":25},"end":{"line":12,"column":null}},"8":{"start":{"line":13,"column":0},"end":{"line":18,"column":null}},"9":{"start":{"line":20,"column":0},"end":{"line":25,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":0,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ImageFragment.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ImageFragment.js","statementMap":{"0":{"start":{"line":3,"column":24},"end":{"line":3,"column":38}},"1":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}}},"fnMap":{"0":{"name":"ImageFragment","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":38}},"loc":{"start":{"line":3,"column":43},"end":{"line":31,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":10},"end":{"line":11,"column":54}},"type":"cond-expr","locations":[{"start":{"line":10,"column":14},"end":{"line":10,"column":54}},{"start":{"line":11,"column":14},"end":{"line":11,"column":54}}]},"1":{"loc":{"start":{"line":14,"column":10},"end":{"line":16,"column":49}},"type":"cond-expr","locations":[{"start":{"line":15,"column":14},"end":{"line":15,"column":49}},{"start":{"line":16,"column":14},"end":{"line":16,"column":49}}]},"2":{"loc":{"start":{"line":25,"column":9},"end":{"line":27,"column":72}},"type":"cond-expr","locations":[{"start":{"line":26,"column":12},"end":{"line":26,"column":72}},{"start":{"line":27,"column":12},"end":{"line":27,"column":72}}]}},"s":{"0":0,"1":0},"f":{"0":0},"b":{"0":[0,0],"1":[0,0],"2":[0,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ImageFragment.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ImageFragment.stories.js","statementMap":{"0":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"1":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":26},"end":{"line":2,"column":null}},"3":{"start":{"line":4,"column":15},"end":{"line":7,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":0,"1":0,"2":0,"3":0},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ImageVerticalLineContent.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ImageVerticalLineContent.js","statementMap":{"0":{"start":{"line":5,"column":24},"end":{"line":5,"column":49}},"1":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":23},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":25},"end":{"line":3,"column":null}}},"fnMap":{"0":{"name":"ImageVerticalLineContent","decl":{"start":{"line":5,"column":24},"end":{"line":5,"column":49}},"loc":{"start":{"line":14,"column":1},"end":{"line":43,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":9},"end":{"line":38,"column":null}},"type":"cond-expr","locations":[{"start":{"line":34,"column":10},"end":{"line":38,"column":null}},{"start":{"line":38,"column":10},"end":{"line":38,"column":null}}]}},"s":{"0":6,"1":6,"2":6,"3":6},"f":{"0":5},"b":{"0":[3,2]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ImageVerticalLineContent.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ImageVerticalLineContent.stories.js","statementMap":{"0":{"start":{"line":21,"column":13},"end":{"line":21,"column":20}},"1":{"start":{"line":22,"column":13},"end":{"line":22,"column":25}},"2":{"start":{"line":6,"column":0},"end":{"line":6,"column":15}},"3":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"4":{"start":{"line":2,"column":37},"end":{"line":2,"column":null}},"5":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"6":{"start":{"line":4,"column":29},"end":{"line":4,"column":null}},"7":{"start":{"line":6,"column":15},"end":{"line":17,"column":2}},"8":{"start":{"line":21,"column":23},"end":{"line":21,"column":null}},"9":{"start":{"line":22,"column":28},"end":{"line":22,"column":null}},"10":{"start":{"line":23,"column":0},"end":{"line":74,"column":null}},"11":{"start":{"line":76,"column":0},"end":{"line":130,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":0,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ImageWithCollapse.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ImageWithCollapse.js","statementMap":{"0":{"start":{"line":4,"column":24},"end":{"line":4,"column":42}},"1":{"start":{"line":1,"column":25},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":18},"end":{"line":2,"column":null}}},"fnMap":{"0":{"name":"ImageWithCollapse","decl":{"start":{"line":4,"column":24},"end":{"line":4,"column":42}},"loc":{"start":{"line":14,"column":1},"end":{"line":43,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":27,"column":7},"end":{"line":32,"column":null}},"type":"cond-expr","locations":[{"start":{"line":28,"column":8},"end":{"line":32,"column":null}},{"start":{"line":32,"column":8},"end":{"line":32,"column":null}}]},"1":{"loc":{"start":{"line":34,"column":7},"end":{"line":39,"column":null}},"type":"cond-expr","locations":[{"start":{"line":35,"column":8},"end":{"line":39,"column":null}},{"start":{"line":39,"column":8},"end":{"line":39,"column":null}}]}},"s":{"0":7,"1":5,"2":5},"f":{"0":3},"b":{"0":[3,0],"1":[3,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ImageWithCollapse.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/ImageWithCollapse.stories.js","statementMap":{"0":{"start":{"line":13,"column":13},"end":{"line":13,"column":20}},"1":{"start":{"line":6,"column":0},"end":{"line":6,"column":15}},"2":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":30},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":29},"end":{"line":4,"column":null}},"6":{"start":{"line":6,"column":15},"end":{"line":9,"column":2}},"7":{"start":{"line":13,"column":23},"end":{"line":13,"column":null}},"8":{"start":{"line":14,"column":0},"end":{"line":24,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/QuoteVerticalLineContent.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/QuoteVerticalLineContent.js","statementMap":{"0":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"1":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}}},"fnMap":{"0":{"name":"QuoteVerticalLineContent","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":49}},"loc":{"start":{"line":6,"column":1},"end":{"line":23,"column":null}}}},"branchMap":{},"s":{"0":6,"1":5},"f":{"0":2},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/QuoteVerticalLineContent.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/QuoteVerticalLineContent.stories.js","statementMap":{"0":{"start":{"line":12,"column":13},"end":{"line":12,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":37},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":8,"column":2}},"5":{"start":{"line":12,"column":23},"end":{"line":12,"column":null}},"6":{"start":{"line":13,"column":0},"end":{"line":37,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/TextContent.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/TextContent.js","statementMap":{"0":{"start":{"line":3,"column":24},"end":{"line":3,"column":36}},"1":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}}},"fnMap":{"0":{"name":"TextContent","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":36}},"loc":{"start":{"line":3,"column":44},"end":{"line":11,"column":null}}}},"branchMap":{},"s":{"0":6,"1":5},"f":{"0":7},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/TextContent.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/TextContent.stories.js","statementMap":{"0":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":24},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":0},"end":{"line":26,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/TextWithImage.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/TextWithImage.js","statementMap":{"0":{"start":{"line":4,"column":24},"end":{"line":4,"column":38}},"1":{"start":{"line":1,"column":31},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":37},"end":{"line":2,"column":null}},"3":{"start":{"line":16,"column":2},"end":{"line":44,"column":null}},"4":{"start":{"line":43,"column":6},"end":{"line":43,"column":null}}},"fnMap":{"0":{"name":"TextWithImage","decl":{"start":{"line":4,"column":24},"end":{"line":4,"column":38}},"loc":{"start":{"line":15,"column":1},"end":{"line":45,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":2},"end":{"line":44,"column":null}},"type":"switch","locations":[{"start":{"line":42,"column":4},"end":{"line":43,"column":null}}]}},"s":{"0":8,"1":5,"2":5,"3":6,"4":0},"f":{"0":6},"b":{"0":[0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/TextWithImage.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/fragment_renderer/fragment_components/TextWithImage.stories.js","statementMap":{"0":{"start":{"line":13,"column":13},"end":{"line":13,"column":20}},"1":{"start":{"line":14,"column":13},"end":{"line":14,"column":21}},"2":{"start":{"line":15,"column":13},"end":{"line":15,"column":33}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":15}},"4":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"5":{"start":{"line":2,"column":26},"end":{"line":2,"column":null}},"6":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"7":{"start":{"line":4,"column":29},"end":{"line":4,"column":null}},"8":{"start":{"line":6,"column":15},"end":{"line":9,"column":2}},"9":{"start":{"line":13,"column":23},"end":{"line":13,"column":null}},"10":{"start":{"line":14,"column":24},"end":{"line":14,"column":null}},"11":{"start":{"line":15,"column":36},"end":{"line":15,"column":null}},"12":{"start":{"line":17,"column":0},"end":{"line":35,"column":null}},"13":{"start":{"line":37,"column":0},"end":{"line":88,"column":null}},"14":{"start":{"line":90,"column":0},"end":{"line":144,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":0,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/CTA.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/CTA.js","statementMap":{"0":{"start":{"line":5,"column":16},"end":{"line":5,"column":20}},"1":{"start":{"line":1,"column":25},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":21},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":22},"end":{"line":3,"column":null}},"4":{"start":{"line":13,"column":17},"end":{"line":13,"column":null}},"5":{"start":{"line":13,"column":26},"end":{"line":13,"column":null}}},"fnMap":{"0":{"name":"CTA","decl":{"start":{"line":5,"column":16},"end":{"line":5,"column":20}},"loc":{"start":{"line":11,"column":1},"end":{"line":41,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":17},"end":{"line":13,"column":18}},"loc":{"start":{"line":13,"column":26},"end":{"line":13,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":2},"end":{"line":10,"column":21}},"type":"default-arg","locations":[{"start":{"line":10,"column":19},"end":{"line":10,"column":21}}]},"1":{"loc":{"start":{"line":29,"column":26},"end":{"line":29,"column":33}},"type":"cond-expr","locations":[{"start":{"line":29,"column":26},"end":{"line":29,"column":33}}]},"2":{"loc":{"start":{"line":36,"column":11},"end":{"line":36,"column":24}},"type":"binary-expr","locations":[{"start":{"line":36,"column":11},"end":{"line":36,"column":24}}]}},"s":{"0":7,"1":6,"2":6,"3":6,"4":5,"5":5},"f":{"0":5,"1":5},"b":{"0":[3],"1":[0],"2":[5]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/CTA.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/CTA.stories.js","statementMap":{"0":{"start":{"line":10,"column":13},"end":{"line":10,"column":20}},"1":{"start":{"line":23,"column":13},"end":{"line":23,"column":24}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"3":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"4":{"start":{"line":2,"column":20},"end":{"line":2,"column":null}},"5":{"start":{"line":3,"column":15},"end":{"line":6,"column":2}},"6":{"start":{"line":10,"column":23},"end":{"line":10,"column":null}},"7":{"start":{"line":11,"column":0},"end":{"line":21,"column":null}},"8":{"start":{"line":23,"column":27},"end":{"line":23,"column":null}},"9":{"start":{"line":24,"column":0},"end":{"line":30,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":4,"1":2,"2":0,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},"f":{},"b":{}} +,"/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":11,"column":13},"end":{"line":11,"column":17}},"1":{"start":{"line":172,"column":0},"end":{"line":172,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":22},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":29},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":18},"end":{"line":5,"column":null}},"7":{"start":{"line":11,"column":20},"end":{"line":103,"column":null}},"8":{"start":{"line":12,"column":21},"end":{"line":17,"column":null}},"9":{"start":{"line":19,"column":20},"end":{"line":19,"column":null}},"10":{"start":{"line":105,"column":0},"end":{"line":170,"column":null}},"11":{"start":{"line":172,"column":15},"end":{"line":172,"column":20}}},"fnMap":{"0":{"name":"(anonymous_4)","decl":{"start":{"line":11,"column":20},"end":{"line":11,"column":21}},"loc":{"start":{"line":11,"column":21},"end":{"line":103,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":20},"end":{"line":19,"column":null}},"type":"binary-expr","locations":[{"start":{"line":19,"column":20},"end":{"line":19,"column":41}},{"start":{"line":19,"column":45},"end":{"line":19,"column":null}}]},"1":{"loc":{"start":{"line":30,"column":9},"end":{"line":44,"column":null}},"type":"cond-expr","locations":[{"start":{"line":31,"column":10},"end":{"line":44,"column":null}},{"start":{"line":44,"column":10},"end":{"line":44,"column":null}}]},"2":{"loc":{"start":{"line":54,"column":13},"end":{"line":63,"column":null}},"type":"cond-expr","locations":[{"start":{"line":55,"column":14},"end":{"line":60,"column":null}},{"start":{"line":63,"column":14},"end":{"line":63,"column":null}}]},"3":{"loc":{"start":{"line":55,"column":14},"end":{"line":60,"column":null}},"type":"cond-expr","locations":[{"start":{"line":56,"column":16},"end":{"line":60,"column":null}},{"start":{"line":60,"column":16},"end":{"line":60,"column":null}}]},"4":{"loc":{"start":{"line":66,"column":11},"end":{"line":74,"column":null}},"type":"cond-expr","locations":[{"start":{"line":67,"column":12},"end":{"line":74,"column":null}},{"start":{"line":74,"column":12},"end":{"line":74,"column":null}}]},"5":{"loc":{"start":{"line":77,"column":9},"end":{"line":82,"column":null}},"type":"cond-expr","locations":[{"start":{"line":78,"column":10},"end":{"line":82,"column":null}},{"start":{"line":82,"column":10},"end":{"line":82,"column":null}}]},"6":{"loc":{"start":{"line":85,"column":10},"end":{"line":85,"column":24}},"type":"cond-expr","locations":[{"start":{"line":85,"column":10},"end":{"line":85,"column":24}}]},"7":{"loc":{"start":{"line":89,"column":9},"end":{"line":98,"column":null}},"type":"cond-expr","locations":[{"start":{"line":90,"column":10},"end":{"line":98,"column":null}},{"start":{"line":98,"column":10},"end":{"line":98,"column":null}}]}},"s":{"0":0,"1":31,"2":10,"3":10,"4":10,"5":10,"6":10,"7":10,"8":32,"9":32,"10":10,"11":10},"f":{"0":32},"b":{"0":[32,29],"1":[15,15],"2":[0,30],"3":[0,0],"4":[1,29],"5":[0,30],"6":[12],"7":[0,30]}} +,"/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":12,"column":13},"end":{"line":12,"column":20}},"1":{"start":{"line":16,"column":13},"end":{"line":16,"column":23}},"2":{"start":{"line":15,"column":13},"end":{"line":15,"column":21}},"3":{"start":{"line":14,"column":13},"end":{"line":14,"column":22}},"4":{"start":{"line":13,"column":13},"end":{"line":13,"column":20}},"5":{"start":{"line":5,"column":0},"end":{"line":5,"column":15}},"6":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"7":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"8":{"start":{"line":3,"column":18},"end":{"line":3,"column":null}},"9":{"start":{"line":5,"column":15},"end":{"line":8,"column":2}},"10":{"start":{"line":12,"column":23},"end":{"line":12,"column":null}},"11":{"start":{"line":13,"column":23},"end":{"line":13,"column":null}},"12":{"start":{"line":14,"column":25},"end":{"line":14,"column":null}},"13":{"start":{"line":15,"column":24},"end":{"line":15,"column":null}},"14":{"start":{"line":16,"column":26},"end":{"line":16,"column":null}},"15":{"start":{"line":18,"column":0},"end":{"line":24,"column":null}},"16":{"start":{"line":26,"column":0},"end":{"line":33,"column":null}},"17":{"start":{"line":35,"column":0},"end":{"line":42,"column":null}},"18":{"start":{"line":44,"column":0},"end":{"line":50,"column":null}},"19":{"start":{"line":52,"column":0},"end":{"line":59,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":4,"1":0,"2":0,"3":0,"4":2,"5":0,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Collapse.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Collapse.js","statementMap":{"0":{"start":{"line":3,"column":16},"end":{"line":3,"column":25}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":30},"end":{"line":4,"column":null}},"3":{"start":{"line":5,"column":2},"end":{"line":7,"column":null}},"4":{"start":{"line":26,"column":0},"end":{"line":50,"column":null}}},"fnMap":{"0":{"name":"Collapse","decl":{"start":{"line":3,"column":16},"end":{"line":3,"column":25}},"loc":{"start":{"line":3,"column":62},"end":{"line":24,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":3,"column":27},"end":{"line":3,"column":50}},"type":"default-arg","locations":[{"start":{"line":3,"column":32},"end":{"line":3,"column":50}}]}},"s":{"0":12,"1":9,"2":11,"3":11,"4":9},"f":{"0":11},"b":{"0":[6]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Collapse.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Collapse.stories.js","statementMap":{"0":{"start":{"line":19,"column":13},"end":{"line":19,"column":28}},"1":{"start":{"line":11,"column":13},"end":{"line":11,"column":28}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"3":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"4":{"start":{"line":2,"column":25},"end":{"line":2,"column":null}},"5":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"6":{"start":{"line":11,"column":31},"end":{"line":11,"column":null}},"7":{"start":{"line":12,"column":0},"end":{"line":17,"column":null}},"8":{"start":{"line":19,"column":31},"end":{"line":19,"column":null}},"9":{"start":{"line":20,"column":0},"end":{"line":36,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":2,"2":0,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/ContextualAlert.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/ContextualAlert.js","statementMap":{"0":{"start":{"line":3,"column":16},"end":{"line":3,"column":32}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":22},"end":{"line":4,"column":null}},"3":{"start":{"line":5,"column":21},"end":{"line":5,"column":null}},"4":{"start":{"line":6,"column":19},"end":{"line":6,"column":null}},"5":{"start":{"line":7,"column":22},"end":{"line":7,"column":null}},"6":{"start":{"line":18,"column":6},"end":{"line":18,"column":null}},"7":{"start":{"line":21,"column":4},"end":{"line":27,"column":null}},"8":{"start":{"line":30,"column":4},"end":{"line":36,"column":null}},"9":{"start":{"line":38,"column":17},"end":{"line":38,"column":null}},"10":{"start":{"line":77,"column":0},"end":{"line":121,"column":null}}},"fnMap":{"0":{"name":"ContextualAlert","decl":{"start":{"line":3,"column":16},"end":{"line":3,"column":32}},"loc":{"start":{"line":3,"column":37},"end":{"line":75,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":21,"column":4},"end":{"line":27,"column":null}},"type":"cond-expr","locations":[{"start":{"line":22,"column":8},"end":{"line":22,"column":null}},{"start":{"line":23,"column":8},"end":{"line":27,"column":null}}]},"1":{"loc":{"start":{"line":23,"column":8},"end":{"line":27,"column":null}},"type":"cond-expr","locations":[{"start":{"line":24,"column":8},"end":{"line":24,"column":null}},{"start":{"line":25,"column":8},"end":{"line":27,"column":null}}]},"2":{"loc":{"start":{"line":25,"column":8},"end":{"line":27,"column":null}},"type":"cond-expr","locations":[{"start":{"line":26,"column":8},"end":{"line":26,"column":null}},{"start":{"line":27,"column":8},"end":{"line":27,"column":null}}]},"3":{"loc":{"start":{"line":30,"column":4},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":31,"column":8},"end":{"line":31,"column":null}},{"start":{"line":32,"column":8},"end":{"line":36,"column":null}}]},"4":{"loc":{"start":{"line":32,"column":8},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":33,"column":8},"end":{"line":33,"column":null}},{"start":{"line":34,"column":8},"end":{"line":36,"column":null}}]},"5":{"loc":{"start":{"line":34,"column":8},"end":{"line":36,"column":null}},"type":"cond-expr","locations":[{"start":{"line":35,"column":8},"end":{"line":35,"column":null}},{"start":{"line":36,"column":8},"end":{"line":36,"column":null}}]},"6":{"loc":{"start":{"line":38,"column":17},"end":{"line":38,"column":null}},"type":"cond-expr","locations":[{"start":{"line":38,"column":27},"end":{"line":38,"column":55}},{"start":{"line":38,"column":55},"end":{"line":38,"column":null}}]},"7":{"loc":{"start":{"line":53,"column":10},"end":{"line":58,"column":11}},"type":"cond-expr","locations":[{"start":{"line":53,"column":10},"end":{"line":58,"column":11}}]},"8":{"loc":{"start":{"line":63,"column":10},"end":{"line":68,"column":11}},"type":"cond-expr","locations":[{"start":{"line":63,"column":10},"end":{"line":68,"column":11}}]}},"s":{"0":9,"1":3,"2":9,"3":9,"4":9,"5":9,"6":9,"7":7,"8":7,"9":7,"10":3},"f":{"0":9},"b":{"0":[2,5],"1":[1,4],"2":[2,2],"3":[2,5],"4":[1,4],"5":[2,2],"6":[0,7],"7":[0],"8":[0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/ContextualAlert.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/ContextualAlert.stories.js","statementMap":{"0":{"start":{"line":12,"column":13},"end":{"line":12,"column":19}},"1":{"start":{"line":10,"column":13},"end":{"line":10,"column":17}},"2":{"start":{"line":9,"column":13},"end":{"line":9,"column":20}},"3":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"4":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"5":{"start":{"line":1,"column":32},"end":{"line":1,"column":null}},"6":{"start":{"line":2,"column":15},"end":{"line":5,"column":2}},"7":{"start":{"line":9,"column":23},"end":{"line":9,"column":null}},"8":{"start":{"line":10,"column":20},"end":{"line":10,"column":null}},"9":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"10":{"start":{"line":12,"column":22},"end":{"line":12,"column":null}},"11":{"start":{"line":14,"column":0},"end":{"line":31,"column":null}},"12":{"start":{"line":33,"column":0},"end":{"line":41,"column":null}},"13":{"start":{"line":43,"column":0},"end":{"line":51,"column":null}},"14":{"start":{"line":53,"column":0},"end":{"line":70,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":2,"2":4,"3":2,"4":0,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1},"f":{},"b":{}} +,"/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":5,"column":16},"end":{"line":5,"column":32}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":22},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":29},"end":{"line":3,"column":null}},"4":{"start":{"line":6,"column":28},"end":{"line":10,"column":null}},"5":{"start":{"line":20,"column":25},"end":{"line":20,"column":null}},"6":{"start":{"line":39,"column":0},"end":{"line":131,"column":null}}},"fnMap":{"0":{"name":"CopyToClipboard","decl":{"start":{"line":5,"column":16},"end":{"line":5,"column":32}},"loc":{"start":{"line":5,"column":71},"end":{"line":37,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":20,"column":18},"end":{"line":20,"column":19}},"loc":{"start":{"line":20,"column":25},"end":{"line":20,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":34},"end":{"line":5,"column":44}},"type":"default-arg","locations":[{"start":{"line":5,"column":42},"end":{"line":5,"column":44}}]},"1":{"loc":{"start":{"line":5,"column":46},"end":{"line":5,"column":59}},"type":"default-arg","locations":[{"start":{"line":5,"column":53},"end":{"line":5,"column":59}}]},"2":{"loc":{"start":{"line":6,"column":28},"end":{"line":10,"column":null}},"type":"cond-expr","locations":[{"start":{"line":7,"column":6},"end":{"line":9,"column":null}},{"start":{"line":10,"column":6},"end":{"line":10,"column":null}}]}},"s":{"0":5,"1":2,"2":2,"3":2,"4":4,"5":1,"6":2},"f":{"0":4,"1":1},"b":{"0":[2],"1":[4],"2":[4,0]}} +,"/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":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":32},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":0},"end":{"line":22,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":5,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/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":6,"column":16},"end":{"line":6,"column":24}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":19,"column":0},"end":{"line":44,"column":null}}},"fnMap":{"0":{"name":"Details","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":24}},"loc":{"start":{"line":6,"column":29},"end":{"line":17,"column":null}}}},"branchMap":{},"s":{"0":11,"1":2,"2":2},"f":{"0":11},"b":{}} +,"/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":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":24},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":12,"column":0},"end":{"line":17,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":6,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/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":7,"column":16},"end":{"line":7,"column":25}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":29},"end":{"line":2,"column":null}},"3":{"start":{"line":24,"column":10},"end":{"line":25,"column":38}},"4":{"start":{"line":29,"column":31},"end":{"line":29,"column":null}},"5":{"start":{"line":43,"column":0},"end":{"line":65,"column":null}}},"fnMap":{"0":{"name":"ErrorBox","decl":{"start":{"line":7,"column":16},"end":{"line":7,"column":25}},"loc":{"start":{"line":7,"column":50},"end":{"line":41,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":23,"column":20},"end":{"line":23,"column":21}},"loc":{"start":{"line":23,"column":33},"end":{"line":37,"column":null}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":29,"column":25},"end":{"line":29,"column":31}},"loc":{"start":{"line":29,"column":31},"end":{"line":29,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":27},"end":{"line":7,"column":38}},"type":"default-arg","locations":[{"start":{"line":7,"column":36},"end":{"line":7,"column":38}}]}},"s":{"0":4,"1":1,"2":1,"3":9,"4":1,"5":1},"f":{"0":3,"1":9,"2":1},"b":{"0":[0]}} +,"/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":23,"column":13},"end":{"line":23,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":25},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":19,"column":2}},"5":{"start":{"line":23,"column":23},"end":{"line":23,"column":null}},"6":{"start":{"line":25,"column":0},"end":{"line":41,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":11,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/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":13},"end":{"line":15,"column":27}},"1":{"start":{"line":307,"column":0},"end":{"line":307,"column":15}},"2":{"start":{"line":1,"column":51},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":22},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":31},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":29},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":16},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":27},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":22},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":23},"end":{"line":8,"column":null}},"10":{"start":{"line":9,"column":30},"end":{"line":9,"column":null}},"11":{"start":{"line":15,"column":30},"end":{"line":298,"column":null}},"12":{"start":{"line":21,"column":36},"end":{"line":21,"column":null}},"13":{"start":{"line":22,"column":44},"end":{"line":22,"column":null}},"14":{"start":{"line":23,"column":16},"end":{"line":23,"column":null}},"15":{"start":{"line":24,"column":34},"end":{"line":24,"column":null}},"16":{"start":{"line":25,"column":16},"end":{"line":25,"column":69}},"17":{"start":{"line":26,"column":28},"end":{"line":26,"column":null}},"18":{"start":{"line":27,"column":18},"end":{"line":27,"column":null}},"19":{"start":{"line":29,"column":2},"end":{"line":29,"column":null}},"20":{"start":{"line":31,"column":2},"end":{"line":36,"column":null}},"21":{"start":{"line":32,"column":4},"end":{"line":35,"column":null}},"22":{"start":{"line":33,"column":6},"end":{"line":33,"column":null}},"23":{"start":{"line":34,"column":6},"end":{"line":34,"column":null}},"24":{"start":{"line":39,"column":21},"end":{"line":55,"column":null}},"25":{"start":{"line":43,"column":8},"end":{"line":52,"column":null}},"26":{"start":{"line":44,"column":10},"end":{"line":51,"column":null}},"27":{"start":{"line":46,"column":14},"end":{"line":46,"column":null}},"28":{"start":{"line":47,"column":14},"end":{"line":47,"column":null}},"29":{"start":{"line":49,"column":14},"end":{"line":49,"column":null}},"30":{"start":{"line":50,"column":14},"end":{"line":50,"column":null}},"31":{"start":{"line":53,"column":8},"end":{"line":53,"column":null}},"32":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"33":{"start":{"line":61,"column":34},"end":{"line":61,"column":null}},"34":{"start":{"line":62,"column":44},"end":{"line":62,"column":null}},"35":{"start":{"line":63,"column":25},"end":{"line":69,"column":null}},"36":{"start":{"line":71,"column":24},"end":{"line":119,"column":null}},"37":{"start":{"line":73,"column":4},"end":{"line":73,"column":null}},"38":{"start":{"line":75,"column":4},"end":{"line":75,"column":null}},"39":{"start":{"line":77,"column":21},"end":{"line":77,"column":null}},"40":{"start":{"line":79,"column":26},"end":{"line":79,"column":null}},"41":{"start":{"line":81,"column":4},"end":{"line":85,"column":null}},"42":{"start":{"line":88,"column":22},"end":{"line":91,"column":null}},"43":{"start":{"line":92,"column":18},"end":{"line":92,"column":null}},"44":{"start":{"line":94,"column":4},"end":{"line":118,"column":null}},"45":{"start":{"line":96,"column":23},"end":{"line":102,"column":null}},"46":{"start":{"line":105,"column":6},"end":{"line":111,"column":null}},"47":{"start":{"line":106,"column":8},"end":{"line":106,"column":null}},"48":{"start":{"line":107,"column":8},"end":{"line":107,"column":null}},"49":{"start":{"line":108,"column":8},"end":{"line":108,"column":null}},"50":{"start":{"line":110,"column":8},"end":{"line":110,"column":null}},"51":{"start":{"line":113,"column":6},"end":{"line":113,"column":null}},"52":{"start":{"line":114,"column":6},"end":{"line":114,"column":null}},"53":{"start":{"line":115,"column":6},"end":{"line":115,"column":null}},"54":{"start":{"line":117,"column":6},"end":{"line":117,"column":null}},"55":{"start":{"line":176,"column":43},"end":{"line":176,"column":null}},"56":{"start":{"line":202,"column":22},"end":{"line":202,"column":null}},"57":{"start":{"line":203,"column":22},"end":{"line":203,"column":null}},"58":{"start":{"line":272,"column":37},"end":{"line":272,"column":null}},"59":{"start":{"line":274,"column":22},"end":{"line":274,"column":null}},"60":{"start":{"line":300,"column":0},"end":{"line":305,"column":null}},"61":{"start":{"line":307,"column":15},"end":{"line":307,"column":30}}},"fnMap":{"0":{"name":"(anonymous_7)","decl":{"start":{"line":15,"column":30},"end":{"line":15,"column":31}},"loc":{"start":{"line":20,"column":1},"end":{"line":298,"column":null}}},"1":{"name":"(anonymous_8)","decl":{"start":{"line":31,"column":12},"end":{"line":31,"column":null}},"loc":{"start":{"line":31,"column":12},"end":{"line":36,"column":5}}},"2":{"name":"(anonymous_9)","decl":{"start":{"line":42,"column":13},"end":{"line":42,"column":14}},"loc":{"start":{"line":42,"column":14},"end":{"line":54,"column":null}}},"3":{"name":"(anonymous_10)","decl":{"start":{"line":43,"column":23},"end":{"line":43,"column":24}},"loc":{"start":{"line":43,"column":24},"end":{"line":52,"column":null}}},"4":{"name":"setFocusAfterSubmit","decl":{"start":{"line":57,"column":11},"end":{"line":57,"column":null}},"loc":{"start":{"line":57,"column":11},"end":{"line":59,"column":null}}},"5":{"name":"(anonymous_12)","decl":{"start":{"line":71,"column":24},"end":{"line":71,"column":31}},"loc":{"start":{"line":71,"column":31},"end":{"line":119,"column":null}}},"6":{"name":"(anonymous_13)","decl":{"start":{"line":176,"column":37},"end":{"line":176,"column":43}},"loc":{"start":{"line":176,"column":43},"end":{"line":176,"column":null}}},"7":{"name":"(anonymous_14)","decl":{"start":{"line":201,"column":29},"end":{"line":201,"column":null}},"loc":{"start":{"line":201,"column":29},"end":{"line":204,"column":null}}},"8":{"name":"(anonymous_15)","decl":{"start":{"line":272,"column":30},"end":{"line":272,"column":31}},"loc":{"start":{"line":272,"column":37},"end":{"line":272,"column":null}}},"9":{"name":"(anonymous_16)","decl":{"start":{"line":273,"column":29},"end":{"line":273,"column":30}},"loc":{"start":{"line":274,"column":22},"end":{"line":274,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":32,"column":4},"end":{"line":35,"column":null}},"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":35,"column":null}}]},"1":{"loc":{"start":{"line":44,"column":10},"end":{"line":51,"column":null}},"type":"switch","locations":[{"start":{"line":45,"column":12},"end":{"line":47,"column":null}},{"start":{"line":48,"column":12},"end":{"line":50,"column":null}}]},"2":{"loc":{"start":{"line":94,"column":4},"end":{"line":118,"column":null}},"type":"if","locations":[{"start":{"line":94,"column":4},"end":{"line":118,"column":null}},{"start":{"line":116,"column":11},"end":{"line":118,"column":null}}]},"3":{"loc":{"start":{"line":105,"column":6},"end":{"line":111,"column":null}},"type":"if","locations":[{"start":{"line":105,"column":6},"end":{"line":111,"column":null}},{"start":{"line":109,"column":13},"end":{"line":111,"column":null}}]},"4":{"loc":{"start":{"line":105,"column":10},"end":{"line":105,"column":62}},"type":"binary-expr","locations":[{"start":{"line":105,"column":10},"end":{"line":105,"column":37}},{"start":{"line":105,"column":37},"end":{"line":105,"column":62}}]},"5":{"loc":{"start":{"line":123,"column":7},"end":{"line":294,"column":null}},"type":"cond-expr","locations":[{"start":{"line":124,"column":8},"end":{"line":294,"column":null}},{"start":{"line":294,"column":8},"end":{"line":294,"column":null}}]},"6":{"loc":{"start":{"line":138,"column":15},"end":{"line":187,"column":null}},"type":"cond-expr","locations":[{"start":{"line":139,"column":16},"end":{"line":187,"column":null}},{"start":{"line":187,"column":16},"end":{"line":187,"column":null}}]},"7":{"loc":{"start":{"line":140,"column":19},"end":{"line":183,"column":null}},"type":"cond-expr","locations":[{"start":{"line":141,"column":20},"end":{"line":183,"column":null}},{"start":{"line":183,"column":20},"end":{"line":183,"column":null}}]},"8":{"loc":{"start":{"line":143,"column":24},"end":{"line":145,"column":null}},"type":"cond-expr","locations":[{"start":{"line":144,"column":28},"end":{"line":144,"column":null}},{"start":{"line":145,"column":28},"end":{"line":145,"column":null}}]},"9":{"loc":{"start":{"line":151,"column":27},"end":{"line":162,"column":null}},"type":"cond-expr","locations":[{"start":{"line":152,"column":28},"end":{"line":162,"column":null}},{"start":{"line":162,"column":28},"end":{"line":162,"column":null}}]},"10":{"loc":{"start":{"line":256,"column":19},"end":{"line":261,"column":null}},"type":"cond-expr","locations":[{"start":{"line":257,"column":20},"end":{"line":261,"column":null}},{"start":{"line":261,"column":22},"end":{"line":261,"column":null}}]}},"s":{"0":3,"1":6,"2":10,"3":10,"4":10,"5":10,"6":10,"7":10,"8":10,"9":10,"10":10,"11":10,"12":10,"13":10,"14":10,"15":10,"16":10,"17":10,"18":10,"19":10,"20":10,"21":7,"22":2,"23":2,"24":10,"25":1,"26":1,"27":0,"28":0,"29":1,"30":1,"31":1,"32":0,"33":10,"34":10,"35":10,"36":10,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":1,"55":0,"56":0,"57":0,"58":0,"59":0,"60":10,"61":10},"f":{"0":10,"1":7,"2":1,"3":1,"4":0,"5":1,"6":0,"7":0,"8":0,"9":0},"b":{"0":[2],"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]}} +,"/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":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":27},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":0},"end":{"line":15,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":8,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/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":7,"column":16},"end":{"line":7,"column":23}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":28},"end":{"line":2,"column":null}},"3":{"start":{"line":20,"column":12},"end":{"line":21,"column":null}},"4":{"start":{"line":40,"column":0},"end":{"line":71,"column":null}}},"fnMap":{"0":{"name":"Filter","decl":{"start":{"line":7,"column":16},"end":{"line":7,"column":23}},"loc":{"start":{"line":7,"column":28},"end":{"line":38,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":19,"column":29},"end":{"line":19,"column":30}},"loc":{"start":{"line":20,"column":12},"end":{"line":21,"column":null}}}},"branchMap":{},"s":{"0":4,"1":1,"2":1,"3":9,"4":1},"f":{"0":3,"1":9},"b":{}} +,"/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":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":23},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":0},"end":{"line":32,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":12,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Heading.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Heading.js","statementMap":{"0":{"start":{"line":3,"column":16},"end":{"line":3,"column":24}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":55},"end":{"line":4,"column":null}},"3":{"start":{"line":27,"column":0},"end":{"line":52,"column":null}}},"fnMap":{"0":{"name":"Heading","decl":{"start":{"line":3,"column":16},"end":{"line":3,"column":24}},"loc":{"start":{"line":3,"column":29},"end":{"line":25,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":7},"end":{"line":12,"column":19}},"type":"binary-expr","locations":[{"start":{"line":12,"column":7},"end":{"line":12,"column":19}},{"start":{"line":12,"column":19},"end":{"line":12,"column":null}}]}},"s":{"0":12,"1":15,"2":11,"3":15},"f":{"0":11},"b":{"0":[11,1]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Heading.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/Heading.stories.js","statementMap":{"0":{"start":{"line":10,"column":13},"end":{"line":10,"column":20}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":15}},"2":{"start":{"line":11,"column":13},"end":{"line":11,"column":25}},"3":{"start":{"line":1,"column":24},"end":{"line":1,"column":null}},"4":{"start":{"line":3,"column":15},"end":{"line":6,"column":2}},"5":{"start":{"line":10,"column":23},"end":{"line":10,"column":null}},"6":{"start":{"line":11,"column":28},"end":{"line":11,"column":null}},"7":{"start":{"line":13,"column":0},"end":{"line":16,"column":null}},"8":{"start":{"line":18,"column":0},"end":{"line":23,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"f":{},"b":{}} +,"/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":6,"column":16},"end":{"line":6,"column":21}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":7,"column":16},"end":{"line":7,"column":null}},"3":{"start":{"line":12,"column":10},"end":{"line":14,"column":null}},"4":{"start":{"line":15,"column":8},"end":{"line":15,"column":null}},"5":{"start":{"line":15,"column":27},"end":{"line":15,"column":null}},"6":{"start":{"line":16,"column":8},"end":{"line":17,"column":24}},"7":{"start":{"line":31,"column":0},"end":{"line":41,"column":null}}},"fnMap":{"0":{"name":"List","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":26},"end":{"line":29,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":10,"column":23},"end":{"line":10,"column":24}},"loc":{"start":{"line":10,"column":30},"end":{"line":26,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":8},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":8},"end":{"line":15,"column":null}}]}},"s":{"0":3,"1":1,"2":2,"3":8,"4":8,"5":6,"6":8,"7":1},"f":{"0":2,"1":8},"b":{"0":[6]}} +,"/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":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":21},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":0},"end":{"line":15,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":5,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/MainBand.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/MainBand.js","statementMap":{"0":{"start":{"line":4,"column":16},"end":{"line":4,"column":25}},"1":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":31},"end":{"line":2,"column":null}},"3":{"start":{"line":5,"column":16},"end":{"line":5,"column":null}},"4":{"start":{"line":22,"column":12},"end":{"line":24,"column":null}}},"fnMap":{"0":{"name":"MainBand","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":25}},"loc":{"start":{"line":4,"column":30},"end":{"line":43,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":21,"column":36},"end":{"line":21,"column":37}},"loc":{"start":{"line":21,"column":42},"end":{"line":38,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":26,"column":18},"end":{"line":26,"column":null}},"type":"cond-expr","locations":[{"start":{"line":26,"column":32},"end":{"line":26,"column":66}},{"start":{"line":26,"column":66},"end":{"line":26,"column":null}}]}},"s":{"0":13,"1":9,"2":9,"3":13,"4":273},"f":{"0":13,"1":273},"b":{"0":[13,260]}} +,"/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":9,"column":16},"end":{"line":9,"column":21}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":26},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":25},"end":{"line":4,"column":null}},"5":{"start":{"line":11,"column":21},"end":{"line":11,"column":null}},"6":{"start":{"line":12,"column":17},"end":{"line":12,"column":null}},"7":{"start":{"line":13,"column":34},"end":{"line":13,"column":null}},"8":{"start":{"line":29,"column":25},"end":{"line":29,"column":null}},"9":{"start":{"line":44,"column":25},"end":{"line":44,"column":null}},"10":{"start":{"line":64,"column":27},"end":{"line":64,"column":47}},"11":{"start":{"line":65,"column":30},"end":{"line":65,"column":58}},"12":{"start":{"line":67,"column":10},"end":{"line":69,"column":null}},"13":{"start":{"line":94,"column":0},"end":{"line":121,"column":null}}},"fnMap":{"0":{"name":"Menu","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":21}},"loc":{"start":{"line":9,"column":26},"end":{"line":92,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":29,"column":19},"end":{"line":29,"column":25}},"loc":{"start":{"line":29,"column":25},"end":{"line":29,"column":null}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":44,"column":19},"end":{"line":44,"column":25}},"loc":{"start":{"line":44,"column":25},"end":{"line":44,"column":null}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":63,"column":25},"end":{"line":63,"column":26}},"loc":{"start":{"line":63,"column":32},"end":{"line":88,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":46,"column":12},"end":{"line":46,"column":null}},"type":"cond-expr","locations":[{"start":{"line":46,"column":23},"end":{"line":46,"column":28}},{"start":{"line":46,"column":28},"end":{"line":46,"column":null}}]},"1":{"loc":{"start":{"line":59,"column":40},"end":{"line":59,"column":65}},"type":"cond-expr","locations":[{"start":{"line":59,"column":51},"end":{"line":59,"column":62}},{"start":{"line":59,"column":62},"end":{"line":59,"column":65}}]},"2":{"loc":{"start":{"line":72,"column":28},"end":{"line":72,"column":null}},"type":"cond-expr","locations":[{"start":{"line":72,"column":39},"end":{"line":72,"column":48}},{"start":{"line":72,"column":48},"end":{"line":72,"column":null}}]},"3":{"loc":{"start":{"line":77,"column":18},"end":{"line":81,"column":null}},"type":"cond-expr","locations":[{"start":{"line":78,"column":22},"end":{"line":80,"column":null}},{"start":{"line":81,"column":22},"end":{"line":81,"column":null}}]},"4":{"loc":{"start":{"line":78,"column":22},"end":{"line":80,"column":null}},"type":"cond-expr","locations":[{"start":{"line":79,"column":24},"end":{"line":79,"column":null}},{"start":{"line":80,"column":24},"end":{"line":80,"column":null}}]}},"s":{"0":4,"1":1,"2":1,"3":1,"4":1,"5":4,"6":4,"7":4,"8":1,"9":0,"10":12,"11":12,"12":12,"13":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]}} +,"/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":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":21},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":0},"end":{"line":30,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":6,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/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":9,"column":16},"end":{"line":9,"column":34}},"1":{"start":{"line":1,"column":25},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":25},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":27},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":22},"end":{"line":4,"column":null}},"5":{"start":{"line":10,"column":42},"end":{"line":10,"column":null}},"6":{"start":{"line":11,"column":26},"end":{"line":21,"column":null}},"7":{"start":{"line":12,"column":4},"end":{"line":16,"column":null}},"8":{"start":{"line":13,"column":6},"end":{"line":13,"column":null}},"9":{"start":{"line":15,"column":6},"end":{"line":15,"column":null}},"10":{"start":{"line":18,"column":4},"end":{"line":20,"column":null}},"11":{"start":{"line":19,"column":6},"end":{"line":19,"column":null}},"12":{"start":{"line":22,"column":23},"end":{"line":30,"column":null}},"13":{"start":{"line":23,"column":4},"end":{"line":25,"column":null}},"14":{"start":{"line":24,"column":6},"end":{"line":24,"column":null}},"15":{"start":{"line":26,"column":4},"end":{"line":28,"column":null}},"16":{"start":{"line":27,"column":6},"end":{"line":27,"column":null}},"17":{"start":{"line":29,"column":4},"end":{"line":29,"column":null}},"18":{"start":{"line":79,"column":0},"end":{"line":148,"column":null}}},"fnMap":{"0":{"name":"OptionalListField","decl":{"start":{"line":9,"column":16},"end":{"line":9,"column":34}},"loc":{"start":{"line":9,"column":72},"end":{"line":77,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":11,"column":26},"end":{"line":11,"column":27}},"loc":{"start":{"line":11,"column":45},"end":{"line":21,"column":null}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":22,"column":48},"end":{"line":22,"column":49}},"loc":{"start":{"line":22,"column":52},"end":{"line":30,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":36},"end":{"line":9,"column":60}},"type":"default-arg","locations":[{"start":{"line":9,"column":50},"end":{"line":9,"column":60}}]},"1":{"loc":{"start":{"line":10,"column":51},"end":{"line":10,"column":null}},"type":"binary-expr","locations":[{"start":{"line":10,"column":51},"end":{"line":10,"column":64}},{"start":{"line":10,"column":68},"end":{"line":10,"column":null}}]},"2":{"loc":{"start":{"line":12,"column":4},"end":{"line":16,"column":null}},"type":"if","locations":[{"start":{"line":12,"column":4},"end":{"line":16,"column":null}},{"start":{"line":14,"column":11},"end":{"line":16,"column":null}}]},"3":{"loc":{"start":{"line":18,"column":4},"end":{"line":20,"column":null}},"type":"if","locations":[{"start":{"line":18,"column":4},"end":{"line":20,"column":null}}]},"4":{"loc":{"start":{"line":23,"column":4},"end":{"line":25,"column":null}},"type":"if","locations":[{"start":{"line":23,"column":4},"end":{"line":25,"column":null}}]},"5":{"loc":{"start":{"line":26,"column":4},"end":{"line":28,"column":null}},"type":"if","locations":[{"start":{"line":26,"column":4},"end":{"line":28,"column":null}}]},"6":{"loc":{"start":{"line":34,"column":8},"end":{"line":47,"column":9}},"type":"cond-expr","locations":[{"start":{"line":34,"column":8},"end":{"line":47,"column":9}}]},"7":{"loc":{"start":{"line":60,"column":8},"end":{"line":74,"column":null}},"type":"cond-expr","locations":[{"start":{"line":61,"column":8},"end":{"line":74,"column":null}},{"start":{"line":74,"column":10},"end":{"line":74,"column":null}}]},"8":{"loc":{"start":{"line":60,"column":8},"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":48}},{"start":{"line":60,"column":48},"end":{"line":60,"column":61}}]},"9":{"loc":{"start":{"line":63,"column":13},"end":{"line":68,"column":null}},"type":"cond-expr","locations":[{"start":{"line":64,"column":14},"end":{"line":68,"column":null}},{"start":{"line":68,"column":14},"end":{"line":68,"column":null}}]}},"s":{"0":5,"1":1,"2":1,"3":1,"4":1,"5":5,"6":5,"7":1,"8":0,"9":1,"10":1,"11":0,"12":5,"13":5,"14":0,"15":5,"16":5,"17":0,"18":1},"f":{"0":5,"1":1,"2":5},"b":{"0":[4],"1":[5,2],"2":[0,1],"3":[0],"4":[0],"5":[5],"6":[4],"7":[4,1],"8":[5,2,4],"9":[0,4]}} +,"/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":48,"column":13},"end":{"line":48,"column":30}},"1":{"start":{"line":76,"column":13},"end":{"line":76,"column":31}},"2":{"start":{"line":104,"column":13},"end":{"line":104,"column":18}},"3":{"start":{"line":133,"column":13},"end":{"line":133,"column":25}},"4":{"start":{"line":22,"column":13},"end":{"line":22,"column":21}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":15}},"6":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"7":{"start":{"line":2,"column":34},"end":{"line":2,"column":null}},"8":{"start":{"line":3,"column":25},"end":{"line":3,"column":null}},"9":{"start":{"line":4,"column":27},"end":{"line":4,"column":null}},"10":{"start":{"line":6,"column":15},"end":{"line":18,"column":2}},"11":{"start":{"line":22,"column":24},"end":{"line":22,"column":null}},"12":{"start":{"line":23,"column":0},"end":{"line":46,"column":null}},"13":{"start":{"line":48,"column":33},"end":{"line":48,"column":null}},"14":{"start":{"line":49,"column":0},"end":{"line":74,"column":null}},"15":{"start":{"line":76,"column":34},"end":{"line":76,"column":null}},"16":{"start":{"line":77,"column":0},"end":{"line":102,"column":null}},"17":{"start":{"line":104,"column":21},"end":{"line":104,"column":null}},"18":{"start":{"line":105,"column":0},"end":{"line":131,"column":null}},"19":{"start":{"line":133,"column":28},"end":{"line":133,"column":null}},"20":{"start":{"line":134,"column":0},"end":{"line":159,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":2,"2":2,"3":2,"4":0,"5":0,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"f":{},"b":{}} +,"/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":12,"column":16},"end":{"line":12,"column":34}},"1":{"start":{"line":1,"column":25},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":25},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":26},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":31},"end":{"line":4,"column":null}},"5":{"start":{"line":5,"column":27},"end":{"line":5,"column":null}},"6":{"start":{"line":6,"column":31},"end":{"line":6,"column":null}},"7":{"start":{"line":7,"column":22},"end":{"line":7,"column":null}},"8":{"start":{"line":13,"column":42},"end":{"line":13,"column":null}},"9":{"start":{"line":14,"column":40},"end":{"line":14,"column":null}},"10":{"start":{"line":15,"column":16},"end":{"line":15,"column":null}},"11":{"start":{"line":16,"column":26},"end":{"line":28,"column":null}},"12":{"start":{"line":17,"column":4},"end":{"line":23,"column":null}},"13":{"start":{"line":18,"column":6},"end":{"line":18,"column":null}},"14":{"start":{"line":19,"column":6},"end":{"line":19,"column":null}},"15":{"start":{"line":21,"column":6},"end":{"line":21,"column":null}},"16":{"start":{"line":22,"column":6},"end":{"line":22,"column":null}},"17":{"start":{"line":25,"column":4},"end":{"line":27,"column":null}},"18":{"start":{"line":26,"column":6},"end":{"line":26,"column":null}},"19":{"start":{"line":106,"column":0},"end":{"line":260,"column":null}}},"fnMap":{"0":{"name":"OptionalTextField","decl":{"start":{"line":12,"column":16},"end":{"line":12,"column":34}},"loc":{"start":{"line":12,"column":72},"end":{"line":104,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":16,"column":26},"end":{"line":16,"column":27}},"loc":{"start":{"line":16,"column":45},"end":{"line":28,"column":null}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":76,"column":66},"end":{"line":76,"column":73}},"loc":{"start":{"line":76,"column":66},"end":{"line":76,"column":null}}},"3":{"name":"(anonymous_5)","decl":{"start":{"line":94,"column":66},"end":{"line":94,"column":73}},"loc":{"start":{"line":94,"column":66},"end":{"line":94,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":36},"end":{"line":12,"column":60}},"type":"default-arg","locations":[{"start":{"line":12,"column":50},"end":{"line":12,"column":60}}]},"1":{"loc":{"start":{"line":13,"column":51},"end":{"line":13,"column":null}},"type":"binary-expr","locations":[{"start":{"line":13,"column":51},"end":{"line":13,"column":64}},{"start":{"line":13,"column":68},"end":{"line":13,"column":null}}]},"2":{"loc":{"start":{"line":17,"column":4},"end":{"line":23,"column":null}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":23,"column":null}},{"start":{"line":20,"column":11},"end":{"line":23,"column":null}}]},"3":{"loc":{"start":{"line":25,"column":4},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":27,"column":null}}]},"4":{"loc":{"start":{"line":31,"column":7},"end":{"line":31,"column":null}},"type":"binary-expr","locations":[{"start":{"line":31,"column":7},"end":{"line":31,"column":null}}]},"5":{"loc":{"start":{"line":47,"column":7},"end":{"line":47,"column":null}},"type":"binary-expr","locations":[{"start":{"line":47,"column":7},"end":{"line":47,"column":null}}]},"6":{"loc":{"start":{"line":61,"column":8},"end":{"line":101,"column":null}},"type":"cond-expr","locations":[{"start":{"line":62,"column":8},"end":{"line":101,"column":null}},{"start":{"line":101,"column":10},"end":{"line":101,"column":null}}]},"7":{"loc":{"start":{"line":61,"column":8},"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":48}},{"start":{"line":61,"column":48},"end":{"line":61,"column":61}}]},"8":{"loc":{"start":{"line":62,"column":8},"end":{"line":101,"column":null}},"type":"cond-expr","locations":[{"start":{"line":63,"column":10},"end":{"line":84,"column":11}},{"start":{"line":84,"column":10},"end":{"line":101,"column":null}}]},"9":{"loc":{"start":{"line":76,"column":14},"end":{"line":76,"column":null}},"type":"cond-expr","locations":[{"start":{"line":76,"column":40},"end":{"line":76,"column":63}},{"start":{"line":76,"column":66},"end":{"line":76,"column":null}}]},"10":{"loc":{"start":{"line":94,"column":14},"end":{"line":94,"column":null}},"type":"cond-expr","locations":[{"start":{"line":94,"column":40},"end":{"line":94,"column":63}},{"start":{"line":94,"column":66},"end":{"line":94,"column":null}}]}},"s":{"0":54,"1":2,"2":2,"3":2,"4":2,"5":2,"6":2,"7":2,"8":55,"9":55,"10":55,"11":55,"12":3,"13":0,"14":0,"15":3,"16":3,"17":3,"18":0,"19":2},"f":{"0":55,"1":3,"2":0,"3":0},"b":{"0":[54],"1":[55,54],"2":[0,3],"3":[0],"4":[55],"5":[55],"6":[4,51],"7":[55,54,52],"8":[2,2],"9":[0,2],"10":[0,2]}} +,"/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":72,"column":13},"end":{"line":72,"column":22}},"1":{"start":{"line":32,"column":13},"end":{"line":32,"column":19}},"2":{"start":{"line":45,"column":13},"end":{"line":45,"column":18}},"3":{"start":{"line":59,"column":13},"end":{"line":59,"column":25}},"4":{"start":{"line":20,"column":13},"end":{"line":20,"column":21}},"5":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"6":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"7":{"start":{"line":2,"column":34},"end":{"line":2,"column":null}},"8":{"start":{"line":4,"column":15},"end":{"line":16,"column":2}},"9":{"start":{"line":20,"column":24},"end":{"line":20,"column":null}},"10":{"start":{"line":21,"column":0},"end":{"line":30,"column":null}},"11":{"start":{"line":32,"column":22},"end":{"line":32,"column":null}},"12":{"start":{"line":33,"column":0},"end":{"line":43,"column":null}},"13":{"start":{"line":45,"column":21},"end":{"line":45,"column":null}},"14":{"start":{"line":46,"column":0},"end":{"line":57,"column":null}},"15":{"start":{"line":59,"column":28},"end":{"line":59,"column":null}},"16":{"start":{"line":60,"column":0},"end":{"line":70,"column":null}},"17":{"start":{"line":72,"column":25},"end":{"line":72,"column":null}},"18":{"start":{"line":73,"column":0},"end":{"line":85,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":0,"2":2,"3":2,"4":0,"5":0,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"f":{},"b":{}} +,"/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":6,"column":16},"end":{"line":6,"column":22}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":21,"column":0},"end":{"line":36,"column":null}}},"fnMap":{"0":{"name":"Quote","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":22}},"loc":{"start":{"line":6,"column":27},"end":{"line":19,"column":null}}}},"branchMap":{},"s":{"0":3,"1":1,"2":1},"f":{"0":2},"b":{}} +,"/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":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":22},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":0},"end":{"line":16,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":5,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/SubFooterBand.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/SubFooterBand.js","statementMap":{"0":{"start":{"line":54,"column":16},"end":{"line":54,"column":30}},"1":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":22},"end":{"line":2,"column":null}},"3":{"start":{"line":4,"column":28},"end":{"line":25,"column":null}},"4":{"start":{"line":27,"column":28},"end":{"line":48,"column":null}},"5":{"start":{"line":50,"column":27},"end":{"line":52,"column":null}},"6":{"start":{"line":51,"column":2},"end":{"line":51,"column":null}},"7":{"start":{"line":79,"column":22},"end":{"line":81,"column":null}},"8":{"start":{"line":99,"column":24},"end":{"line":101,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":50,"column":27},"end":{"line":50,"column":28}},"loc":{"start":{"line":50,"column":28},"end":{"line":52,"column":null}}},"1":{"name":"SubFooterBand","decl":{"start":{"line":54,"column":16},"end":{"line":54,"column":30}},"loc":{"start":{"line":54,"column":35},"end":{"line":142,"column":null}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":78,"column":41},"end":{"line":78,"column":42}},"loc":{"start":{"line":78,"column":67},"end":{"line":96,"column":null}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":98,"column":22},"end":{"line":98,"column":23}},"loc":{"start":{"line":98,"column":39},"end":{"line":118,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":51,"column":9},"end":{"line":51,"column":null}},"type":"cond-expr","locations":[{"start":{"line":51,"column":27},"end":{"line":51,"column":49}},{"start":{"line":51,"column":49},"end":{"line":51,"column":null}}]},"1":{"loc":{"start":{"line":59,"column":10},"end":{"line":59,"column":null}},"type":"cond-expr","locations":[{"start":{"line":59,"column":34},"end":{"line":59,"column":51}},{"start":{"line":59,"column":51},"end":{"line":59,"column":null}}]},"2":{"loc":{"start":{"line":60,"column":12},"end":{"line":60,"column":46}},"type":"cond-expr","locations":[{"start":{"line":60,"column":26},"end":{"line":60,"column":43}},{"start":{"line":60,"column":43},"end":{"line":60,"column":46}}]},"3":{"loc":{"start":{"line":63,"column":10},"end":{"line":74,"column":11}},"type":"cond-expr","locations":[{"start":{"line":63,"column":10},"end":{"line":74,"column":11}}]},"4":{"loc":{"start":{"line":77,"column":17},"end":{"line":118,"column":null}},"type":"cond-expr","locations":[{"start":{"line":78,"column":20},"end":{"line":96,"column":null}},{"start":{"line":97,"column":20},"end":{"line":118,"column":null}}]},"5":{"loc":{"start":{"line":83,"column":28},"end":{"line":83,"column":null}},"type":"cond-expr","locations":[{"start":{"line":83,"column":42},"end":{"line":83,"column":47}},{"start":{"line":83,"column":47},"end":{"line":83,"column":null}}]},"6":{"loc":{"start":{"line":87,"column":37},"end":{"line":87,"column":null}},"type":"cond-expr","locations":[{"start":{"line":87,"column":47},"end":{"line":87,"column":57}},{"start":{"line":87,"column":57},"end":{"line":87,"column":null}}]},"7":{"loc":{"start":{"line":103,"column":30},"end":{"line":103,"column":null}},"type":"cond-expr","locations":[{"start":{"line":103,"column":44},"end":{"line":103,"column":49}},{"start":{"line":103,"column":49},"end":{"line":103,"column":null}}]},"8":{"loc":{"start":{"line":108,"column":32},"end":{"line":108,"column":null}},"type":"cond-expr","locations":[{"start":{"line":108,"column":48},"end":{"line":108,"column":61}},{"start":{"line":108,"column":64},"end":{"line":108,"column":null}}]},"9":{"loc":{"start":{"line":126,"column":12},"end":{"line":126,"column":null}},"type":"cond-expr","locations":[{"start":{"line":126,"column":26},"end":{"line":126,"column":43}},{"start":{"line":126,"column":43},"end":{"line":126,"column":null}}]},"10":{"loc":{"start":{"line":131,"column":14},"end":{"line":133,"column":null}},"type":"cond-expr","locations":[{"start":{"line":132,"column":18},"end":{"line":132,"column":null}},{"start":{"line":133,"column":18},"end":{"line":133,"column":null}}]}},"s":{"0":13,"1":9,"2":9,"3":9,"4":9,"5":9,"6":13,"7":0,"8":65},"f":{"0":13,"1":13,"2":0,"3":65},"b":{"0":[0,13],"1":[0,13],"2":[0,13],"3":[0],"4":[0,13],"5":[0,0],"6":[0,0],"7":[13,52],"8":[0,65],"9":[0,13],"10":[0,13]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/SurveyCTA.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/SurveyCTA.js","statementMap":{"0":{"start":{"line":3,"column":13},"end":{"line":3,"column":25}},"1":{"start":{"line":1,"column":29},"end":{"line":1,"column":null}},"2":{"start":{"line":3,"column":25},"end":{"line":27,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":25},"end":{"line":3,"column":26}},"loc":{"start":{"line":10,"column":1},"end":{"line":27,"column":null}}}},"branchMap":{},"s":{"0":5,"1":2,"2":2},"f":{"0":3},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/SurveyCTA.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/SurveyCTA.stories.js","statementMap":{"0":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":26},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":0},"end":{"line":19,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":4,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/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":7,"column":16},"end":{"line":7,"column":32}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":29},"end":{"line":2,"column":null}},"3":{"start":{"line":10,"column":2},"end":{"line":13,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":13,"column":null}},"5":{"start":{"line":44,"column":0},"end":{"line":98,"column":null}}},"fnMap":{"0":{"name":"TextButtonField","decl":{"start":{"line":7,"column":16},"end":{"line":7,"column":32}},"loc":{"start":{"line":7,"column":37},"end":{"line":42,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":2},"end":{"line":13,"column":null}},"type":"if","locations":[{"start":{"line":10,"column":2},"end":{"line":13,"column":null}}]},"1":{"loc":{"start":{"line":11,"column":4},"end":{"line":13,"column":36}},"type":"cond-expr","locations":[{"start":{"line":12,"column":9},"end":{"line":12,"column":null}},{"start":{"line":13,"column":9},"end":{"line":13,"column":36}}]},"2":{"loc":{"start":{"line":18,"column":8},"end":{"line":20,"column":9}},"type":"cond-expr","locations":[{"start":{"line":18,"column":8},"end":{"line":20,"column":9}}]},"3":{"loc":{"start":{"line":26,"column":7},"end":{"line":38,"column":null}},"type":"cond-expr","locations":[{"start":{"line":27,"column":8},"end":{"line":38,"column":null}},{"start":{"line":38,"column":8},"end":{"line":38,"column":null}}]}},"s":{"0":7,"1":1,"2":1,"3":6,"4":5,"5":1},"f":{"0":6},"b":{"0":[5],"1":[2,3],"2":[0],"3":[6,0]}} +,"/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":14,"column":13},"end":{"line":14,"column":19}},"1":{"start":{"line":13,"column":13},"end":{"line":13,"column":21}},"2":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"3":{"start":{"line":12,"column":13},"end":{"line":12,"column":22}},"4":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"5":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"6":{"start":{"line":2,"column":32},"end":{"line":2,"column":null}},"7":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"8":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"9":{"start":{"line":12,"column":25},"end":{"line":12,"column":null}},"10":{"start":{"line":13,"column":24},"end":{"line":13,"column":null}},"11":{"start":{"line":14,"column":22},"end":{"line":14,"column":null}},"12":{"start":{"line":16,"column":0},"end":{"line":22,"column":null}},"13":{"start":{"line":24,"column":0},"end":{"line":29,"column":null}},"14":{"start":{"line":31,"column":0},"end":{"line":37,"column":null}},"15":{"start":{"line":39,"column":0},"end":{"line":45,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":3,"2":8,"3":3,"4":0,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/TopNavBar.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/TopNavBar.js","statementMap":{"0":{"start":{"line":4,"column":16},"end":{"line":4,"column":26}},"1":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":32},"end":{"line":2,"column":null}},"3":{"start":{"line":14,"column":30},"end":{"line":14,"column":null}},"4":{"start":{"line":15,"column":60},"end":{"line":15,"column":null}},"5":{"start":{"line":18,"column":22},"end":{"line":20,"column":null}},"6":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"7":{"start":{"line":22,"column":27},"end":{"line":28,"column":null}},"8":{"start":{"line":23,"column":4},"end":{"line":23,"column":null}},"9":{"start":{"line":24,"column":4},"end":{"line":27,"column":null}},"10":{"start":{"line":25,"column":6},"end":{"line":25,"column":null}},"11":{"start":{"line":26,"column":6},"end":{"line":26,"column":null}}},"fnMap":{"0":{"name":"TopNavBar","decl":{"start":{"line":4,"column":16},"end":{"line":4,"column":26}},"loc":{"start":{"line":13,"column":1},"end":{"line":145,"column":null}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":18,"column":22},"end":{"line":18,"column":null}},"loc":{"start":{"line":18,"column":22},"end":{"line":20,"column":null}}},"2":{"name":"(anonymous_7)","decl":{"start":{"line":22,"column":27},"end":{"line":22,"column":null}},"loc":{"start":{"line":22,"column":27},"end":{"line":28,"column":null}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":24,"column":15},"end":{"line":24,"column":null}},"loc":{"start":{"line":24,"column":15},"end":{"line":27,"column":7}}}},"branchMap":{"0":{"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":null}},"type":"cond-expr","locations":[{"start":{"line":19,"column":13},"end":{"line":19,"column":34}},{"start":{"line":19,"column":34},"end":{"line":19,"column":null}}]},"1":{"loc":{"start":{"line":57,"column":25},"end":{"line":57,"column":null}},"type":"cond-expr","locations":[{"start":{"line":57,"column":34},"end":{"line":57,"column":43}},{"start":{"line":57,"column":43},"end":{"line":57,"column":null}}]},"2":{"loc":{"start":{"line":63,"column":12},"end":{"line":80,"column":13}},"type":"cond-expr","locations":[{"start":{"line":63,"column":12},"end":{"line":80,"column":13}}]},"3":{"loc":{"start":{"line":65,"column":16},"end":{"line":65,"column":null}},"type":"cond-expr","locations":[{"start":{"line":65,"column":40},"end":{"line":65,"column":53}},{"start":{"line":65,"column":53},"end":{"line":65,"column":null}}]},"4":{"loc":{"start":{"line":80,"column":31},"end":{"line":80,"column":70}},"type":"cond-expr","locations":[{"start":{"line":80,"column":55},"end":{"line":80,"column":67}},{"start":{"line":80,"column":67},"end":{"line":80,"column":70}}]},"5":{"loc":{"start":{"line":110,"column":9},"end":{"line":140,"column":null}},"type":"cond-expr","locations":[{"start":{"line":111,"column":10},"end":{"line":140,"column":null}},{"start":{"line":140,"column":10},"end":{"line":140,"column":null}}]},"6":{"loc":{"start":{"line":114,"column":14},"end":{"line":114,"column":null}},"type":"cond-expr","locations":[{"start":{"line":114,"column":38},"end":{"line":114,"column":51}},{"start":{"line":114,"column":51},"end":{"line":114,"column":null}}]},"7":{"loc":{"start":{"line":119,"column":16},"end":{"line":119,"column":null}},"type":"cond-expr","locations":[{"start":{"line":119,"column":40},"end":{"line":119,"column":60}},{"start":{"line":119,"column":60},"end":{"line":119,"column":null}}]},"8":{"loc":{"start":{"line":126,"column":16},"end":{"line":126,"column":null}},"type":"cond-expr","locations":[{"start":{"line":126,"column":40},"end":{"line":126,"column":60}},{"start":{"line":126,"column":60},"end":{"line":126,"column":null}}]},"9":{"loc":{"start":{"line":133,"column":16},"end":{"line":133,"column":null}},"type":"cond-expr","locations":[{"start":{"line":133,"column":40},"end":{"line":133,"column":60}},{"start":{"line":133,"column":60},"end":{"line":133,"column":null}}]}},"s":{"0":17,"1":9,"2":9,"3":15,"4":15,"5":15,"6":0,"7":15,"8":0,"9":0,"10":0,"11":0},"f":{"0":15,"1":0,"2":0,"3":0},"b":{"0":[0,0],"1":[0,15],"2":[0],"3":[0,0],"4":[0,15],"5":[0,15],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/TopNavBar.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/molecules/TopNavBar.stories.js","statementMap":{"0":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":26},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":0},"end":{"line":22,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":6,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/ExploreProjects.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/ExploreProjects.js","statementMap":{"0":{"start":{"line":37,"column":16},"end":{"line":37,"column":32}},"1":{"start":{"line":1,"column":33},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"3":{"start":{"line":5,"column":19},"end":{"line":35,"column":null}},"4":{"start":{"line":6,"column":2},"end":{"line":8,"column":null}},"5":{"start":{"line":39,"column":40},"end":{"line":39,"column":null}},"6":{"start":{"line":41,"column":33},"end":{"line":42,"column":null}},"7":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}}},"fnMap":{"0":{"name":"(anonymous_5)","decl":{"start":{"line":5,"column":19},"end":{"line":5,"column":20}},"loc":{"start":{"line":5,"column":28},"end":{"line":35,"column":null}}},"1":{"name":"ExploreProjects","decl":{"start":{"line":37,"column":16},"end":{"line":37,"column":32}},"loc":{"start":{"line":37,"column":37},"end":{"line":56,"column":null}}},"2":{"name":"(anonymous_7)","decl":{"start":{"line":41,"column":46},"end":{"line":41,"column":47}},"loc":{"start":{"line":42,"column":4},"end":{"line":42,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":10},"end":{"line":16,"column":75}},"type":"cond-expr","locations":[{"start":{"line":15,"column":14},"end":{"line":15,"column":75}},{"start":{"line":16,"column":14},"end":{"line":16,"column":75}}]},"1":{"loc":{"start":{"line":19,"column":10},"end":{"line":21,"column":49}},"type":"cond-expr","locations":[{"start":{"line":20,"column":14},"end":{"line":20,"column":49}},{"start":{"line":21,"column":14},"end":{"line":21,"column":49}}]},"2":{"loc":{"start":{"line":25,"column":15},"end":{"line":25,"column":70}},"type":"cond-expr","locations":[{"start":{"line":25,"column":33},"end":{"line":25,"column":50}},{"start":{"line":25,"column":53},"end":{"line":25,"column":70}}]},"3":{"loc":{"start":{"line":26,"column":14},"end":{"line":26,"column":75}},"type":"cond-expr","locations":[{"start":{"line":26,"column":32},"end":{"line":26,"column":52}},{"start":{"line":26,"column":55},"end":{"line":26,"column":75}}]},"4":{"loc":{"start":{"line":28,"column":10},"end":{"line":30,"column":62}},"type":"cond-expr","locations":[{"start":{"line":29,"column":14},"end":{"line":29,"column":62}},{"start":{"line":30,"column":14},"end":{"line":30,"column":62}}]}},"s":{"0":10,"1":7,"2":7,"3":7,"4":14,"5":10,"6":9,"7":14},"f":{"0":14,"1":10,"2":14},"b":{"0":[9,5],"1":[9,5],"2":[9,5],"3":[9,5],"4":[9,5]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/ExploreProjects.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/ExploreProjects.stories.js","statementMap":{"0":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":32},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":0},"end":{"line":99,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":3,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/ExploreUpdates.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/ExploreUpdates.js","statementMap":{"0":{"start":{"line":6,"column":16},"end":{"line":6,"column":31}},"1":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":36},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":17},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":34},"end":{"line":4,"column":null}},"5":{"start":{"line":14,"column":23},"end":{"line":45,"column":null}},"6":{"start":{"line":15,"column":4},"end":{"line":16,"column":28}}},"fnMap":{"0":{"name":"ExploreUpdates","decl":{"start":{"line":6,"column":16},"end":{"line":6,"column":31}},"loc":{"start":{"line":13,"column":1},"end":{"line":68,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":14,"column":39},"end":{"line":14,"column":40}},"loc":{"start":{"line":14,"column":40},"end":{"line":45,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":20,"column":17},"end":{"line":20,"column":70}},"type":"cond-expr","locations":[{"start":{"line":20,"column":35},"end":{"line":20,"column":51}},{"start":{"line":20,"column":54},"end":{"line":20,"column":70}}]},"1":{"loc":{"start":{"line":21,"column":16},"end":{"line":21,"column":75}},"type":"cond-expr","locations":[{"start":{"line":21,"column":34},"end":{"line":21,"column":53}},{"start":{"line":21,"column":56},"end":{"line":21,"column":75}}]},"2":{"loc":{"start":{"line":26,"column":19},"end":{"line":26,"column":null}},"type":"cond-expr","locations":[{"start":{"line":26,"column":37},"end":{"line":26,"column":50}},{"start":{"line":26,"column":50},"end":{"line":26,"column":null}}]},"3":{"loc":{"start":{"line":29,"column":19},"end":{"line":31,"column":50}},"type":"cond-expr","locations":[{"start":{"line":30,"column":22},"end":{"line":30,"column":50}},{"start":{"line":31,"column":22},"end":{"line":31,"column":50}}]}},"s":{"0":8,"1":8,"2":8,"3":8,"4":8,"5":7,"6":12},"f":{"0":7,"1":12},"b":{"0":[2,10],"1":[2,10],"2":[2,10],"3":[2,10]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/ExploreUpdates.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/ExploreUpdates.stories.js","statementMap":{"0":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":31},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"6":{"start":{"line":13,"column":0},"end":{"line":263,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/Feedback.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/Feedback.js","statementMap":{"0":{"start":{"line":147,"column":0},"end":{"line":147,"column":15}},"1":{"start":{"line":1,"column":33},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":18},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":26},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":31},"end":{"line":4,"column":null}},"5":{"start":{"line":7,"column":40},"end":{"line":7,"column":null}},"6":{"start":{"line":8,"column":56},"end":{"line":8,"column":null}},"7":{"start":{"line":9,"column":22},"end":{"line":9,"column":null}},"8":{"start":{"line":11,"column":17},"end":{"line":11,"column":null}},"9":{"start":{"line":12,"column":16},"end":{"line":12,"column":null}},"10":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}},"11":{"start":{"line":16,"column":4},"end":{"line":28,"column":null}},"12":{"start":{"line":17,"column":6},"end":{"line":23,"column":null}},"13":{"start":{"line":25,"column":6},"end":{"line":25,"column":null}},"14":{"start":{"line":27,"column":6},"end":{"line":27,"column":null}},"15":{"start":{"line":32,"column":4},"end":{"line":32,"column":null}},"16":{"start":{"line":33,"column":4},"end":{"line":33,"column":null}},"17":{"start":{"line":37,"column":4},"end":{"line":41,"column":null}},"18":{"start":{"line":38,"column":6},"end":{"line":40,"column":null}},"19":{"start":{"line":39,"column":8},"end":{"line":39,"column":null}},"20":{"start":{"line":127,"column":29},"end":{"line":127,"column":null}},"21":{"start":{"line":134,"column":29},"end":{"line":134,"column":null}},"22":{"start":{"line":147,"column":15},"end":{"line":147,"column":null}}},"fnMap":{"0":{"name":"Feedback","decl":{"start":{"line":6,"column":9},"end":{"line":6,"column":null}},"loc":{"start":{"line":6,"column":9},"end":{"line":145,"column":null}}},"1":{"name":"handleSubmit","decl":{"start":{"line":14,"column":17},"end":{"line":14,"column":30}},"loc":{"start":{"line":14,"column":31},"end":{"line":29,"column":null}}},"2":{"name":"onYesClick","decl":{"start":{"line":31,"column":11},"end":{"line":31,"column":null}},"loc":{"start":{"line":31,"column":11},"end":{"line":34,"column":null}}},"3":{"name":"setFocus","decl":{"start":{"line":36,"column":11},"end":{"line":36,"column":20}},"loc":{"start":{"line":36,"column":23},"end":{"line":42,"column":null}}},"4":{"name":"(anonymous_6)","decl":{"start":{"line":37,"column":15},"end":{"line":37,"column":null}},"loc":{"start":{"line":37,"column":15},"end":{"line":41,"column":7}}},"5":{"name":"(anonymous_7)","decl":{"start":{"line":127,"column":23},"end":{"line":127,"column":29}},"loc":{"start":{"line":127,"column":29},"end":{"line":127,"column":null}}},"6":{"name":"(anonymous_8)","decl":{"start":{"line":134,"column":23},"end":{"line":134,"column":29}},"loc":{"start":{"line":134,"column":29},"end":{"line":134,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":38,"column":6},"end":{"line":40,"column":null}},"type":"if","locations":[{"start":{"line":38,"column":6},"end":{"line":40,"column":null}}]},"1":{"loc":{"start":{"line":46,"column":7},"end":{"line":46,"column":null}},"type":"binary-expr","locations":[{"start":{"line":46,"column":7},"end":{"line":46,"column":null}}]},"2":{"loc":{"start":{"line":62,"column":7},"end":{"line":62,"column":30}},"type":"binary-expr","locations":[{"start":{"line":62,"column":7},"end":{"line":62,"column":30}},{"start":{"line":62,"column":30},"end":{"line":62,"column":null}}]},"3":{"loc":{"start":{"line":122,"column":7},"end":{"line":122,"column":23}},"type":"binary-expr","locations":[{"start":{"line":122,"column":7},"end":{"line":122,"column":23}},{"start":{"line":122,"column":23},"end":{"line":122,"column":null}}]}},"s":{"0":12,"1":8,"2":8,"3":8,"4":8,"5":12,"6":12,"7":12,"8":12,"9":12,"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":8},"f":{"0":12,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"b":{"0":[0],"1":[12],"2":[12,0],"3":[12,12]}} +,"/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":31,"column":13},"end":{"line":31,"column":22}},"1":{"start":{"line":2,"column":22},"end":{"line":2,"column":null}},"2":{"start":{"line":3,"column":25},"end":{"line":3,"column":null}},"3":{"start":{"line":4,"column":30},"end":{"line":4,"column":null}},"4":{"start":{"line":5,"column":21},"end":{"line":5,"column":null}},"5":{"start":{"line":7,"column":26},"end":{"line":29,"column":null}},"6":{"start":{"line":31,"column":22},"end":{"line":86,"column":null}},"7":{"start":{"line":88,"column":0},"end":{"line":142,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":31,"column":22},"end":{"line":31,"column":23}},"loc":{"start":{"line":44,"column":1},"end":{"line":86,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":41,"column":2},"end":{"line":41,"column":55}},"type":"default-arg","locations":[{"start":{"line":41,"column":16},"end":{"line":41,"column":55}}]},"1":{"loc":{"start":{"line":43,"column":2},"end":{"line":43,"column":21}},"type":"default-arg","locations":[{"start":{"line":43,"column":17},"end":{"line":43,"column":21}}]},"2":{"loc":{"start":{"line":47,"column":7},"end":{"line":62,"column":null}},"type":"cond-expr","locations":[{"start":{"line":48,"column":8},"end":{"line":62,"column":null}},{"start":{"line":62,"column":8},"end":{"line":62,"column":null}}]},"3":{"loc":{"start":{"line":47,"column":7},"end":{"line":47,"column":null}},"type":"binary-expr","locations":[{"start":{"line":47,"column":7},"end":{"line":47,"column":25}},{"start":{"line":47,"column":25},"end":{"line":47,"column":null}}]}},"s":{"0":14,"1":9,"2":9,"3":9,"4":9,"5":9,"6":9,"7":9},"f":{"0":13},"b":{"0":[13],"1":[13],"2":[0,13],"3":[13,0]}} +,"/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":11,"column":13},"end":{"line":11,"column":26}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":23},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":29},"end":{"line":11,"column":null}},"6":{"start":{"line":12,"column":0},"end":{"line":16,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/HelpIcon.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/HelpIcon.js","statementMap":{"0":{"start":{"line":5,"column":13},"end":{"line":5,"column":24}},"1":{"start":{"line":1,"column":25},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":22},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":25},"end":{"line":3,"column":null}},"4":{"start":{"line":5,"column":24},"end":{"line":76,"column":null}},"5":{"start":{"line":6,"column":36},"end":{"line":6,"column":null}},"6":{"start":{"line":7,"column":22},"end":{"line":7,"column":null}},"7":{"start":{"line":7,"column":28},"end":{"line":7,"column":null}},"8":{"start":{"line":8,"column":21},"end":{"line":8,"column":null}},"9":{"start":{"line":8,"column":27},"end":{"line":8,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":5,"column":24},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":46},"end":{"line":76,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":7,"column":22},"end":{"line":7,"column":28}},"loc":{"start":{"line":7,"column":28},"end":{"line":7,"column":null}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":8,"column":21},"end":{"line":8,"column":27}},"loc":{"start":{"line":8,"column":27},"end":{"line":8,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":7},"end":{"line":30,"column":null}},"type":"binary-expr","locations":[{"start":{"line":30,"column":7},"end":{"line":30,"column":null}}]},"1":{"loc":{"start":{"line":43,"column":28},"end":{"line":43,"column":null}},"type":"cond-expr","locations":[{"start":{"line":43,"column":44},"end":{"line":43,"column":54}},{"start":{"line":43,"column":54},"end":{"line":43,"column":null}}]},"2":{"loc":{"start":{"line":67,"column":22},"end":{"line":67,"column":null}},"type":"cond-expr","locations":[{"start":{"line":67,"column":38},"end":{"line":67,"column":48}},{"start":{"line":67,"column":48},"end":{"line":67,"column":null}}]}},"s":{"0":10,"1":8,"2":8,"3":8,"4":8,"5":9,"6":9,"7":0,"8":9,"9":0},"f":{"0":9,"1":0,"2":0},"b":{"0":[9],"1":[0,0],"2":[0,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/HelpIcon.stories.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/organisms/HelpIcon.stories.js","statementMap":{"0":{"start":{"line":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":12,"column":13},"end":{"line":12,"column":21}},"2":{"start":{"line":13,"column":13},"end":{"line":13,"column":21}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"4":{"start":{"line":1,"column":23},"end":{"line":1,"column":null}},"5":{"start":{"line":2,"column":25},"end":{"line":2,"column":null}},"6":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"7":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"8":{"start":{"line":12,"column":24},"end":{"line":12,"column":null}},"9":{"start":{"line":13,"column":24},"end":{"line":13,"column":null}},"10":{"start":{"line":15,"column":0},"end":{"line":19,"column":null}},"11":{"start":{"line":21,"column":0},"end":{"line":25,"column":null}},"12":{"start":{"line":27,"column":0},"end":{"line":31,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":0,"2":0,"3":0,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1},"f":{},"b":{}} +,"/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":15,"column":13},"end":{"line":15,"column":22}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":23},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":28},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"5":{"start":{"line":5,"column":31},"end":{"line":5,"column":null}},"6":{"start":{"line":6,"column":29},"end":{"line":6,"column":null}},"7":{"start":{"line":7,"column":27},"end":{"line":7,"column":null}},"8":{"start":{"line":8,"column":23},"end":{"line":8,"column":null}},"9":{"start":{"line":9,"column":21},"end":{"line":9,"column":null}},"10":{"start":{"line":10,"column":26},"end":{"line":10,"column":null}},"11":{"start":{"line":15,"column":22},"end":{"line":155,"column":null}},"12":{"start":{"line":32,"column":16},"end":{"line":32,"column":null}},"13":{"start":{"line":33,"column":19},"end":{"line":33,"column":null}},"14":{"start":{"line":34,"column":2},"end":{"line":37,"column":null}},"15":{"start":{"line":157,"column":0},"end":{"line":240,"column":null}}},"fnMap":{"0":{"name":"(anonymous_2)","decl":{"start":{"line":15,"column":22},"end":{"line":15,"column":23}},"loc":{"start":{"line":31,"column":1},"end":{"line":155,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":19},"end":{"line":33,"column":null}},"type":"cond-expr","locations":[{"start":{"line":33,"column":37},"end":{"line":33,"column":44}},{"start":{"line":33,"column":44},"end":{"line":33,"column":null}}]},"1":{"loc":{"start":{"line":35,"column":4},"end":{"line":37,"column":null}},"type":"cond-expr","locations":[{"start":{"line":36,"column":8},"end":{"line":36,"column":28}},{"start":{"line":37,"column":8},"end":{"line":37,"column":null}}]},"2":{"loc":{"start":{"line":35,"column":4},"end":{"line":35,"column":59}},"type":"binary-expr","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":37}},{"start":{"line":35,"column":37},"end":{"line":35,"column":59}}]},"3":{"loc":{"start":{"line":55,"column":9},"end":{"line":64,"column":null}},"type":"cond-expr","locations":[{"start":{"line":56,"column":10},"end":{"line":64,"column":null}},{"start":{"line":64,"column":10},"end":{"line":64,"column":null}}]},"4":{"loc":{"start":{"line":77,"column":21},"end":{"line":77,"column":null}},"type":"cond-expr","locations":[{"start":{"line":77,"column":41},"end":{"line":77,"column":61}},{"start":{"line":77,"column":61},"end":{"line":77,"column":null}}]},"5":{"loc":{"start":{"line":92,"column":15},"end":{"line":92,"column":null}},"type":"cond-expr","locations":[{"start":{"line":92,"column":35},"end":{"line":92,"column":42}},{"start":{"line":92,"column":42},"end":{"line":92,"column":null}}]},"6":{"loc":{"start":{"line":105,"column":15},"end":{"line":105,"column":null}},"type":"cond-expr","locations":[{"start":{"line":105,"column":35},"end":{"line":105,"column":47}},{"start":{"line":105,"column":47},"end":{"line":105,"column":null}}]},"7":{"loc":{"start":{"line":126,"column":9},"end":{"line":128,"column":null}},"type":"cond-expr","locations":[{"start":{"line":127,"column":10},"end":{"line":128,"column":null}},{"start":{"line":128,"column":12},"end":{"line":128,"column":null}}]},"8":{"loc":{"start":{"line":126,"column":9},"end":{"line":126,"column":null}},"type":"binary-expr","locations":[{"start":{"line":126,"column":9},"end":{"line":126,"column":23}},{"start":{"line":126,"column":23},"end":{"line":126,"column":null}}]},"9":{"loc":{"start":{"line":132,"column":11},"end":{"line":137,"column":null}},"type":"cond-expr","locations":[{"start":{"line":133,"column":12},"end":{"line":137,"column":null}},{"start":{"line":137,"column":12},"end":{"line":137,"column":null}}]}},"s":{"0":15,"1":8,"2":8,"3":8,"4":8,"5":8,"6":8,"7":8,"8":8,"9":8,"10":8,"11":8,"12":12,"13":12,"14":12,"15":8},"f":{"0":12},"b":{"0":[0,12],"1":[12,0],"2":[12,12],"3":[0,12],"4":[12,0],"5":[12,0],"6":[12,0],"7":[2,10],"8":[12,2],"9":[12,0]}} +,"/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":27,"column":13},"end":{"line":27,"column":21}},"1":{"start":{"line":28,"column":13},"end":{"line":28,"column":23}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"3":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"4":{"start":{"line":2,"column":23},"end":{"line":2,"column":null}},"5":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"6":{"start":{"line":9,"column":19},"end":{"line":23,"column":null}},"7":{"start":{"line":27,"column":24},"end":{"line":27,"column":null}},"8":{"start":{"line":28,"column":26},"end":{"line":28,"column":null}},"9":{"start":{"line":30,"column":0},"end":{"line":33,"column":null}},"10":{"start":{"line":35,"column":0},"end":{"line":40,"column":null}}},"fnMap":{"0":{"name":"(anonymous_5)","decl":{"start":{"line":9,"column":19},"end":{"line":9,"column":null}},"loc":{"start":{"line":9,"column":19},"end":{"line":23,"column":null}}}},"branchMap":{},"s":{"0":6,"1":4,"2":0,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"f":{"0":7},"b":{}} +,"/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":13},"end":{"line":12,"column":24}},"1":{"start":{"line":135,"column":0},"end":{"line":135,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":22},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":31},"end":{"line":3,"column":null}},"5":{"start":{"line":5,"column":31},"end":{"line":5,"column":null}},"6":{"start":{"line":6,"column":29},"end":{"line":6,"column":null}},"7":{"start":{"line":12,"column":27},"end":{"line":110,"column":null}},"8":{"start":{"line":20,"column":42},"end":{"line":20,"column":null}},"9":{"start":{"line":21,"column":16},"end":{"line":21,"column":null}},"10":{"start":{"line":22,"column":17},"end":{"line":22,"column":null}},"11":{"start":{"line":24,"column":2},"end":{"line":32,"column":null}},"12":{"start":{"line":25,"column":4},"end":{"line":29,"column":null}},"13":{"start":{"line":26,"column":6},"end":{"line":26,"column":null}},"14":{"start":{"line":28,"column":6},"end":{"line":28,"column":null}},"15":{"start":{"line":31,"column":4},"end":{"line":31,"column":null}},"16":{"start":{"line":112,"column":0},"end":{"line":133,"column":null}},"17":{"start":{"line":135,"column":15},"end":{"line":135,"column":27}}},"fnMap":{"0":{"name":"(anonymous_7)","decl":{"start":{"line":12,"column":27},"end":{"line":12,"column":28}},"loc":{"start":{"line":19,"column":1},"end":{"line":110,"column":null}}},"1":{"name":"(anonymous_8)","decl":{"start":{"line":24,"column":15},"end":{"line":24,"column":22}},"loc":{"start":{"line":24,"column":22},"end":{"line":32,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":25,"column":4},"end":{"line":29,"column":null}},"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":29,"column":null}},{"start":{"line":27,"column":11},"end":{"line":29,"column":null}}]},"1":{"loc":{"start":{"line":40,"column":14},"end":{"line":40,"column":null}},"type":"cond-expr","locations":[{"start":{"line":40,"column":31},"end":{"line":40,"column":40}},{"start":{"line":40,"column":40},"end":{"line":40,"column":null}}]},"2":{"loc":{"start":{"line":49,"column":13},"end":{"line":59,"column":null}},"type":"cond-expr","locations":[{"start":{"line":50,"column":14},"end":{"line":59,"column":null}},{"start":{"line":59,"column":14},"end":{"line":59,"column":null}}]},"3":{"loc":{"start":{"line":68,"column":9},"end":{"line":98,"column":null}},"type":"cond-expr","locations":[{"start":{"line":69,"column":10},"end":{"line":98,"column":null}},{"start":{"line":98,"column":10},"end":{"line":98,"column":null}}]}},"s":{"0":0,"1":4,"2":9,"3":9,"4":9,"5":9,"6":9,"7":9,"8":3,"9":3,"10":3,"11":3,"12":1,"13":0,"14":1,"15":1,"16":9,"17":9},"f":{"0":3,"1":1},"b":{"0":[0,1],"1":[2,1],"2":[2,1],"3":[2,1]}} +,"/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":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":12,"column":13},"end":{"line":12,"column":25}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"3":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"4":{"start":{"line":2,"column":24},"end":{"line":2,"column":null}},"5":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"6":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}},"7":{"start":{"line":12,"column":28},"end":{"line":12,"column":null}},"8":{"start":{"line":14,"column":0},"end":{"line":17,"column":null}},"9":{"start":{"line":19,"column":0},"end":{"line":23,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":2,"1":2,"2":0,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},"f":{},"b":{}} +,"/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":14,"column":16},"end":{"line":14,"column":31}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":25},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":31},"end":{"line":4,"column":null}},"5":{"start":{"line":5,"column":34},"end":{"line":5,"column":null}},"6":{"start":{"line":6,"column":24},"end":{"line":6,"column":null}},"7":{"start":{"line":7,"column":29},"end":{"line":7,"column":null}},"8":{"start":{"line":8,"column":30},"end":{"line":8,"column":null}},"9":{"start":{"line":9,"column":27},"end":{"line":9,"column":null}},"10":{"start":{"line":15,"column":36},"end":{"line":15,"column":null}},"11":{"start":{"line":16,"column":22},"end":{"line":16,"column":null}},"12":{"start":{"line":18,"column":44},"end":{"line":18,"column":null}},"13":{"start":{"line":20,"column":24},"end":{"line":96,"column":null}},"14":{"start":{"line":22,"column":27},"end":{"line":22,"column":null}},"15":{"start":{"line":25,"column":24},"end":{"line":25,"column":null}},"16":{"start":{"line":26,"column":4},"end":{"line":32,"column":null}},"17":{"start":{"line":26,"column":21},"end":{"line":26,"column":24}},"18":{"start":{"line":27,"column":6},"end":{"line":31,"column":null}},"19":{"start":{"line":28,"column":8},"end":{"line":30,"column":null}},"20":{"start":{"line":29,"column":10},"end":{"line":29,"column":null}},"21":{"start":{"line":35,"column":4},"end":{"line":35,"column":null}},"22":{"start":{"line":37,"column":21},"end":{"line":37,"column":null}},"23":{"start":{"line":40,"column":4},"end":{"line":43,"column":null}},"24":{"start":{"line":41,"column":28},"end":{"line":41,"column":null}},"25":{"start":{"line":42,"column":6},"end":{"line":42,"column":null}},"26":{"start":{"line":46,"column":23},"end":{"line":46,"column":null}},"27":{"start":{"line":47,"column":20},"end":{"line":47,"column":null}},"28":{"start":{"line":51,"column":4},"end":{"line":71,"column":null}},"29":{"start":{"line":52,"column":6},"end":{"line":60,"column":null}},"30":{"start":{"line":62,"column":6},"end":{"line":70,"column":null}},"31":{"start":{"line":73,"column":4},"end":{"line":75,"column":null}},"32":{"start":{"line":74,"column":6},"end":{"line":74,"column":null}},"33":{"start":{"line":78,"column":4},"end":{"line":89,"column":null}},"34":{"start":{"line":88,"column":6},"end":{"line":88,"column":null}},"35":{"start":{"line":91,"column":4},"end":{"line":93,"column":null}},"36":{"start":{"line":92,"column":6},"end":{"line":92,"column":null}},"37":{"start":{"line":95,"column":4},"end":{"line":95,"column":null}},"38":{"start":{"line":373,"column":0},"end":{"line":378,"column":null}}},"fnMap":{"0":{"name":"ReportAProblem","decl":{"start":{"line":14,"column":16},"end":{"line":14,"column":31}},"loc":{"start":{"line":14,"column":36},"end":{"line":371,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":20,"column":24},"end":{"line":20,"column":25}},"loc":{"start":{"line":20,"column":25},"end":{"line":96,"column":null}}},"2":{"name":"(anonymous_4)","decl":{"start":{"line":84,"column":13},"end":{"line":84,"column":14}},"loc":{"start":{"line":84,"column":14},"end":{"line":89,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":27,"column":6},"end":{"line":31,"column":null}},"type":"if","locations":[{"start":{"line":27,"column":6},"end":{"line":31,"column":null}}]},"1":{"loc":{"start":{"line":28,"column":8},"end":{"line":30,"column":null}},"type":"if","locations":[{"start":{"line":28,"column":8},"end":{"line":30,"column":null}}]},"2":{"loc":{"start":{"line":51,"column":4},"end":{"line":71,"column":null}},"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":71,"column":null}},{"start":{"line":61,"column":11},"end":{"line":71,"column":null}}]},"3":{"loc":{"start":{"line":91,"column":4},"end":{"line":93,"column":null}},"type":"if","locations":[{"start":{"line":91,"column":4},"end":{"line":93,"column":null}}]},"4":{"loc":{"start":{"line":105,"column":9},"end":{"line":121,"column":null}},"type":"cond-expr","locations":[{"start":{"line":106,"column":10},"end":{"line":121,"column":null}},{"start":{"line":121,"column":10},"end":{"line":121,"column":null}}]},"5":{"loc":{"start":{"line":125,"column":8},"end":{"line":125,"column":null}},"type":"cond-expr","locations":[{"start":{"line":125,"column":8},"end":{"line":125,"column":null}}]},"6":{"loc":{"start":{"line":350,"column":15},"end":{"line":354,"column":null}},"type":"cond-expr","locations":[{"start":{"line":351,"column":16},"end":{"line":354,"column":null}},{"start":{"line":354,"column":18},"end":{"line":354,"column":null}}]}},"s":{"0":7,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":9,"11":8,"12":8,"13":8,"14":3,"15":3,"16":3,"17":3,"18":24,"19":21,"20":1,"21":3,"22":3,"23":3,"24":5,"25":5,"26":3,"27":3,"28":3,"29":0,"30":3,"31":3,"32":21,"33":3,"34":0,"35":3,"36":1,"37":3,"38":1},"f":{"0":9,"1":3,"2":0},"b":{"0":[21],"1":[1],"2":[0,3],"3":[1],"4":[1,7],"5":[1],"6":[2,5]}} +,"/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":11,"column":13},"end":{"line":11,"column":20}},"1":{"start":{"line":4,"column":0},"end":{"line":4,"column":15}},"2":{"start":{"line":1,"column":18},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":31},"end":{"line":2,"column":null}},"4":{"start":{"line":4,"column":15},"end":{"line":7,"column":2}},"5":{"start":{"line":11,"column":23},"end":{"line":11,"column":null}}},"fnMap":{},"branchMap":{},"s":{"0":10,"1":0,"2":1,"3":1,"4":1,"5":1},"f":{},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/TextRecur.jsx": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/TextRecur.jsx","statementMap":{"0":{"start":{"line":35,"column":24},"end":{"line":35,"column":34}},"1":{"start":{"line":1,"column":27},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":23},"end":{"line":4,"column":null}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":null}},"4":{"start":{"line":6,"column":21},"end":{"line":6,"column":null}},"5":{"start":{"line":7,"column":24},"end":{"line":7,"column":null}},"6":{"start":{"line":8,"column":22},"end":{"line":8,"column":null}},"7":{"start":{"line":9,"column":17},"end":{"line":9,"column":null}},"8":{"start":{"line":10,"column":17},"end":{"line":10,"column":null}},"9":{"start":{"line":11,"column":26},"end":{"line":11,"column":null}},"10":{"start":{"line":12,"column":17},"end":{"line":12,"column":null}},"11":{"start":{"line":23,"column":14},"end":{"line":33,"column":null}},"12":{"start":{"line":37,"column":15},"end":{"line":37,"column":42}},"13":{"start":{"line":40,"column":16},"end":{"line":40,"column":null}},"14":{"start":{"line":45,"column":2},"end":{"line":52,"column":null}},"15":{"start":{"line":51,"column":4},"end":{"line":51,"column":null}},"16":{"start":{"line":61,"column":12},"end":{"line":61,"column":36}}},"fnMap":{"0":{"name":"TextRecur","decl":{"start":{"line":35,"column":24},"end":{"line":35,"column":34}},"loc":{"start":{"line":35,"column":39},"end":{"line":70,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":60,"column":23},"end":{"line":60,"column":24}},"loc":{"start":{"line":61,"column":12},"end":{"line":61,"column":36}}}},"branchMap":{"0":{"loc":{"start":{"line":45,"column":2},"end":{"line":52,"column":null}},"type":"if","locations":[{"start":{"line":45,"column":2},"end":{"line":52,"column":null}}]},"1":{"loc":{"start":{"line":46,"column":4},"end":{"line":49,"column":null}},"type":"binary-expr","locations":[{"start":{"line":46,"column":4},"end":{"line":46,"column":null}},{"start":{"line":47,"column":5},"end":{"line":47,"column":20}},{"start":{"line":48,"column":6},"end":{"line":48,"column":null}},{"start":{"line":49,"column":6},"end":{"line":49,"column":null}}]},"2":{"loc":{"start":{"line":57,"column":7},"end":{"line":66,"column":27}},"type":"cond-expr","locations":[{"start":{"line":59,"column":8},"end":{"line":59,"column":27}},{"start":{"line":66,"column":8},"end":{"line":66,"column":27}}]},"3":{"loc":{"start":{"line":57,"column":7},"end":{"line":57,"column":32}},"type":"binary-expr","locations":[{"start":{"line":57,"column":7},"end":{"line":57,"column":18}},{"start":{"line":57,"column":18},"end":{"line":57,"column":32}}]}},"s":{"0":106,"1":12,"2":12,"3":12,"4":12,"5":12,"6":12,"7":12,"8":12,"9":12,"10":12,"11":12,"12":516,"13":515,"14":515,"15":0,"16":411},"f":{"0":516,"1":411},"b":{"0":[0],"1":[515,515,28,6],"2":[267,248],"3":[515,289]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/TextRender.jsx": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/TextRender.jsx","statementMap":{"0":{"start":{"line":9,"column":24},"end":{"line":9,"column":35}},"1":{"start":{"line":1,"column":22},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":27},"end":{"line":2,"column":null}},"3":{"start":{"line":14,"column":8},"end":{"line":16,"column":null}}},"fnMap":{"0":{"name":"TextRender","decl":{"start":{"line":9,"column":24},"end":{"line":9,"column":35}},"loc":{"start":{"line":9,"column":40},"end":{"line":25,"column":null}}},"1":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":22},"end":{"line":13,"column":23}},"loc":{"start":{"line":13,"column":29},"end":{"line":22,"column":null}}}},"branchMap":{},"s":{"0":35,"1":12,"2":12,"3":106},"f":{"0":37,"1":106},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/HeaderText.jsx": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/HeaderText.jsx","statementMap":{"0":{"start":{"line":3,"column":24},"end":{"line":3,"column":35}},"1":{"start":{"line":1,"column":24},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":2},"end":{"line":31,"column":null}}},"fnMap":{"0":{"name":"HeaderText","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":35}},"loc":{"start":{"line":3,"column":40},"end":{"line":32,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":21},"end":{"line":9,"column":null}},"type":"cond-expr","locations":[{"start":{"line":9,"column":41},"end":{"line":9,"column":50}},{"start":{"line":9,"column":50},"end":{"line":9,"column":null}}]},"1":{"loc":{"start":{"line":15,"column":40},"end":{"line":15,"column":null}},"type":"cond-expr","locations":[{"start":{"line":15,"column":60},"end":{"line":15,"column":69}},{"start":{"line":15,"column":69},"end":{"line":15,"column":null}}]},"2":{"loc":{"start":{"line":21,"column":40},"end":{"line":21,"column":null}},"type":"cond-expr","locations":[{"start":{"line":21,"column":60},"end":{"line":21,"column":69}},{"start":{"line":21,"column":69},"end":{"line":21,"column":null}}]}},"s":{"0":12,"1":12,"2":21},"f":{"0":21},"b":{"0":[2,0],"1":[4,6],"2":[8,1]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/LineBreak.jsx": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/LineBreak.jsx","statementMap":{"0":{"start":{"line":1,"column":24},"end":{"line":1,"column":null}},"1":{"start":{"line":2,"column":2},"end":{"line":2,"column":null}}},"fnMap":{"0":{"name":"LineBreak","decl":{"start":{"line":1,"column":24},"end":{"line":1,"column":null}},"loc":{"start":{"line":1,"column":24},"end":{"line":3,"column":null}}}},"branchMap":{},"s":{"0":12,"1":22},"f":{"0":22},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/Link.jsx": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/Link.jsx","statementMap":{"0":{"start":{"line":1,"column":24},"end":{"line":1,"column":29}}},"fnMap":{"0":{"name":"Link","decl":{"start":{"line":1,"column":24},"end":{"line":1,"column":29}},"loc":{"start":{"line":1,"column":34},"end":{"line":10,"column":null}}}},"branchMap":{},"s":{"0":12},"f":{"0":3},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/ListItem.jsx": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/ListItem.jsx","statementMap":{"0":{"start":{"line":1,"column":24},"end":{"line":1,"column":33}}},"fnMap":{"0":{"name":"ListItem","decl":{"start":{"line":1,"column":24},"end":{"line":1,"column":33}},"loc":{"start":{"line":1,"column":38},"end":{"line":3,"column":null}}}},"branchMap":{},"s":{"0":12},"f":{"0":137},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/OrderedList.jsx": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/OrderedList.jsx","statementMap":{"0":{"start":{"line":1,"column":24},"end":{"line":1,"column":38}}},"fnMap":{"0":{"name":"UnorderedList","decl":{"start":{"line":1,"column":24},"end":{"line":1,"column":38}},"loc":{"start":{"line":1,"column":43},"end":{"line":3,"column":null}}}},"branchMap":{},"s":{"0":12},"f":{"0":2},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/Paragraph.jsx": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/Paragraph.jsx","statementMap":{"0":{"start":{"line":1,"column":24},"end":{"line":1,"column":34}}},"fnMap":{"0":{"name":"Paragraph","decl":{"start":{"line":1,"column":24},"end":{"line":1,"column":34}},"loc":{"start":{"line":1,"column":39},"end":{"line":3,"column":null}}}},"branchMap":{},"s":{"0":12},"f":{"0":63},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/Span.jsx": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/Span.jsx","statementMap":{"0":{"start":{"line":1,"column":24},"end":{"line":1,"column":29}}},"fnMap":{"0":{"name":"Span","decl":{"start":{"line":1,"column":24},"end":{"line":1,"column":29}},"loc":{"start":{"line":1,"column":34},"end":{"line":3,"column":null}}}},"branchMap":{},"s":{"0":12},"f":{"0":0},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/Text.jsx": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/Text.jsx","statementMap":{"0":{"start":{"line":1,"column":24},"end":{"line":1,"column":29}},"1":{"start":{"line":3,"column":2},"end":{"line":10,"column":null}}},"fnMap":{"0":{"name":"Text","decl":{"start":{"line":1,"column":24},"end":{"line":1,"column":29}},"loc":{"start":{"line":1,"column":34},"end":{"line":11,"column":null}}}},"branchMap":{},"s":{"0":12,"1":223},"f":{"0":223},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/UnorderedList.jsx": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/components/text_node_renderer/nodes/UnorderedList.jsx","statementMap":{"0":{"start":{"line":1,"column":24},"end":{"line":1,"column":38}}},"fnMap":{"0":{"name":"UnorderedList","decl":{"start":{"line":1,"column":24},"end":{"line":1,"column":38}},"loc":{"start":{"line":1,"column":43},"end":{"line":3,"column":null}}}},"branchMap":{},"s":{"0":12},"f":{"0":45},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/notify/postFeedbackToGcNotify.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/notify/postFeedbackToGcNotify.js","statementMap":{"0":{"start":{"line":1,"column":22},"end":{"line":1,"column":45}},"1":{"start":{"line":2,"column":2},"end":{"line":17,"column":null}}},"fnMap":{"0":{"name":"postFeedbackToGcNotify","decl":{"start":{"line":1,"column":22},"end":{"line":1,"column":45}},"loc":{"start":{"line":1,"column":49},"end":{"line":19,"column":null}}}},"branchMap":{},"s":{"0":1,"1":0},"f":{"0":0},"b":{}} +,"/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":13},"end":{"line":3,"column":24}},"1":{"start":{"line":32,"column":13},"end":{"line":32,"column":38}},"2":{"start":{"line":1,"column":7},"end":{"line":1,"column":null}},"3":{"start":{"line":3,"column":27},"end":{"line":30,"column":null}},"4":{"start":{"line":11,"column":25},"end":{"line":27,"column":null}},"5":{"start":{"line":29,"column":2},"end":{"line":29,"column":null}},"6":{"start":{"line":32,"column":41},"end":{"line":65,"column":null}},"7":{"start":{"line":42,"column":25},"end":{"line":63,"column":null}},"8":{"start":{"line":64,"column":2},"end":{"line":64,"column":null}}},"fnMap":{"0":{"name":"(anonymous_3)","decl":{"start":{"line":3,"column":27},"end":{"line":3,"column":null}},"loc":{"start":{"line":9,"column":2},"end":{"line":30,"column":null}}},"1":{"name":"(anonymous_4)","decl":{"start":{"line":32,"column":41},"end":{"line":32,"column":null}},"loc":{"start":{"line":40,"column":2},"end":{"line":65,"column":null}}}},"branchMap":{},"s":{"0":2,"1":1,"2":2,"3":2,"4":1,"5":1,"6":2,"7":0,"8":0},"f":{"0":1,"1":0},"b":{}} +,"/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":13},"end":{"line":1,"column":33}},"1":{"start":{"line":1,"column":33},"end":{"line":12,"column":null}},"2":{"start":{"line":2,"column":2},"end":{"line":11,"column":null}},"3":{"start":{"line":3,"column":4},"end":{"line":10,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":1,"column":33},"end":{"line":1,"column":34}},"loc":{"start":{"line":1,"column":51},"end":{"line":12,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":2,"column":29},"end":{"line":2,"column":30}},"loc":{"start":{"line":2,"column":30},"end":{"line":11,"column":null}}}},"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}}]},"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}}]}},"s":{"0":6,"1":6,"2":6,"3":6},"f":{"0":6,"1":6},"b":{"0":[0,6],"1":[0,6]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/filterItems.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/filterItems.js","statementMap":{"0":{"start":{"line":1,"column":13},"end":{"line":1,"column":27}},"1":{"start":{"line":1,"column":27},"end":{"line":7,"column":null}},"2":{"start":{"line":3,"column":27},"end":{"line":5,"column":null}},"3":{"start":{"line":4,"column":4},"end":{"line":4,"column":null}},"4":{"start":{"line":6,"column":2},"end":{"line":6,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":1,"column":27},"end":{"line":1,"column":28}},"loc":{"start":{"line":1,"column":35},"end":{"line":7,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":3,"column":40},"end":{"line":3,"column":41}},"loc":{"start":{"line":3,"column":41},"end":{"line":5,"column":null}}}},"branchMap":{},"s":{"0":6,"1":6,"2":6,"3":6,"4":6},"f":{"0":6,"1":6},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/generateCollapseElements.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/generateCollapseElements.js","statementMap":{"0":{"start":{"line":1,"column":13},"end":{"line":1,"column":40}},"1":{"start":{"line":1,"column":40},"end":{"line":43,"column":null}},"2":{"start":{"line":2,"column":19},"end":{"line":2,"column":21}},"3":{"start":{"line":4,"column":2},"end":{"line":40,"column":null}},"4":{"start":{"line":5,"column":4},"end":{"line":39,"column":null}},"5":{"start":{"line":6,"column":6},"end":{"line":7,"column":34}},"6":{"start":{"line":9,"column":11},"end":{"line":39,"column":null}},"7":{"start":{"line":10,"column":24},"end":{"line":11,"column":24}},"8":{"start":{"line":11,"column":8},"end":{"line":11,"column":24}},"9":{"start":{"line":15,"column":6},"end":{"line":16,"column":34}},"10":{"start":{"line":20,"column":11},"end":{"line":39,"column":null}},"11":{"start":{"line":21,"column":24},"end":{"line":22,"column":24}},"12":{"start":{"line":22,"column":8},"end":{"line":22,"column":24}},"13":{"start":{"line":26,"column":6},"end":{"line":27,"column":34}},"14":{"start":{"line":31,"column":11},"end":{"line":39,"column":null}},"15":{"start":{"line":32,"column":6},"end":{"line":33,"column":34}},"16":{"start":{"line":37,"column":11},"end":{"line":39,"column":null}},"17":{"start":{"line":38,"column":6},"end":{"line":38,"column":null}},"18":{"start":{"line":42,"column":2},"end":{"line":42,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":1,"column":40},"end":{"line":1,"column":41}},"loc":{"start":{"line":1,"column":41},"end":{"line":43,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":10,"column":41},"end":{"line":10,"column":42}},"loc":{"start":{"line":11,"column":8},"end":{"line":11,"column":24}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":21,"column":41},"end":{"line":21,"column":42}},"loc":{"start":{"line":22,"column":8},"end":{"line":22,"column":24}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":4},"end":{"line":39,"column":null}},"type":"if","locations":[{"start":{"line":5,"column":4},"end":{"line":39,"column":null}},{"start":{"line":9,"column":11},"end":{"line":39,"column":null}}]},"1":{"loc":{"start":{"line":9,"column":11},"end":{"line":39,"column":null}},"type":"if","locations":[{"start":{"line":9,"column":11},"end":{"line":39,"column":null}},{"start":{"line":20,"column":11},"end":{"line":39,"column":null}}]},"2":{"loc":{"start":{"line":20,"column":11},"end":{"line":39,"column":null}},"type":"if","locations":[{"start":{"line":20,"column":11},"end":{"line":39,"column":null}},{"start":{"line":31,"column":11},"end":{"line":39,"column":null}}]},"3":{"loc":{"start":{"line":31,"column":11},"end":{"line":39,"column":null}},"type":"if","locations":[{"start":{"line":31,"column":11},"end":{"line":39,"column":null}},{"start":{"line":37,"column":11},"end":{"line":39,"column":null}}]},"4":{"loc":{"start":{"line":37,"column":11},"end":{"line":39,"column":null}},"type":"if","locations":[{"start":{"line":37,"column":11},"end":{"line":39,"column":null}}]}},"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},"b":{"0":[0,0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0]}} +,"/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":1,"column":16},"end":{"line":1,"column":32}},"1":{"start":{"line":2,"column":2},"end":{"line":15,"column":null}},"2":{"start":{"line":2,"column":33},"end":{"line":15,"column":null}}},"fnMap":{"0":{"name":"getAllUpdateIds","decl":{"start":{"line":1,"column":16},"end":{"line":1,"column":32}},"loc":{"start":{"line":1,"column":37},"end":{"line":16,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":2,"column":23},"end":{"line":2,"column":24}},"loc":{"start":{"line":2,"column":33},"end":{"line":15,"column":null}}}},"branchMap":{},"s":{"0":0,"1":0,"2":0},"f":{"0":0,"1":0},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/getDictionaryTerm.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/getDictionaryTerm.js","statementMap":{"0":{"start":{"line":1,"column":13},"end":{"line":1,"column":33}},"1":{"start":{"line":1,"column":33},"end":{"line":4,"column":null}},"2":{"start":{"line":2,"column":26},"end":{"line":2,"column":null}},"3":{"start":{"line":2,"column":51},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":2},"end":{"line":3,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":1,"column":33},"end":{"line":1,"column":34}},"loc":{"start":{"line":1,"column":55},"end":{"line":4,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":2,"column":42},"end":{"line":2,"column":43}},"loc":{"start":{"line":2,"column":51},"end":{"line":2,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":3,"column":9},"end":{"line":3,"column":78}},"type":"cond-expr","locations":[{"start":{"line":3,"column":27},"end":{"line":3,"column":51}},{"start":{"line":3,"column":54},"end":{"line":3,"column":78}}]}},"s":{"0":28,"1":8,"2":28,"3":358,"4":28},"f":{"0":28,"1":358},"b":{"0":[2,26]}} +,"/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":2,"column":16},"end":{"line":2,"column":26}},"1":{"start":{"line":3,"column":20},"end":{"line":3,"column":null}},"2":{"start":{"line":4,"column":10},"end":{"line":4,"column":null}},"3":{"start":{"line":6,"column":2},"end":{"line":16,"column":null}},"4":{"start":{"line":6,"column":15},"end":{"line":6,"column":18}},"5":{"start":{"line":7,"column":4},"end":{"line":15,"column":null}},"6":{"start":{"line":8,"column":6},"end":{"line":8,"column":null}},"7":{"start":{"line":9,"column":11},"end":{"line":15,"column":null}},"8":{"start":{"line":10,"column":6},"end":{"line":10,"column":null}},"9":{"start":{"line":11,"column":6},"end":{"line":11,"column":null}},"10":{"start":{"line":13,"column":6},"end":{"line":13,"column":null}},"11":{"start":{"line":14,"column":6},"end":{"line":14,"column":null}},"12":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}}},"fnMap":{"0":{"name":"maskEmail","decl":{"start":{"line":2,"column":16},"end":{"line":2,"column":26}},"loc":{"start":{"line":2,"column":31},"end":{"line":19,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":4},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":7,"column":4},"end":{"line":15,"column":null}},{"start":{"line":9,"column":11},"end":{"line":15,"column":null}}]},"1":{"loc":{"start":{"line":9,"column":11},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":9,"column":11},"end":{"line":15,"column":null}},{"start":{"line":12,"column":11},"end":{"line":15,"column":null}}]},"2":{"loc":{"start":{"line":9,"column":15},"end":{"line":9,"column":63}},"type":"binary-expr","locations":[{"start":{"line":9,"column":15},"end":{"line":9,"column":35}},{"start":{"line":9,"column":35},"end":{"line":9,"column":55}},{"start":{"line":9,"column":55},"end":{"line":9,"column":63}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":14,"6":1,"7":13,"8":10,"9":10,"10":3,"11":3,"12":1},"f":{"0":1},"b":{"0":[1,13],"1":[10,3],"2":[13,12,11]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/shuffle.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/shuffle.js","statementMap":{"0":{"start":{"line":1,"column":13},"end":{"line":1,"column":23}},"1":{"start":{"line":1,"column":23},"end":{"line":8,"column":null}},"2":{"start":{"line":3,"column":2},"end":{"line":6,"column":null}},"3":{"start":{"line":3,"column":15},"end":{"line":3,"column":36}},"4":{"start":{"line":4,"column":14},"end":{"line":4,"column":null}},"5":{"start":{"line":5,"column":4},"end":{"line":5,"column":null}},"6":{"start":{"line":7,"column":2},"end":{"line":7,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":1,"column":23},"end":{"line":1,"column":24}},"loc":{"start":{"line":1,"column":24},"end":{"line":8,"column":null}}}},"branchMap":{},"s":{"0":1,"1":6,"2":1,"3":1,"4":0,"5":0,"6":1},"f":{"0":1},"b":{}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/sortUpdatesByDate.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/lib/utils/sortUpdatesByDate.js","statementMap":{"0":{"start":{"line":1,"column":13},"end":{"line":1,"column":33}},"1":{"start":{"line":1,"column":33},"end":{"line":5,"column":null}},"2":{"start":{"line":2,"column":2},"end":{"line":4,"column":null}},"3":{"start":{"line":3,"column":4},"end":{"line":3,"column":null}}},"fnMap":{"0":{"name":"(anonymous_1)","decl":{"start":{"line":1,"column":33},"end":{"line":1,"column":34}},"loc":{"start":{"line":1,"column":34},"end":{"line":5,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":2,"column":25},"end":{"line":2,"column":26}},"loc":{"start":{"line":2,"column":29},"end":{"line":4,"column":null}}}},"branchMap":{},"s":{"0":7,"1":7,"2":7,"3":5},"f":{"0":7,"1":5},"b":{}} +,"/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":1,"column":16},"end":{"line":1,"column":30}},"1":{"start":{"line":3,"column":2},"end":{"line":5,"column":null}},"2":{"start":{"line":9,"column":2},"end":{"line":11,"column":null}},"3":{"start":{"line":15,"column":2},"end":{"line":17,"column":null}},"4":{"start":{"line":21,"column":2},"end":{"line":23,"column":null}},"5":{"start":{"line":25,"column":2},"end":{"line":27,"column":null}},"6":{"start":{"line":30,"column":2},"end":{"line":30,"column":null}}},"fnMap":{"0":{"name":"stripFeedback","decl":{"start":{"line":1,"column":16},"end":{"line":1,"column":30}},"loc":{"start":{"line":1,"column":45},"end":{"line":31,"column":null}}}},"branchMap":{},"s":{"0":7,"1":7,"2":7,"3":7,"4":7,"5":7,"6":7},"f":{"0":7},"b":{}} +,"/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":3,"column":24},"end":{"line":3,"column":39}},"1":{"start":{"line":4,"column":2},"end":{"line":12,"column":null}},"2":{"start":{"line":5,"column":4},"end":{"line":12,"column":null}},"3":{"start":{"line":6,"column":6},"end":{"line":11,"column":null}},"4":{"start":{"line":7,"column":8},"end":{"line":9,"column":null}},"5":{"start":{"line":8,"column":10},"end":{"line":8,"column":null}},"6":{"start":{"line":10,"column":8},"end":{"line":10,"column":null}}},"fnMap":{"0":{"name":"initMiddleware","decl":{"start":{"line":3,"column":24},"end":{"line":3,"column":39}},"loc":{"start":{"line":3,"column":49},"end":{"line":13,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":4,"column":9},"end":{"line":4,"column":10}},"loc":{"start":{"line":5,"column":4},"end":{"line":12,"column":null}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":5,"column":16},"end":{"line":5,"column":17}},"loc":{"start":{"line":5,"column":26},"end":{"line":12,"column":null}}},"3":{"name":"(anonymous_4)","decl":{"start":{"line":6,"column":27},"end":{"line":6,"column":28}},"loc":{"start":{"line":6,"column":28},"end":{"line":11,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":8},"end":{"line":9,"column":null}},"type":"if","locations":[{"start":{"line":7,"column":8},"end":{"line":9,"column":null}}]}},"s":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"f":{"0":0,"1":0,"2":0,"3":0},"b":{"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":11,"column":24},"end":{"line":11,"column":33}},"1":{"start":{"line":1,"column":42},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":31},"end":{"line":2,"column":null}},"3":{"start":{"line":12,"column":2},"end":{"line":24,"column":null}},"4":{"start":{"line":13,"column":22},"end":{"line":13,"column":null}},"5":{"start":{"line":14,"column":18},"end":{"line":14,"column":null}},"6":{"start":{"line":15,"column":4},"end":{"line":23,"column":null}},"7":{"start":{"line":16,"column":6},"end":{"line":16,"column":null}},"8":{"start":{"line":18,"column":26},"end":{"line":18,"column":null}},"9":{"start":{"line":19,"column":22},"end":{"line":21,"column":null}},"10":{"start":{"line":20,"column":8},"end":{"line":20,"column":null}},"11":{"start":{"line":22,"column":6},"end":{"line":22,"column":null}}},"fnMap":{"0":{"name":"validate","decl":{"start":{"line":11,"column":24},"end":{"line":11,"column":33}},"loc":{"start":{"line":11,"column":62},"end":{"line":25,"column":null}}},"1":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":9},"end":{"line":12,"column":16}},"loc":{"start":{"line":12,"column":21},"end":{"line":24,"column":null}}},"2":{"name":"(anonymous_3)","decl":{"start":{"line":19,"column":34},"end":{"line":19,"column":35}},"loc":{"start":{"line":19,"column":35},"end":{"line":21,"column":null}}}},"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}}]},"1":{"loc":{"start":{"line":15,"column":4},"end":{"line":23,"column":null}},"type":"if","locations":[{"start":{"line":15,"column":4},"end":{"line":23,"column":null}},{"start":{"line":17,"column":11},"end":{"line":23,"column":null}}]}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":0,"8":1,"9":1,"10":2,"11":1},"f":{"0":1,"1":1,"2":2},"b":{"0":[0],"1":[0,1]}} +,"/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":10,"column":24},"end":{"line":10,"column":33}},"1":{"start":{"line":233,"column":13},"end":{"line":233,"column":27}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":31},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":39},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":29},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":36},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":26},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":31},"end":{"line":8,"column":null}},"10":{"start":{"line":11,"column":16},"end":{"line":11,"column":null}},"11":{"start":{"line":12,"column":30},"end":{"line":12,"column":null}},"12":{"start":{"line":13,"column":17},"end":{"line":13,"column":null}},"13":{"start":{"line":14,"column":21},"end":{"line":14,"column":null}},"14":{"start":{"line":16,"column":2},"end":{"line":28,"column":null}},"15":{"start":{"line":17,"column":4},"end":{"line":20,"column":null}},"16":{"start":{"line":18,"column":6},"end":{"line":18,"column":null}},"17":{"start":{"line":19,"column":6},"end":{"line":19,"column":null}},"18":{"start":{"line":23,"column":4},"end":{"line":27,"column":null}},"19":{"start":{"line":24,"column":6},"end":{"line":24,"column":null}},"20":{"start":{"line":26,"column":6},"end":{"line":26,"column":null}},"21":{"start":{"line":31,"column":2},"end":{"line":33,"column":null}},"22":{"start":{"line":32,"column":4},"end":{"line":32,"column":null}},"23":{"start":{"line":233,"column":30},"end":{"line":245,"column":null}},"24":{"start":{"line":234,"column":19},"end":{"line":234,"column":null}},"25":{"start":{"line":236,"column":2},"end":{"line":244,"column":null}}},"fnMap":{"0":{"name":"error404","decl":{"start":{"line":10,"column":24},"end":{"line":10,"column":33}},"loc":{"start":{"line":10,"column":38},"end":{"line":231,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":16,"column":12},"end":{"line":16,"column":null}},"loc":{"start":{"line":16,"column":12},"end":{"line":28,"column":5}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":233,"column":30},"end":{"line":233,"column":37}},"loc":{"start":{"line":233,"column":47},"end":{"line":245,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":4},"end":{"line":20,"column":null}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":20,"column":null}}]},"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}}]},"2":{"loc":{"start":{"line":23,"column":4},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":23,"column":4},"end":{"line":27,"column":null}},{"start":{"line":25,"column":11},"end":{"line":27,"column":null}}]},"3":{"loc":{"start":{"line":31,"column":2},"end":{"line":33,"column":null}},"type":"if","locations":[{"start":{"line":31,"column":2},"end":{"line":33,"column":null}}]},"4":{"loc":{"start":{"line":52,"column":19},"end":{"line":52,"column":null}},"type":"cond-expr","locations":[{"start":{"line":52,"column":43},"end":{"line":52,"column":51}},{"start":{"line":52,"column":51},"end":{"line":52,"column":null}}]},"5":{"loc":{"start":{"line":67,"column":12},"end":{"line":69,"column":null}},"type":"cond-expr","locations":[{"start":{"line":68,"column":16},"end":{"line":68,"column":null}},{"start":{"line":69,"column":16},"end":{"line":69,"column":null}}]},"6":{"loc":{"start":{"line":118,"column":18},"end":{"line":120,"column":60}},"type":"cond-expr","locations":[{"start":{"line":119,"column":22},"end":{"line":119,"column":60}},{"start":{"line":120,"column":22},"end":{"line":120,"column":60}}]},"7":{"loc":{"start":{"line":123,"column":18},"end":{"line":125,"column":61}},"type":"cond-expr","locations":[{"start":{"line":124,"column":22},"end":{"line":124,"column":61}},{"start":{"line":125,"column":22},"end":{"line":125,"column":61}}]},"8":{"loc":{"start":{"line":162,"column":22},"end":{"line":164,"column":65}},"type":"cond-expr","locations":[{"start":{"line":163,"column":26},"end":{"line":163,"column":65}},{"start":{"line":164,"column":26},"end":{"line":164,"column":65}}]},"9":{"loc":{"start":{"line":214,"column":20},"end":{"line":216,"column":62}},"type":"cond-expr","locations":[{"start":{"line":215,"column":24},"end":{"line":215,"column":62}},{"start":{"line":216,"column":24},"end":{"line":216,"column":62}}]},"10":{"loc":{"start":{"line":219,"column":20},"end":{"line":221,"column":63}},"type":"cond-expr","locations":[{"start":{"line":220,"column":24},"end":{"line":220,"column":63}},{"start":{"line":221,"column":24},"end":{"line":221,"column":63}}]},"11":{"loc":{"start":{"line":239,"column":25},"end":{"line":239,"column":null}},"type":"binary-expr","locations":[{"start":{"line":239,"column":25},"end":{"line":239,"column":56}},{"start":{"line":239,"column":60},"end":{"line":239,"column":null}}]}},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":2,"11":2,"12":2,"13":2,"14":2,"15":1,"16":0,"17":0,"18":1,"19":0,"20":1,"21":2,"22":1,"23":1,"24":0,"25":0},"f":{"0":2,"1":1,"2":0},"b":{"0":[0],"1":[0,0],"2":[0,1],"3":[1],"4":[0,1],"5":[0,1],"6":[0,1],"7":[0,1],"8":[0,1],"9":[0,1],"10":[0,1],"11":[0,0]}} +,"/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":10,"column":24},"end":{"line":10,"column":33}},"1":{"start":{"line":262,"column":13},"end":{"line":262,"column":27}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":31},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":39},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":17},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":29},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":36},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":26},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":31},"end":{"line":8,"column":null}},"10":{"start":{"line":11,"column":16},"end":{"line":11,"column":null}},"11":{"start":{"line":12,"column":30},"end":{"line":12,"column":null}},"12":{"start":{"line":13,"column":17},"end":{"line":13,"column":null}},"13":{"start":{"line":14,"column":21},"end":{"line":14,"column":null}},"14":{"start":{"line":16,"column":2},"end":{"line":28,"column":null}},"15":{"start":{"line":17,"column":4},"end":{"line":20,"column":null}},"16":{"start":{"line":18,"column":6},"end":{"line":18,"column":null}},"17":{"start":{"line":19,"column":6},"end":{"line":19,"column":null}},"18":{"start":{"line":23,"column":4},"end":{"line":27,"column":null}},"19":{"start":{"line":24,"column":6},"end":{"line":24,"column":null}},"20":{"start":{"line":26,"column":6},"end":{"line":26,"column":null}},"21":{"start":{"line":31,"column":2},"end":{"line":33,"column":null}},"22":{"start":{"line":32,"column":4},"end":{"line":32,"column":null}},"23":{"start":{"line":262,"column":30},"end":{"line":274,"column":null}},"24":{"start":{"line":263,"column":19},"end":{"line":263,"column":null}},"25":{"start":{"line":265,"column":2},"end":{"line":273,"column":null}}},"fnMap":{"0":{"name":"error500","decl":{"start":{"line":10,"column":24},"end":{"line":10,"column":33}},"loc":{"start":{"line":10,"column":38},"end":{"line":260,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":16,"column":12},"end":{"line":16,"column":null}},"loc":{"start":{"line":16,"column":12},"end":{"line":28,"column":5}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":262,"column":30},"end":{"line":262,"column":37}},"loc":{"start":{"line":262,"column":47},"end":{"line":274,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":4},"end":{"line":20,"column":null}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":20,"column":null}}]},"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}}]},"2":{"loc":{"start":{"line":23,"column":4},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":23,"column":4},"end":{"line":27,"column":null}},{"start":{"line":25,"column":11},"end":{"line":27,"column":null}}]},"3":{"loc":{"start":{"line":31,"column":2},"end":{"line":33,"column":null}},"type":"if","locations":[{"start":{"line":31,"column":2},"end":{"line":33,"column":null}}]},"4":{"loc":{"start":{"line":66,"column":19},"end":{"line":66,"column":null}},"type":"cond-expr","locations":[{"start":{"line":66,"column":43},"end":{"line":66,"column":51}},{"start":{"line":66,"column":51},"end":{"line":66,"column":null}}]},"5":{"loc":{"start":{"line":147,"column":18},"end":{"line":149,"column":60}},"type":"cond-expr","locations":[{"start":{"line":148,"column":22},"end":{"line":148,"column":60}},{"start":{"line":149,"column":22},"end":{"line":149,"column":60}}]},"6":{"loc":{"start":{"line":152,"column":18},"end":{"line":154,"column":61}},"type":"cond-expr","locations":[{"start":{"line":153,"column":22},"end":{"line":153,"column":61}},{"start":{"line":154,"column":22},"end":{"line":154,"column":61}}]},"7":{"loc":{"start":{"line":191,"column":22},"end":{"line":193,"column":65}},"type":"cond-expr","locations":[{"start":{"line":192,"column":26},"end":{"line":192,"column":65}},{"start":{"line":193,"column":26},"end":{"line":193,"column":65}}]},"8":{"loc":{"start":{"line":243,"column":20},"end":{"line":245,"column":62}},"type":"cond-expr","locations":[{"start":{"line":244,"column":24},"end":{"line":244,"column":62}},{"start":{"line":245,"column":24},"end":{"line":245,"column":62}}]},"9":{"loc":{"start":{"line":248,"column":20},"end":{"line":250,"column":63}},"type":"cond-expr","locations":[{"start":{"line":249,"column":24},"end":{"line":249,"column":63}},{"start":{"line":250,"column":24},"end":{"line":250,"column":63}}]},"10":{"loc":{"start":{"line":268,"column":25},"end":{"line":268,"column":null}},"type":"binary-expr","locations":[{"start":{"line":268,"column":25},"end":{"line":268,"column":56}},{"start":{"line":268,"column":60},"end":{"line":268,"column":null}}]}},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":2,"11":2,"12":2,"13":2,"14":2,"15":1,"16":0,"17":0,"18":1,"19":0,"20":1,"21":2,"22":1,"23":1,"24":0,"25":0},"f":{"0":2,"1":1,"2":0},"b":{"0":[0],"1":[0,0],"2":[0,1],"3":[1],"4":[0,1],"5":[0,1],"6":[0,1],"7":[0,1],"8":[0,1],"9":[0,1],"10":[0,0]}} +,"/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":38,"column":0},"end":{"line":38,"column":15}},"1":{"start":{"line":1,"column":35},"end":{"line":1,"column":null}},"2":{"start":{"line":2,"column":7},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":7},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":7},"end":{"line":4,"column":null}},"5":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"6":{"start":{"line":6,"column":23},"end":{"line":6,"column":null}},"7":{"start":{"line":7,"column":7},"end":{"line":7,"column":null}},"8":{"start":{"line":8,"column":32},"end":{"line":8,"column":null}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":null}},"10":{"start":{"line":13,"column":17},"end":{"line":17,"column":null}},"11":{"start":{"line":18,"column":13},"end":{"line":22,"column":null}},"12":{"start":{"line":38,"column":15},"end":{"line":38,"column":null}}},"fnMap":{"0":{"name":"MyApp","decl":{"start":{"line":24,"column":9},"end":{"line":24,"column":15}},"loc":{"start":{"line":24,"column":39},"end":{"line":36,"column":null}}}},"branchMap":{},"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},"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":10,"column":24},"end":{"line":10,"column":34}},"1":{"start":{"line":439,"column":13},"end":{"line":439,"column":27}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":29},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":39},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":31},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":26},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":36},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":31},"end":{"line":8,"column":null}},"10":{"start":{"line":11,"column":16},"end":{"line":11,"column":null}},"11":{"start":{"line":12,"column":20},"end":{"line":12,"column":null}},"12":{"start":{"line":13,"column":21},"end":{"line":13,"column":null}},"13":{"start":{"line":15,"column":21},"end":{"line":15,"column":null}},"14":{"start":{"line":17,"column":4},"end":{"line":17,"column":69}},"15":{"start":{"line":19,"column":4},"end":{"line":19,"column":71}},"16":{"start":{"line":21,"column":4},"end":{"line":21,"column":71}},"17":{"start":{"line":23,"column":4},"end":{"line":23,"column":73}},"18":{"start":{"line":25,"column":2},"end":{"line":30,"column":null}},"19":{"start":{"line":26,"column":4},"end":{"line":29,"column":null}},"20":{"start":{"line":27,"column":6},"end":{"line":27,"column":null}},"21":{"start":{"line":28,"column":6},"end":{"line":28,"column":null}},"22":{"start":{"line":439,"column":30},"end":{"line":451,"column":null}},"23":{"start":{"line":440,"column":19},"end":{"line":440,"column":null}},"24":{"start":{"line":442,"column":2},"end":{"line":450,"column":null}}},"fnMap":{"0":{"name":"ErrorPage","decl":{"start":{"line":10,"column":24},"end":{"line":10,"column":34}},"loc":{"start":{"line":10,"column":39},"end":{"line":437,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":25,"column":12},"end":{"line":25,"column":null}},"loc":{"start":{"line":25,"column":12},"end":{"line":30,"column":5}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":439,"column":30},"end":{"line":439,"column":37}},"loc":{"start":{"line":439,"column":47},"end":{"line":451,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":21},"end":{"line":15,"column":null}},"type":"binary-expr","locations":[{"start":{"line":15,"column":21},"end":{"line":15,"column":37}},{"start":{"line":15,"column":41},"end":{"line":15,"column":null}}]},"1":{"loc":{"start":{"line":17,"column":4},"end":{"line":17,"column":69}},"type":"binary-expr","locations":[{"start":{"line":17,"column":4},"end":{"line":17,"column":20}},{"start":{"line":17,"column":24},"end":{"line":17,"column":69}}]},"2":{"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":71}},"type":"binary-expr","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":22}},{"start":{"line":19,"column":26},"end":{"line":19,"column":71}}]},"3":{"loc":{"start":{"line":21,"column":4},"end":{"line":21,"column":71}},"type":"binary-expr","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":22}},{"start":{"line":21,"column":26},"end":{"line":21,"column":71}}]},"4":{"loc":{"start":{"line":23,"column":4},"end":{"line":23,"column":73}},"type":"binary-expr","locations":[{"start":{"line":23,"column":4},"end":{"line":23,"column":24}},{"start":{"line":23,"column":28},"end":{"line":23,"column":73}}]},"5":{"loc":{"start":{"line":26,"column":4},"end":{"line":29,"column":null}},"type":"if","locations":[{"start":{"line":26,"column":4},"end":{"line":29,"column":null}}]},"6":{"loc":{"start":{"line":27,"column":30},"end":{"line":27,"column":57}},"type":"binary-expr","locations":[{"start":{"line":27,"column":30},"end":{"line":27,"column":51}},{"start":{"line":27,"column":55},"end":{"line":27,"column":57}}]},"7":{"loc":{"start":{"line":45,"column":12},"end":{"line":47,"column":55}},"type":"cond-expr","locations":[{"start":{"line":46,"column":16},"end":{"line":46,"column":51}},{"start":{"line":47,"column":16},"end":{"line":47,"column":55}}]},"8":{"loc":{"start":{"line":67,"column":19},"end":{"line":67,"column":null}},"type":"cond-expr","locations":[{"start":{"line":67,"column":43},"end":{"line":67,"column":51}},{"start":{"line":67,"column":51},"end":{"line":67,"column":null}}]},"9":{"loc":{"start":{"line":98,"column":12},"end":{"line":100,"column":null}},"type":"cond-expr","locations":[{"start":{"line":99,"column":16},"end":{"line":99,"column":null}},{"start":{"line":100,"column":16},"end":{"line":100,"column":null}}]},"10":{"loc":{"start":{"line":132,"column":12},"end":{"line":134,"column":55}},"type":"cond-expr","locations":[{"start":{"line":133,"column":16},"end":{"line":133,"column":51}},{"start":{"line":134,"column":16},"end":{"line":134,"column":55}}]},"11":{"loc":{"start":{"line":156,"column":12},"end":{"line":158,"column":55}},"type":"cond-expr","locations":[{"start":{"line":157,"column":16},"end":{"line":157,"column":51}},{"start":{"line":158,"column":16},"end":{"line":158,"column":55}}]},"12":{"loc":{"start":{"line":170,"column":18},"end":{"line":172,"column":60}},"type":"cond-expr","locations":[{"start":{"line":171,"column":22},"end":{"line":171,"column":60}},{"start":{"line":172,"column":22},"end":{"line":172,"column":60}}]},"13":{"loc":{"start":{"line":175,"column":18},"end":{"line":177,"column":61}},"type":"cond-expr","locations":[{"start":{"line":176,"column":22},"end":{"line":176,"column":61}},{"start":{"line":177,"column":22},"end":{"line":177,"column":61}}]},"14":{"loc":{"start":{"line":193,"column":19},"end":{"line":202,"column":null}},"type":"cond-expr","locations":[{"start":{"line":194,"column":20},"end":{"line":202,"column":null}},{"start":{"line":202,"column":20},"end":{"line":202,"column":null}}]},"15":{"loc":{"start":{"line":211,"column":20},"end":{"line":244,"column":39}},"type":"cond-expr","locations":[{"start":{"line":211,"column":20},"end":{"line":244,"column":39}}]},"16":{"loc":{"start":{"line":245,"column":20},"end":{"line":270,"column":53}},"type":"cond-expr","locations":[{"start":{"line":245,"column":20},"end":{"line":270,"column":53}}]},"17":{"loc":{"start":{"line":291,"column":22},"end":{"line":293,"column":65}},"type":"cond-expr","locations":[{"start":{"line":292,"column":26},"end":{"line":292,"column":65}},{"start":{"line":293,"column":26},"end":{"line":293,"column":65}}]},"18":{"loc":{"start":{"line":311,"column":19},"end":{"line":320,"column":null}},"type":"cond-expr","locations":[{"start":{"line":312,"column":20},"end":{"line":320,"column":null}},{"start":{"line":320,"column":20},"end":{"line":320,"column":null}}]},"19":{"loc":{"start":{"line":329,"column":20},"end":{"line":362,"column":41}},"type":"cond-expr","locations":[{"start":{"line":329,"column":20},"end":{"line":362,"column":41}}]},"20":{"loc":{"start":{"line":363,"column":20},"end":{"line":388,"column":52}},"type":"cond-expr","locations":[{"start":{"line":363,"column":20},"end":{"line":388,"column":52}}]},"21":{"loc":{"start":{"line":421,"column":18},"end":{"line":423,"column":60}},"type":"cond-expr","locations":[{"start":{"line":422,"column":22},"end":{"line":422,"column":60}},{"start":{"line":423,"column":22},"end":{"line":423,"column":60}}]},"22":{"loc":{"start":{"line":426,"column":18},"end":{"line":428,"column":61}},"type":"cond-expr","locations":[{"start":{"line":427,"column":22},"end":{"line":427,"column":61}},{"start":{"line":428,"column":22},"end":{"line":428,"column":61}}]},"23":{"loc":{"start":{"line":445,"column":25},"end":{"line":445,"column":null}},"type":"binary-expr","locations":[{"start":{"line":445,"column":25},"end":{"line":445,"column":56}},{"start":{"line":445,"column":60},"end":{"line":445,"column":null}}]}},"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},"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],"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],"16":[0],"17":[0,0],"18":[0,0],"19":[0],"20":[0],"21":[0,0],"22":[0,0],"23":[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":23,"column":24},"end":{"line":23,"column":29}},"1":{"start":{"line":465,"column":13},"end":{"line":465,"column":27}},"2":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":39},"end":{"line":3,"column":null}},"4":{"start":{"line":5,"column":23},"end":{"line":5,"column":null}},"5":{"start":{"line":6,"column":26},"end":{"line":6,"column":null}},"6":{"start":{"line":7,"column":17},"end":{"line":7,"column":null}},"7":{"start":{"line":9,"column":31},"end":{"line":9,"column":null}},"8":{"start":{"line":10,"column":32},"end":{"line":10,"column":null}},"9":{"start":{"line":11,"column":36},"end":{"line":11,"column":null}},"10":{"start":{"line":12,"column":17},"end":{"line":12,"column":null}},"11":{"start":{"line":13,"column":31},"end":{"line":13,"column":null}},"12":{"start":{"line":14,"column":27},"end":{"line":14,"column":null}},"13":{"start":{"line":15,"column":34},"end":{"line":15,"column":null}},"14":{"start":{"line":16,"column":26},"end":{"line":16,"column":null}},"15":{"start":{"line":25,"column":19},"end":{"line":25,"column":41}},"16":{"start":{"line":26,"column":26},"end":{"line":26,"column":47}},"17":{"start":{"line":27,"column":21},"end":{"line":27,"column":37}},"18":{"start":{"line":28,"column":22},"end":{"line":28,"column":39}},"19":{"start":{"line":32,"column":26},"end":{"line":37,"column":null}},"20":{"start":{"line":33,"column":4},"end":{"line":35,"column":null}},"21":{"start":{"line":45,"column":23},"end":{"line":67,"column":null}},"22":{"start":{"line":47,"column":22},"end":{"line":55,"column":null}},"23":{"start":{"line":57,"column":23},"end":{"line":57,"column":null}},"24":{"start":{"line":58,"column":4},"end":{"line":60,"column":null}},"25":{"start":{"line":58,"column":17},"end":{"line":58,"column":20}},"26":{"start":{"line":59,"column":6},"end":{"line":59,"column":null}},"27":{"start":{"line":63,"column":19},"end":{"line":65,"column":null}},"28":{"start":{"line":64,"column":6},"end":{"line":64,"column":null}},"29":{"start":{"line":66,"column":4},"end":{"line":66,"column":31}},"30":{"start":{"line":73,"column":33},"end":{"line":75,"column":29}},"31":{"start":{"line":75,"column":6},"end":{"line":75,"column":29}},"32":{"start":{"line":124,"column":2},"end":{"line":129,"column":null}},"33":{"start":{"line":125,"column":4},"end":{"line":128,"column":null}},"34":{"start":{"line":126,"column":6},"end":{"line":126,"column":null}},"35":{"start":{"line":127,"column":6},"end":{"line":127,"column":null}},"36":{"start":{"line":465,"column":30},"end":{"line":500,"column":null}},"37":{"start":{"line":467,"column":29},"end":{"line":469,"column":null}},"38":{"start":{"line":469,"column":18},"end":{"line":469,"column":null}},"39":{"start":{"line":472,"column":36},"end":{"line":473,"column":null}},"40":{"start":{"line":477,"column":32},"end":{"line":479,"column":null}},"41":{"start":{"line":479,"column":18},"end":{"line":479,"column":null}},"42":{"start":{"line":482,"column":31},"end":{"line":483,"column":null}},"43":{"start":{"line":487,"column":2},"end":{"line":499,"column":null}}},"fnMap":{"0":{"name":"Home","decl":{"start":{"line":23,"column":24},"end":{"line":23,"column":29}},"loc":{"start":{"line":23,"column":34},"end":{"line":458,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":32,"column":49},"end":{"line":32,"column":50}},"loc":{"start":{"line":32,"column":50},"end":{"line":37,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":45,"column":23},"end":{"line":45,"column":24}},"loc":{"start":{"line":45,"column":24},"end":{"line":67,"column":null}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":63,"column":32},"end":{"line":63,"column":33}},"loc":{"start":{"line":63,"column":36},"end":{"line":65,"column":null}}},"4":{"name":"(anonymous_8)","decl":{"start":{"line":74,"column":4},"end":{"line":74,"column":5}},"loc":{"start":{"line":75,"column":6},"end":{"line":75,"column":29}}},"5":{"name":"(anonymous_9)","decl":{"start":{"line":124,"column":12},"end":{"line":124,"column":null}},"loc":{"start":{"line":124,"column":12},"end":{"line":129,"column":5}}},"6":{"name":"(anonymous_10)","decl":{"start":{"line":465,"column":30},"end":{"line":465,"column":37}},"loc":{"start":{"line":465,"column":47},"end":{"line":500,"column":null}}},"7":{"name":"(anonymous_11)","decl":{"start":{"line":469,"column":9},"end":{"line":469,"column":10}},"loc":{"start":{"line":469,"column":18},"end":{"line":469,"column":null}}},"8":{"name":"(anonymous_12)","decl":{"start":{"line":479,"column":9},"end":{"line":479,"column":10}},"loc":{"start":{"line":479,"column":18},"end":{"line":479,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":80,"column":12},"end":{"line":81,"column":null}},"type":"binary-expr","locations":[{"start":{"line":80,"column":12},"end":{"line":80,"column":39}},{"start":{"line":81,"column":12},"end":{"line":81,"column":null}}]},"1":{"loc":{"start":{"line":84,"column":12},"end":{"line":84,"column":null}},"type":"cond-expr","locations":[{"start":{"line":84,"column":36},"end":{"line":84,"column":51}},{"start":{"line":84,"column":51},"end":{"line":84,"column":null}}]},"2":{"loc":{"start":{"line":89,"column":12},"end":{"line":91,"column":56}},"type":"cond-expr","locations":[{"start":{"line":90,"column":16},"end":{"line":90,"column":56}},{"start":{"line":91,"column":16},"end":{"line":91,"column":56}}]},"3":{"loc":{"start":{"line":94,"column":12},"end":{"line":96,"column":51}},"type":"cond-expr","locations":[{"start":{"line":95,"column":16},"end":{"line":95,"column":51}},{"start":{"line":96,"column":16},"end":{"line":96,"column":51}}]},"4":{"loc":{"start":{"line":99,"column":12},"end":{"line":101,"column":null}},"type":"cond-expr","locations":[{"start":{"line":100,"column":16},"end":{"line":100,"column":51}},{"start":{"line":101,"column":16},"end":{"line":101,"column":null}}]},"5":{"loc":{"start":{"line":104,"column":12},"end":{"line":106,"column":null}},"type":"cond-expr","locations":[{"start":{"line":105,"column":16},"end":{"line":105,"column":50}},{"start":{"line":106,"column":16},"end":{"line":106,"column":null}}]},"6":{"loc":{"start":{"line":109,"column":17},"end":{"line":109,"column":78}},"type":"cond-expr","locations":[{"start":{"line":109,"column":41},"end":{"line":109,"column":58}},{"start":{"line":109,"column":61},"end":{"line":109,"column":78}}]},"7":{"loc":{"start":{"line":111,"column":12},"end":{"line":111,"column":79}},"type":"cond-expr","locations":[{"start":{"line":111,"column":36},"end":{"line":111,"column":56}},{"start":{"line":111,"column":59},"end":{"line":111,"column":79}}]},"8":{"loc":{"start":{"line":114,"column":12},"end":{"line":116,"column":64}},"type":"cond-expr","locations":[{"start":{"line":115,"column":16},"end":{"line":115,"column":64}},{"start":{"line":116,"column":16},"end":{"line":116,"column":64}}]},"9":{"loc":{"start":{"line":125,"column":4},"end":{"line":128,"column":null}},"type":"if","locations":[{"start":{"line":125,"column":4},"end":{"line":128,"column":null}}]},"10":{"loc":{"start":{"line":126,"column":30},"end":{"line":126,"column":57}},"type":"binary-expr","locations":[{"start":{"line":126,"column":30},"end":{"line":126,"column":51}},{"start":{"line":126,"column":55},"end":{"line":126,"column":57}}]},"11":{"loc":{"start":{"line":137,"column":10},"end":{"line":137,"column":79}},"type":"cond-expr","locations":[{"start":{"line":137,"column":34},"end":{"line":137,"column":55}},{"start":{"line":137,"column":58},"end":{"line":137,"column":79}}]},"12":{"loc":{"start":{"line":145,"column":13},"end":{"line":145,"column":76}},"type":"cond-expr","locations":[{"start":{"line":145,"column":37},"end":{"line":145,"column":55}},{"start":{"line":145,"column":58},"end":{"line":145,"column":76}}]},"13":{"loc":{"start":{"line":150,"column":14},"end":{"line":152,"column":67}},"type":"cond-expr","locations":[{"start":{"line":151,"column":18},"end":{"line":151,"column":67}},{"start":{"line":152,"column":18},"end":{"line":152,"column":67}}]},"14":{"loc":{"start":{"line":161,"column":14},"end":{"line":163,"column":39}},"type":"cond-expr","locations":[{"start":{"line":162,"column":18},"end":{"line":162,"column":39}},{"start":{"line":163,"column":18},"end":{"line":163,"column":39}}]},"15":{"loc":{"start":{"line":171,"column":14},"end":{"line":171,"column":77}},"type":"cond-expr","locations":[{"start":{"line":171,"column":38},"end":{"line":171,"column":56}},{"start":{"line":171,"column":59},"end":{"line":171,"column":77}}]},"16":{"loc":{"start":{"line":176,"column":21},"end":{"line":176,"column":null}},"type":"cond-expr","locations":[{"start":{"line":176,"column":45},"end":{"line":176,"column":53}},{"start":{"line":176,"column":53},"end":{"line":176,"column":null}}]},"17":{"loc":{"start":{"line":182,"column":14},"end":{"line":184,"column":67}},"type":"cond-expr","locations":[{"start":{"line":183,"column":18},"end":{"line":183,"column":67}},{"start":{"line":184,"column":18},"end":{"line":184,"column":67}}]},"18":{"loc":{"start":{"line":195,"column":14},"end":{"line":197,"column":null}},"type":"cond-expr","locations":[{"start":{"line":196,"column":18},"end":{"line":196,"column":null}},{"start":{"line":197,"column":18},"end":{"line":197,"column":null}}]},"19":{"loc":{"start":{"line":217,"column":16},"end":{"line":219,"column":41}},"type":"cond-expr","locations":[{"start":{"line":218,"column":20},"end":{"line":218,"column":41}},{"start":{"line":219,"column":20},"end":{"line":219,"column":41}}]},"20":{"loc":{"start":{"line":226,"column":14},"end":{"line":226,"column":77}},"type":"cond-expr","locations":[{"start":{"line":226,"column":38},"end":{"line":226,"column":56}},{"start":{"line":226,"column":59},"end":{"line":226,"column":77}}]},"21":{"loc":{"start":{"line":232,"column":14},"end":{"line":234,"column":67}},"type":"cond-expr","locations":[{"start":{"line":233,"column":18},"end":{"line":233,"column":67}},{"start":{"line":234,"column":18},"end":{"line":234,"column":67}}]},"22":{"loc":{"start":{"line":244,"column":14},"end":{"line":244,"column":77}},"type":"cond-expr","locations":[{"start":{"line":244,"column":38},"end":{"line":244,"column":56}},{"start":{"line":244,"column":59},"end":{"line":244,"column":77}}]},"23":{"loc":{"start":{"line":255,"column":16},"end":{"line":257,"column":41}},"type":"cond-expr","locations":[{"start":{"line":256,"column":20},"end":{"line":256,"column":41}},{"start":{"line":257,"column":20},"end":{"line":257,"column":41}}]},"24":{"loc":{"start":{"line":264,"column":14},"end":{"line":264,"column":77}},"type":"cond-expr","locations":[{"start":{"line":264,"column":38},"end":{"line":264,"column":56}},{"start":{"line":264,"column":59},"end":{"line":264,"column":77}}]},"25":{"loc":{"start":{"line":271,"column":14},"end":{"line":273,"column":67}},"type":"cond-expr","locations":[{"start":{"line":272,"column":18},"end":{"line":272,"column":67}},{"start":{"line":273,"column":18},"end":{"line":273,"column":67}}]},"26":{"loc":{"start":{"line":283,"column":14},"end":{"line":283,"column":77}},"type":"cond-expr","locations":[{"start":{"line":283,"column":38},"end":{"line":283,"column":56}},{"start":{"line":283,"column":59},"end":{"line":283,"column":77}}]},"27":{"loc":{"start":{"line":300,"column":14},"end":{"line":302,"column":51}},"type":"cond-expr","locations":[{"start":{"line":301,"column":18},"end":{"line":301,"column":51}},{"start":{"line":302,"column":18},"end":{"line":302,"column":51}}]},"28":{"loc":{"start":{"line":305,"column":14},"end":{"line":307,"column":78}},"type":"cond-expr","locations":[{"start":{"line":306,"column":18},"end":{"line":306,"column":78}},{"start":{"line":307,"column":18},"end":{"line":307,"column":78}}]},"29":{"loc":{"start":{"line":310,"column":14},"end":{"line":312,"column":64}},"type":"cond-expr","locations":[{"start":{"line":311,"column":18},"end":{"line":311,"column":62}},{"start":{"line":312,"column":18},"end":{"line":312,"column":64}}]},"30":{"loc":{"start":{"line":315,"column":14},"end":{"line":317,"column":67}},"type":"cond-expr","locations":[{"start":{"line":316,"column":18},"end":{"line":316,"column":67}},{"start":{"line":317,"column":18},"end":{"line":317,"column":67}}]},"31":{"loc":{"start":{"line":320,"column":14},"end":{"line":322,"column":76}},"type":"cond-expr","locations":[{"start":{"line":321,"column":18},"end":{"line":321,"column":76}},{"start":{"line":322,"column":18},"end":{"line":322,"column":76}}]},"32":{"loc":{"start":{"line":328,"column":13},"end":{"line":331,"column":24}},"type":"cond-expr","locations":[{"start":{"line":329,"column":16},"end":{"line":329,"column":76}},{"start":{"line":330,"column":16},"end":{"line":331,"column":24}}]},"33":{"loc":{"start":{"line":342,"column":16},"end":{"line":344,"column":53}},"type":"cond-expr","locations":[{"start":{"line":343,"column":20},"end":{"line":343,"column":53}},{"start":{"line":344,"column":20},"end":{"line":344,"column":53}}]},"34":{"loc":{"start":{"line":349,"column":18},"end":{"line":372,"column":52}},"type":"cond-expr","locations":[{"start":{"line":349,"column":18},"end":{"line":372,"column":52}}]},"35":{"loc":{"start":{"line":411,"column":18},"end":{"line":415,"column":34}},"type":"cond-expr","locations":[{"start":{"line":412,"column":22},"end":{"line":413,"column":34}},{"start":{"line":414,"column":22},"end":{"line":415,"column":34}}]},"36":{"loc":{"start":{"line":419,"column":18},"end":{"line":423,"column":30}},"type":"cond-expr","locations":[{"start":{"line":420,"column":22},"end":{"line":421,"column":30}},{"start":{"line":422,"column":22},"end":{"line":423,"column":30}}]},"37":{"loc":{"start":{"line":437,"column":14},"end":{"line":439,"column":78}},"type":"cond-expr","locations":[{"start":{"line":438,"column":18},"end":{"line":438,"column":78}},{"start":{"line":439,"column":18},"end":{"line":439,"column":78}}]},"38":{"loc":{"start":{"line":442,"column":14},"end":{"line":444,"column":78}},"type":"cond-expr","locations":[{"start":{"line":443,"column":18},"end":{"line":443,"column":78}},{"start":{"line":444,"column":18},"end":{"line":444,"column":78}}]},"39":{"loc":{"start":{"line":447,"column":14},"end":{"line":451,"column":25}},"type":"cond-expr","locations":[{"start":{"line":448,"column":18},"end":{"line":449,"column":25}},{"start":{"line":450,"column":18},"end":{"line":451,"column":25}}]},"40":{"loc":{"start":{"line":490,"column":25},"end":{"line":490,"column":null}},"type":"binary-expr","locations":[{"start":{"line":490,"column":25},"end":{"line":490,"column":56}},{"start":{"line":490,"column":60},"end":{"line":490,"column":null}}]},"41":{"loc":{"start":{"line":498,"column":16},"end":{"line":498,"column":null}},"type":"cond-expr","locations":[{"start":{"line":498,"column":53},"end":{"line":498,"column":58}},{"start":{"line":498,"column":58},"end":{"line":498,"column":null}}]}},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":2,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":7,"27":1,"28":0,"29":1,"30":1,"31":1,"32":1,"33":1,"34":0,"35":0,"36":1,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0},"f":{"0":2,"1":1,"2":1,"3":0,"4":1,"5":1,"6":0,"7":0,"8":0},"b":{"0":[1,0],"1":[0,1],"2":[0,1],"3":[0,1],"4":[1,0],"5":[1,0],"6":[0,1],"7":[0,1],"8":[0,1],"9":[0],"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],"35":[0,1],"36":[0,1],"37":[0,1],"38":[0,1],"39":[0,1],"40":[0,0],"41":[0,0]}} +,"/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":8,"column":24},"end":{"line":8,"column":30}},"1":{"start":{"line":190,"column":13},"end":{"line":190,"column":31}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":31},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":29},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":26},"end":{"line":6,"column":null}},"8":{"start":{"line":9,"column":16},"end":{"line":9,"column":null}},"9":{"start":{"line":11,"column":2},"end":{"line":17,"column":null}},"10":{"start":{"line":12,"column":4},"end":{"line":15,"column":null}},"11":{"start":{"line":13,"column":6},"end":{"line":13,"column":null}},"12":{"start":{"line":14,"column":6},"end":{"line":14,"column":null}},"13":{"start":{"line":16,"column":4},"end":{"line":16,"column":null}},"14":{"start":{"line":190,"column":34},"end":{"line":196,"column":null}},"15":{"start":{"line":190,"column":57},"end":{"line":196,"column":null}}},"fnMap":{"0":{"name":"Index","decl":{"start":{"line":8,"column":24},"end":{"line":8,"column":30}},"loc":{"start":{"line":8,"column":35},"end":{"line":188,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":11,"column":12},"end":{"line":11,"column":null}},"loc":{"start":{"line":11,"column":12},"end":{"line":17,"column":5}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":190,"column":34},"end":{"line":190,"column":41}},"loc":{"start":{"line":190,"column":57},"end":{"line":196,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":4},"end":{"line":15,"column":null}},"type":"if","locations":[{"start":{"line":12,"column":4},"end":{"line":15,"column":null}}]},"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}}]},"2":{"loc":{"start":{"line":47,"column":19},"end":{"line":47,"column":null}},"type":"cond-expr","locations":[{"start":{"line":47,"column":43},"end":{"line":47,"column":51}},{"start":{"line":47,"column":51},"end":{"line":47,"column":null}}]},"3":{"loc":{"start":{"line":192,"column":12},"end":{"line":192,"column":null}},"type":"binary-expr","locations":[{"start":{"line":192,"column":12},"end":{"line":192,"column":22}},{"start":{"line":192,"column":22},"end":{"line":192,"column":null}}]},"4":{"loc":{"start":{"line":193,"column":23},"end":{"line":193,"column":null}},"type":"binary-expr","locations":[{"start":{"line":193,"column":23},"end":{"line":193,"column":54}},{"start":{"line":193,"column":58},"end":{"line":193,"column":null}}]}},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":0,"12":0,"13":1,"14":1,"15":0},"f":{"0":1,"1":1,"2":0},"b":{"0":[0],"1":[0,0],"2":[0,1],"3":[0,0],"4":[0,0]}} +,"/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":10,"column":24},"end":{"line":10,"column":37}},"1":{"start":{"line":472,"column":13},"end":{"line":472,"column":27}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":31},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":39},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":29},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":26},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":32},"end":{"line":6,"column":null}},"8":{"start":{"line":8,"column":31},"end":{"line":8,"column":null}},"9":{"start":{"line":11,"column":16},"end":{"line":11,"column":null}},"10":{"start":{"line":12,"column":34},"end":{"line":12,"column":null}},"11":{"start":{"line":13,"column":34},"end":{"line":13,"column":null}},"12":{"start":{"line":14,"column":21},"end":{"line":14,"column":null}},"13":{"start":{"line":16,"column":2},"end":{"line":21,"column":null}},"14":{"start":{"line":17,"column":4},"end":{"line":20,"column":null}},"15":{"start":{"line":18,"column":6},"end":{"line":18,"column":null}},"16":{"start":{"line":19,"column":6},"end":{"line":19,"column":null}},"17":{"start":{"line":24,"column":4},"end":{"line":24,"column":null}},"18":{"start":{"line":25,"column":4},"end":{"line":25,"column":null}},"19":{"start":{"line":29,"column":4},"end":{"line":29,"column":null}},"20":{"start":{"line":30,"column":4},"end":{"line":30,"column":null}},"21":{"start":{"line":472,"column":30},"end":{"line":484,"column":null}},"22":{"start":{"line":473,"column":19},"end":{"line":473,"column":null}},"23":{"start":{"line":475,"column":2},"end":{"line":483,"column":null}}},"fnMap":{"0":{"name":"notSupported","decl":{"start":{"line":10,"column":24},"end":{"line":10,"column":37}},"loc":{"start":{"line":10,"column":42},"end":{"line":470,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":16,"column":12},"end":{"line":16,"column":null}},"loc":{"start":{"line":16,"column":12},"end":{"line":21,"column":5}}},"2":{"name":"onClickEn","decl":{"start":{"line":23,"column":11},"end":{"line":23,"column":null}},"loc":{"start":{"line":23,"column":11},"end":{"line":26,"column":null}}},"3":{"name":"onClickFr","decl":{"start":{"line":28,"column":11},"end":{"line":28,"column":null}},"loc":{"start":{"line":28,"column":11},"end":{"line":31,"column":null}}},"4":{"name":"(anonymous_8)","decl":{"start":{"line":472,"column":30},"end":{"line":472,"column":37}},"loc":{"start":{"line":472,"column":47},"end":{"line":484,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":17,"column":4},"end":{"line":20,"column":null}},"type":"if","locations":[{"start":{"line":17,"column":4},"end":{"line":20,"column":null}}]},"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}}]},"2":{"loc":{"start":{"line":72,"column":19},"end":{"line":72,"column":null}},"type":"cond-expr","locations":[{"start":{"line":72,"column":43},"end":{"line":72,"column":51}},{"start":{"line":72,"column":51},"end":{"line":72,"column":null}}]},"3":{"loc":{"start":{"line":78,"column":12},"end":{"line":80,"column":null}},"type":"cond-expr","locations":[{"start":{"line":79,"column":16},"end":{"line":79,"column":null}},{"start":{"line":80,"column":16},"end":{"line":80,"column":null}}]},"4":{"loc":{"start":{"line":154,"column":18},"end":{"line":156,"column":60}},"type":"cond-expr","locations":[{"start":{"line":155,"column":22},"end":{"line":155,"column":60}},{"start":{"line":156,"column":22},"end":{"line":156,"column":60}}]},"5":{"loc":{"start":{"line":159,"column":18},"end":{"line":161,"column":61}},"type":"cond-expr","locations":[{"start":{"line":160,"column":22},"end":{"line":160,"column":61}},{"start":{"line":161,"column":22},"end":{"line":161,"column":61}}]},"6":{"loc":{"start":{"line":182,"column":22},"end":{"line":184,"column":65}},"type":"cond-expr","locations":[{"start":{"line":183,"column":26},"end":{"line":183,"column":65}},{"start":{"line":184,"column":26},"end":{"line":184,"column":65}}]},"7":{"loc":{"start":{"line":210,"column":20},"end":{"line":212,"column":63}},"type":"cond-expr","locations":[{"start":{"line":211,"column":24},"end":{"line":211,"column":63}},{"start":{"line":212,"column":24},"end":{"line":212,"column":63}}]},"8":{"loc":{"start":{"line":215,"column":20},"end":{"line":217,"column":64}},"type":"cond-expr","locations":[{"start":{"line":216,"column":24},"end":{"line":216,"column":64}},{"start":{"line":217,"column":24},"end":{"line":217,"column":64}}]},"9":{"loc":{"start":{"line":229,"column":20},"end":{"line":231,"column":63}},"type":"cond-expr","locations":[{"start":{"line":230,"column":24},"end":{"line":230,"column":63}},{"start":{"line":231,"column":24},"end":{"line":231,"column":63}}]},"10":{"loc":{"start":{"line":234,"column":20},"end":{"line":236,"column":64}},"type":"cond-expr","locations":[{"start":{"line":235,"column":24},"end":{"line":235,"column":64}},{"start":{"line":236,"column":24},"end":{"line":236,"column":64}}]},"11":{"loc":{"start":{"line":248,"column":20},"end":{"line":250,"column":63}},"type":"cond-expr","locations":[{"start":{"line":249,"column":24},"end":{"line":249,"column":63}},{"start":{"line":250,"column":24},"end":{"line":250,"column":63}}]},"12":{"loc":{"start":{"line":253,"column":20},"end":{"line":255,"column":64}},"type":"cond-expr","locations":[{"start":{"line":254,"column":24},"end":{"line":254,"column":64}},{"start":{"line":255,"column":24},"end":{"line":255,"column":64}}]},"13":{"loc":{"start":{"line":267,"column":20},"end":{"line":269,"column":63}},"type":"cond-expr","locations":[{"start":{"line":268,"column":24},"end":{"line":268,"column":63}},{"start":{"line":269,"column":24},"end":{"line":269,"column":63}}]},"14":{"loc":{"start":{"line":272,"column":20},"end":{"line":274,"column":64}},"type":"cond-expr","locations":[{"start":{"line":273,"column":24},"end":{"line":273,"column":64}},{"start":{"line":274,"column":24},"end":{"line":274,"column":64}}]},"15":{"loc":{"start":{"line":293,"column":30},"end":{"line":293,"column":null}},"type":"cond-expr","locations":[{"start":{"line":293,"column":41},"end":{"line":293,"column":53}},{"start":{"line":293,"column":53},"end":{"line":293,"column":null}}]},"16":{"loc":{"start":{"line":294,"column":31},"end":{"line":294,"column":null}},"type":"cond-expr","locations":[{"start":{"line":294,"column":42},"end":{"line":294,"column":61}},{"start":{"line":294,"column":61},"end":{"line":294,"column":null}}]},"17":{"loc":{"start":{"line":369,"column":32},"end":{"line":369,"column":null}},"type":"cond-expr","locations":[{"start":{"line":369,"column":43},"end":{"line":369,"column":54}},{"start":{"line":369,"column":54},"end":{"line":369,"column":null}}]},"18":{"loc":{"start":{"line":371,"column":33},"end":{"line":371,"column":null}},"type":"cond-expr","locations":[{"start":{"line":371,"column":44},"end":{"line":371,"column":63}},{"start":{"line":371,"column":63},"end":{"line":371,"column":null}}]},"19":{"loc":{"start":{"line":453,"column":20},"end":{"line":455,"column":62}},"type":"cond-expr","locations":[{"start":{"line":454,"column":24},"end":{"line":454,"column":62}},{"start":{"line":455,"column":24},"end":{"line":455,"column":62}}]},"20":{"loc":{"start":{"line":458,"column":20},"end":{"line":460,"column":63}},"type":"cond-expr","locations":[{"start":{"line":459,"column":24},"end":{"line":459,"column":63}},{"start":{"line":460,"column":24},"end":{"line":460,"column":63}}]},"21":{"loc":{"start":{"line":478,"column":25},"end":{"line":478,"column":null}},"type":"binary-expr","locations":[{"start":{"line":478,"column":25},"end":{"line":478,"column":56}},{"start":{"line":478,"column":60},"end":{"line":478,"column":null}}]}},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":1,"22":0,"23":0},"f":{"0":1,"1":1,"2":0,"3":0,"4":0},"b":{"0":[0],"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,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects.js","statementMap":{"0":{"start":{"line":18,"column":24},"end":{"line":18,"column":37}},"1":{"start":{"line":208,"column":13},"end":{"line":208,"column":27}},"2":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":36},"end":{"line":4,"column":null}},"5":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"6":{"start":{"line":6,"column":21},"end":{"line":6,"column":null}},"7":{"start":{"line":7,"column":33},"end":{"line":7,"column":null}},"8":{"start":{"line":9,"column":34},"end":{"line":9,"column":null}},"9":{"start":{"line":10,"column":34},"end":{"line":10,"column":null}},"10":{"start":{"line":11,"column":31},"end":{"line":11,"column":null}},"11":{"start":{"line":20,"column":19},"end":{"line":20,"column":41}},"12":{"start":{"line":21,"column":23},"end":{"line":21,"column":41}},"13":{"start":{"line":22,"column":21},"end":{"line":22,"column":37}},"14":{"start":{"line":24,"column":48},"end":{"line":24,"column":null}},"15":{"start":{"line":26,"column":16},"end":{"line":26,"column":null}},"16":{"start":{"line":33,"column":43},"end":{"line":54,"column":null}},"17":{"start":{"line":35,"column":17},"end":{"line":35,"column":null}},"18":{"start":{"line":37,"column":23},"end":{"line":43,"column":null}},"19":{"start":{"line":38,"column":6},"end":{"line":41,"column":null}},"20":{"start":{"line":39,"column":8},"end":{"line":39,"column":null}},"21":{"start":{"line":40,"column":8},"end":{"line":40,"column":null}},"22":{"start":{"line":42,"column":6},"end":{"line":42,"column":null}},"23":{"start":{"line":45,"column":23},"end":{"line":52,"column":null}},"24":{"start":{"line":46,"column":6},"end":{"line":51,"column":null}},"25":{"start":{"line":53,"column":4},"end":{"line":53,"column":null}},"26":{"start":{"line":62,"column":25},"end":{"line":71,"column":null}},"27":{"start":{"line":64,"column":4},"end":{"line":64,"column":null}},"28":{"start":{"line":64,"column":38},"end":{"line":64,"column":null}},"29":{"start":{"line":66,"column":24},"end":{"line":66,"column":null}},"30":{"start":{"line":66,"column":64},"end":{"line":66,"column":73}},"31":{"start":{"line":68,"column":4},"end":{"line":69,"column":null}},"32":{"start":{"line":69,"column":6},"end":{"line":69,"column":null}},"33":{"start":{"line":77,"column":24},"end":{"line":125,"column":null}},"34":{"start":{"line":79,"column":6},"end":{"line":81,"column":null}},"35":{"start":{"line":129,"column":2},"end":{"line":134,"column":null}},"36":{"start":{"line":130,"column":4},"end":{"line":133,"column":null}},"37":{"start":{"line":131,"column":6},"end":{"line":131,"column":null}},"38":{"start":{"line":132,"column":6},"end":{"line":132,"column":null}},"39":{"start":{"line":208,"column":30},"end":{"line":238,"column":null}},"40":{"start":{"line":210,"column":29},"end":{"line":212,"column":null}},"41":{"start":{"line":212,"column":18},"end":{"line":212,"column":null}},"42":{"start":{"line":215,"column":33},"end":{"line":217,"column":null}},"43":{"start":{"line":217,"column":18},"end":{"line":217,"column":null}},"44":{"start":{"line":220,"column":31},"end":{"line":222,"column":null}},"45":{"start":{"line":222,"column":18},"end":{"line":222,"column":null}},"46":{"start":{"line":225,"column":2},"end":{"line":237,"column":null}}},"fnMap":{"0":{"name":"ProjectsPage","decl":{"start":{"line":18,"column":24},"end":{"line":18,"column":37}},"loc":{"start":{"line":18,"column":42},"end":{"line":201,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":33,"column":43},"end":{"line":33,"column":44}},"loc":{"start":{"line":33,"column":44},"end":{"line":54,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":37,"column":34},"end":{"line":37,"column":35}},"loc":{"start":{"line":37,"column":40},"end":{"line":43,"column":7}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":45,"column":40},"end":{"line":45,"column":41}},"loc":{"start":{"line":45,"column":41},"end":{"line":52,"column":null}}},"4":{"name":"(anonymous_8)","decl":{"start":{"line":62,"column":25},"end":{"line":62,"column":26}},"loc":{"start":{"line":62,"column":36},"end":{"line":71,"column":null}}},"5":{"name":"(anonymous_9)","decl":{"start":{"line":66,"column":52},"end":{"line":66,"column":53}},"loc":{"start":{"line":66,"column":64},"end":{"line":66,"column":73}}},"6":{"name":"(anonymous_10)","decl":{"start":{"line":68,"column":27},"end":{"line":68,"column":28}},"loc":{"start":{"line":69,"column":6},"end":{"line":69,"column":null}}},"7":{"name":"(anonymous_11)","decl":{"start":{"line":78,"column":4},"end":{"line":78,"column":5}},"loc":{"start":{"line":78,"column":5},"end":{"line":125,"column":null}}},"8":{"name":"(anonymous_12)","decl":{"start":{"line":129,"column":12},"end":{"line":129,"column":null}},"loc":{"start":{"line":129,"column":12},"end":{"line":134,"column":5}}},"9":{"name":"(anonymous_13)","decl":{"start":{"line":208,"column":30},"end":{"line":208,"column":37}},"loc":{"start":{"line":208,"column":47},"end":{"line":238,"column":null}}},"10":{"name":"(anonymous_14)","decl":{"start":{"line":212,"column":9},"end":{"line":212,"column":10}},"loc":{"start":{"line":212,"column":18},"end":{"line":212,"column":null}}},"11":{"name":"(anonymous_15)","decl":{"start":{"line":217,"column":9},"end":{"line":217,"column":10}},"loc":{"start":{"line":217,"column":18},"end":{"line":217,"column":null}}},"12":{"name":"(anonymous_16)","decl":{"start":{"line":222,"column":9},"end":{"line":222,"column":10}},"loc":{"start":{"line":222,"column":18},"end":{"line":222,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":38,"column":6},"end":{"line":41,"column":null}},"type":"if","locations":[{"start":{"line":38,"column":6},"end":{"line":41,"column":null}}]},"1":{"loc":{"start":{"line":64,"column":4},"end":{"line":64,"column":null}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":null}}]},"2":{"loc":{"start":{"line":87,"column":14},"end":{"line":87,"column":75}},"type":"cond-expr","locations":[{"start":{"line":87,"column":38},"end":{"line":87,"column":55}},{"start":{"line":87,"column":58},"end":{"line":87,"column":75}}]},"3":{"loc":{"start":{"line":90,"column":14},"end":{"line":92,"column":38}},"type":"cond-expr","locations":[{"start":{"line":91,"column":18},"end":{"line":91,"column":38}},{"start":{"line":92,"column":18},"end":{"line":92,"column":38}}]},"4":{"loc":{"start":{"line":97,"column":14},"end":{"line":99,"column":58}},"type":"cond-expr","locations":[{"start":{"line":98,"column":18},"end":{"line":98,"column":58}},{"start":{"line":99,"column":18},"end":{"line":99,"column":58}}]},"5":{"loc":{"start":{"line":102,"column":14},"end":{"line":104,"column":53}},"type":"cond-expr","locations":[{"start":{"line":103,"column":18},"end":{"line":103,"column":53}},{"start":{"line":104,"column":18},"end":{"line":104,"column":53}}]},"6":{"loc":{"start":{"line":107,"column":14},"end":{"line":109,"column":null}},"type":"cond-expr","locations":[{"start":{"line":108,"column":18},"end":{"line":108,"column":53}},{"start":{"line":109,"column":18},"end":{"line":109,"column":null}}]},"7":{"loc":{"start":{"line":112,"column":14},"end":{"line":114,"column":null}},"type":"cond-expr","locations":[{"start":{"line":113,"column":18},"end":{"line":113,"column":52}},{"start":{"line":114,"column":18},"end":{"line":114,"column":null}}]},"8":{"loc":{"start":{"line":118,"column":14},"end":{"line":120,"column":66}},"type":"cond-expr","locations":[{"start":{"line":119,"column":18},"end":{"line":119,"column":66}},{"start":{"line":120,"column":18},"end":{"line":120,"column":66}}]},"9":{"loc":{"start":{"line":130,"column":4},"end":{"line":133,"column":null}},"type":"if","locations":[{"start":{"line":130,"column":4},"end":{"line":133,"column":null}}]},"10":{"loc":{"start":{"line":131,"column":30},"end":{"line":131,"column":57}},"type":"binary-expr","locations":[{"start":{"line":131,"column":30},"end":{"line":131,"column":51}},{"start":{"line":131,"column":55},"end":{"line":131,"column":57}}]},"11":{"loc":{"start":{"line":142,"column":10},"end":{"line":142,"column":79}},"type":"cond-expr","locations":[{"start":{"line":142,"column":34},"end":{"line":142,"column":55}},{"start":{"line":142,"column":58},"end":{"line":142,"column":79}}]},"12":{"loc":{"start":{"line":166,"column":15},"end":{"line":168,"column":78}},"type":"cond-expr","locations":[{"start":{"line":167,"column":18},"end":{"line":167,"column":78}},{"start":{"line":168,"column":18},"end":{"line":168,"column":78}}]},"13":{"loc":{"start":{"line":172,"column":15},"end":{"line":174,"column":78}},"type":"cond-expr","locations":[{"start":{"line":173,"column":18},"end":{"line":173,"column":78}},{"start":{"line":174,"column":18},"end":{"line":174,"column":78}}]},"14":{"loc":{"start":{"line":228,"column":25},"end":{"line":228,"column":null}},"type":"binary-expr","locations":[{"start":{"line":228,"column":25},"end":{"line":228,"column":56}},{"start":{"line":228,"column":60},"end":{"line":228,"column":null}}]},"15":{"loc":{"start":{"line":236,"column":16},"end":{"line":236,"column":null}},"type":"cond-expr","locations":[{"start":{"line":236,"column":53},"end":{"line":236,"column":58}},{"start":{"line":236,"column":58},"end":{"line":236,"column":null}}]}},"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,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0},"f":{"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},"b":{"0":[0],"1":[0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/updates.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/updates.js","statementMap":{"0":{"start":{"line":18,"column":24},"end":{"line":18,"column":36}},"1":{"start":{"line":216,"column":13},"end":{"line":216,"column":27}},"2":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":36},"end":{"line":4,"column":null}},"5":{"start":{"line":5,"column":17},"end":{"line":5,"column":null}},"6":{"start":{"line":6,"column":34},"end":{"line":6,"column":null}},"7":{"start":{"line":7,"column":21},"end":{"line":7,"column":null}},"8":{"start":{"line":8,"column":33},"end":{"line":8,"column":null}},"9":{"start":{"line":9,"column":34},"end":{"line":9,"column":null}},"10":{"start":{"line":10,"column":34},"end":{"line":10,"column":null}},"11":{"start":{"line":11,"column":26},"end":{"line":11,"column":null}},"12":{"start":{"line":19,"column":17},"end":{"line":19,"column":30}},"13":{"start":{"line":20,"column":19},"end":{"line":20,"column":41}},"14":{"start":{"line":21,"column":22},"end":{"line":21,"column":39}},"15":{"start":{"line":22,"column":21},"end":{"line":22,"column":37}},"16":{"start":{"line":24,"column":48},"end":{"line":24,"column":null}},"17":{"start":{"line":31,"column":41},"end":{"line":54,"column":null}},"18":{"start":{"line":33,"column":17},"end":{"line":33,"column":null}},"19":{"start":{"line":35,"column":23},"end":{"line":41,"column":null}},"20":{"start":{"line":36,"column":6},"end":{"line":39,"column":null}},"21":{"start":{"line":37,"column":8},"end":{"line":37,"column":null}},"22":{"start":{"line":38,"column":8},"end":{"line":38,"column":null}},"23":{"start":{"line":40,"column":6},"end":{"line":40,"column":null}},"24":{"start":{"line":43,"column":23},"end":{"line":52,"column":null}},"25":{"start":{"line":44,"column":6},"end":{"line":51,"column":null}},"26":{"start":{"line":53,"column":4},"end":{"line":53,"column":null}},"27":{"start":{"line":62,"column":24},"end":{"line":71,"column":null}},"28":{"start":{"line":64,"column":4},"end":{"line":64,"column":null}},"29":{"start":{"line":64,"column":38},"end":{"line":64,"column":null}},"30":{"start":{"line":66,"column":24},"end":{"line":66,"column":null}},"31":{"start":{"line":66,"column":64},"end":{"line":66,"column":73}},"32":{"start":{"line":68,"column":4},"end":{"line":69,"column":null}},"33":{"start":{"line":69,"column":6},"end":{"line":69,"column":null}},"34":{"start":{"line":77,"column":23},"end":{"line":115,"column":null}},"35":{"start":{"line":81,"column":4},"end":{"line":82,"column":28}},"36":{"start":{"line":121,"column":2},"end":{"line":145,"column":null}},"37":{"start":{"line":123,"column":4},"end":{"line":126,"column":null}},"38":{"start":{"line":124,"column":6},"end":{"line":124,"column":null}},"39":{"start":{"line":125,"column":6},"end":{"line":125,"column":null}},"40":{"start":{"line":128,"column":20},"end":{"line":128,"column":null}},"41":{"start":{"line":130,"column":4},"end":{"line":144,"column":null}},"42":{"start":{"line":133,"column":8},"end":{"line":133,"column":74}},"43":{"start":{"line":135,"column":45},"end":{"line":136,"column":null}},"44":{"start":{"line":136,"column":20},"end":{"line":136,"column":null}},"45":{"start":{"line":138,"column":6},"end":{"line":140,"column":null}},"46":{"start":{"line":143,"column":6},"end":{"line":143,"column":null}},"47":{"start":{"line":216,"column":30},"end":{"line":246,"column":null}},"48":{"start":{"line":218,"column":29},"end":{"line":220,"column":null}},"49":{"start":{"line":220,"column":18},"end":{"line":220,"column":null}},"50":{"start":{"line":223,"column":32},"end":{"line":225,"column":null}},"51":{"start":{"line":225,"column":18},"end":{"line":225,"column":null}},"52":{"start":{"line":228,"column":31},"end":{"line":230,"column":null}},"53":{"start":{"line":230,"column":18},"end":{"line":230,"column":null}},"54":{"start":{"line":233,"column":2},"end":{"line":245,"column":null}}},"fnMap":{"0":{"name":"UpdatesPage","decl":{"start":{"line":18,"column":24},"end":{"line":18,"column":36}},"loc":{"start":{"line":18,"column":41},"end":{"line":209,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":31,"column":41},"end":{"line":31,"column":42}},"loc":{"start":{"line":31,"column":42},"end":{"line":54,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":35,"column":34},"end":{"line":35,"column":35}},"loc":{"start":{"line":35,"column":40},"end":{"line":41,"column":7}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":43,"column":40},"end":{"line":43,"column":41}},"loc":{"start":{"line":43,"column":41},"end":{"line":52,"column":null}}},"4":{"name":"(anonymous_8)","decl":{"start":{"line":62,"column":24},"end":{"line":62,"column":25}},"loc":{"start":{"line":62,"column":34},"end":{"line":71,"column":null}}},"5":{"name":"(anonymous_9)","decl":{"start":{"line":66,"column":52},"end":{"line":66,"column":53}},"loc":{"start":{"line":66,"column":64},"end":{"line":66,"column":73}}},"6":{"name":"(anonymous_10)","decl":{"start":{"line":68,"column":26},"end":{"line":68,"column":27}},"loc":{"start":{"line":69,"column":6},"end":{"line":69,"column":null}}},"7":{"name":"(anonymous_11)","decl":{"start":{"line":80,"column":8},"end":{"line":80,"column":9}},"loc":{"start":{"line":80,"column":9},"end":{"line":115,"column":null}}},"8":{"name":"(anonymous_12)","decl":{"start":{"line":121,"column":12},"end":{"line":121,"column":null}},"loc":{"start":{"line":121,"column":12},"end":{"line":145,"column":5}}},"9":{"name":"(anonymous_13)","decl":{"start":{"line":136,"column":8},"end":{"line":136,"column":9}},"loc":{"start":{"line":136,"column":20},"end":{"line":136,"column":null}}},"10":{"name":"(anonymous_14)","decl":{"start":{"line":216,"column":30},"end":{"line":216,"column":37}},"loc":{"start":{"line":216,"column":47},"end":{"line":246,"column":null}}},"11":{"name":"(anonymous_15)","decl":{"start":{"line":220,"column":9},"end":{"line":220,"column":10}},"loc":{"start":{"line":220,"column":18},"end":{"line":220,"column":null}}},"12":{"name":"(anonymous_16)","decl":{"start":{"line":225,"column":9},"end":{"line":225,"column":10}},"loc":{"start":{"line":225,"column":18},"end":{"line":225,"column":null}}},"13":{"name":"(anonymous_17)","decl":{"start":{"line":230,"column":9},"end":{"line":230,"column":10}},"loc":{"start":{"line":230,"column":18},"end":{"line":230,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":36,"column":6},"end":{"line":39,"column":null}},"type":"if","locations":[{"start":{"line":36,"column":6},"end":{"line":39,"column":null}}]},"1":{"loc":{"start":{"line":47,"column":10},"end":{"line":49,"column":42}},"type":"cond-expr","locations":[{"start":{"line":48,"column":14},"end":{"line":48,"column":42}},{"start":{"line":49,"column":14},"end":{"line":49,"column":42}}]},"2":{"loc":{"start":{"line":64,"column":4},"end":{"line":64,"column":null}},"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":null}}]},"3":{"loc":{"start":{"line":87,"column":17},"end":{"line":87,"column":76}},"type":"cond-expr","locations":[{"start":{"line":87,"column":41},"end":{"line":87,"column":57}},{"start":{"line":87,"column":60},"end":{"line":87,"column":76}}]},"4":{"loc":{"start":{"line":89,"column":12},"end":{"line":89,"column":77}},"type":"cond-expr","locations":[{"start":{"line":89,"column":36},"end":{"line":89,"column":55}},{"start":{"line":89,"column":58},"end":{"line":89,"column":77}}]},"5":{"loc":{"start":{"line":96,"column":19},"end":{"line":96,"column":null}},"type":"cond-expr","locations":[{"start":{"line":96,"column":43},"end":{"line":96,"column":56}},{"start":{"line":96,"column":56},"end":{"line":96,"column":null}}]},"6":{"loc":{"start":{"line":99,"column":19},"end":{"line":101,"column":50}},"type":"cond-expr","locations":[{"start":{"line":100,"column":22},"end":{"line":100,"column":50}},{"start":{"line":101,"column":22},"end":{"line":101,"column":50}}]},"7":{"loc":{"start":{"line":123,"column":4},"end":{"line":126,"column":null}},"type":"if","locations":[{"start":{"line":123,"column":4},"end":{"line":126,"column":null}}]},"8":{"loc":{"start":{"line":124,"column":30},"end":{"line":124,"column":57}},"type":"binary-expr","locations":[{"start":{"line":124,"column":30},"end":{"line":124,"column":51}},{"start":{"line":124,"column":55},"end":{"line":124,"column":57}}]},"9":{"loc":{"start":{"line":130,"column":4},"end":{"line":144,"column":null}},"type":"if","locations":[{"start":{"line":130,"column":4},"end":{"line":144,"column":null}}]},"10":{"loc":{"start":{"line":133,"column":8},"end":{"line":133,"column":74}},"type":"cond-expr","locations":[{"start":{"line":133,"column":32},"end":{"line":133,"column":52}},{"start":{"line":133,"column":55},"end":{"line":133,"column":74}}]},"11":{"loc":{"start":{"line":153,"column":10},"end":{"line":153,"column":79}},"type":"cond-expr","locations":[{"start":{"line":153,"column":34},"end":{"line":153,"column":55}},{"start":{"line":153,"column":58},"end":{"line":153,"column":79}}]},"12":{"loc":{"start":{"line":176,"column":15},"end":{"line":178,"column":78}},"type":"cond-expr","locations":[{"start":{"line":177,"column":18},"end":{"line":177,"column":78}},{"start":{"line":178,"column":18},"end":{"line":178,"column":78}}]},"13":{"loc":{"start":{"line":182,"column":15},"end":{"line":184,"column":78}},"type":"cond-expr","locations":[{"start":{"line":183,"column":18},"end":{"line":183,"column":78}},{"start":{"line":184,"column":18},"end":{"line":184,"column":78}}]},"14":{"loc":{"start":{"line":236,"column":25},"end":{"line":236,"column":null}},"type":"binary-expr","locations":[{"start":{"line":236,"column":25},"end":{"line":236,"column":56}},{"start":{"line":236,"column":60},"end":{"line":236,"column":null}}]},"15":{"loc":{"start":{"line":244,"column":16},"end":{"line":244,"column":null}},"type":"cond-expr","locations":[{"start":{"line":244,"column":53},"end":{"line":244,"column":58}},{"start":{"line":244,"column":58},"end":{"line":244,"column":null}}]}},"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,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0},"f":{"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},"b":{"0":[0],"1":[0,0],"2":[0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0],"8":[0,0],"9":[0],"10":[0,0],"11":[0,0],"12":[0,0],"13":[0,0],"14":[0,0],"15":[0,0]}} +,"/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":2,"column":24},"end":{"line":2,"column":32}},"1":{"start":{"line":3,"column":2},"end":{"line":3,"column":null}}},"fnMap":{"0":{"name":"handler","decl":{"start":{"line":2,"column":24},"end":{"line":2,"column":32}},"loc":{"start":{"line":2,"column":40},"end":{"line":4,"column":null}}}},"branchMap":{},"s":{"0":0,"1":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":63,"column":0},"end":{"line":63,"column":15}},"1":{"start":{"line":1,"column":28},"end":{"line":1,"column":null}},"2":{"start":{"line":8,"column":2},"end":{"line":60,"column":null}},"3":{"start":{"line":10,"column":4},"end":{"line":56,"column":null}},"4":{"start":{"line":14,"column":6},"end":{"line":14,"column":null}},"5":{"start":{"line":16,"column":6},"end":{"line":55,"column":null}},"6":{"start":{"line":17,"column":31},"end":{"line":43,"column":null}},"7":{"start":{"line":46,"column":8},"end":{"line":51,"column":null}},"8":{"start":{"line":47,"column":10},"end":{"line":47,"column":null}},"9":{"start":{"line":49,"column":10},"end":{"line":49,"column":null}},"10":{"start":{"line":50,"column":10},"end":{"line":50,"column":null}},"11":{"start":{"line":53,"column":8},"end":{"line":53,"column":null}},"12":{"start":{"line":54,"column":8},"end":{"line":54,"column":null}},"13":{"start":{"line":58,"column":4},"end":{"line":58,"column":null}},"14":{"start":{"line":59,"column":4},"end":{"line":59,"column":null}},"15":{"start":{"line":63,"column":15},"end":{"line":63,"column":null}}},"fnMap":{"0":{"name":"handler","decl":{"start":{"line":7,"column":15},"end":{"line":7,"column":23}},"loc":{"start":{"line":7,"column":31},"end":{"line":61,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":2},"end":{"line":60,"column":null}},"type":"if","locations":[{"start":{"line":8,"column":2},"end":{"line":60,"column":null}},{"start":{"line":57,"column":9},"end":{"line":60,"column":null}}]},"1":{"loc":{"start":{"line":10,"column":4},"end":{"line":56,"column":null}},"type":"if","locations":[{"start":{"line":10,"column":4},"end":{"line":56,"column":null}},{"start":{"line":15,"column":11},"end":{"line":56,"column":null}}]},"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":null}},{"start":{"line":12,"column":6},"end":{"line":12,"column":43}}]},"3":{"loc":{"start":{"line":20,"column":23},"end":{"line":20,"column":null}},"type":"binary-expr","locations":[{"start":{"line":20,"column":23},"end":{"line":20,"column":42}},{"start":{"line":20,"column":46},"end":{"line":20,"column":null}}]},"4":{"loc":{"start":{"line":46,"column":8},"end":{"line":51,"column":null}},"type":"if","locations":[{"start":{"line":46,"column":8},"end":{"line":51,"column":null}},{"start":{"line":48,"column":15},"end":{"line":51,"column":null}}]}},"s":{"0":5,"1":1,"2":5,"3":5,"4":2,"5":3,"6":3,"7":2,"8":1,"9":1,"10":1,"11":1,"12":1,"13":0,"14":0,"15":1},"f":{"0":5},"b":{"0":[5,0],"1":[2,3],"2":[5,4],"3":[3,0],"4":[1,1]}} +,"/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":7,"column":30},"end":{"line":7,"column":38}},"1":{"start":{"line":8,"column":2},"end":{"line":17,"column":null}},"2":{"start":{"line":9,"column":4},"end":{"line":9,"column":null}},"3":{"start":{"line":10,"column":4},"end":{"line":10,"column":null}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":null}},"5":{"start":{"line":12,"column":4},"end":{"line":12,"column":null}},"6":{"start":{"line":13,"column":4},"end":{"line":13,"column":null}},"7":{"start":{"line":15,"column":4},"end":{"line":15,"column":null}},"8":{"start":{"line":16,"column":4},"end":{"line":16,"column":null}},"9":{"start":{"line":18,"column":2},"end":{"line":18,"column":null}}},"fnMap":{"0":{"name":"handler","decl":{"start":{"line":7,"column":30},"end":{"line":7,"column":38}},"loc":{"start":{"line":7,"column":46},"end":{"line":19,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":2},"end":{"line":17,"column":null}},"type":"if","locations":[{"start":{"line":8,"column":2},"end":{"line":17,"column":null}},{"start":{"line":14,"column":9},"end":{"line":17,"column":null}}]}},"s":{"0":2,"1":2,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":2},"f":{"0":2},"b":{"0":[1,1]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/api/submit-feedback.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/api/submit-feedback.js","statementMap":{"0":{"start":{"line":3,"column":30},"end":{"line":3,"column":38}},"1":{"start":{"line":1,"column":39},"end":{"line":1,"column":null}},"2":{"start":{"line":4,"column":15},"end":{"line":4,"column":23}},"3":{"start":{"line":5,"column":2},"end":{"line":19,"column":null}},"4":{"start":{"line":6,"column":4},"end":{"line":6,"column":null}},"5":{"start":{"line":8,"column":4},"end":{"line":18,"column":null}},"6":{"start":{"line":9,"column":14},"end":{"line":9,"column":null}},"7":{"start":{"line":10,"column":6},"end":{"line":14,"column":null}},"8":{"start":{"line":11,"column":8},"end":{"line":11,"column":null}},"9":{"start":{"line":13,"column":8},"end":{"line":13,"column":null}},"10":{"start":{"line":16,"column":6},"end":{"line":16,"column":null}},"11":{"start":{"line":17,"column":6},"end":{"line":17,"column":null}}},"fnMap":{"0":{"name":"handler","decl":{"start":{"line":3,"column":30},"end":{"line":3,"column":38}},"loc":{"start":{"line":3,"column":46},"end":{"line":20,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":5,"column":2},"end":{"line":19,"column":null}},"type":"if","locations":[{"start":{"line":5,"column":2},"end":{"line":19,"column":null}},{"start":{"line":7,"column":9},"end":{"line":19,"column":null}}]},"1":{"loc":{"start":{"line":10,"column":6},"end":{"line":14,"column":null}},"type":"if","locations":[{"start":{"line":10,"column":6},"end":{"line":14,"column":null}},{"start":{"line":12,"column":13},"end":{"line":14,"column":null}}]}},"s":{"0":3,"1":1,"2":3,"3":3,"4":1,"5":2,"6":2,"7":2,"8":1,"9":1,"10":1,"11":1},"f":{"0":3},"b":{"0":[1,2],"1":[1,1]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/benefits-finder/[id].js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/benefits-finder/[id].js","statementMap":{"0":{"start":{"line":17,"column":24},"end":{"line":17,"column":46}},"1":{"start":{"line":107,"column":22},"end":{"line":107,"column":36}},"2":{"start":{"line":127,"column":13},"end":{"line":127,"column":27}},"3":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"4":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"5":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"6":{"start":{"line":4,"column":36},"end":{"line":4,"column":null}},"7":{"start":{"line":5,"column":31},"end":{"line":5,"column":null}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":null}},"9":{"start":{"line":7,"column":34},"end":{"line":7,"column":null}},"10":{"start":{"line":8,"column":27},"end":{"line":8,"column":null}},"11":{"start":{"line":9,"column":24},"end":{"line":9,"column":null}},"12":{"start":{"line":10,"column":34},"end":{"line":10,"column":null}},"13":{"start":{"line":19,"column":21},"end":{"line":19,"column":47}},"14":{"start":{"line":20,"column":23},"end":{"line":20,"column":57}},"15":{"start":{"line":23,"column":2},"end":{"line":28,"column":null}},"16":{"start":{"line":24,"column":4},"end":{"line":27,"column":null}},"17":{"start":{"line":25,"column":6},"end":{"line":25,"column":null}},"18":{"start":{"line":26,"column":6},"end":{"line":26,"column":null}},"19":{"start":{"line":109,"column":19},"end":{"line":110,"column":null}},"20":{"start":{"line":113,"column":16},"end":{"line":113,"column":null}},"21":{"start":{"line":115,"column":2},"end":{"line":115,"column":null}},"22":{"start":{"line":115,"column":23},"end":{"line":115,"column":null}},"23":{"start":{"line":117,"column":2},"end":{"line":120,"column":null}},"24":{"start":{"line":127,"column":30},"end":{"line":168,"column":null}},"25":{"start":{"line":129,"column":19},"end":{"line":130,"column":null}},"26":{"start":{"line":133,"column":31},"end":{"line":134,"column":null}},"27":{"start":{"line":137,"column":16},"end":{"line":137,"column":43}},"28":{"start":{"line":139,"column":19},"end":{"line":145,"column":null}},"29":{"start":{"line":140,"column":4},"end":{"line":143,"column":null}},"30":{"start":{"line":148,"column":2},"end":{"line":152,"column":null}},"31":{"start":{"line":149,"column":4},"end":{"line":151,"column":null}},"32":{"start":{"line":155,"column":2},"end":{"line":167,"column":null}}},"fnMap":{"0":{"name":"BenefitFinderArticles","decl":{"start":{"line":17,"column":24},"end":{"line":17,"column":46}},"loc":{"start":{"line":17,"column":63},"end":{"line":100,"column":1}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":23,"column":12},"end":{"line":23,"column":null}},"loc":{"start":{"line":23,"column":12},"end":{"line":28,"column":5}}},"2":{"name":"getStaticPaths","decl":{"start":{"line":107,"column":22},"end":{"line":107,"column":36}},"loc":{"start":{"line":107,"column":22},"end":{"line":121,"column":null}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":115,"column":12},"end":{"line":115,"column":13}},"loc":{"start":{"line":115,"column":23},"end":{"line":115,"column":null}}},"4":{"name":"(anonymous_9)","decl":{"start":{"line":127,"column":30},"end":{"line":127,"column":37}},"loc":{"start":{"line":127,"column":55},"end":{"line":168,"column":null}}},"5":{"name":"(anonymous_10)","decl":{"start":{"line":139,"column":32},"end":{"line":139,"column":33}},"loc":{"start":{"line":139,"column":33},"end":{"line":145,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":4},"end":{"line":27,"column":null}},"type":"if","locations":[{"start":{"line":24,"column":4},"end":{"line":27,"column":null}}]},"1":{"loc":{"start":{"line":25,"column":30},"end":{"line":25,"column":57}},"type":"binary-expr","locations":[{"start":{"line":25,"column":30},"end":{"line":25,"column":51}},{"start":{"line":25,"column":55},"end":{"line":25,"column":57}}]},"2":{"loc":{"start":{"line":36,"column":10},"end":{"line":36,"column":79}},"type":"cond-expr","locations":[{"start":{"line":36,"column":34},"end":{"line":36,"column":55}},{"start":{"line":36,"column":58},"end":{"line":36,"column":79}}]},"3":{"loc":{"start":{"line":55,"column":16},"end":{"line":55,"column":79}},"type":"cond-expr","locations":[{"start":{"line":55,"column":40},"end":{"line":55,"column":58}},{"start":{"line":55,"column":61},"end":{"line":55,"column":79}}]},"4":{"loc":{"start":{"line":64,"column":18},"end":{"line":64,"column":null}},"type":"cond-expr","locations":[{"start":{"line":64,"column":42},"end":{"line":64,"column":60}},{"start":{"line":64,"column":60},"end":{"line":64,"column":null}}]},"5":{"loc":{"start":{"line":77,"column":18},"end":{"line":77,"column":null}},"type":"cond-expr","locations":[{"start":{"line":77,"column":42},"end":{"line":77,"column":60}},{"start":{"line":77,"column":60},"end":{"line":77,"column":null}}]},"6":{"loc":{"start":{"line":141,"column":7},"end":{"line":141,"column":61}},"type":"cond-expr","locations":[{"start":{"line":141,"column":25},"end":{"line":141,"column":42}},{"start":{"line":141,"column":45},"end":{"line":141,"column":61}}]},"7":{"loc":{"start":{"line":148,"column":2},"end":{"line":152,"column":null}},"type":"if","locations":[{"start":{"line":148,"column":2},"end":{"line":152,"column":null}}]},"8":{"loc":{"start":{"line":148,"column":6},"end":{"line":148,"column":35}},"type":"binary-expr","locations":[{"start":{"line":148,"column":6},"end":{"line":148,"column":19}},{"start":{"line":148,"column":19},"end":{"line":148,"column":35}}]},"9":{"loc":{"start":{"line":161,"column":25},"end":{"line":161,"column":null}},"type":"binary-expr","locations":[{"start":{"line":161,"column":25},"end":{"line":161,"column":56}},{"start":{"line":161,"column":60},"end":{"line":161,"column":null}}]},"10":{"loc":{"start":{"line":166,"column":16},"end":{"line":166,"column":null}},"type":"cond-expr","locations":[{"start":{"line":166,"column":53},"end":{"line":166,"column":58}},{"start":{"line":166,"column":58},"end":{"line":166,"column":null}}]}},"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},"b":{"0":[0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0],"8":[0,0],"9":[0,0],"10":[0,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/benefits-finder/index.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/benefits-finder/index.js","statementMap":{"0":{"start":{"line":25,"column":24},"end":{"line":25,"column":47}},"1":{"start":{"line":404,"column":13},"end":{"line":404,"column":27}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":36},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":31},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":28},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":17},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":34},"end":{"line":8,"column":null}},"10":{"start":{"line":9,"column":24},"end":{"line":9,"column":null}},"11":{"start":{"line":10,"column":18},"end":{"line":10,"column":null}},"12":{"start":{"line":11,"column":28},"end":{"line":11,"column":null}},"13":{"start":{"line":12,"column":34},"end":{"line":12,"column":null}},"14":{"start":{"line":13,"column":27},"end":{"line":13,"column":null}},"15":{"start":{"line":14,"column":32},"end":{"line":14,"column":null}},"16":{"start":{"line":15,"column":31},"end":{"line":15,"column":null}},"17":{"start":{"line":16,"column":34},"end":{"line":16,"column":null}},"18":{"start":{"line":17,"column":28},"end":{"line":17,"column":null}},"19":{"start":{"line":18,"column":24},"end":{"line":18,"column":null}},"20":{"start":{"line":27,"column":21},"end":{"line":27,"column":52}},"21":{"start":{"line":28,"column":22},"end":{"line":28,"column":60}},"22":{"start":{"line":29,"column":22},"end":{"line":29,"column":39}},"23":{"start":{"line":35,"column":8},"end":{"line":38,"column":32}},"24":{"start":{"line":43,"column":2},"end":{"line":48,"column":null}},"25":{"start":{"line":44,"column":4},"end":{"line":47,"column":null}},"26":{"start":{"line":45,"column":6},"end":{"line":45,"column":null}},"27":{"start":{"line":46,"column":6},"end":{"line":46,"column":null}},"28":{"start":{"line":404,"column":30},"end":{"line":436,"column":null}},"29":{"start":{"line":406,"column":29},"end":{"line":407,"column":null}},"30":{"start":{"line":411,"column":31},"end":{"line":412,"column":null}},"31":{"start":{"line":416,"column":32},"end":{"line":417,"column":null}},"32":{"start":{"line":421,"column":2},"end":{"line":435,"column":null}}},"fnMap":{"0":{"name":"BenefitsFinderOverview","decl":{"start":{"line":25,"column":24},"end":{"line":25,"column":47}},"loc":{"start":{"line":25,"column":52},"end":{"line":398,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":34,"column":6},"end":{"line":34,"column":7}},"loc":{"start":{"line":35,"column":8},"end":{"line":38,"column":32}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":43,"column":12},"end":{"line":43,"column":null}},"loc":{"start":{"line":43,"column":12},"end":{"line":48,"column":5}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":404,"column":30},"end":{"line":404,"column":37}},"loc":{"start":{"line":404,"column":47},"end":{"line":436,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":35,"column":8},"end":{"line":38,"column":32}},"type":"binary-expr","locations":[{"start":{"line":35,"column":8},"end":{"line":35,"column":35}},{"start":{"line":36,"column":8},"end":{"line":36,"column":33}},{"start":{"line":37,"column":8},"end":{"line":37,"column":41}},{"start":{"line":38,"column":8},"end":{"line":38,"column":32}}]},"1":{"loc":{"start":{"line":44,"column":4},"end":{"line":47,"column":null}},"type":"if","locations":[{"start":{"line":44,"column":4},"end":{"line":47,"column":null}}]},"2":{"loc":{"start":{"line":45,"column":30},"end":{"line":45,"column":57}},"type":"binary-expr","locations":[{"start":{"line":45,"column":30},"end":{"line":45,"column":51}},{"start":{"line":45,"column":55},"end":{"line":45,"column":57}}]},"3":{"loc":{"start":{"line":56,"column":10},"end":{"line":56,"column":79}},"type":"cond-expr","locations":[{"start":{"line":56,"column":34},"end":{"line":56,"column":55}},{"start":{"line":56,"column":58},"end":{"line":56,"column":79}}]},"4":{"loc":{"start":{"line":68,"column":13},"end":{"line":70,"column":72}},"type":"cond-expr","locations":[{"start":{"line":69,"column":16},"end":{"line":69,"column":61}},{"start":{"line":70,"column":16},"end":{"line":70,"column":72}}]},"5":{"loc":{"start":{"line":75,"column":14},"end":{"line":77,"column":67}},"type":"cond-expr","locations":[{"start":{"line":76,"column":18},"end":{"line":76,"column":67}},{"start":{"line":77,"column":18},"end":{"line":77,"column":67}}]},"6":{"loc":{"start":{"line":87,"column":16},"end":{"line":89,"column":41}},"type":"cond-expr","locations":[{"start":{"line":88,"column":20},"end":{"line":88,"column":41}},{"start":{"line":89,"column":20},"end":{"line":89,"column":41}}]},"7":{"loc":{"start":{"line":97,"column":14},"end":{"line":99,"column":39}},"type":"cond-expr","locations":[{"start":{"line":98,"column":18},"end":{"line":98,"column":39}},{"start":{"line":99,"column":18},"end":{"line":99,"column":39}}]},"8":{"loc":{"start":{"line":107,"column":14},"end":{"line":107,"column":77}},"type":"cond-expr","locations":[{"start":{"line":107,"column":38},"end":{"line":107,"column":56}},{"start":{"line":107,"column":59},"end":{"line":107,"column":77}}]},"9":{"loc":{"start":{"line":112,"column":21},"end":{"line":112,"column":null}},"type":"cond-expr","locations":[{"start":{"line":112,"column":45},"end":{"line":112,"column":53}},{"start":{"line":112,"column":53},"end":{"line":112,"column":null}}]},"10":{"loc":{"start":{"line":118,"column":14},"end":{"line":120,"column":null}},"type":"cond-expr","locations":[{"start":{"line":119,"column":18},"end":{"line":119,"column":null}},{"start":{"line":120,"column":18},"end":{"line":120,"column":null}}]},"11":{"loc":{"start":{"line":134,"column":14},"end":{"line":136,"column":67}},"type":"cond-expr","locations":[{"start":{"line":135,"column":18},"end":{"line":135,"column":67}},{"start":{"line":136,"column":18},"end":{"line":136,"column":67}}]},"12":{"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}}]},"13":{"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}}]},"14":{"loc":{"start":{"line":169,"column":14},"end":{"line":171,"column":67}},"type":"cond-expr","locations":[{"start":{"line":170,"column":18},"end":{"line":170,"column":67}},{"start":{"line":171,"column":18},"end":{"line":171,"column":67}}]},"15":{"loc":{"start":{"line":181,"column":14},"end":{"line":183,"column":58}},"type":"cond-expr","locations":[{"start":{"line":182,"column":18},"end":{"line":182,"column":58}},{"start":{"line":183,"column":18},"end":{"line":183,"column":58}}]},"16":{"loc":{"start":{"line":194,"column":16},"end":{"line":196,"column":41}},"type":"cond-expr","locations":[{"start":{"line":195,"column":20},"end":{"line":195,"column":41}},{"start":{"line":196,"column":20},"end":{"line":196,"column":41}}]},"17":{"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}}]},"18":{"loc":{"start":{"line":210,"column":14},"end":{"line":212,"column":67}},"type":"cond-expr","locations":[{"start":{"line":211,"column":18},"end":{"line":211,"column":67}},{"start":{"line":212,"column":18},"end":{"line":212,"column":67}}]},"19":{"loc":{"start":{"line":222,"column":14},"end":{"line":224,"column":58}},"type":"cond-expr","locations":[{"start":{"line":223,"column":18},"end":{"line":223,"column":58}},{"start":{"line":224,"column":18},"end":{"line":224,"column":58}}]},"20":{"loc":{"start":{"line":240,"column":20},"end":{"line":242,"column":42}},"type":"cond-expr","locations":[{"start":{"line":241,"column":24},"end":{"line":241,"column":42}},{"start":{"line":242,"column":24},"end":{"line":242,"column":42}}]},"21":{"loc":{"start":{"line":253,"column":24},"end":{"line":255,"column":73}},"type":"cond-expr","locations":[{"start":{"line":254,"column":28},"end":{"line":254,"column":73}},{"start":{"line":255,"column":28},"end":{"line":255,"column":73}}]},"22":{"loc":{"start":{"line":258,"column":24},"end":{"line":260,"column":68}},"type":"cond-expr","locations":[{"start":{"line":259,"column":28},"end":{"line":259,"column":68}},{"start":{"line":260,"column":28},"end":{"line":260,"column":68}}]},"23":{"loc":{"start":{"line":274,"column":17},"end":{"line":277,"column":28}},"type":"cond-expr","locations":[{"start":{"line":275,"column":20},"end":{"line":275,"column":80}},{"start":{"line":276,"column":20},"end":{"line":277,"column":28}}]},"24":{"loc":{"start":{"line":286,"column":20},"end":{"line":288,"column":54}},"type":"cond-expr","locations":[{"start":{"line":287,"column":24},"end":{"line":287,"column":54}},{"start":{"line":288,"column":24},"end":{"line":288,"column":54}}]},"25":{"loc":{"start":{"line":291,"column":20},"end":{"line":293,"column":54}},"type":"cond-expr","locations":[{"start":{"line":292,"column":24},"end":{"line":292,"column":54}},{"start":{"line":293,"column":24},"end":{"line":293,"column":54}}]},"26":{"loc":{"start":{"line":296,"column":20},"end":{"line":298,"column":54}},"type":"cond-expr","locations":[{"start":{"line":297,"column":24},"end":{"line":297,"column":54}},{"start":{"line":298,"column":24},"end":{"line":298,"column":54}}]},"27":{"loc":{"start":{"line":305,"column":20},"end":{"line":309,"column":null}},"type":"cond-expr","locations":[{"start":{"line":306,"column":24},"end":{"line":307,"column":null}},{"start":{"line":308,"column":24},"end":{"line":309,"column":null}}]},"28":{"loc":{"start":{"line":312,"column":20},"end":{"line":316,"column":32}},"type":"cond-expr","locations":[{"start":{"line":313,"column":24},"end":{"line":314,"column":32}},{"start":{"line":315,"column":24},"end":{"line":316,"column":32}}]},"29":{"loc":{"start":{"line":319,"column":20},"end":{"line":321,"column":57}},"type":"cond-expr","locations":[{"start":{"line":320,"column":24},"end":{"line":320,"column":57}},{"start":{"line":321,"column":24},"end":{"line":321,"column":57}}]},"30":{"loc":{"start":{"line":324,"column":20},"end":{"line":326,"column":70}},"type":"cond-expr","locations":[{"start":{"line":325,"column":24},"end":{"line":325,"column":70}},{"start":{"line":326,"column":24},"end":{"line":326,"column":70}}]},"31":{"loc":{"start":{"line":329,"column":20},"end":{"line":331,"column":79}},"type":"cond-expr","locations":[{"start":{"line":330,"column":24},"end":{"line":330,"column":79}},{"start":{"line":331,"column":24},"end":{"line":331,"column":79}}]},"32":{"loc":{"start":{"line":338,"column":17},"end":{"line":341,"column":28}},"type":"cond-expr","locations":[{"start":{"line":339,"column":20},"end":{"line":339,"column":80}},{"start":{"line":340,"column":20},"end":{"line":341,"column":28}}]},"33":{"loc":{"start":{"line":354,"column":9},"end":{"line":383,"column":null}},"type":"cond-expr","locations":[{"start":{"line":355,"column":10},"end":{"line":383,"column":null}},{"start":{"line":383,"column":12},"end":{"line":383,"column":null}}]},"34":{"loc":{"start":{"line":360,"column":14},"end":{"line":370,"column":43}},"type":"cond-expr","locations":[{"start":{"line":361,"column":18},"end":{"line":365,"column":21}},{"start":{"line":366,"column":18},"end":{"line":370,"column":43}}]},"35":{"loc":{"start":{"line":378,"column":14},"end":{"line":380,"column":65}},"type":"cond-expr","locations":[{"start":{"line":379,"column":18},"end":{"line":379,"column":61}},{"start":{"line":380,"column":18},"end":{"line":380,"column":65}}]},"36":{"loc":{"start":{"line":424,"column":25},"end":{"line":424,"column":null}},"type":"binary-expr","locations":[{"start":{"line":424,"column":25},"end":{"line":424,"column":56}},{"start":{"line":424,"column":60},"end":{"line":424,"column":null}}]},"37":{"loc":{"start":{"line":434,"column":16},"end":{"line":434,"column":null}},"type":"cond-expr","locations":[{"start":{"line":434,"column":53},"end":{"line":434,"column":58}},{"start":{"line":434,"column":58},"end":{"line":434,"column":null}}]}},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":21,"24":1,"25":1,"26":0,"27":0,"28":1,"29":0,"30":0,"31":0,"32":0},"f":{"0":1,"1":21,"2":1,"3":0},"b":{"0":[21,20,19,18],"1":[0],"2":[0,0],"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],"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":[1,0],"34":[0,1],"35":[0,1],"36":[0,0],"37":[0,0]}} +,"/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":23,"column":24},"end":{"line":23,"column":49}},"1":{"start":{"line":173,"column":22},"end":{"line":173,"column":36}},"2":{"start":{"line":194,"column":13},"end":{"line":194,"column":27}},"3":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"4":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"5":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"6":{"start":{"line":4,"column":36},"end":{"line":4,"column":null}},"7":{"start":{"line":5,"column":31},"end":{"line":5,"column":null}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":null}},"9":{"start":{"line":7,"column":34},"end":{"line":7,"column":null}},"10":{"start":{"line":8,"column":27},"end":{"line":8,"column":null}},"11":{"start":{"line":9,"column":24},"end":{"line":9,"column":null}},"12":{"start":{"line":10,"column":31},"end":{"line":10,"column":null}},"13":{"start":{"line":11,"column":28},"end":{"line":11,"column":null}},"14":{"start":{"line":12,"column":34},"end":{"line":12,"column":null}},"15":{"start":{"line":13,"column":34},"end":{"line":13,"column":null}},"16":{"start":{"line":14,"column":27},"end":{"line":14,"column":null}},"17":{"start":{"line":15,"column":32},"end":{"line":15,"column":null}},"18":{"start":{"line":25,"column":21},"end":{"line":25,"column":47}},"19":{"start":{"line":26,"column":23},"end":{"line":26,"column":51}},"20":{"start":{"line":27,"column":22},"end":{"line":27,"column":39}},"21":{"start":{"line":30,"column":2},"end":{"line":35,"column":null}},"22":{"start":{"line":31,"column":4},"end":{"line":34,"column":null}},"23":{"start":{"line":32,"column":6},"end":{"line":32,"column":null}},"24":{"start":{"line":33,"column":6},"end":{"line":33,"column":null}},"25":{"start":{"line":175,"column":19},"end":{"line":176,"column":null}},"26":{"start":{"line":179,"column":16},"end":{"line":179,"column":null}},"27":{"start":{"line":181,"column":2},"end":{"line":181,"column":null}},"28":{"start":{"line":181,"column":23},"end":{"line":181,"column":null}},"29":{"start":{"line":183,"column":2},"end":{"line":186,"column":null}},"30":{"start":{"line":194,"column":30},"end":{"line":240,"column":null}},"31":{"start":{"line":196,"column":32},"end":{"line":197,"column":null}},"32":{"start":{"line":200,"column":32},"end":{"line":201,"column":null}},"33":{"start":{"line":204,"column":31},"end":{"line":205,"column":null}},"34":{"start":{"line":208,"column":16},"end":{"line":208,"column":50}},"35":{"start":{"line":210,"column":19},"end":{"line":216,"column":null}},"36":{"start":{"line":211,"column":4},"end":{"line":214,"column":null}},"37":{"start":{"line":219,"column":2},"end":{"line":223,"column":null}},"38":{"start":{"line":220,"column":4},"end":{"line":222,"column":null}},"39":{"start":{"line":226,"column":2},"end":{"line":239,"column":null}}},"fnMap":{"0":{"name":"BenefitNavigatorArticles","decl":{"start":{"line":23,"column":24},"end":{"line":23,"column":49}},"loc":{"start":{"line":23,"column":66},"end":{"line":166,"column":1}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":30,"column":12},"end":{"line":30,"column":null}},"loc":{"start":{"line":30,"column":12},"end":{"line":35,"column":5}}},"2":{"name":"getStaticPaths","decl":{"start":{"line":173,"column":22},"end":{"line":173,"column":36}},"loc":{"start":{"line":173,"column":22},"end":{"line":187,"column":null}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":181,"column":12},"end":{"line":181,"column":13}},"loc":{"start":{"line":181,"column":23},"end":{"line":181,"column":null}}},"4":{"name":"(anonymous_9)","decl":{"start":{"line":194,"column":30},"end":{"line":194,"column":37}},"loc":{"start":{"line":194,"column":55},"end":{"line":240,"column":null}}},"5":{"name":"(anonymous_10)","decl":{"start":{"line":210,"column":32},"end":{"line":210,"column":33}},"loc":{"start":{"line":210,"column":33},"end":{"line":216,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":31,"column":4},"end":{"line":34,"column":null}},"type":"if","locations":[{"start":{"line":31,"column":4},"end":{"line":34,"column":null}}]},"1":{"loc":{"start":{"line":32,"column":30},"end":{"line":32,"column":57}},"type":"binary-expr","locations":[{"start":{"line":32,"column":30},"end":{"line":32,"column":51}},{"start":{"line":32,"column":55},"end":{"line":32,"column":57}}]},"2":{"loc":{"start":{"line":44,"column":10},"end":{"line":44,"column":79}},"type":"cond-expr","locations":[{"start":{"line":44,"column":34},"end":{"line":44,"column":55}},{"start":{"line":44,"column":58},"end":{"line":44,"column":79}}]},"3":{"loc":{"start":{"line":66,"column":16},"end":{"line":66,"column":79}},"type":"cond-expr","locations":[{"start":{"line":66,"column":40},"end":{"line":66,"column":58}},{"start":{"line":66,"column":61},"end":{"line":66,"column":79}}]},"4":{"loc":{"start":{"line":80,"column":16},"end":{"line":82,"column":50}},"type":"cond-expr","locations":[{"start":{"line":81,"column":20},"end":{"line":81,"column":50}},{"start":{"line":82,"column":20},"end":{"line":82,"column":50}}]},"5":{"loc":{"start":{"line":86,"column":16},"end":{"line":88,"column":60}},"type":"cond-expr","locations":[{"start":{"line":87,"column":20},"end":{"line":87,"column":60}},{"start":{"line":88,"column":20},"end":{"line":88,"column":60}}]},"6":{"loc":{"start":{"line":118,"column":9},"end":{"line":151,"column":null}},"type":"cond-expr","locations":[{"start":{"line":119,"column":10},"end":{"line":151,"column":null}},{"start":{"line":151,"column":12},"end":{"line":151,"column":null}}]},"7":{"loc":{"start":{"line":126,"column":14},"end":{"line":136,"column":46}},"type":"cond-expr","locations":[{"start":{"line":127,"column":18},"end":{"line":131,"column":21}},{"start":{"line":132,"column":18},"end":{"line":136,"column":46}}]},"8":{"loc":{"start":{"line":146,"column":14},"end":{"line":148,"column":77}},"type":"cond-expr","locations":[{"start":{"line":147,"column":18},"end":{"line":147,"column":73}},{"start":{"line":148,"column":18},"end":{"line":148,"column":77}}]},"9":{"loc":{"start":{"line":212,"column":7},"end":{"line":212,"column":61}},"type":"cond-expr","locations":[{"start":{"line":212,"column":25},"end":{"line":212,"column":42}},{"start":{"line":212,"column":45},"end":{"line":212,"column":61}}]},"10":{"loc":{"start":{"line":219,"column":2},"end":{"line":223,"column":null}},"type":"if","locations":[{"start":{"line":219,"column":2},"end":{"line":223,"column":null}}]},"11":{"loc":{"start":{"line":219,"column":6},"end":{"line":219,"column":35}},"type":"binary-expr","locations":[{"start":{"line":219,"column":6},"end":{"line":219,"column":19}},{"start":{"line":219,"column":19},"end":{"line":219,"column":35}}]},"12":{"loc":{"start":{"line":234,"column":25},"end":{"line":234,"column":null}},"type":"binary-expr","locations":[{"start":{"line":234,"column":25},"end":{"line":234,"column":56}},{"start":{"line":234,"column":60},"end":{"line":234,"column":null}}]},"13":{"loc":{"start":{"line":238,"column":16},"end":{"line":238,"column":null}},"type":"cond-expr","locations":[{"start":{"line":238,"column":53},"end":{"line":238,"column":58}},{"start":{"line":238,"column":58},"end":{"line":238,"column":null}}]}},"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,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"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],"11":[0,0],"12":[0,0],"13":[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":26,"column":24},"end":{"line":26,"column":50}},"1":{"start":{"line":673,"column":13},"end":{"line":673,"column":27}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":36},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":31},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":28},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":34},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":24},"end":{"line":8,"column":null}},"10":{"start":{"line":9,"column":25},"end":{"line":9,"column":null}},"11":{"start":{"line":10,"column":18},"end":{"line":10,"column":null}},"12":{"start":{"line":11,"column":28},"end":{"line":11,"column":null}},"13":{"start":{"line":12,"column":32},"end":{"line":12,"column":null}},"14":{"start":{"line":13,"column":23},"end":{"line":13,"column":null}},"15":{"start":{"line":14,"column":31},"end":{"line":14,"column":null}},"16":{"start":{"line":15,"column":24},"end":{"line":15,"column":null}},"17":{"start":{"line":16,"column":28},"end":{"line":16,"column":null}},"18":{"start":{"line":17,"column":34},"end":{"line":17,"column":null}},"19":{"start":{"line":18,"column":34},"end":{"line":18,"column":null}},"20":{"start":{"line":19,"column":32},"end":{"line":19,"column":null}},"21":{"start":{"line":28,"column":24},"end":{"line":28,"column":53}},"22":{"start":{"line":29,"column":21},"end":{"line":29,"column":52}},"23":{"start":{"line":30,"column":22},"end":{"line":30,"column":39}},"24":{"start":{"line":36,"column":8},"end":{"line":39,"column":32}},"25":{"start":{"line":44,"column":2},"end":{"line":49,"column":null}},"26":{"start":{"line":45,"column":4},"end":{"line":48,"column":null}},"27":{"start":{"line":46,"column":6},"end":{"line":46,"column":null}},"28":{"start":{"line":47,"column":6},"end":{"line":47,"column":null}},"29":{"start":{"line":673,"column":30},"end":{"line":705,"column":null}},"30":{"start":{"line":675,"column":29},"end":{"line":676,"column":null}},"31":{"start":{"line":680,"column":31},"end":{"line":681,"column":null}},"32":{"start":{"line":685,"column":32},"end":{"line":686,"column":null}},"33":{"start":{"line":690,"column":2},"end":{"line":704,"column":null}}},"fnMap":{"0":{"name":"BenefitsNavigatorOverview","decl":{"start":{"line":26,"column":24},"end":{"line":26,"column":50}},"loc":{"start":{"line":26,"column":55},"end":{"line":667,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":35,"column":6},"end":{"line":35,"column":7}},"loc":{"start":{"line":36,"column":8},"end":{"line":39,"column":32}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":44,"column":12},"end":{"line":44,"column":null}},"loc":{"start":{"line":44,"column":12},"end":{"line":49,"column":5}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":673,"column":30},"end":{"line":673,"column":37}},"loc":{"start":{"line":673,"column":47},"end":{"line":705,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":36,"column":8},"end":{"line":39,"column":32}},"type":"binary-expr","locations":[{"start":{"line":36,"column":8},"end":{"line":36,"column":35}},{"start":{"line":37,"column":8},"end":{"line":37,"column":33}},{"start":{"line":38,"column":8},"end":{"line":38,"column":41}},{"start":{"line":39,"column":8},"end":{"line":39,"column":32}}]},"1":{"loc":{"start":{"line":45,"column":4},"end":{"line":48,"column":null}},"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":48,"column":null}}]},"2":{"loc":{"start":{"line":46,"column":30},"end":{"line":46,"column":57}},"type":"binary-expr","locations":[{"start":{"line":46,"column":30},"end":{"line":46,"column":51}},{"start":{"line":46,"column":55},"end":{"line":46,"column":57}}]},"3":{"loc":{"start":{"line":58,"column":10},"end":{"line":58,"column":79}},"type":"cond-expr","locations":[{"start":{"line":58,"column":34},"end":{"line":58,"column":55}},{"start":{"line":58,"column":58},"end":{"line":58,"column":79}}]},"4":{"loc":{"start":{"line":70,"column":13},"end":{"line":72,"column":72}},"type":"cond-expr","locations":[{"start":{"line":71,"column":16},"end":{"line":71,"column":61}},{"start":{"line":72,"column":16},"end":{"line":72,"column":72}}]},"5":{"loc":{"start":{"line":77,"column":14},"end":{"line":79,"column":67}},"type":"cond-expr","locations":[{"start":{"line":78,"column":18},"end":{"line":78,"column":67}},{"start":{"line":79,"column":18},"end":{"line":79,"column":67}}]},"6":{"loc":{"start":{"line":89,"column":16},"end":{"line":91,"column":41}},"type":"cond-expr","locations":[{"start":{"line":90,"column":20},"end":{"line":90,"column":41}},{"start":{"line":91,"column":20},"end":{"line":91,"column":41}}]},"7":{"loc":{"start":{"line":99,"column":14},"end":{"line":101,"column":39}},"type":"cond-expr","locations":[{"start":{"line":100,"column":18},"end":{"line":100,"column":39}},{"start":{"line":101,"column":18},"end":{"line":101,"column":39}}]},"8":{"loc":{"start":{"line":109,"column":14},"end":{"line":109,"column":77}},"type":"cond-expr","locations":[{"start":{"line":109,"column":38},"end":{"line":109,"column":56}},{"start":{"line":109,"column":59},"end":{"line":109,"column":77}}]},"9":{"loc":{"start":{"line":114,"column":21},"end":{"line":114,"column":null}},"type":"cond-expr","locations":[{"start":{"line":114,"column":45},"end":{"line":114,"column":53}},{"start":{"line":114,"column":53},"end":{"line":114,"column":null}}]},"10":{"loc":{"start":{"line":120,"column":14},"end":{"line":122,"column":null}},"type":"cond-expr","locations":[{"start":{"line":121,"column":18},"end":{"line":121,"column":null}},{"start":{"line":122,"column":18},"end":{"line":122,"column":null}}]},"11":{"loc":{"start":{"line":136,"column":14},"end":{"line":138,"column":67}},"type":"cond-expr","locations":[{"start":{"line":137,"column":18},"end":{"line":137,"column":67}},{"start":{"line":138,"column":18},"end":{"line":138,"column":67}}]},"12":{"loc":{"start":{"line":156,"column":16},"end":{"line":158,"column":41}},"type":"cond-expr","locations":[{"start":{"line":157,"column":20},"end":{"line":157,"column":41}},{"start":{"line":158,"column":20},"end":{"line":158,"column":41}}]},"13":{"loc":{"start":{"line":165,"column":14},"end":{"line":165,"column":77}},"type":"cond-expr","locations":[{"start":{"line":165,"column":38},"end":{"line":165,"column":56}},{"start":{"line":165,"column":59},"end":{"line":165,"column":77}}]},"14":{"loc":{"start":{"line":171,"column":14},"end":{"line":173,"column":67}},"type":"cond-expr","locations":[{"start":{"line":172,"column":18},"end":{"line":172,"column":67}},{"start":{"line":173,"column":18},"end":{"line":173,"column":67}}]},"15":{"loc":{"start":{"line":183,"column":14},"end":{"line":185,"column":58}},"type":"cond-expr","locations":[{"start":{"line":184,"column":18},"end":{"line":184,"column":58}},{"start":{"line":185,"column":18},"end":{"line":185,"column":58}}]},"16":{"loc":{"start":{"line":196,"column":16},"end":{"line":198,"column":41}},"type":"cond-expr","locations":[{"start":{"line":197,"column":20},"end":{"line":197,"column":41}},{"start":{"line":198,"column":20},"end":{"line":198,"column":41}}]},"17":{"loc":{"start":{"line":205,"column":14},"end":{"line":205,"column":77}},"type":"cond-expr","locations":[{"start":{"line":205,"column":38},"end":{"line":205,"column":56}},{"start":{"line":205,"column":59},"end":{"line":205,"column":77}}]},"18":{"loc":{"start":{"line":212,"column":14},"end":{"line":214,"column":67}},"type":"cond-expr","locations":[{"start":{"line":213,"column":18},"end":{"line":213,"column":67}},{"start":{"line":214,"column":18},"end":{"line":214,"column":67}}]},"19":{"loc":{"start":{"line":224,"column":14},"end":{"line":226,"column":58}},"type":"cond-expr","locations":[{"start":{"line":225,"column":18},"end":{"line":225,"column":58}},{"start":{"line":226,"column":18},"end":{"line":226,"column":58}}]},"20":{"loc":{"start":{"line":242,"column":20},"end":{"line":244,"column":42}},"type":"cond-expr","locations":[{"start":{"line":243,"column":24},"end":{"line":243,"column":42}},{"start":{"line":244,"column":24},"end":{"line":244,"column":42}}]},"21":{"loc":{"start":{"line":253,"column":22},"end":{"line":255,"column":59}},"type":"cond-expr","locations":[{"start":{"line":254,"column":26},"end":{"line":254,"column":59}},{"start":{"line":255,"column":26},"end":{"line":255,"column":59}}]},"22":{"loc":{"start":{"line":260,"column":26},"end":{"line":262,"column":70}},"type":"cond-expr","locations":[{"start":{"line":261,"column":30},"end":{"line":261,"column":70}},{"start":{"line":262,"column":30},"end":{"line":262,"column":70}}]},"23":{"loc":{"start":{"line":278,"column":24},"end":{"line":280,"column":73}},"type":"cond-expr","locations":[{"start":{"line":279,"column":28},"end":{"line":279,"column":73}},{"start":{"line":280,"column":28},"end":{"line":280,"column":73}}]},"24":{"loc":{"start":{"line":283,"column":24},"end":{"line":285,"column":68}},"type":"cond-expr","locations":[{"start":{"line":284,"column":28},"end":{"line":284,"column":68}},{"start":{"line":285,"column":28},"end":{"line":285,"column":68}}]},"25":{"loc":{"start":{"line":299,"column":17},"end":{"line":302,"column":28}},"type":"cond-expr","locations":[{"start":{"line":300,"column":20},"end":{"line":300,"column":80}},{"start":{"line":301,"column":20},"end":{"line":302,"column":28}}]},"26":{"loc":{"start":{"line":311,"column":20},"end":{"line":313,"column":54}},"type":"cond-expr","locations":[{"start":{"line":312,"column":24},"end":{"line":312,"column":54}},{"start":{"line":313,"column":24},"end":{"line":313,"column":54}}]},"27":{"loc":{"start":{"line":316,"column":20},"end":{"line":318,"column":54}},"type":"cond-expr","locations":[{"start":{"line":317,"column":24},"end":{"line":317,"column":54}},{"start":{"line":318,"column":24},"end":{"line":318,"column":54}}]},"28":{"loc":{"start":{"line":321,"column":20},"end":{"line":323,"column":54}},"type":"cond-expr","locations":[{"start":{"line":322,"column":24},"end":{"line":322,"column":54}},{"start":{"line":323,"column":24},"end":{"line":323,"column":54}}]},"29":{"loc":{"start":{"line":329,"column":20},"end":{"line":333,"column":null}},"type":"cond-expr","locations":[{"start":{"line":330,"column":24},"end":{"line":331,"column":null}},{"start":{"line":332,"column":24},"end":{"line":333,"column":null}}]},"30":{"loc":{"start":{"line":336,"column":20},"end":{"line":340,"column":32}},"type":"cond-expr","locations":[{"start":{"line":337,"column":24},"end":{"line":338,"column":32}},{"start":{"line":339,"column":24},"end":{"line":340,"column":32}}]},"31":{"loc":{"start":{"line":343,"column":20},"end":{"line":345,"column":57}},"type":"cond-expr","locations":[{"start":{"line":344,"column":24},"end":{"line":344,"column":57}},{"start":{"line":345,"column":24},"end":{"line":345,"column":57}}]},"32":{"loc":{"start":{"line":348,"column":20},"end":{"line":350,"column":70}},"type":"cond-expr","locations":[{"start":{"line":349,"column":24},"end":{"line":349,"column":70}},{"start":{"line":350,"column":24},"end":{"line":350,"column":70}}]},"33":{"loc":{"start":{"line":353,"column":20},"end":{"line":357,"column":32}},"type":"cond-expr","locations":[{"start":{"line":354,"column":24},"end":{"line":355,"column":32}},{"start":{"line":356,"column":24},"end":{"line":357,"column":32}}]},"34":{"loc":{"start":{"line":367,"column":15},"end":{"line":369,"column":78}},"type":"cond-expr","locations":[{"start":{"line":368,"column":18},"end":{"line":368,"column":78}},{"start":{"line":369,"column":18},"end":{"line":369,"column":78}}]},"35":{"loc":{"start":{"line":374,"column":15},"end":{"line":376,"column":78}},"type":"cond-expr","locations":[{"start":{"line":375,"column":18},"end":{"line":375,"column":78}},{"start":{"line":376,"column":18},"end":{"line":376,"column":78}}]},"36":{"loc":{"start":{"line":379,"column":15},"end":{"line":381,"column":78}},"type":"cond-expr","locations":[{"start":{"line":380,"column":18},"end":{"line":380,"column":78}},{"start":{"line":381,"column":18},"end":{"line":381,"column":78}}]},"37":{"loc":{"start":{"line":388,"column":17},"end":{"line":392,"column":39}},"type":"cond-expr","locations":[{"start":{"line":389,"column":20},"end":{"line":390,"column":39}},{"start":{"line":391,"column":20},"end":{"line":392,"column":39}}]},"38":{"loc":{"start":{"line":395,"column":17},"end":{"line":399,"column":39}},"type":"cond-expr","locations":[{"start":{"line":396,"column":20},"end":{"line":397,"column":39}},{"start":{"line":398,"column":20},"end":{"line":399,"column":39}}]},"39":{"loc":{"start":{"line":402,"column":17},"end":{"line":406,"column":39}},"type":"cond-expr","locations":[{"start":{"line":403,"column":20},"end":{"line":404,"column":39}},{"start":{"line":405,"column":20},"end":{"line":406,"column":39}}]},"40":{"loc":{"start":{"line":414,"column":17},"end":{"line":417,"column":28}},"type":"cond-expr","locations":[{"start":{"line":415,"column":20},"end":{"line":415,"column":80}},{"start":{"line":416,"column":20},"end":{"line":417,"column":28}}]},"41":{"loc":{"start":{"line":426,"column":22},"end":{"line":430,"column":50}},"type":"cond-expr","locations":[{"start":{"line":427,"column":26},"end":{"line":428,"column":50}},{"start":{"line":429,"column":26},"end":{"line":430,"column":50}}]},"42":{"loc":{"start":{"line":433,"column":22},"end":{"line":437,"column":45}},"type":"cond-expr","locations":[{"start":{"line":434,"column":26},"end":{"line":435,"column":45}},{"start":{"line":436,"column":26},"end":{"line":437,"column":45}}]},"43":{"loc":{"start":{"line":456,"column":24},"end":{"line":460,"column":35}},"type":"cond-expr","locations":[{"start":{"line":457,"column":28},"end":{"line":458,"column":35}},{"start":{"line":459,"column":28},"end":{"line":460,"column":35}}]},"44":{"loc":{"start":{"line":470,"column":22},"end":{"line":474,"column":48}},"type":"cond-expr","locations":[{"start":{"line":471,"column":26},"end":{"line":472,"column":48}},{"start":{"line":473,"column":26},"end":{"line":474,"column":48}}]},"45":{"loc":{"start":{"line":479,"column":26},"end":{"line":483,"column":65}},"type":"cond-expr","locations":[{"start":{"line":480,"column":30},"end":{"line":481,"column":65}},{"start":{"line":482,"column":30},"end":{"line":483,"column":65}}]},"46":{"loc":{"start":{"line":494,"column":22},"end":{"line":498,"column":50}},"type":"cond-expr","locations":[{"start":{"line":495,"column":26},"end":{"line":496,"column":50}},{"start":{"line":497,"column":26},"end":{"line":498,"column":50}}]},"47":{"loc":{"start":{"line":501,"column":22},"end":{"line":505,"column":45}},"type":"cond-expr","locations":[{"start":{"line":502,"column":26},"end":{"line":503,"column":45}},{"start":{"line":504,"column":26},"end":{"line":505,"column":45}}]},"48":{"loc":{"start":{"line":523,"column":24},"end":{"line":527,"column":35}},"type":"cond-expr","locations":[{"start":{"line":524,"column":28},"end":{"line":525,"column":35}},{"start":{"line":526,"column":28},"end":{"line":527,"column":35}}]},"49":{"loc":{"start":{"line":536,"column":22},"end":{"line":540,"column":48}},"type":"cond-expr","locations":[{"start":{"line":537,"column":26},"end":{"line":538,"column":48}},{"start":{"line":539,"column":26},"end":{"line":540,"column":48}}]},"50":{"loc":{"start":{"line":545,"column":26},"end":{"line":549,"column":65}},"type":"cond-expr","locations":[{"start":{"line":546,"column":30},"end":{"line":547,"column":65}},{"start":{"line":548,"column":30},"end":{"line":549,"column":65}}]},"51":{"loc":{"start":{"line":560,"column":22},"end":{"line":564,"column":50}},"type":"cond-expr","locations":[{"start":{"line":561,"column":26},"end":{"line":562,"column":50}},{"start":{"line":563,"column":26},"end":{"line":564,"column":50}}]},"52":{"loc":{"start":{"line":567,"column":22},"end":{"line":571,"column":45}},"type":"cond-expr","locations":[{"start":{"line":568,"column":26},"end":{"line":569,"column":45}},{"start":{"line":570,"column":26},"end":{"line":571,"column":45}}]},"53":{"loc":{"start":{"line":589,"column":24},"end":{"line":593,"column":35}},"type":"cond-expr","locations":[{"start":{"line":590,"column":28},"end":{"line":591,"column":35}},{"start":{"line":592,"column":28},"end":{"line":593,"column":35}}]},"54":{"loc":{"start":{"line":602,"column":22},"end":{"line":606,"column":48}},"type":"cond-expr","locations":[{"start":{"line":603,"column":26},"end":{"line":604,"column":48}},{"start":{"line":605,"column":26},"end":{"line":606,"column":48}}]},"55":{"loc":{"start":{"line":611,"column":26},"end":{"line":615,"column":65}},"type":"cond-expr","locations":[{"start":{"line":612,"column":30},"end":{"line":613,"column":65}},{"start":{"line":614,"column":30},"end":{"line":615,"column":65}}]},"56":{"loc":{"start":{"line":625,"column":9},"end":{"line":654,"column":null}},"type":"cond-expr","locations":[{"start":{"line":626,"column":10},"end":{"line":654,"column":null}},{"start":{"line":654,"column":12},"end":{"line":654,"column":null}}]},"57":{"loc":{"start":{"line":631,"column":14},"end":{"line":641,"column":43}},"type":"cond-expr","locations":[{"start":{"line":632,"column":18},"end":{"line":636,"column":21}},{"start":{"line":637,"column":18},"end":{"line":641,"column":43}}]},"58":{"loc":{"start":{"line":649,"column":14},"end":{"line":651,"column":65}},"type":"cond-expr","locations":[{"start":{"line":650,"column":18},"end":{"line":650,"column":61}},{"start":{"line":651,"column":18},"end":{"line":651,"column":65}}]},"59":{"loc":{"start":{"line":693,"column":25},"end":{"line":693,"column":null}},"type":"binary-expr","locations":[{"start":{"line":693,"column":25},"end":{"line":693,"column":56}},{"start":{"line":693,"column":60},"end":{"line":693,"column":null}}]},"60":{"loc":{"start":{"line":703,"column":16},"end":{"line":703,"column":null}},"type":"cond-expr","locations":[{"start":{"line":703,"column":53},"end":{"line":703,"column":58}},{"start":{"line":703,"column":58},"end":{"line":703,"column":null}}]}},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":21,"25":1,"26":1,"27":0,"28":0,"29":1,"30":0,"31":0,"32":0,"33":0},"f":{"0":1,"1":21,"2":1,"3":0},"b":{"0":[21,20,19,18],"1":[0],"2":[0,0],"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],"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],"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],"56":[1,0],"57":[0,1],"58":[0,1],"59":[0,0],"60":[0,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/dashboard/[id].js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/dashboard/[id].js","statementMap":{"0":{"start":{"line":22,"column":24},"end":{"line":22,"column":46}},"1":{"start":{"line":167,"column":22},"end":{"line":167,"column":36}},"2":{"start":{"line":187,"column":13},"end":{"line":187,"column":27}},"3":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"4":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"5":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"6":{"start":{"line":4,"column":36},"end":{"line":4,"column":null}},"7":{"start":{"line":5,"column":31},"end":{"line":5,"column":null}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":null}},"9":{"start":{"line":7,"column":34},"end":{"line":7,"column":null}},"10":{"start":{"line":8,"column":27},"end":{"line":8,"column":null}},"11":{"start":{"line":9,"column":24},"end":{"line":9,"column":null}},"12":{"start":{"line":10,"column":28},"end":{"line":10,"column":null}},"13":{"start":{"line":11,"column":31},"end":{"line":11,"column":null}},"14":{"start":{"line":12,"column":34},"end":{"line":12,"column":null}},"15":{"start":{"line":13,"column":34},"end":{"line":13,"column":null}},"16":{"start":{"line":14,"column":27},"end":{"line":14,"column":null}},"17":{"start":{"line":15,"column":32},"end":{"line":15,"column":null}},"18":{"start":{"line":24,"column":21},"end":{"line":24,"column":47}},"19":{"start":{"line":25,"column":23},"end":{"line":25,"column":57}},"20":{"start":{"line":26,"column":24},"end":{"line":26,"column":53}},"21":{"start":{"line":29,"column":2},"end":{"line":34,"column":null}},"22":{"start":{"line":30,"column":4},"end":{"line":33,"column":null}},"23":{"start":{"line":31,"column":6},"end":{"line":31,"column":null}},"24":{"start":{"line":32,"column":6},"end":{"line":32,"column":null}},"25":{"start":{"line":169,"column":19},"end":{"line":170,"column":null}},"26":{"start":{"line":173,"column":16},"end":{"line":173,"column":null}},"27":{"start":{"line":175,"column":2},"end":{"line":175,"column":null}},"28":{"start":{"line":175,"column":23},"end":{"line":175,"column":null}},"29":{"start":{"line":177,"column":2},"end":{"line":180,"column":null}},"30":{"start":{"line":187,"column":30},"end":{"line":233,"column":null}},"31":{"start":{"line":189,"column":32},"end":{"line":190,"column":null}},"32":{"start":{"line":193,"column":32},"end":{"line":194,"column":null}},"33":{"start":{"line":197,"column":31},"end":{"line":198,"column":null}},"34":{"start":{"line":201,"column":16},"end":{"line":201,"column":50}},"35":{"start":{"line":203,"column":19},"end":{"line":209,"column":null}},"36":{"start":{"line":204,"column":4},"end":{"line":207,"column":null}},"37":{"start":{"line":212,"column":2},"end":{"line":216,"column":null}},"38":{"start":{"line":213,"column":4},"end":{"line":215,"column":null}},"39":{"start":{"line":219,"column":2},"end":{"line":232,"column":null}}},"fnMap":{"0":{"name":"MscaDashboardArticles","decl":{"start":{"line":22,"column":24},"end":{"line":22,"column":46}},"loc":{"start":{"line":22,"column":63},"end":{"line":160,"column":1}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":29,"column":12},"end":{"line":29,"column":null}},"loc":{"start":{"line":29,"column":12},"end":{"line":34,"column":5}}},"2":{"name":"getStaticPaths","decl":{"start":{"line":167,"column":22},"end":{"line":167,"column":36}},"loc":{"start":{"line":167,"column":22},"end":{"line":181,"column":null}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":175,"column":12},"end":{"line":175,"column":13}},"loc":{"start":{"line":175,"column":23},"end":{"line":175,"column":null}}},"4":{"name":"(anonymous_9)","decl":{"start":{"line":187,"column":30},"end":{"line":187,"column":37}},"loc":{"start":{"line":187,"column":55},"end":{"line":233,"column":null}}},"5":{"name":"(anonymous_10)","decl":{"start":{"line":203,"column":32},"end":{"line":203,"column":33}},"loc":{"start":{"line":203,"column":33},"end":{"line":209,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":4},"end":{"line":33,"column":null}},"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":33,"column":null}}]},"1":{"loc":{"start":{"line":31,"column":30},"end":{"line":31,"column":57}},"type":"binary-expr","locations":[{"start":{"line":31,"column":30},"end":{"line":31,"column":51}},{"start":{"line":31,"column":55},"end":{"line":31,"column":57}}]},"2":{"loc":{"start":{"line":43,"column":10},"end":{"line":43,"column":79}},"type":"cond-expr","locations":[{"start":{"line":43,"column":34},"end":{"line":43,"column":55}},{"start":{"line":43,"column":58},"end":{"line":43,"column":79}}]},"3":{"loc":{"start":{"line":63,"column":16},"end":{"line":63,"column":79}},"type":"cond-expr","locations":[{"start":{"line":63,"column":40},"end":{"line":63,"column":58}},{"start":{"line":63,"column":61},"end":{"line":63,"column":79}}]},"4":{"loc":{"start":{"line":76,"column":16},"end":{"line":78,"column":50}},"type":"cond-expr","locations":[{"start":{"line":77,"column":20},"end":{"line":77,"column":50}},{"start":{"line":78,"column":20},"end":{"line":78,"column":50}}]},"5":{"loc":{"start":{"line":81,"column":16},"end":{"line":83,"column":60}},"type":"cond-expr","locations":[{"start":{"line":82,"column":20},"end":{"line":82,"column":60}},{"start":{"line":83,"column":20},"end":{"line":83,"column":60}}]},"6":{"loc":{"start":{"line":112,"column":9},"end":{"line":145,"column":null}},"type":"cond-expr","locations":[{"start":{"line":113,"column":10},"end":{"line":145,"column":null}},{"start":{"line":145,"column":12},"end":{"line":145,"column":null}}]},"7":{"loc":{"start":{"line":120,"column":14},"end":{"line":130,"column":46}},"type":"cond-expr","locations":[{"start":{"line":121,"column":18},"end":{"line":125,"column":21}},{"start":{"line":126,"column":18},"end":{"line":130,"column":46}}]},"8":{"loc":{"start":{"line":140,"column":14},"end":{"line":142,"column":77}},"type":"cond-expr","locations":[{"start":{"line":141,"column":18},"end":{"line":141,"column":73}},{"start":{"line":142,"column":18},"end":{"line":142,"column":77}}]},"9":{"loc":{"start":{"line":205,"column":7},"end":{"line":205,"column":61}},"type":"cond-expr","locations":[{"start":{"line":205,"column":25},"end":{"line":205,"column":42}},{"start":{"line":205,"column":45},"end":{"line":205,"column":61}}]},"10":{"loc":{"start":{"line":212,"column":2},"end":{"line":216,"column":null}},"type":"if","locations":[{"start":{"line":212,"column":2},"end":{"line":216,"column":null}}]},"11":{"loc":{"start":{"line":212,"column":6},"end":{"line":212,"column":35}},"type":"binary-expr","locations":[{"start":{"line":212,"column":6},"end":{"line":212,"column":19}},{"start":{"line":212,"column":19},"end":{"line":212,"column":35}}]},"12":{"loc":{"start":{"line":227,"column":25},"end":{"line":227,"column":null}},"type":"binary-expr","locations":[{"start":{"line":227,"column":25},"end":{"line":227,"column":56}},{"start":{"line":227,"column":60},"end":{"line":227,"column":null}}]},"13":{"loc":{"start":{"line":231,"column":16},"end":{"line":231,"column":null}},"type":"cond-expr","locations":[{"start":{"line":231,"column":53},"end":{"line":231,"column":58}},{"start":{"line":231,"column":58},"end":{"line":231,"column":null}}]}},"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,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"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],"11":[0,0],"12":[0,0],"13":[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":25,"column":24},"end":{"line":25,"column":38}},"1":{"start":{"line":396,"column":13},"end":{"line":396,"column":27}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":26},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":31},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":28},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":34},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":24},"end":{"line":8,"column":null}},"10":{"start":{"line":9,"column":18},"end":{"line":9,"column":null}},"11":{"start":{"line":10,"column":28},"end":{"line":10,"column":null}},"12":{"start":{"line":11,"column":31},"end":{"line":11,"column":null}},"13":{"start":{"line":13,"column":32},"end":{"line":13,"column":null}},"14":{"start":{"line":14,"column":24},"end":{"line":14,"column":null}},"15":{"start":{"line":15,"column":28},"end":{"line":15,"column":null}},"16":{"start":{"line":16,"column":34},"end":{"line":16,"column":null}},"17":{"start":{"line":17,"column":27},"end":{"line":17,"column":null}},"18":{"start":{"line":18,"column":34},"end":{"line":18,"column":null}},"19":{"start":{"line":27,"column":19},"end":{"line":27,"column":41}},"20":{"start":{"line":28,"column":24},"end":{"line":28,"column":53}},"21":{"start":{"line":33,"column":6},"end":{"line":36,"column":30}},"22":{"start":{"line":40,"column":2},"end":{"line":45,"column":null}},"23":{"start":{"line":41,"column":4},"end":{"line":44,"column":null}},"24":{"start":{"line":42,"column":6},"end":{"line":42,"column":null}},"25":{"start":{"line":43,"column":6},"end":{"line":43,"column":null}},"26":{"start":{"line":396,"column":30},"end":{"line":428,"column":null}},"27":{"start":{"line":398,"column":29},"end":{"line":399,"column":null}},"28":{"start":{"line":403,"column":31},"end":{"line":404,"column":null}},"29":{"start":{"line":408,"column":32},"end":{"line":409,"column":null}},"30":{"start":{"line":413,"column":2},"end":{"line":427,"column":null}}},"fnMap":{"0":{"name":"MscaDashboard","decl":{"start":{"line":25,"column":24},"end":{"line":25,"column":38}},"loc":{"start":{"line":25,"column":43},"end":{"line":390,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":32,"column":4},"end":{"line":32,"column":5}},"loc":{"start":{"line":33,"column":6},"end":{"line":36,"column":30}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":40,"column":12},"end":{"line":40,"column":null}},"loc":{"start":{"line":40,"column":12},"end":{"line":45,"column":5}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":396,"column":30},"end":{"line":396,"column":37}},"loc":{"start":{"line":396,"column":47},"end":{"line":428,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":33,"column":6},"end":{"line":36,"column":30}},"type":"binary-expr","locations":[{"start":{"line":33,"column":6},"end":{"line":33,"column":33}},{"start":{"line":34,"column":6},"end":{"line":34,"column":31}},{"start":{"line":35,"column":6},"end":{"line":35,"column":39}},{"start":{"line":36,"column":6},"end":{"line":36,"column":30}}]},"1":{"loc":{"start":{"line":41,"column":4},"end":{"line":44,"column":null}},"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":44,"column":null}}]},"2":{"loc":{"start":{"line":42,"column":30},"end":{"line":42,"column":57}},"type":"binary-expr","locations":[{"start":{"line":42,"column":30},"end":{"line":42,"column":51}},{"start":{"line":42,"column":55},"end":{"line":42,"column":57}}]},"3":{"loc":{"start":{"line":54,"column":10},"end":{"line":54,"column":79}},"type":"cond-expr","locations":[{"start":{"line":54,"column":34},"end":{"line":54,"column":55}},{"start":{"line":54,"column":58},"end":{"line":54,"column":79}}]},"4":{"loc":{"start":{"line":67,"column":13},"end":{"line":69,"column":72}},"type":"cond-expr","locations":[{"start":{"line":68,"column":16},"end":{"line":68,"column":61}},{"start":{"line":69,"column":16},"end":{"line":69,"column":72}}]},"5":{"loc":{"start":{"line":74,"column":14},"end":{"line":76,"column":67}},"type":"cond-expr","locations":[{"start":{"line":75,"column":18},"end":{"line":75,"column":67}},{"start":{"line":76,"column":18},"end":{"line":76,"column":67}}]},"6":{"loc":{"start":{"line":86,"column":16},"end":{"line":88,"column":41}},"type":"cond-expr","locations":[{"start":{"line":87,"column":20},"end":{"line":87,"column":41}},{"start":{"line":88,"column":20},"end":{"line":88,"column":41}}]},"7":{"loc":{"start":{"line":96,"column":14},"end":{"line":98,"column":39}},"type":"cond-expr","locations":[{"start":{"line":97,"column":18},"end":{"line":97,"column":39}},{"start":{"line":98,"column":18},"end":{"line":98,"column":39}}]},"8":{"loc":{"start":{"line":106,"column":14},"end":{"line":106,"column":77}},"type":"cond-expr","locations":[{"start":{"line":106,"column":38},"end":{"line":106,"column":56}},{"start":{"line":106,"column":59},"end":{"line":106,"column":77}}]},"9":{"loc":{"start":{"line":111,"column":21},"end":{"line":111,"column":null}},"type":"cond-expr","locations":[{"start":{"line":111,"column":45},"end":{"line":111,"column":53}},{"start":{"line":111,"column":53},"end":{"line":111,"column":null}}]},"10":{"loc":{"start":{"line":117,"column":14},"end":{"line":119,"column":null}},"type":"cond-expr","locations":[{"start":{"line":118,"column":18},"end":{"line":118,"column":null}},{"start":{"line":119,"column":18},"end":{"line":119,"column":null}}]},"11":{"loc":{"start":{"line":133,"column":14},"end":{"line":135,"column":67}},"type":"cond-expr","locations":[{"start":{"line":134,"column":18},"end":{"line":134,"column":67}},{"start":{"line":135,"column":18},"end":{"line":135,"column":67}}]},"12":{"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}}]},"13":{"loc":{"start":{"line":162,"column":14},"end":{"line":162,"column":77}},"type":"cond-expr","locations":[{"start":{"line":162,"column":38},"end":{"line":162,"column":56}},{"start":{"line":162,"column":59},"end":{"line":162,"column":77}}]},"14":{"loc":{"start":{"line":168,"column":14},"end":{"line":170,"column":78}},"type":"cond-expr","locations":[{"start":{"line":169,"column":18},"end":{"line":169,"column":78}},{"start":{"line":170,"column":18},"end":{"line":170,"column":78}}]},"15":{"loc":{"start":{"line":180,"column":14},"end":{"line":180,"column":77}},"type":"cond-expr","locations":[{"start":{"line":180,"column":38},"end":{"line":180,"column":56}},{"start":{"line":180,"column":59},"end":{"line":180,"column":77}}]},"16":{"loc":{"start":{"line":191,"column":16},"end":{"line":193,"column":41}},"type":"cond-expr","locations":[{"start":{"line":192,"column":20},"end":{"line":192,"column":41}},{"start":{"line":193,"column":20},"end":{"line":193,"column":41}}]},"17":{"loc":{"start":{"line":200,"column":14},"end":{"line":200,"column":77}},"type":"cond-expr","locations":[{"start":{"line":200,"column":38},"end":{"line":200,"column":56}},{"start":{"line":200,"column":59},"end":{"line":200,"column":77}}]},"18":{"loc":{"start":{"line":207,"column":14},"end":{"line":209,"column":78}},"type":"cond-expr","locations":[{"start":{"line":208,"column":18},"end":{"line":208,"column":78}},{"start":{"line":209,"column":18},"end":{"line":209,"column":78}}]},"19":{"loc":{"start":{"line":219,"column":14},"end":{"line":219,"column":77}},"type":"cond-expr","locations":[{"start":{"line":219,"column":38},"end":{"line":219,"column":56}},{"start":{"line":219,"column":59},"end":{"line":219,"column":77}}]},"20":{"loc":{"start":{"line":235,"column":20},"end":{"line":237,"column":42}},"type":"cond-expr","locations":[{"start":{"line":236,"column":24},"end":{"line":236,"column":42}},{"start":{"line":237,"column":24},"end":{"line":237,"column":42}}]},"21":{"loc":{"start":{"line":248,"column":24},"end":{"line":250,"column":73}},"type":"cond-expr","locations":[{"start":{"line":249,"column":28},"end":{"line":249,"column":73}},{"start":{"line":250,"column":28},"end":{"line":250,"column":73}}]},"22":{"loc":{"start":{"line":253,"column":24},"end":{"line":255,"column":null}},"type":"binary-expr","locations":[{"start":{"line":253,"column":25},"end":{"line":255,"column":67}},{"start":{"line":255,"column":73},"end":{"line":255,"column":null}}]},"23":{"loc":{"start":{"line":253,"column":25},"end":{"line":255,"column":67}},"type":"cond-expr","locations":[{"start":{"line":254,"column":28},"end":{"line":254,"column":68}},{"start":{"line":255,"column":28},"end":{"line":255,"column":67}}]},"24":{"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}}]},"25":{"loc":{"start":{"line":280,"column":20},"end":{"line":282,"column":54}},"type":"cond-expr","locations":[{"start":{"line":281,"column":24},"end":{"line":281,"column":54}},{"start":{"line":282,"column":24},"end":{"line":282,"column":54}}]},"26":{"loc":{"start":{"line":285,"column":20},"end":{"line":287,"column":54}},"type":"cond-expr","locations":[{"start":{"line":286,"column":24},"end":{"line":286,"column":54}},{"start":{"line":287,"column":24},"end":{"line":287,"column":54}}]},"27":{"loc":{"start":{"line":290,"column":20},"end":{"line":292,"column":54}},"type":"cond-expr","locations":[{"start":{"line":291,"column":24},"end":{"line":291,"column":54}},{"start":{"line":292,"column":24},"end":{"line":292,"column":54}}]},"28":{"loc":{"start":{"line":298,"column":20},"end":{"line":302,"column":32}},"type":"cond-expr","locations":[{"start":{"line":299,"column":24},"end":{"line":300,"column":32}},{"start":{"line":301,"column":24},"end":{"line":302,"column":32}}]},"29":{"loc":{"start":{"line":305,"column":20},"end":{"line":309,"column":32}},"type":"cond-expr","locations":[{"start":{"line":306,"column":24},"end":{"line":307,"column":32}},{"start":{"line":308,"column":24},"end":{"line":309,"column":32}}]},"30":{"loc":{"start":{"line":312,"column":20},"end":{"line":314,"column":57}},"type":"cond-expr","locations":[{"start":{"line":313,"column":24},"end":{"line":313,"column":57}},{"start":{"line":314,"column":24},"end":{"line":314,"column":57}}]},"31":{"loc":{"start":{"line":317,"column":20},"end":{"line":319,"column":70}},"type":"cond-expr","locations":[{"start":{"line":318,"column":24},"end":{"line":318,"column":70}},{"start":{"line":319,"column":24},"end":{"line":319,"column":70}}]},"32":{"loc":{"start":{"line":322,"column":20},"end":{"line":326,"column":32}},"type":"cond-expr","locations":[{"start":{"line":323,"column":24},"end":{"line":324,"column":32}},{"start":{"line":325,"column":24},"end":{"line":326,"column":32}}]},"33":{"loc":{"start":{"line":344,"column":9},"end":{"line":375,"column":null}},"type":"cond-expr","locations":[{"start":{"line":345,"column":10},"end":{"line":375,"column":null}},{"start":{"line":375,"column":12},"end":{"line":375,"column":null}}]},"34":{"loc":{"start":{"line":351,"column":14},"end":{"line":361,"column":43}},"type":"cond-expr","locations":[{"start":{"line":352,"column":18},"end":{"line":356,"column":21}},{"start":{"line":357,"column":18},"end":{"line":361,"column":43}}]},"35":{"loc":{"start":{"line":370,"column":14},"end":{"line":372,"column":65}},"type":"cond-expr","locations":[{"start":{"line":371,"column":18},"end":{"line":371,"column":61}},{"start":{"line":372,"column":18},"end":{"line":372,"column":65}}]},"36":{"loc":{"start":{"line":416,"column":25},"end":{"line":416,"column":null}},"type":"binary-expr","locations":[{"start":{"line":416,"column":25},"end":{"line":416,"column":56}},{"start":{"line":416,"column":60},"end":{"line":416,"column":null}}]},"37":{"loc":{"start":{"line":426,"column":16},"end":{"line":426,"column":null}},"type":"cond-expr","locations":[{"start":{"line":426,"column":53},"end":{"line":426,"column":58}},{"start":{"line":426,"column":58},"end":{"line":426,"column":null}}]}},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":21,"22":1,"23":1,"24":0,"25":0,"26":1,"27":0,"28":0,"29":0,"30":0},"f":{"0":1,"1":21,"2":1,"3":0},"b":{"0":[21,20,19,18],"1":[0],"2":[0,0],"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":[1,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":[1,0],"34":[0,1],"35":[0,1],"36":[0,0],"37":[0,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/digital-standards-playbook/[id].js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/digital-standards-playbook/[id].js","statementMap":{"0":{"start":{"line":22,"column":24},"end":{"line":22,"column":49}},"1":{"start":{"line":168,"column":22},"end":{"line":168,"column":36}},"2":{"start":{"line":189,"column":13},"end":{"line":189,"column":27}},"3":{"start":{"line":1,"column":39},"end":{"line":1,"column":null}},"4":{"start":{"line":2,"column":31},"end":{"line":2,"column":null}},"5":{"start":{"line":3,"column":21},"end":{"line":3,"column":null}},"6":{"start":{"line":4,"column":23},"end":{"line":4,"column":null}},"7":{"start":{"line":5,"column":36},"end":{"line":5,"column":null}},"8":{"start":{"line":6,"column":31},"end":{"line":6,"column":null}},"9":{"start":{"line":7,"column":32},"end":{"line":7,"column":null}},"10":{"start":{"line":8,"column":34},"end":{"line":8,"column":null}},"11":{"start":{"line":9,"column":27},"end":{"line":9,"column":null}},"12":{"start":{"line":10,"column":24},"end":{"line":10,"column":null}},"13":{"start":{"line":11,"column":28},"end":{"line":11,"column":null}},"14":{"start":{"line":12,"column":31},"end":{"line":12,"column":null}},"15":{"start":{"line":13,"column":34},"end":{"line":13,"column":null}},"16":{"start":{"line":14,"column":27},"end":{"line":14,"column":null}},"17":{"start":{"line":15,"column":32},"end":{"line":15,"column":null}},"18":{"start":{"line":24,"column":16},"end":{"line":24,"column":42}},"19":{"start":{"line":25,"column":21},"end":{"line":25,"column":47}},"20":{"start":{"line":26,"column":24},"end":{"line":26,"column":53}},"21":{"start":{"line":27,"column":23},"end":{"line":27,"column":57}},"22":{"start":{"line":30,"column":2},"end":{"line":35,"column":null}},"23":{"start":{"line":31,"column":4},"end":{"line":34,"column":null}},"24":{"start":{"line":32,"column":6},"end":{"line":32,"column":null}},"25":{"start":{"line":33,"column":6},"end":{"line":33,"column":null}},"26":{"start":{"line":170,"column":19},"end":{"line":171,"column":null}},"27":{"start":{"line":174,"column":16},"end":{"line":174,"column":null}},"28":{"start":{"line":177,"column":2},"end":{"line":177,"column":null}},"29":{"start":{"line":177,"column":23},"end":{"line":177,"column":null}},"30":{"start":{"line":179,"column":2},"end":{"line":182,"column":null}},"31":{"start":{"line":189,"column":30},"end":{"line":235,"column":null}},"32":{"start":{"line":191,"column":32},"end":{"line":192,"column":null}},"33":{"start":{"line":195,"column":32},"end":{"line":196,"column":null}},"34":{"start":{"line":199,"column":31},"end":{"line":200,"column":null}},"35":{"start":{"line":203,"column":16},"end":{"line":203,"column":50}},"36":{"start":{"line":205,"column":19},"end":{"line":211,"column":null}},"37":{"start":{"line":206,"column":4},"end":{"line":209,"column":null}},"38":{"start":{"line":214,"column":2},"end":{"line":218,"column":null}},"39":{"start":{"line":215,"column":4},"end":{"line":217,"column":null}},"40":{"start":{"line":221,"column":2},"end":{"line":234,"column":null}}},"fnMap":{"0":{"name":"DigitalStandardsArticles","decl":{"start":{"line":22,"column":24},"end":{"line":22,"column":49}},"loc":{"start":{"line":22,"column":66},"end":{"line":161,"column":1}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":30,"column":12},"end":{"line":30,"column":null}},"loc":{"start":{"line":30,"column":12},"end":{"line":35,"column":5}}},"2":{"name":"getStaticPaths","decl":{"start":{"line":168,"column":22},"end":{"line":168,"column":36}},"loc":{"start":{"line":168,"column":22},"end":{"line":183,"column":null}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":177,"column":12},"end":{"line":177,"column":13}},"loc":{"start":{"line":177,"column":23},"end":{"line":177,"column":null}}},"4":{"name":"(anonymous_9)","decl":{"start":{"line":189,"column":30},"end":{"line":189,"column":37}},"loc":{"start":{"line":189,"column":55},"end":{"line":235,"column":null}}},"5":{"name":"(anonymous_10)","decl":{"start":{"line":205,"column":32},"end":{"line":205,"column":33}},"loc":{"start":{"line":205,"column":33},"end":{"line":211,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":31,"column":4},"end":{"line":34,"column":null}},"type":"if","locations":[{"start":{"line":31,"column":4},"end":{"line":34,"column":null}}]},"1":{"loc":{"start":{"line":32,"column":30},"end":{"line":32,"column":57}},"type":"binary-expr","locations":[{"start":{"line":32,"column":30},"end":{"line":32,"column":51}},{"start":{"line":32,"column":55},"end":{"line":32,"column":57}}]},"2":{"loc":{"start":{"line":44,"column":10},"end":{"line":44,"column":79}},"type":"cond-expr","locations":[{"start":{"line":44,"column":34},"end":{"line":44,"column":55}},{"start":{"line":44,"column":58},"end":{"line":44,"column":79}}]},"3":{"loc":{"start":{"line":64,"column":16},"end":{"line":64,"column":79}},"type":"cond-expr","locations":[{"start":{"line":64,"column":40},"end":{"line":64,"column":58}},{"start":{"line":64,"column":61},"end":{"line":64,"column":79}}]},"4":{"loc":{"start":{"line":77,"column":16},"end":{"line":79,"column":50}},"type":"cond-expr","locations":[{"start":{"line":78,"column":20},"end":{"line":78,"column":50}},{"start":{"line":79,"column":20},"end":{"line":79,"column":50}}]},"5":{"loc":{"start":{"line":82,"column":16},"end":{"line":84,"column":60}},"type":"cond-expr","locations":[{"start":{"line":83,"column":20},"end":{"line":83,"column":60}},{"start":{"line":84,"column":20},"end":{"line":84,"column":60}}]},"6":{"loc":{"start":{"line":113,"column":9},"end":{"line":146,"column":null}},"type":"cond-expr","locations":[{"start":{"line":114,"column":10},"end":{"line":146,"column":null}},{"start":{"line":146,"column":12},"end":{"line":146,"column":null}}]},"7":{"loc":{"start":{"line":121,"column":14},"end":{"line":131,"column":46}},"type":"cond-expr","locations":[{"start":{"line":122,"column":18},"end":{"line":126,"column":21}},{"start":{"line":127,"column":18},"end":{"line":131,"column":46}}]},"8":{"loc":{"start":{"line":141,"column":14},"end":{"line":143,"column":77}},"type":"cond-expr","locations":[{"start":{"line":142,"column":18},"end":{"line":142,"column":73}},{"start":{"line":143,"column":18},"end":{"line":143,"column":77}}]},"9":{"loc":{"start":{"line":207,"column":7},"end":{"line":207,"column":61}},"type":"cond-expr","locations":[{"start":{"line":207,"column":25},"end":{"line":207,"column":42}},{"start":{"line":207,"column":45},"end":{"line":207,"column":61}}]},"10":{"loc":{"start":{"line":214,"column":2},"end":{"line":218,"column":null}},"type":"if","locations":[{"start":{"line":214,"column":2},"end":{"line":218,"column":null}}]},"11":{"loc":{"start":{"line":214,"column":6},"end":{"line":214,"column":35}},"type":"binary-expr","locations":[{"start":{"line":214,"column":6},"end":{"line":214,"column":19}},{"start":{"line":214,"column":19},"end":{"line":214,"column":35}}]},"12":{"loc":{"start":{"line":229,"column":25},"end":{"line":229,"column":null}},"type":"binary-expr","locations":[{"start":{"line":229,"column":25},"end":{"line":229,"column":56}},{"start":{"line":229,"column":60},"end":{"line":229,"column":null}}]},"13":{"loc":{"start":{"line":233,"column":16},"end":{"line":233,"column":null}},"type":"cond-expr","locations":[{"start":{"line":233,"column":53},"end":{"line":233,"column":58}},{"start":{"line":233,"column":58},"end":{"line":233,"column":null}}]}},"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,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"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],"11":[0,0],"12":[0,0],"13":[0,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/digital-standards-playbook/index.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/digital-standards-playbook/index.js","statementMap":{"0":{"start":{"line":25,"column":24},"end":{"line":25,"column":53}},"1":{"start":{"line":478,"column":13},"end":{"line":478,"column":27}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":36},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":31},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":28},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":17},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":34},"end":{"line":8,"column":null}},"10":{"start":{"line":9,"column":24},"end":{"line":9,"column":null}},"11":{"start":{"line":10,"column":29},"end":{"line":10,"column":null}},"12":{"start":{"line":11,"column":18},"end":{"line":11,"column":null}},"13":{"start":{"line":12,"column":28},"end":{"line":12,"column":null}},"14":{"start":{"line":13,"column":31},"end":{"line":13,"column":null}},"15":{"start":{"line":14,"column":32},"end":{"line":14,"column":null}},"16":{"start":{"line":15,"column":24},"end":{"line":15,"column":null}},"17":{"start":{"line":16,"column":28},"end":{"line":16,"column":null}},"18":{"start":{"line":17,"column":34},"end":{"line":17,"column":null}},"19":{"start":{"line":18,"column":34},"end":{"line":18,"column":null}},"20":{"start":{"line":27,"column":21},"end":{"line":27,"column":52}},"21":{"start":{"line":28,"column":24},"end":{"line":28,"column":53}},"22":{"start":{"line":29,"column":24},"end":{"line":29,"column":53}},"23":{"start":{"line":34,"column":6},"end":{"line":37,"column":30}},"24":{"start":{"line":41,"column":2},"end":{"line":46,"column":null}},"25":{"start":{"line":42,"column":4},"end":{"line":45,"column":null}},"26":{"start":{"line":43,"column":6},"end":{"line":43,"column":null}},"27":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"28":{"start":{"line":478,"column":30},"end":{"line":510,"column":null}},"29":{"start":{"line":480,"column":29},"end":{"line":481,"column":null}},"30":{"start":{"line":485,"column":31},"end":{"line":486,"column":null}},"31":{"start":{"line":490,"column":32},"end":{"line":491,"column":null}},"32":{"start":{"line":495,"column":2},"end":{"line":509,"column":null}}},"fnMap":{"0":{"name":"DigitalStandardsPlaybookPage","decl":{"start":{"line":25,"column":24},"end":{"line":25,"column":53}},"loc":{"start":{"line":25,"column":58},"end":{"line":472,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":33,"column":4},"end":{"line":33,"column":5}},"loc":{"start":{"line":34,"column":6},"end":{"line":37,"column":30}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":41,"column":12},"end":{"line":41,"column":null}},"loc":{"start":{"line":41,"column":12},"end":{"line":46,"column":5}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":478,"column":30},"end":{"line":478,"column":37}},"loc":{"start":{"line":478,"column":47},"end":{"line":510,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":34,"column":6},"end":{"line":37,"column":30}},"type":"binary-expr","locations":[{"start":{"line":34,"column":6},"end":{"line":34,"column":33}},{"start":{"line":35,"column":6},"end":{"line":35,"column":31}},{"start":{"line":36,"column":6},"end":{"line":36,"column":39}},{"start":{"line":37,"column":6},"end":{"line":37,"column":30}}]},"1":{"loc":{"start":{"line":42,"column":4},"end":{"line":45,"column":null}},"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":45,"column":null}}]},"2":{"loc":{"start":{"line":43,"column":30},"end":{"line":43,"column":57}},"type":"binary-expr","locations":[{"start":{"line":43,"column":30},"end":{"line":43,"column":51}},{"start":{"line":43,"column":55},"end":{"line":43,"column":57}}]},"3":{"loc":{"start":{"line":55,"column":10},"end":{"line":55,"column":79}},"type":"cond-expr","locations":[{"start":{"line":55,"column":34},"end":{"line":55,"column":55}},{"start":{"line":55,"column":58},"end":{"line":55,"column":79}}]},"4":{"loc":{"start":{"line":58,"column":30},"end":{"line":58,"column":null}},"type":"binary-expr","locations":[{"start":{"line":58,"column":30},"end":{"line":58,"column":62}},{"start":{"line":58,"column":66},"end":{"line":58,"column":null}}]},"5":{"loc":{"start":{"line":69,"column":13},"end":{"line":71,"column":72}},"type":"cond-expr","locations":[{"start":{"line":70,"column":16},"end":{"line":70,"column":61}},{"start":{"line":71,"column":16},"end":{"line":71,"column":72}}]},"6":{"loc":{"start":{"line":76,"column":14},"end":{"line":78,"column":67}},"type":"cond-expr","locations":[{"start":{"line":77,"column":18},"end":{"line":77,"column":67}},{"start":{"line":78,"column":18},"end":{"line":78,"column":67}}]},"7":{"loc":{"start":{"line":88,"column":16},"end":{"line":90,"column":41}},"type":"cond-expr","locations":[{"start":{"line":89,"column":20},"end":{"line":89,"column":41}},{"start":{"line":90,"column":20},"end":{"line":90,"column":41}}]},"8":{"loc":{"start":{"line":98,"column":14},"end":{"line":100,"column":39}},"type":"cond-expr","locations":[{"start":{"line":99,"column":18},"end":{"line":99,"column":39}},{"start":{"line":100,"column":18},"end":{"line":100,"column":39}}]},"9":{"loc":{"start":{"line":108,"column":14},"end":{"line":108,"column":77}},"type":"cond-expr","locations":[{"start":{"line":108,"column":38},"end":{"line":108,"column":56}},{"start":{"line":108,"column":59},"end":{"line":108,"column":77}}]},"10":{"loc":{"start":{"line":113,"column":21},"end":{"line":113,"column":null}},"type":"cond-expr","locations":[{"start":{"line":113,"column":45},"end":{"line":113,"column":53}},{"start":{"line":113,"column":53},"end":{"line":113,"column":null}}]},"11":{"loc":{"start":{"line":119,"column":14},"end":{"line":121,"column":null}},"type":"cond-expr","locations":[{"start":{"line":120,"column":18},"end":{"line":120,"column":null}},{"start":{"line":121,"column":18},"end":{"line":121,"column":null}}]},"12":{"loc":{"start":{"line":135,"column":14},"end":{"line":137,"column":67}},"type":"cond-expr","locations":[{"start":{"line":136,"column":18},"end":{"line":136,"column":67}},{"start":{"line":137,"column":18},"end":{"line":137,"column":67}}]},"13":{"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}}]},"14":{"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}}]},"15":{"loc":{"start":{"line":170,"column":14},"end":{"line":172,"column":78}},"type":"cond-expr","locations":[{"start":{"line":171,"column":18},"end":{"line":171,"column":78}},{"start":{"line":172,"column":18},"end":{"line":172,"column":78}}]},"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}}]},"17":{"loc":{"start":{"line":193,"column":16},"end":{"line":195,"column":41}},"type":"cond-expr","locations":[{"start":{"line":194,"column":20},"end":{"line":194,"column":41}},{"start":{"line":195,"column":20},"end":{"line":195,"column":41}}]},"18":{"loc":{"start":{"line":202,"column":14},"end":{"line":202,"column":77}},"type":"cond-expr","locations":[{"start":{"line":202,"column":38},"end":{"line":202,"column":56}},{"start":{"line":202,"column":59},"end":{"line":202,"column":77}}]},"19":{"loc":{"start":{"line":209,"column":14},"end":{"line":211,"column":78}},"type":"cond-expr","locations":[{"start":{"line":210,"column":18},"end":{"line":210,"column":78}},{"start":{"line":211,"column":18},"end":{"line":211,"column":78}}]},"20":{"loc":{"start":{"line":221,"column":14},"end":{"line":221,"column":77}},"type":"cond-expr","locations":[{"start":{"line":221,"column":38},"end":{"line":221,"column":56}},{"start":{"line":221,"column":59},"end":{"line":221,"column":77}}]},"21":{"loc":{"start":{"line":238,"column":20},"end":{"line":240,"column":42}},"type":"cond-expr","locations":[{"start":{"line":239,"column":24},"end":{"line":239,"column":42}},{"start":{"line":240,"column":24},"end":{"line":240,"column":42}}]},"22":{"loc":{"start":{"line":251,"column":24},"end":{"line":253,"column":73}},"type":"cond-expr","locations":[{"start":{"line":252,"column":28},"end":{"line":252,"column":73}},{"start":{"line":253,"column":28},"end":{"line":253,"column":73}}]},"23":{"loc":{"start":{"line":256,"column":24},"end":{"line":258,"column":null}},"type":"binary-expr","locations":[{"start":{"line":256,"column":25},"end":{"line":258,"column":67}},{"start":{"line":258,"column":73},"end":{"line":258,"column":null}}]},"24":{"loc":{"start":{"line":256,"column":25},"end":{"line":258,"column":67}},"type":"cond-expr","locations":[{"start":{"line":257,"column":28},"end":{"line":257,"column":68}},{"start":{"line":258,"column":28},"end":{"line":258,"column":67}}]},"25":{"loc":{"start":{"line":272,"column":17},"end":{"line":275,"column":28}},"type":"cond-expr","locations":[{"start":{"line":273,"column":20},"end":{"line":273,"column":80}},{"start":{"line":274,"column":20},"end":{"line":275,"column":28}}]},"26":{"loc":{"start":{"line":283,"column":20},"end":{"line":285,"column":54}},"type":"cond-expr","locations":[{"start":{"line":284,"column":24},"end":{"line":284,"column":54}},{"start":{"line":285,"column":24},"end":{"line":285,"column":54}}]},"27":{"loc":{"start":{"line":288,"column":20},"end":{"line":290,"column":54}},"type":"cond-expr","locations":[{"start":{"line":289,"column":24},"end":{"line":289,"column":54}},{"start":{"line":290,"column":24},"end":{"line":290,"column":54}}]},"28":{"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}}]},"29":{"loc":{"start":{"line":301,"column":20},"end":{"line":305,"column":32}},"type":"cond-expr","locations":[{"start":{"line":302,"column":24},"end":{"line":303,"column":32}},{"start":{"line":304,"column":24},"end":{"line":305,"column":32}}]},"30":{"loc":{"start":{"line":308,"column":20},"end":{"line":312,"column":32}},"type":"cond-expr","locations":[{"start":{"line":309,"column":24},"end":{"line":310,"column":32}},{"start":{"line":311,"column":24},"end":{"line":312,"column":32}}]},"31":{"loc":{"start":{"line":315,"column":20},"end":{"line":317,"column":57}},"type":"cond-expr","locations":[{"start":{"line":316,"column":24},"end":{"line":316,"column":57}},{"start":{"line":317,"column":24},"end":{"line":317,"column":57}}]},"32":{"loc":{"start":{"line":320,"column":20},"end":{"line":322,"column":70}},"type":"cond-expr","locations":[{"start":{"line":321,"column":24},"end":{"line":321,"column":70}},{"start":{"line":322,"column":24},"end":{"line":322,"column":70}}]},"33":{"loc":{"start":{"line":325,"column":20},"end":{"line":329,"column":32}},"type":"cond-expr","locations":[{"start":{"line":326,"column":24},"end":{"line":327,"column":32}},{"start":{"line":328,"column":24},"end":{"line":329,"column":32}}]},"34":{"loc":{"start":{"line":341,"column":17},"end":{"line":344,"column":28}},"type":"cond-expr","locations":[{"start":{"line":342,"column":20},"end":{"line":342,"column":80}},{"start":{"line":343,"column":20},"end":{"line":344,"column":28}}]},"35":{"loc":{"start":{"line":347,"column":17},"end":{"line":350,"column":28}},"type":"cond-expr","locations":[{"start":{"line":348,"column":20},"end":{"line":348,"column":80}},{"start":{"line":349,"column":20},"end":{"line":350,"column":28}}]},"36":{"loc":{"start":{"line":353,"column":17},"end":{"line":356,"column":28}},"type":"cond-expr","locations":[{"start":{"line":354,"column":20},"end":{"line":354,"column":80}},{"start":{"line":355,"column":20},"end":{"line":356,"column":28}}]},"37":{"loc":{"start":{"line":360,"column":17},"end":{"line":363,"column":28}},"type":"cond-expr","locations":[{"start":{"line":361,"column":20},"end":{"line":361,"column":80}},{"start":{"line":362,"column":20},"end":{"line":363,"column":28}}]},"38":{"loc":{"start":{"line":366,"column":17},"end":{"line":369,"column":28}},"type":"cond-expr","locations":[{"start":{"line":367,"column":20},"end":{"line":367,"column":80}},{"start":{"line":368,"column":20},"end":{"line":369,"column":28}}]},"39":{"loc":{"start":{"line":378,"column":18},"end":{"line":380,"column":64}},"type":"cond-expr","locations":[{"start":{"line":379,"column":22},"end":{"line":379,"column":64}},{"start":{"line":380,"column":22},"end":{"line":380,"column":64}}]},"40":{"loc":{"start":{"line":383,"column":18},"end":{"line":385,"column":55}},"type":"cond-expr","locations":[{"start":{"line":384,"column":22},"end":{"line":384,"column":55}},{"start":{"line":385,"column":22},"end":{"line":385,"column":55}}]},"41":{"loc":{"start":{"line":392,"column":17},"end":{"line":395,"column":28}},"type":"cond-expr","locations":[{"start":{"line":393,"column":20},"end":{"line":393,"column":80}},{"start":{"line":394,"column":20},"end":{"line":395,"column":28}}]},"42":{"loc":{"start":{"line":399,"column":20},"end":{"line":403,"column":36}},"type":"cond-expr","locations":[{"start":{"line":400,"column":24},"end":{"line":401,"column":36}},{"start":{"line":402,"column":24},"end":{"line":403,"column":36}}]},"43":{"loc":{"start":{"line":406,"column":19},"end":{"line":410,"column":30}},"type":"cond-expr","locations":[{"start":{"line":407,"column":22},"end":{"line":408,"column":30}},{"start":{"line":409,"column":22},"end":{"line":410,"column":30}}]},"44":{"loc":{"start":{"line":412,"column":17},"end":{"line":415,"column":28}},"type":"cond-expr","locations":[{"start":{"line":413,"column":20},"end":{"line":413,"column":80}},{"start":{"line":414,"column":20},"end":{"line":415,"column":28}}]},"45":{"loc":{"start":{"line":418,"column":17},"end":{"line":421,"column":28}},"type":"cond-expr","locations":[{"start":{"line":419,"column":20},"end":{"line":419,"column":80}},{"start":{"line":420,"column":20},"end":{"line":421,"column":28}}]},"46":{"loc":{"start":{"line":428,"column":9},"end":{"line":457,"column":null}},"type":"cond-expr","locations":[{"start":{"line":429,"column":10},"end":{"line":457,"column":null}},{"start":{"line":457,"column":12},"end":{"line":457,"column":null}}]},"47":{"loc":{"start":{"line":434,"column":14},"end":{"line":444,"column":43}},"type":"cond-expr","locations":[{"start":{"line":435,"column":18},"end":{"line":439,"column":21}},{"start":{"line":440,"column":18},"end":{"line":444,"column":43}}]},"48":{"loc":{"start":{"line":452,"column":14},"end":{"line":454,"column":65}},"type":"cond-expr","locations":[{"start":{"line":453,"column":18},"end":{"line":453,"column":61}},{"start":{"line":454,"column":18},"end":{"line":454,"column":65}}]},"49":{"loc":{"start":{"line":498,"column":25},"end":{"line":498,"column":null}},"type":"binary-expr","locations":[{"start":{"line":498,"column":25},"end":{"line":498,"column":56}},{"start":{"line":498,"column":60},"end":{"line":498,"column":null}}]},"50":{"loc":{"start":{"line":508,"column":16},"end":{"line":508,"column":null}},"type":"cond-expr","locations":[{"start":{"line":508,"column":53},"end":{"line":508,"column":58}},{"start":{"line":508,"column":58},"end":{"line":508,"column":null}}]}},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":21,"24":1,"25":1,"26":0,"27":0,"28":1,"29":0,"30":0,"31":0,"32":0},"f":{"0":1,"1":21,"2":1,"3":0},"b":{"0":[21,20,19,18],"1":[0],"2":[0,0],"3":[0,1],"4":[1,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],"23":[1,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],"40":[0,1],"41":[0,1],"42":[0,1],"43":[0,1],"44":[0,1],"45":[0,1],"46":[1,0],"47":[0,1],"48":[0,1],"49":[0,0],"50":[0,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/making-easier-get-benefits/[id].js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/making-easier-get-benefits/[id].js","statementMap":{"0":{"start":{"line":20,"column":24},"end":{"line":20,"column":58}},"1":{"start":{"line":156,"column":22},"end":{"line":156,"column":36}},"2":{"start":{"line":175,"column":13},"end":{"line":175,"column":27}},"3":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":31},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":21},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":23},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":36},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":31},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":32},"end":{"line":8,"column":null}},"10":{"start":{"line":9,"column":34},"end":{"line":9,"column":null}},"11":{"start":{"line":10,"column":27},"end":{"line":10,"column":null}},"12":{"start":{"line":11,"column":24},"end":{"line":11,"column":null}},"13":{"start":{"line":12,"column":28},"end":{"line":12,"column":null}},"14":{"start":{"line":13,"column":31},"end":{"line":13,"column":null}},"15":{"start":{"line":14,"column":34},"end":{"line":14,"column":null}},"16":{"start":{"line":15,"column":34},"end":{"line":15,"column":null}},"17":{"start":{"line":16,"column":27},"end":{"line":16,"column":null}},"18":{"start":{"line":17,"column":32},"end":{"line":17,"column":null}},"19":{"start":{"line":22,"column":16},"end":{"line":22,"column":null}},"20":{"start":{"line":25,"column":21},"end":{"line":25,"column":null}},"21":{"start":{"line":26,"column":24},"end":{"line":26,"column":null}},"22":{"start":{"line":27,"column":23},"end":{"line":27,"column":null}},"23":{"start":{"line":30,"column":2},"end":{"line":35,"column":null}},"24":{"start":{"line":31,"column":4},"end":{"line":34,"column":null}},"25":{"start":{"line":32,"column":6},"end":{"line":32,"column":null}},"26":{"start":{"line":33,"column":6},"end":{"line":33,"column":null}},"27":{"start":{"line":158,"column":19},"end":{"line":159,"column":null}},"28":{"start":{"line":163,"column":16},"end":{"line":163,"column":null}},"29":{"start":{"line":166,"column":2},"end":{"line":166,"column":null}},"30":{"start":{"line":166,"column":23},"end":{"line":166,"column":null}},"31":{"start":{"line":168,"column":2},"end":{"line":171,"column":null}},"32":{"start":{"line":175,"column":30},"end":{"line":219,"column":null}},"33":{"start":{"line":177,"column":32},"end":{"line":178,"column":null}},"34":{"start":{"line":180,"column":32},"end":{"line":181,"column":null}},"35":{"start":{"line":183,"column":31},"end":{"line":184,"column":null}},"36":{"start":{"line":187,"column":16},"end":{"line":187,"column":50}},"37":{"start":{"line":190,"column":19},"end":{"line":196,"column":null}},"38":{"start":{"line":191,"column":4},"end":{"line":194,"column":null}},"39":{"start":{"line":199,"column":2},"end":{"line":203,"column":null}},"40":{"start":{"line":200,"column":4},"end":{"line":202,"column":null}},"41":{"start":{"line":206,"column":2},"end":{"line":218,"column":null}}},"fnMap":{"0":{"name":"IntegratedChannelStrategyArticles","decl":{"start":{"line":20,"column":24},"end":{"line":20,"column":58}},"loc":{"start":{"line":20,"column":75},"end":{"line":153,"column":1}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":30,"column":12},"end":{"line":30,"column":null}},"loc":{"start":{"line":30,"column":12},"end":{"line":35,"column":5}}},"2":{"name":"getStaticPaths","decl":{"start":{"line":156,"column":22},"end":{"line":156,"column":36}},"loc":{"start":{"line":156,"column":22},"end":{"line":172,"column":null}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":166,"column":12},"end":{"line":166,"column":13}},"loc":{"start":{"line":166,"column":23},"end":{"line":166,"column":null}}},"4":{"name":"(anonymous_9)","decl":{"start":{"line":175,"column":30},"end":{"line":175,"column":37}},"loc":{"start":{"line":175,"column":55},"end":{"line":219,"column":null}}},"5":{"name":"(anonymous_10)","decl":{"start":{"line":190,"column":32},"end":{"line":190,"column":33}},"loc":{"start":{"line":190,"column":33},"end":{"line":196,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":31,"column":4},"end":{"line":34,"column":null}},"type":"if","locations":[{"start":{"line":31,"column":4},"end":{"line":34,"column":null}}]},"1":{"loc":{"start":{"line":32,"column":30},"end":{"line":32,"column":57}},"type":"binary-expr","locations":[{"start":{"line":32,"column":30},"end":{"line":32,"column":51}},{"start":{"line":32,"column":55},"end":{"line":32,"column":57}}]},"2":{"loc":{"start":{"line":43,"column":10},"end":{"line":43,"column":79}},"type":"cond-expr","locations":[{"start":{"line":43,"column":34},"end":{"line":43,"column":55}},{"start":{"line":43,"column":58},"end":{"line":43,"column":79}}]},"3":{"loc":{"start":{"line":62,"column":16},"end":{"line":62,"column":79}},"type":"cond-expr","locations":[{"start":{"line":62,"column":40},"end":{"line":62,"column":58}},{"start":{"line":62,"column":61},"end":{"line":62,"column":79}}]},"4":{"loc":{"start":{"line":74,"column":16},"end":{"line":76,"column":50}},"type":"cond-expr","locations":[{"start":{"line":75,"column":20},"end":{"line":75,"column":50}},{"start":{"line":76,"column":20},"end":{"line":76,"column":50}}]},"5":{"loc":{"start":{"line":79,"column":16},"end":{"line":81,"column":60}},"type":"cond-expr","locations":[{"start":{"line":80,"column":20},"end":{"line":80,"column":60}},{"start":{"line":81,"column":20},"end":{"line":81,"column":60}}]},"6":{"loc":{"start":{"line":109,"column":9},"end":{"line":138,"column":null}},"type":"cond-expr","locations":[{"start":{"line":110,"column":10},"end":{"line":138,"column":null}},{"start":{"line":138,"column":12},"end":{"line":138,"column":null}}]},"7":{"loc":{"start":{"line":115,"column":14},"end":{"line":125,"column":46}},"type":"cond-expr","locations":[{"start":{"line":116,"column":18},"end":{"line":120,"column":21}},{"start":{"line":121,"column":18},"end":{"line":125,"column":46}}]},"8":{"loc":{"start":{"line":133,"column":14},"end":{"line":135,"column":77}},"type":"cond-expr","locations":[{"start":{"line":134,"column":18},"end":{"line":134,"column":73}},{"start":{"line":135,"column":18},"end":{"line":135,"column":77}}]},"9":{"loc":{"start":{"line":192,"column":7},"end":{"line":192,"column":61}},"type":"cond-expr","locations":[{"start":{"line":192,"column":25},"end":{"line":192,"column":42}},{"start":{"line":192,"column":45},"end":{"line":192,"column":61}}]},"10":{"loc":{"start":{"line":199,"column":2},"end":{"line":203,"column":null}},"type":"if","locations":[{"start":{"line":199,"column":2},"end":{"line":203,"column":null}}]},"11":{"loc":{"start":{"line":199,"column":6},"end":{"line":199,"column":35}},"type":"binary-expr","locations":[{"start":{"line":199,"column":6},"end":{"line":199,"column":19}},{"start":{"line":199,"column":19},"end":{"line":199,"column":35}}]},"12":{"loc":{"start":{"line":214,"column":25},"end":{"line":214,"column":null}},"type":"binary-expr","locations":[{"start":{"line":214,"column":25},"end":{"line":214,"column":56}},{"start":{"line":214,"column":60},"end":{"line":214,"column":null}}]},"13":{"loc":{"start":{"line":217,"column":16},"end":{"line":217,"column":null}},"type":"cond-expr","locations":[{"start":{"line":217,"column":53},"end":{"line":217,"column":58}},{"start":{"line":217,"column":58},"end":{"line":217,"column":null}}]}},"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,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"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],"11":[0,0],"12":[0,0],"13":[0,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/making-easier-get-benefits/index.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/making-easier-get-benefits/index.js","statementMap":{"0":{"start":{"line":25,"column":24},"end":{"line":25,"column":54}},"1":{"start":{"line":395,"column":13},"end":{"line":395,"column":27}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":36},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":31},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":28},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":17},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":34},"end":{"line":8,"column":null}},"10":{"start":{"line":9,"column":24},"end":{"line":9,"column":null}},"11":{"start":{"line":10,"column":23},"end":{"line":10,"column":null}},"12":{"start":{"line":11,"column":18},"end":{"line":11,"column":null}},"13":{"start":{"line":12,"column":28},"end":{"line":12,"column":null}},"14":{"start":{"line":13,"column":31},"end":{"line":13,"column":null}},"15":{"start":{"line":14,"column":32},"end":{"line":14,"column":null}},"16":{"start":{"line":15,"column":24},"end":{"line":15,"column":null}},"17":{"start":{"line":16,"column":28},"end":{"line":16,"column":null}},"18":{"start":{"line":17,"column":34},"end":{"line":17,"column":null}},"19":{"start":{"line":18,"column":34},"end":{"line":18,"column":null}},"20":{"start":{"line":27,"column":21},"end":{"line":27,"column":null}},"21":{"start":{"line":28,"column":24},"end":{"line":28,"column":null}},"22":{"start":{"line":29,"column":24},"end":{"line":29,"column":null}},"23":{"start":{"line":32,"column":31},"end":{"line":38,"column":null}},"24":{"start":{"line":35,"column":8},"end":{"line":38,"column":null}},"25":{"start":{"line":43,"column":2},"end":{"line":48,"column":null}},"26":{"start":{"line":44,"column":4},"end":{"line":47,"column":null}},"27":{"start":{"line":45,"column":6},"end":{"line":45,"column":null}},"28":{"start":{"line":46,"column":6},"end":{"line":46,"column":null}},"29":{"start":{"line":395,"column":30},"end":{"line":423,"column":null}},"30":{"start":{"line":397,"column":29},"end":{"line":398,"column":null}},"31":{"start":{"line":401,"column":31},"end":{"line":402,"column":null}},"32":{"start":{"line":405,"column":32},"end":{"line":406,"column":null}},"33":{"start":{"line":410,"column":2},"end":{"line":422,"column":null}}},"fnMap":{"0":{"name":"IntegratedChannelStrategyPage","decl":{"start":{"line":25,"column":24},"end":{"line":25,"column":54}},"loc":{"start":{"line":25,"column":59},"end":{"line":387,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":34,"column":6},"end":{"line":34,"column":7}},"loc":{"start":{"line":35,"column":8},"end":{"line":38,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":43,"column":12},"end":{"line":43,"column":null}},"loc":{"start":{"line":43,"column":12},"end":{"line":48,"column":5}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":395,"column":30},"end":{"line":395,"column":37}},"loc":{"start":{"line":395,"column":47},"end":{"line":423,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":35,"column":8},"end":{"line":38,"column":null}},"type":"binary-expr","locations":[{"start":{"line":35,"column":8},"end":{"line":35,"column":null}},{"start":{"line":36,"column":8},"end":{"line":36,"column":null}},{"start":{"line":37,"column":8},"end":{"line":37,"column":null}},{"start":{"line":38,"column":8},"end":{"line":38,"column":null}}]},"1":{"loc":{"start":{"line":44,"column":4},"end":{"line":47,"column":null}},"type":"if","locations":[{"start":{"line":44,"column":4},"end":{"line":47,"column":null}}]},"2":{"loc":{"start":{"line":45,"column":30},"end":{"line":45,"column":57}},"type":"binary-expr","locations":[{"start":{"line":45,"column":30},"end":{"line":45,"column":51}},{"start":{"line":45,"column":55},"end":{"line":45,"column":57}}]},"3":{"loc":{"start":{"line":56,"column":10},"end":{"line":56,"column":79}},"type":"cond-expr","locations":[{"start":{"line":56,"column":34},"end":{"line":56,"column":55}},{"start":{"line":56,"column":58},"end":{"line":56,"column":79}}]},"4":{"loc":{"start":{"line":68,"column":13},"end":{"line":70,"column":72}},"type":"cond-expr","locations":[{"start":{"line":69,"column":16},"end":{"line":69,"column":61}},{"start":{"line":70,"column":16},"end":{"line":70,"column":72}}]},"5":{"loc":{"start":{"line":75,"column":14},"end":{"line":77,"column":67}},"type":"cond-expr","locations":[{"start":{"line":76,"column":18},"end":{"line":76,"column":67}},{"start":{"line":77,"column":18},"end":{"line":77,"column":67}}]},"6":{"loc":{"start":{"line":87,"column":16},"end":{"line":89,"column":41}},"type":"cond-expr","locations":[{"start":{"line":88,"column":20},"end":{"line":88,"column":41}},{"start":{"line":89,"column":20},"end":{"line":89,"column":41}}]},"7":{"loc":{"start":{"line":97,"column":14},"end":{"line":99,"column":39}},"type":"cond-expr","locations":[{"start":{"line":98,"column":18},"end":{"line":98,"column":39}},{"start":{"line":99,"column":18},"end":{"line":99,"column":39}}]},"8":{"loc":{"start":{"line":107,"column":14},"end":{"line":107,"column":77}},"type":"cond-expr","locations":[{"start":{"line":107,"column":38},"end":{"line":107,"column":56}},{"start":{"line":107,"column":59},"end":{"line":107,"column":77}}]},"9":{"loc":{"start":{"line":112,"column":21},"end":{"line":112,"column":null}},"type":"cond-expr","locations":[{"start":{"line":112,"column":45},"end":{"line":112,"column":53}},{"start":{"line":112,"column":53},"end":{"line":112,"column":null}}]},"10":{"loc":{"start":{"line":118,"column":14},"end":{"line":120,"column":null}},"type":"cond-expr","locations":[{"start":{"line":119,"column":18},"end":{"line":119,"column":null}},{"start":{"line":120,"column":18},"end":{"line":120,"column":null}}]},"11":{"loc":{"start":{"line":134,"column":14},"end":{"line":136,"column":67}},"type":"cond-expr","locations":[{"start":{"line":135,"column":18},"end":{"line":135,"column":67}},{"start":{"line":136,"column":18},"end":{"line":136,"column":67}}]},"12":{"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}}]},"13":{"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}}]},"14":{"loc":{"start":{"line":169,"column":14},"end":{"line":171,"column":78}},"type":"cond-expr","locations":[{"start":{"line":170,"column":18},"end":{"line":170,"column":78}},{"start":{"line":171,"column":18},"end":{"line":171,"column":78}}]},"15":{"loc":{"start":{"line":181,"column":14},"end":{"line":181,"column":77}},"type":"cond-expr","locations":[{"start":{"line":181,"column":38},"end":{"line":181,"column":56}},{"start":{"line":181,"column":59},"end":{"line":181,"column":77}}]},"16":{"loc":{"start":{"line":192,"column":16},"end":{"line":194,"column":41}},"type":"cond-expr","locations":[{"start":{"line":193,"column":20},"end":{"line":193,"column":41}},{"start":{"line":194,"column":20},"end":{"line":194,"column":41}}]},"17":{"loc":{"start":{"line":201,"column":14},"end":{"line":201,"column":77}},"type":"cond-expr","locations":[{"start":{"line":201,"column":38},"end":{"line":201,"column":56}},{"start":{"line":201,"column":59},"end":{"line":201,"column":77}}]},"18":{"loc":{"start":{"line":208,"column":14},"end":{"line":210,"column":78}},"type":"cond-expr","locations":[{"start":{"line":209,"column":18},"end":{"line":209,"column":78}},{"start":{"line":210,"column":18},"end":{"line":210,"column":78}}]},"19":{"loc":{"start":{"line":220,"column":14},"end":{"line":220,"column":77}},"type":"cond-expr","locations":[{"start":{"line":220,"column":38},"end":{"line":220,"column":56}},{"start":{"line":220,"column":59},"end":{"line":220,"column":77}}]},"20":{"loc":{"start":{"line":235,"column":20},"end":{"line":237,"column":42}},"type":"cond-expr","locations":[{"start":{"line":236,"column":24},"end":{"line":236,"column":42}},{"start":{"line":237,"column":24},"end":{"line":237,"column":42}}]},"21":{"loc":{"start":{"line":247,"column":24},"end":{"line":249,"column":73}},"type":"cond-expr","locations":[{"start":{"line":248,"column":28},"end":{"line":248,"column":73}},{"start":{"line":249,"column":28},"end":{"line":249,"column":73}}]},"22":{"loc":{"start":{"line":252,"column":24},"end":{"line":254,"column":null}},"type":"binary-expr","locations":[{"start":{"line":252,"column":25},"end":{"line":254,"column":67}},{"start":{"line":254,"column":73},"end":{"line":254,"column":null}}]},"23":{"loc":{"start":{"line":252,"column":25},"end":{"line":254,"column":67}},"type":"cond-expr","locations":[{"start":{"line":253,"column":28},"end":{"line":253,"column":68}},{"start":{"line":254,"column":28},"end":{"line":254,"column":67}}]},"24":{"loc":{"start":{"line":267,"column":17},"end":{"line":270,"column":28}},"type":"cond-expr","locations":[{"start":{"line":268,"column":20},"end":{"line":268,"column":80}},{"start":{"line":269,"column":20},"end":{"line":270,"column":28}}]},"25":{"loc":{"start":{"line":277,"column":20},"end":{"line":279,"column":54}},"type":"cond-expr","locations":[{"start":{"line":278,"column":24},"end":{"line":278,"column":54}},{"start":{"line":279,"column":24},"end":{"line":279,"column":54}}]},"26":{"loc":{"start":{"line":282,"column":20},"end":{"line":284,"column":54}},"type":"cond-expr","locations":[{"start":{"line":283,"column":24},"end":{"line":283,"column":54}},{"start":{"line":284,"column":24},"end":{"line":284,"column":54}}]},"27":{"loc":{"start":{"line":287,"column":20},"end":{"line":289,"column":54}},"type":"cond-expr","locations":[{"start":{"line":288,"column":24},"end":{"line":288,"column":54}},{"start":{"line":289,"column":24},"end":{"line":289,"column":54}}]},"28":{"loc":{"start":{"line":295,"column":20},"end":{"line":299,"column":32}},"type":"cond-expr","locations":[{"start":{"line":296,"column":24},"end":{"line":297,"column":32}},{"start":{"line":298,"column":24},"end":{"line":299,"column":32}}]},"29":{"loc":{"start":{"line":302,"column":20},"end":{"line":306,"column":32}},"type":"cond-expr","locations":[{"start":{"line":303,"column":24},"end":{"line":304,"column":32}},{"start":{"line":305,"column":24},"end":{"line":306,"column":32}}]},"30":{"loc":{"start":{"line":309,"column":20},"end":{"line":311,"column":57}},"type":"cond-expr","locations":[{"start":{"line":310,"column":24},"end":{"line":310,"column":57}},{"start":{"line":311,"column":24},"end":{"line":311,"column":57}}]},"31":{"loc":{"start":{"line":314,"column":20},"end":{"line":316,"column":70}},"type":"cond-expr","locations":[{"start":{"line":315,"column":24},"end":{"line":315,"column":70}},{"start":{"line":316,"column":24},"end":{"line":316,"column":70}}]},"32":{"loc":{"start":{"line":319,"column":20},"end":{"line":323,"column":32}},"type":"cond-expr","locations":[{"start":{"line":320,"column":24},"end":{"line":321,"column":32}},{"start":{"line":322,"column":24},"end":{"line":323,"column":32}}]},"33":{"loc":{"start":{"line":334,"column":18},"end":{"line":336,"column":null}},"type":"cond-expr","locations":[{"start":{"line":335,"column":22},"end":{"line":335,"column":null}},{"start":{"line":336,"column":22},"end":{"line":336,"column":null}}]},"34":{"loc":{"start":{"line":344,"column":9},"end":{"line":373,"column":null}},"type":"cond-expr","locations":[{"start":{"line":345,"column":10},"end":{"line":373,"column":null}},{"start":{"line":373,"column":12},"end":{"line":373,"column":null}}]},"35":{"loc":{"start":{"line":350,"column":14},"end":{"line":360,"column":43}},"type":"cond-expr","locations":[{"start":{"line":351,"column":18},"end":{"line":355,"column":21}},{"start":{"line":356,"column":18},"end":{"line":360,"column":43}}]},"36":{"loc":{"start":{"line":368,"column":14},"end":{"line":370,"column":65}},"type":"cond-expr","locations":[{"start":{"line":369,"column":18},"end":{"line":369,"column":61}},{"start":{"line":370,"column":18},"end":{"line":370,"column":65}}]},"37":{"loc":{"start":{"line":413,"column":25},"end":{"line":413,"column":null}},"type":"binary-expr","locations":[{"start":{"line":413,"column":25},"end":{"line":413,"column":56}},{"start":{"line":413,"column":60},"end":{"line":413,"column":null}}]},"38":{"loc":{"start":{"line":421,"column":16},"end":{"line":421,"column":null}},"type":"cond-expr","locations":[{"start":{"line":421,"column":53},"end":{"line":421,"column":58}},{"start":{"line":421,"column":58},"end":{"line":421,"column":null}}]}},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":21,"25":1,"26":1,"27":0,"28":0,"29":1,"30":0,"31":0,"32":0,"33":0},"f":{"0":1,"1":21,"2":1,"3":0},"b":{"0":[21,20,19,18],"1":[0],"2":[0,0],"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":[1,0],"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,0],"36":[0,0],"37":[0,0],"38":[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":26,"column":24},"end":{"line":26,"column":53}},"1":{"start":{"line":166,"column":22},"end":{"line":166,"column":36}},"2":{"start":{"line":192,"column":13},"end":{"line":192,"column":27}},"3":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":31},"end":{"line":3,"column":null}},"5":{"start":{"line":6,"column":21},"end":{"line":6,"column":null}},"6":{"start":{"line":7,"column":23},"end":{"line":7,"column":null}},"7":{"start":{"line":8,"column":36},"end":{"line":8,"column":null}},"8":{"start":{"line":9,"column":31},"end":{"line":9,"column":null}},"9":{"start":{"line":10,"column":32},"end":{"line":10,"column":null}},"10":{"start":{"line":11,"column":34},"end":{"line":11,"column":null}},"11":{"start":{"line":12,"column":27},"end":{"line":12,"column":null}},"12":{"start":{"line":13,"column":24},"end":{"line":13,"column":null}},"13":{"start":{"line":14,"column":28},"end":{"line":14,"column":null}},"14":{"start":{"line":15,"column":31},"end":{"line":15,"column":null}},"15":{"start":{"line":16,"column":34},"end":{"line":16,"column":null}},"16":{"start":{"line":17,"column":34},"end":{"line":17,"column":null}},"17":{"start":{"line":18,"column":27},"end":{"line":18,"column":null}},"18":{"start":{"line":19,"column":32},"end":{"line":19,"column":null}},"19":{"start":{"line":28,"column":16},"end":{"line":28,"column":null}},"20":{"start":{"line":31,"column":21},"end":{"line":31,"column":null}},"21":{"start":{"line":32,"column":24},"end":{"line":32,"column":null}},"22":{"start":{"line":33,"column":23},"end":{"line":33,"column":null}},"23":{"start":{"line":36,"column":2},"end":{"line":41,"column":null}},"24":{"start":{"line":37,"column":4},"end":{"line":40,"column":null}},"25":{"start":{"line":38,"column":6},"end":{"line":38,"column":null}},"26":{"start":{"line":39,"column":6},"end":{"line":39,"column":null}},"27":{"start":{"line":168,"column":19},"end":{"line":169,"column":null}},"28":{"start":{"line":173,"column":16},"end":{"line":173,"column":null}},"29":{"start":{"line":177,"column":2},"end":{"line":177,"column":null}},"30":{"start":{"line":177,"column":23},"end":{"line":177,"column":null}},"31":{"start":{"line":179,"column":2},"end":{"line":183,"column":null}},"32":{"start":{"line":192,"column":30},"end":{"line":237,"column":null}},"33":{"start":{"line":194,"column":32},"end":{"line":195,"column":null}},"34":{"start":{"line":197,"column":32},"end":{"line":198,"column":null}},"35":{"start":{"line":200,"column":31},"end":{"line":201,"column":null}},"36":{"start":{"line":204,"column":16},"end":{"line":204,"column":50}},"37":{"start":{"line":207,"column":19},"end":{"line":213,"column":null}},"38":{"start":{"line":208,"column":4},"end":{"line":211,"column":null}},"39":{"start":{"line":216,"column":2},"end":{"line":220,"column":null}},"40":{"start":{"line":217,"column":4},"end":{"line":219,"column":null}},"41":{"start":{"line":223,"column":2},"end":{"line":236,"column":null}}},"fnMap":{"0":{"name":"OASBenefitsEstimatorArticles","decl":{"start":{"line":26,"column":24},"end":{"line":26,"column":53}},"loc":{"start":{"line":26,"column":70},"end":{"line":159,"column":1}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":36,"column":12},"end":{"line":36,"column":null}},"loc":{"start":{"line":36,"column":12},"end":{"line":41,"column":5}}},"2":{"name":"getStaticPaths","decl":{"start":{"line":166,"column":22},"end":{"line":166,"column":36}},"loc":{"start":{"line":166,"column":22},"end":{"line":184,"column":null}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":177,"column":12},"end":{"line":177,"column":13}},"loc":{"start":{"line":177,"column":23},"end":{"line":177,"column":null}}},"4":{"name":"(anonymous_9)","decl":{"start":{"line":192,"column":30},"end":{"line":192,"column":37}},"loc":{"start":{"line":192,"column":55},"end":{"line":237,"column":null}}},"5":{"name":"(anonymous_10)","decl":{"start":{"line":207,"column":32},"end":{"line":207,"column":33}},"loc":{"start":{"line":207,"column":33},"end":{"line":213,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":37,"column":4},"end":{"line":40,"column":null}},"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":40,"column":null}}]},"1":{"loc":{"start":{"line":38,"column":30},"end":{"line":38,"column":57}},"type":"binary-expr","locations":[{"start":{"line":38,"column":30},"end":{"line":38,"column":51}},{"start":{"line":38,"column":55},"end":{"line":38,"column":57}}]},"2":{"loc":{"start":{"line":49,"column":10},"end":{"line":49,"column":79}},"type":"cond-expr","locations":[{"start":{"line":49,"column":34},"end":{"line":49,"column":55}},{"start":{"line":49,"column":58},"end":{"line":49,"column":79}}]},"3":{"loc":{"start":{"line":68,"column":16},"end":{"line":68,"column":79}},"type":"cond-expr","locations":[{"start":{"line":68,"column":40},"end":{"line":68,"column":58}},{"start":{"line":68,"column":61},"end":{"line":68,"column":79}}]},"4":{"loc":{"start":{"line":80,"column":16},"end":{"line":82,"column":50}},"type":"cond-expr","locations":[{"start":{"line":81,"column":20},"end":{"line":81,"column":50}},{"start":{"line":82,"column":20},"end":{"line":82,"column":50}}]},"5":{"loc":{"start":{"line":85,"column":16},"end":{"line":87,"column":60}},"type":"cond-expr","locations":[{"start":{"line":86,"column":20},"end":{"line":86,"column":60}},{"start":{"line":87,"column":20},"end":{"line":87,"column":60}}]},"6":{"loc":{"start":{"line":115,"column":9},"end":{"line":144,"column":null}},"type":"cond-expr","locations":[{"start":{"line":116,"column":10},"end":{"line":144,"column":null}},{"start":{"line":144,"column":12},"end":{"line":144,"column":null}}]},"7":{"loc":{"start":{"line":121,"column":14},"end":{"line":131,"column":46}},"type":"cond-expr","locations":[{"start":{"line":122,"column":18},"end":{"line":126,"column":21}},{"start":{"line":127,"column":18},"end":{"line":131,"column":46}}]},"8":{"loc":{"start":{"line":139,"column":14},"end":{"line":141,"column":77}},"type":"cond-expr","locations":[{"start":{"line":140,"column":18},"end":{"line":140,"column":73}},{"start":{"line":141,"column":18},"end":{"line":141,"column":77}}]},"9":{"loc":{"start":{"line":209,"column":7},"end":{"line":209,"column":61}},"type":"cond-expr","locations":[{"start":{"line":209,"column":25},"end":{"line":209,"column":42}},{"start":{"line":209,"column":45},"end":{"line":209,"column":61}}]},"10":{"loc":{"start":{"line":216,"column":2},"end":{"line":220,"column":null}},"type":"if","locations":[{"start":{"line":216,"column":2},"end":{"line":220,"column":null}}]},"11":{"loc":{"start":{"line":216,"column":6},"end":{"line":216,"column":35}},"type":"binary-expr","locations":[{"start":{"line":216,"column":6},"end":{"line":216,"column":19}},{"start":{"line":216,"column":19},"end":{"line":216,"column":35}}]},"12":{"loc":{"start":{"line":231,"column":25},"end":{"line":231,"column":null}},"type":"binary-expr","locations":[{"start":{"line":231,"column":25},"end":{"line":231,"column":56}},{"start":{"line":231,"column":60},"end":{"line":231,"column":null}}]},"13":{"loc":{"start":{"line":235,"column":16},"end":{"line":235,"column":null}},"type":"cond-expr","locations":[{"start":{"line":235,"column":53},"end":{"line":235,"column":58}},{"start":{"line":235,"column":58},"end":{"line":235,"column":null}}]}},"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,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"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],"11":[0,0],"12":[0,0],"13":[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":24,"column":24},"end":{"line":24,"column":45}},"1":{"start":{"line":457,"column":13},"end":{"line":457,"column":27}},"2":{"start":{"line":1,"column":17},"end":{"line":1,"column":null}},"3":{"start":{"line":2,"column":39},"end":{"line":2,"column":null}},"4":{"start":{"line":3,"column":23},"end":{"line":3,"column":null}},"5":{"start":{"line":4,"column":29},"end":{"line":4,"column":null}},"6":{"start":{"line":5,"column":36},"end":{"line":5,"column":null}},"7":{"start":{"line":6,"column":31},"end":{"line":6,"column":null}},"8":{"start":{"line":7,"column":28},"end":{"line":7,"column":null}},"9":{"start":{"line":8,"column":34},"end":{"line":8,"column":null}},"10":{"start":{"line":9,"column":24},"end":{"line":9,"column":null}},"11":{"start":{"line":10,"column":18},"end":{"line":10,"column":null}},"12":{"start":{"line":11,"column":28},"end":{"line":11,"column":null}},"13":{"start":{"line":12,"column":31},"end":{"line":12,"column":null}},"14":{"start":{"line":13,"column":32},"end":{"line":13,"column":null}},"15":{"start":{"line":14,"column":24},"end":{"line":14,"column":null}},"16":{"start":{"line":15,"column":28},"end":{"line":15,"column":null}},"17":{"start":{"line":16,"column":34},"end":{"line":16,"column":null}},"18":{"start":{"line":17,"column":34},"end":{"line":17,"column":null}},"19":{"start":{"line":26,"column":21},"end":{"line":26,"column":null}},"20":{"start":{"line":27,"column":24},"end":{"line":27,"column":null}},"21":{"start":{"line":28,"column":24},"end":{"line":28,"column":null}},"22":{"start":{"line":31,"column":31},"end":{"line":37,"column":null}},"23":{"start":{"line":34,"column":8},"end":{"line":37,"column":null}},"24":{"start":{"line":42,"column":2},"end":{"line":47,"column":null}},"25":{"start":{"line":43,"column":4},"end":{"line":46,"column":null}},"26":{"start":{"line":44,"column":6},"end":{"line":44,"column":null}},"27":{"start":{"line":45,"column":6},"end":{"line":45,"column":null}},"28":{"start":{"line":457,"column":30},"end":{"line":485,"column":null}},"29":{"start":{"line":459,"column":29},"end":{"line":460,"column":null}},"30":{"start":{"line":463,"column":31},"end":{"line":464,"column":null}},"31":{"start":{"line":467,"column":32},"end":{"line":468,"column":null}},"32":{"start":{"line":472,"column":2},"end":{"line":484,"column":null}}},"fnMap":{"0":{"name":"OasBenefitsEstimator","decl":{"start":{"line":24,"column":24},"end":{"line":24,"column":45}},"loc":{"start":{"line":24,"column":50},"end":{"line":449,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":33,"column":6},"end":{"line":33,"column":7}},"loc":{"start":{"line":34,"column":8},"end":{"line":37,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":42,"column":12},"end":{"line":42,"column":null}},"loc":{"start":{"line":42,"column":12},"end":{"line":47,"column":5}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":457,"column":30},"end":{"line":457,"column":37}},"loc":{"start":{"line":457,"column":47},"end":{"line":485,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":34,"column":8},"end":{"line":37,"column":null}},"type":"binary-expr","locations":[{"start":{"line":34,"column":8},"end":{"line":34,"column":null}},{"start":{"line":35,"column":8},"end":{"line":35,"column":null}},{"start":{"line":36,"column":8},"end":{"line":36,"column":null}},{"start":{"line":37,"column":8},"end":{"line":37,"column":null}}]},"1":{"loc":{"start":{"line":43,"column":4},"end":{"line":46,"column":null}},"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":46,"column":null}}]},"2":{"loc":{"start":{"line":44,"column":30},"end":{"line":44,"column":57}},"type":"binary-expr","locations":[{"start":{"line":44,"column":30},"end":{"line":44,"column":51}},{"start":{"line":44,"column":55},"end":{"line":44,"column":57}}]},"3":{"loc":{"start":{"line":55,"column":10},"end":{"line":55,"column":79}},"type":"cond-expr","locations":[{"start":{"line":55,"column":34},"end":{"line":55,"column":55}},{"start":{"line":55,"column":58},"end":{"line":55,"column":79}}]},"4":{"loc":{"start":{"line":66,"column":13},"end":{"line":68,"column":72}},"type":"cond-expr","locations":[{"start":{"line":67,"column":16},"end":{"line":67,"column":61}},{"start":{"line":68,"column":16},"end":{"line":68,"column":72}}]},"5":{"loc":{"start":{"line":73,"column":14},"end":{"line":75,"column":67}},"type":"cond-expr","locations":[{"start":{"line":74,"column":18},"end":{"line":74,"column":67}},{"start":{"line":75,"column":18},"end":{"line":75,"column":67}}]},"6":{"loc":{"start":{"line":85,"column":16},"end":{"line":87,"column":41}},"type":"cond-expr","locations":[{"start":{"line":86,"column":20},"end":{"line":86,"column":41}},{"start":{"line":87,"column":20},"end":{"line":87,"column":41}}]},"7":{"loc":{"start":{"line":95,"column":14},"end":{"line":97,"column":39}},"type":"cond-expr","locations":[{"start":{"line":96,"column":18},"end":{"line":96,"column":39}},{"start":{"line":97,"column":18},"end":{"line":97,"column":39}}]},"8":{"loc":{"start":{"line":105,"column":14},"end":{"line":105,"column":77}},"type":"cond-expr","locations":[{"start":{"line":105,"column":38},"end":{"line":105,"column":56}},{"start":{"line":105,"column":59},"end":{"line":105,"column":77}}]},"9":{"loc":{"start":{"line":110,"column":21},"end":{"line":110,"column":null}},"type":"cond-expr","locations":[{"start":{"line":110,"column":45},"end":{"line":110,"column":53}},{"start":{"line":110,"column":53},"end":{"line":110,"column":null}}]},"10":{"loc":{"start":{"line":116,"column":14},"end":{"line":118,"column":null}},"type":"cond-expr","locations":[{"start":{"line":117,"column":18},"end":{"line":117,"column":null}},{"start":{"line":118,"column":18},"end":{"line":118,"column":null}}]},"11":{"loc":{"start":{"line":132,"column":14},"end":{"line":134,"column":67}},"type":"cond-expr","locations":[{"start":{"line":133,"column":18},"end":{"line":133,"column":67}},{"start":{"line":134,"column":18},"end":{"line":134,"column":67}}]},"12":{"loc":{"start":{"line":152,"column":16},"end":{"line":154,"column":41}},"type":"cond-expr","locations":[{"start":{"line":153,"column":20},"end":{"line":153,"column":41}},{"start":{"line":154,"column":20},"end":{"line":154,"column":41}}]},"13":{"loc":{"start":{"line":161,"column":14},"end":{"line":161,"column":77}},"type":"cond-expr","locations":[{"start":{"line":161,"column":38},"end":{"line":161,"column":56}},{"start":{"line":161,"column":59},"end":{"line":161,"column":77}}]},"14":{"loc":{"start":{"line":167,"column":14},"end":{"line":169,"column":78}},"type":"cond-expr","locations":[{"start":{"line":168,"column":18},"end":{"line":168,"column":78}},{"start":{"line":169,"column":18},"end":{"line":169,"column":78}}]},"15":{"loc":{"start":{"line":179,"column":14},"end":{"line":179,"column":77}},"type":"cond-expr","locations":[{"start":{"line":179,"column":38},"end":{"line":179,"column":56}},{"start":{"line":179,"column":59},"end":{"line":179,"column":77}}]},"16":{"loc":{"start":{"line":190,"column":16},"end":{"line":192,"column":41}},"type":"cond-expr","locations":[{"start":{"line":191,"column":20},"end":{"line":191,"column":41}},{"start":{"line":192,"column":20},"end":{"line":192,"column":41}}]},"17":{"loc":{"start":{"line":199,"column":14},"end":{"line":199,"column":77}},"type":"cond-expr","locations":[{"start":{"line":199,"column":38},"end":{"line":199,"column":56}},{"start":{"line":199,"column":59},"end":{"line":199,"column":77}}]},"18":{"loc":{"start":{"line":206,"column":14},"end":{"line":208,"column":78}},"type":"cond-expr","locations":[{"start":{"line":207,"column":18},"end":{"line":207,"column":78}},{"start":{"line":208,"column":18},"end":{"line":208,"column":78}}]},"19":{"loc":{"start":{"line":218,"column":14},"end":{"line":218,"column":77}},"type":"cond-expr","locations":[{"start":{"line":218,"column":38},"end":{"line":218,"column":56}},{"start":{"line":218,"column":59},"end":{"line":218,"column":77}}]},"20":{"loc":{"start":{"line":234,"column":20},"end":{"line":236,"column":42}},"type":"cond-expr","locations":[{"start":{"line":235,"column":24},"end":{"line":235,"column":42}},{"start":{"line":236,"column":24},"end":{"line":236,"column":42}}]},"21":{"loc":{"start":{"line":246,"column":24},"end":{"line":248,"column":73}},"type":"cond-expr","locations":[{"start":{"line":247,"column":28},"end":{"line":247,"column":73}},{"start":{"line":248,"column":28},"end":{"line":248,"column":73}}]},"22":{"loc":{"start":{"line":251,"column":24},"end":{"line":253,"column":null}},"type":"binary-expr","locations":[{"start":{"line":251,"column":25},"end":{"line":253,"column":67}},{"start":{"line":253,"column":73},"end":{"line":253,"column":null}}]},"23":{"loc":{"start":{"line":251,"column":25},"end":{"line":253,"column":67}},"type":"cond-expr","locations":[{"start":{"line":252,"column":28},"end":{"line":252,"column":68}},{"start":{"line":253,"column":28},"end":{"line":253,"column":67}}]},"24":{"loc":{"start":{"line":266,"column":17},"end":{"line":269,"column":28}},"type":"cond-expr","locations":[{"start":{"line":267,"column":20},"end":{"line":267,"column":80}},{"start":{"line":268,"column":20},"end":{"line":269,"column":28}}]},"25":{"loc":{"start":{"line":276,"column":20},"end":{"line":278,"column":54}},"type":"cond-expr","locations":[{"start":{"line":277,"column":24},"end":{"line":277,"column":54}},{"start":{"line":278,"column":24},"end":{"line":278,"column":54}}]},"26":{"loc":{"start":{"line":281,"column":20},"end":{"line":283,"column":54}},"type":"cond-expr","locations":[{"start":{"line":282,"column":24},"end":{"line":282,"column":54}},{"start":{"line":283,"column":24},"end":{"line":283,"column":54}}]},"27":{"loc":{"start":{"line":286,"column":20},"end":{"line":288,"column":54}},"type":"cond-expr","locations":[{"start":{"line":287,"column":24},"end":{"line":287,"column":54}},{"start":{"line":288,"column":24},"end":{"line":288,"column":54}}]},"28":{"loc":{"start":{"line":294,"column":20},"end":{"line":298,"column":32}},"type":"cond-expr","locations":[{"start":{"line":295,"column":24},"end":{"line":296,"column":32}},{"start":{"line":297,"column":24},"end":{"line":298,"column":32}}]},"29":{"loc":{"start":{"line":301,"column":20},"end":{"line":305,"column":32}},"type":"cond-expr","locations":[{"start":{"line":302,"column":24},"end":{"line":303,"column":32}},{"start":{"line":304,"column":24},"end":{"line":305,"column":32}}]},"30":{"loc":{"start":{"line":308,"column":20},"end":{"line":310,"column":57}},"type":"cond-expr","locations":[{"start":{"line":309,"column":24},"end":{"line":309,"column":57}},{"start":{"line":310,"column":24},"end":{"line":310,"column":57}}]},"31":{"loc":{"start":{"line":313,"column":20},"end":{"line":315,"column":70}},"type":"cond-expr","locations":[{"start":{"line":314,"column":24},"end":{"line":314,"column":70}},{"start":{"line":315,"column":24},"end":{"line":315,"column":70}}]},"32":{"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}}]},"33":{"loc":{"start":{"line":333,"column":15},"end":{"line":335,"column":78}},"type":"cond-expr","locations":[{"start":{"line":334,"column":18},"end":{"line":334,"column":78}},{"start":{"line":335,"column":18},"end":{"line":335,"column":78}}]},"34":{"loc":{"start":{"line":343,"column":16},"end":{"line":345,"column":62}},"type":"cond-expr","locations":[{"start":{"line":344,"column":20},"end":{"line":344,"column":62}},{"start":{"line":345,"column":20},"end":{"line":345,"column":62}}]},"35":{"loc":{"start":{"line":348,"column":16},"end":{"line":350,"column":53}},"type":"cond-expr","locations":[{"start":{"line":349,"column":20},"end":{"line":349,"column":53}},{"start":{"line":350,"column":20},"end":{"line":350,"column":53}}]},"36":{"loc":{"start":{"line":357,"column":15},"end":{"line":359,"column":78}},"type":"cond-expr","locations":[{"start":{"line":358,"column":18},"end":{"line":358,"column":78}},{"start":{"line":359,"column":18},"end":{"line":359,"column":78}}]},"37":{"loc":{"start":{"line":363,"column":15},"end":{"line":365,"column":78}},"type":"cond-expr","locations":[{"start":{"line":364,"column":18},"end":{"line":364,"column":78}},{"start":{"line":365,"column":18},"end":{"line":365,"column":78}}]},"38":{"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}}]},"39":{"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}}]},"40":{"loc":{"start":{"line":381,"column":13},"end":{"line":383,"column":77}},"type":"cond-expr","locations":[{"start":{"line":382,"column":16},"end":{"line":382,"column":77}},{"start":{"line":383,"column":16},"end":{"line":383,"column":77}}]},"41":{"loc":{"start":{"line":390,"column":16},"end":{"line":392,"column":62}},"type":"cond-expr","locations":[{"start":{"line":391,"column":20},"end":{"line":391,"column":62}},{"start":{"line":392,"column":20},"end":{"line":392,"column":62}}]},"42":{"loc":{"start":{"line":395,"column":16},"end":{"line":397,"column":53}},"type":"cond-expr","locations":[{"start":{"line":396,"column":20},"end":{"line":396,"column":53}},{"start":{"line":397,"column":20},"end":{"line":397,"column":53}}]},"43":{"loc":{"start":{"line":405,"column":9},"end":{"line":434,"column":null}},"type":"cond-expr","locations":[{"start":{"line":406,"column":10},"end":{"line":434,"column":null}},{"start":{"line":434,"column":12},"end":{"line":434,"column":null}}]},"44":{"loc":{"start":{"line":411,"column":14},"end":{"line":421,"column":43}},"type":"cond-expr","locations":[{"start":{"line":412,"column":18},"end":{"line":416,"column":21}},{"start":{"line":417,"column":18},"end":{"line":421,"column":43}}]},"45":{"loc":{"start":{"line":429,"column":14},"end":{"line":431,"column":65}},"type":"cond-expr","locations":[{"start":{"line":430,"column":18},"end":{"line":430,"column":61}},{"start":{"line":431,"column":18},"end":{"line":431,"column":65}}]},"46":{"loc":{"start":{"line":475,"column":25},"end":{"line":475,"column":null}},"type":"binary-expr","locations":[{"start":{"line":475,"column":25},"end":{"line":475,"column":56}},{"start":{"line":475,"column":60},"end":{"line":475,"column":null}}]},"47":{"loc":{"start":{"line":483,"column":16},"end":{"line":483,"column":null}},"type":"cond-expr","locations":[{"start":{"line":483,"column":53},"end":{"line":483,"column":58}},{"start":{"line":483,"column":58},"end":{"line":483,"column":null}}]}},"s":{"0":1,"1":0,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":21,"24":1,"25":1,"26":0,"27":0,"28":1,"29":0,"30":0,"31":0,"32":0},"f":{"0":1,"1":21,"2":1,"3":0},"b":{"0":[21,20,19,18],"1":[0],"2":[0,0],"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":[1,0],"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],"40":[0,1],"41":[0,1],"42":[0,1],"43":[1,0],"44":[0,1],"45":[0,1],"46":[0,0],"47":[0,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/transforming-ei-indigenous-peoples/[id].js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/transforming-ei-indigenous-peoples/[id].js","statementMap":{"0":{"start":{"line":19,"column":24},"end":{"line":19,"column":45}},"1":{"start":{"line":120,"column":22},"end":{"line":120,"column":36}},"2":{"start":{"line":149,"column":13},"end":{"line":149,"column":27}},"3":{"start":{"line":1,"column":21},"end":{"line":1,"column":null}},"4":{"start":{"line":2,"column":23},"end":{"line":2,"column":null}},"5":{"start":{"line":3,"column":24},"end":{"line":3,"column":null}},"6":{"start":{"line":4,"column":39},"end":{"line":4,"column":null}},"7":{"start":{"line":5,"column":36},"end":{"line":5,"column":null}},"8":{"start":{"line":6,"column":31},"end":{"line":6,"column":null}},"9":{"start":{"line":7,"column":32},"end":{"line":7,"column":null}},"10":{"start":{"line":8,"column":34},"end":{"line":8,"column":null}},"11":{"start":{"line":9,"column":27},"end":{"line":9,"column":null}},"12":{"start":{"line":22,"column":21},"end":{"line":22,"column":null}},"13":{"start":{"line":24,"column":23},"end":{"line":24,"column":null}},"14":{"start":{"line":28,"column":2},"end":{"line":33,"column":null}},"15":{"start":{"line":29,"column":4},"end":{"line":32,"column":null}},"16":{"start":{"line":30,"column":6},"end":{"line":30,"column":null}},"17":{"start":{"line":31,"column":6},"end":{"line":31,"column":null}},"18":{"start":{"line":122,"column":19},"end":{"line":123,"column":null}},"19":{"start":{"line":127,"column":16},"end":{"line":127,"column":null}},"20":{"start":{"line":131,"column":2},"end":{"line":131,"column":null}},"21":{"start":{"line":131,"column":23},"end":{"line":131,"column":null}},"22":{"start":{"line":133,"column":2},"end":{"line":138,"column":null}},"23":{"start":{"line":149,"column":30},"end":{"line":196,"column":null}},"24":{"start":{"line":151,"column":19},"end":{"line":152,"column":null}},"25":{"start":{"line":157,"column":31},"end":{"line":158,"column":null}},"26":{"start":{"line":161,"column":16},"end":{"line":161,"column":43}},"27":{"start":{"line":165,"column":19},"end":{"line":171,"column":null}},"28":{"start":{"line":166,"column":4},"end":{"line":169,"column":null}},"29":{"start":{"line":175,"column":2},"end":{"line":179,"column":null}},"30":{"start":{"line":176,"column":4},"end":{"line":178,"column":null}},"31":{"start":{"line":182,"column":2},"end":{"line":195,"column":null}}},"fnMap":{"0":{"name":"IndigenousEiArticles","decl":{"start":{"line":19,"column":24},"end":{"line":19,"column":45}},"loc":{"start":{"line":19,"column":62},"end":{"line":111,"column":1}}},"1":{"name":"(anonymous_6)","decl":{"start":{"line":28,"column":12},"end":{"line":28,"column":null}},"loc":{"start":{"line":28,"column":12},"end":{"line":33,"column":5}}},"2":{"name":"getStaticPaths","decl":{"start":{"line":120,"column":22},"end":{"line":120,"column":36}},"loc":{"start":{"line":120,"column":22},"end":{"line":139,"column":null}}},"3":{"name":"(anonymous_8)","decl":{"start":{"line":131,"column":12},"end":{"line":131,"column":13}},"loc":{"start":{"line":131,"column":23},"end":{"line":131,"column":null}}},"4":{"name":"(anonymous_9)","decl":{"start":{"line":149,"column":30},"end":{"line":149,"column":37}},"loc":{"start":{"line":149,"column":55},"end":{"line":196,"column":null}}},"5":{"name":"(anonymous_10)","decl":{"start":{"line":165,"column":32},"end":{"line":165,"column":33}},"loc":{"start":{"line":165,"column":33},"end":{"line":171,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":4},"end":{"line":32,"column":null}},"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":32,"column":null}}]},"1":{"loc":{"start":{"line":30,"column":30},"end":{"line":30,"column":57}},"type":"binary-expr","locations":[{"start":{"line":30,"column":30},"end":{"line":30,"column":51}},{"start":{"line":30,"column":55},"end":{"line":30,"column":57}}]},"2":{"loc":{"start":{"line":43,"column":10},"end":{"line":43,"column":79}},"type":"cond-expr","locations":[{"start":{"line":43,"column":34},"end":{"line":43,"column":55}},{"start":{"line":43,"column":58},"end":{"line":43,"column":79}}]},"3":{"loc":{"start":{"line":63,"column":16},"end":{"line":63,"column":79}},"type":"cond-expr","locations":[{"start":{"line":63,"column":40},"end":{"line":63,"column":58}},{"start":{"line":63,"column":61},"end":{"line":63,"column":79}}]},"4":{"loc":{"start":{"line":74,"column":18},"end":{"line":74,"column":null}},"type":"cond-expr","locations":[{"start":{"line":74,"column":42},"end":{"line":74,"column":60}},{"start":{"line":74,"column":60},"end":{"line":74,"column":null}}]},"5":{"loc":{"start":{"line":87,"column":18},"end":{"line":87,"column":null}},"type":"cond-expr","locations":[{"start":{"line":87,"column":42},"end":{"line":87,"column":60}},{"start":{"line":87,"column":60},"end":{"line":87,"column":null}}]},"6":{"loc":{"start":{"line":167,"column":7},"end":{"line":167,"column":61}},"type":"cond-expr","locations":[{"start":{"line":167,"column":25},"end":{"line":167,"column":42}},{"start":{"line":167,"column":45},"end":{"line":167,"column":61}}]},"7":{"loc":{"start":{"line":175,"column":2},"end":{"line":179,"column":null}},"type":"if","locations":[{"start":{"line":175,"column":2},"end":{"line":179,"column":null}}]},"8":{"loc":{"start":{"line":175,"column":6},"end":{"line":175,"column":35}},"type":"binary-expr","locations":[{"start":{"line":175,"column":6},"end":{"line":175,"column":19}},{"start":{"line":175,"column":19},"end":{"line":175,"column":35}}]},"9":{"loc":{"start":{"line":188,"column":25},"end":{"line":188,"column":null}},"type":"binary-expr","locations":[{"start":{"line":188,"column":25},"end":{"line":188,"column":56}},{"start":{"line":188,"column":60},"end":{"line":188,"column":null}}]},"10":{"loc":{"start":{"line":194,"column":16},"end":{"line":194,"column":null}},"type":"cond-expr","locations":[{"start":{"line":194,"column":53},"end":{"line":194,"column":58}},{"start":{"line":194,"column":58},"end":{"line":194,"column":null}}]}},"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},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"b":{"0":[0],"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0],"8":[0,0],"9":[0,0],"10":[0,0]}} +,"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/transforming-ei-indigenous-peoples/index.js": {"path":"/home/runner/work/Service-Canada-Labs/Service-Canada-Labs/pages/projects/transforming-ei-indigenous-peoples/index.js","statementMap":{"0":{"start":{"line":31,"column":24},"end":{"line":31,"column":45}},"1":{"start":{"line":420,"column":13},"end":{"line":420,"column":27}},"2":{"start":{"line":2,"column":17},"end":{"line":2,"column":null}},"3":{"start":{"line":3,"column":18},"end":{"line":3,"column":null}},"4":{"start":{"line":4,"column":39},"end":{"line":4,"column":null}},"5":{"start":{"line":5,"column":36},"end":{"line":5,"column":null}},"6":{"start":{"line":6,"column":31},"end":{"line":6,"column":null}},"7":{"start":{"line":7,"column":23},"end":{"line":7,"column":null}},"8":{"start":{"line":8,"column":28},"end":{"line":8,"column":null}},"9":{"start":{"line":9,"column":24},"end":{"line":9,"column":null}},"10":{"start":{"line":10,"column":23},"end":{"line":10,"column":null}},"11":{"start":{"line":11,"column":31},"end":{"line":11,"column":null}},"12":{"start":{"line":12,"column":32},"end":{"line":12,"column":null}},"13":{"start":{"line":13,"column":34},"end":{"line":13,"column":null}},"14":{"start":{"line":14,"column":28},"end":{"line":14,"column":null}},"15":{"start":{"line":15,"column":34},"end":{"line":15,"column":null}},"16":{"start":{"line":16,"column":34},"end":{"line":16,"column":null}},"17":{"start":{"line":17,"column":24},"end":{"line":17,"column":null}},"18":{"start":{"line":18,"column":28},"end":{"line":18,"column":null}},"19":{"start":{"line":34,"column":21},"end":{"line":34,"column":null}},"20":{"start":{"line":38,"column":22},"end":{"line":38,"column":null}},"21":{"start":{"line":41,"column":24},"end":{"line":41,"column":null}},"22":{"start":{"line":45,"column":31},"end":{"line":51,"column":null}},"23":{"start":{"line":48,"column":8},"end":{"line":51,"column":null}},"24":{"start":{"line":57,"column":2},"end":{"line":62,"column":null}},"25":{"start":{"line":58,"column":4},"end":{"line":61,"column":null}},"26":{"start":{"line":59,"column":6},"end":{"line":59,"column":null}},"27":{"start":{"line":60,"column":6},"end":{"line":60,"column":null}},"28":{"start":{"line":420,"column":30},"end":{"line":451,"column":null}},"29":{"start":{"line":422,"column":29},"end":{"line":423,"column":null}},"30":{"start":{"line":427,"column":31},"end":{"line":428,"column":null}},"31":{"start":{"line":432,"column":32},"end":{"line":433,"column":null}},"32":{"start":{"line":437,"column":2},"end":{"line":450,"column":null}}},"fnMap":{"0":{"name":"EiIndigenousOverview","decl":{"start":{"line":31,"column":24},"end":{"line":31,"column":45}},"loc":{"start":{"line":31,"column":50},"end":{"line":411,"column":1}}},"1":{"name":"(anonymous_5)","decl":{"start":{"line":47,"column":6},"end":{"line":47,"column":7}},"loc":{"start":{"line":48,"column":8},"end":{"line":51,"column":null}}},"2":{"name":"(anonymous_6)","decl":{"start":{"line":57,"column":12},"end":{"line":57,"column":null}},"loc":{"start":{"line":57,"column":12},"end":{"line":62,"column":5}}},"3":{"name":"(anonymous_7)","decl":{"start":{"line":420,"column":30},"end":{"line":420,"column":37}},"loc":{"start":{"line":420,"column":47},"end":{"line":451,"column":null}}}},"branchMap":{"0":{"loc":{"start":{"line":48,"column":8},"end":{"line":51,"column":null}},"type":"binary-expr","locations":[{"start":{"line":48,"column":8},"end":{"line":48,"column":null}},{"start":{"line":49,"column":8},"end":{"line":49,"column":null}},{"start":{"line":50,"column":8},"end":{"line":50,"column":null}},{"start":{"line":51,"column":8},"end":{"line":51,"column":null}}]},"1":{"loc":{"start":{"line":58,"column":4},"end":{"line":61,"column":null}},"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":61,"column":null}}]},"2":{"loc":{"start":{"line":59,"column":30},"end":{"line":59,"column":57}},"type":"binary-expr","locations":[{"start":{"line":59,"column":30},"end":{"line":59,"column":51}},{"start":{"line":59,"column":55},"end":{"line":59,"column":57}}]},"3":{"loc":{"start":{"line":71,"column":10},"end":{"line":71,"column":79}},"type":"cond-expr","locations":[{"start":{"line":71,"column":34},"end":{"line":71,"column":55}},{"start":{"line":71,"column":58},"end":{"line":71,"column":79}}]},"4":{"loc":{"start":{"line":82,"column":13},"end":{"line":84,"column":72}},"type":"cond-expr","locations":[{"start":{"line":83,"column":16},"end":{"line":83,"column":61}},{"start":{"line":84,"column":16},"end":{"line":84,"column":72}}]},"5":{"loc":{"start":{"line":89,"column":14},"end":{"line":91,"column":67}},"type":"cond-expr","locations":[{"start":{"line":90,"column":18},"end":{"line":90,"column":67}},{"start":{"line":91,"column":18},"end":{"line":91,"column":67}}]},"6":{"loc":{"start":{"line":101,"column":16},"end":{"line":103,"column":41}},"type":"cond-expr","locations":[{"start":{"line":102,"column":20},"end":{"line":102,"column":41}},{"start":{"line":103,"column":20},"end":{"line":103,"column":41}}]},"7":{"loc":{"start":{"line":111,"column":14},"end":{"line":113,"column":39}},"type":"cond-expr","locations":[{"start":{"line":112,"column":18},"end":{"line":112,"column":39}},{"start":{"line":113,"column":18},"end":{"line":113,"column":39}}]},"8":{"loc":{"start":{"line":121,"column":14},"end":{"line":121,"column":77}},"type":"cond-expr","locations":[{"start":{"line":121,"column":38},"end":{"line":121,"column":56}},{"start":{"line":121,"column":59},"end":{"line":121,"column":77}}]},"9":{"loc":{"start":{"line":126,"column":21},"end":{"line":126,"column":null}},"type":"cond-expr","locations":[{"start":{"line":126,"column":45},"end":{"line":126,"column":53}},{"start":{"line":126,"column":53},"end":{"line":126,"column":null}}]},"10":{"loc":{"start":{"line":132,"column":14},"end":{"line":134,"column":null}},"type":"cond-expr","locations":[{"start":{"line":133,"column":18},"end":{"line":133,"column":null}},{"start":{"line":134,"column":18},"end":{"line":134,"column":null}}]},"11":{"loc":{"start":{"line":148,"column":14},"end":{"line":150,"column":67}},"type":"cond-expr","locations":[{"start":{"line":149,"column":18},"end":{"line":149,"column":67}},{"start":{"line":150,"column":18},"end":{"line":150,"column":67}}]},"12":{"loc":{"start":{"line":168,"column":16},"end":{"line":170,"column":41}},"type":"cond-expr","locations":[{"start":{"line":169,"column":20},"end":{"line":169,"column":41}},{"start":{"line":170,"column":20},"end":{"line":170,"column":41}}]},"13":{"loc":{"start":{"line":177,"column":14},"end":{"line":177,"column":77}},"type":"cond-expr","locations":[{"start":{"line":177,"column":38},"end":{"line":177,"column":56}},{"start":{"line":177,"column":59},"end":{"line":177,"column":77}}]},"14":{"loc":{"start":{"line":183,"column":14},"end":{"line":185,"column":67}},"type":"cond-expr","locations":[{"start":{"line":184,"column":18},"end":{"line":184,"column":67}},{"start":{"line":185,"column":18},"end":{"line":185,"column":67}}]},"15":{"loc":{"start":{"line":195,"column":14},"end":{"line":197,"column":58}},"type":"cond-expr","locations":[{"start":{"line":196,"column":18},"end":{"line":196,"column":58}},{"start":{"line":197,"column":18},"end":{"line":197,"column":58}}]},"16":{"loc":{"start":{"line":208,"column":16},"end":{"line":210,"column":41}},"type":"cond-expr","locations":[{"start":{"line":209,"column":20},"end":{"line":209,"column":41}},{"start":{"line":210,"column":20},"end":{"line":210,"column":41}}]},"17":{"loc":{"start":{"line":217,"column":14},"end":{"line":217,"column":77}},"type":"cond-expr","locations":[{"start":{"line":217,"column":38},"end":{"line":217,"column":56}},{"start":{"line":217,"column":59},"end":{"line":217,"column":77}}]},"18":{"loc":{"start":{"line":224,"column":14},"end":{"line":226,"column":67}},"type":"cond-expr","locations":[{"start":{"line":225,"column":18},"end":{"line":225,"column":67}},{"start":{"line":226,"column":18},"end":{"line":226,"column":67}}]},"19":{"loc":{"start":{"line":236,"column":14},"end":{"line":238,"column":58}},"type":"cond-expr","locations":[{"start":{"line":237,"column":18},"end":{"line":237,"column":58}},{"start":{"line":238,"column":18},"end":{"line":238,"column":58}}]},"20":{"loc":{"start":{"line":254,"column":20},"end":{"line":256,"column":42}},"type":"cond-expr","locations":[{"start":{"line":255,"column":24},"end":{"line":255,"column":42}},{"start":{"line":256,"column":24},"end":{"line":256,"column":42}}]},"21":{"loc":{"start":{"line":267,"column":24},"end":{"line":269,"column":73}},"type":"cond-expr","locations":[{"start":{"line":268,"column":28},"end":{"line":268,"column":73}},{"start":{"line":269,"column":28},"end":{"line":269,"column":73}}]},"22":{"loc":{"start":{"line":272,"column":24},"end":{"line":274,"column":68}},"type":"cond-expr","locations":[{"start":{"line":273,"column":28},"end":{"line":273,"column":68}},{"start":{"line":274,"column":28},"end":{"line":274,"column":68}}]},"23":{"loc":{"start":{"line":288,"column":17},"end":{"line":291,"column":28}},"type":"cond-expr","locations":[{"start":{"line":289,"column":20},"end":{"line":289,"column":80}},{"start":{"line":290,"column":20},"end":{"line":291,"column":28}}]},"24":{"loc":{"start":{"line":299,"column":20},"end":{"line":301,"column":54}},"type":"cond-expr","locations":[{"start":{"line":300,"column":24},"end":{"line":300,"column":54}},{"start":{"line":301,"column":24},"end":{"line":301,"column":54}}]},"25":{"loc":{"start":{"line":304,"column":20},"end":{"line":306,"column":54}},"type":"cond-expr","locations":[{"start":{"line":305,"column":24},"end":{"line":305,"column":54}},{"start":{"line":306,"column":24},"end":{"line":306,"column":54}}]},"26":{"loc":{"start":{"line":309,"column":20},"end":{"line":311,"column":54}},"type":"cond-expr","locations":[{"start":{"line":310,"column":24},"end":{"line":310,"column":54}},{"start":{"line":311,"column":24},"end":{"line":311,"column":54}}]},"27":{"loc":{"start":{"line":317,"column":20},"end":{"line":321,"column":null}},"type":"cond-expr","locations":[{"start":{"line":318,"column":24},"end":{"line":319,"column":null}},{"start":{"line":320,"column":24},"end":{"line":321,"column":null}}]},"28":{"loc":{"start":{"line":324,"column":20},"end":{"line":328,"column":32}},"type":"cond-expr","locations":[{"start":{"line":325,"column":24},"end":{"line":326,"column":32}},{"start":{"line":327,"column":24},"end":{"line":328,"column":32}}]},"29":{"loc":{"start":{"line":331,"column":20},"end":{"line":333,"column":57}},"type":"cond-expr","locations":[{"start":{"line":332,"column":24},"end":{"line":332,"column":57}},{"start":{"line":333,"column":24},"end":{"line":333,"column":57}}]},"30":{"loc":{"start":{"line":336,"column":20},"end":{"line":338,"column":70}},"type":"cond-expr","locations":[{"start":{"line":337,"column":24},"end":{"line":337,"column":70}},{"start":{"line":338,"column":24},"end":{"line":338,"column":70}}]},"31":{"loc":{"start":{"line":341,"column":20},"end":{"line":343,"column":79}},"type":"cond-expr","locations":[{"start":{"line":342,"column":24},"end":{"line":342,"column":79}},{"start":{"line":343,"column":24},"end":{"line":343,"column":79}}]},"32":{"loc":{"start":{"line":357,"column":16},"end":{"line":359,"column":null}},"type":"cond-expr","locations":[{"start":{"line":358,"column":20},"end":{"line":358,"column":null}},{"start":{"line":359,"column":20},"end":{"line":359,"column":null}}]},"33":{"loc":{"start":{"line":366,"column":9},"end":{"line":395,"column":null}},"type":"cond-expr","locations":[{"start":{"line":367,"column":10},"end":{"line":395,"column":null}},{"start":{"line":395,"column":12},"end":{"line":395,"column":null}}]},"34":{"loc":{"start":{"line":372,"column":14},"end":{"line":382,"column":43}},"type":"cond-expr","locations":[{"start":{"line":373,"column":18},"end":{"line":377,"column":21}},{"start":{"line":378,"column":18},"end":{"line":382,"column":43}}]},"35":{"loc":{"start":{"line":390,"column":14},"end":{"line":392,"column":65}},"type":"cond-expr","locations":[{"start":{"line":391,"column":18},"end":{"line":391,"column":61}},{"start":{"line":392,"column":18},"end":{"line":392,"column":65}}]},"36":{"loc":{"start":{"line":440,"column":25},"end":{"line":440,"column":null}},"type":"binary-expr","locations":[{"start":{"line":440,"column":25},"end":{"line":440,"column":56}},{"start":{"line":440,"column":60},"end":{"line":440,"column":null}}]},"37":{"loc":{"start":{"line":449,"column":16},"end":{"line":449,"column":null}},"type":"cond-expr","locations":[{"start":{"line":449,"column":53},"end":{"line":449,"column":58}},{"start":{"line":449,"column":58},"end":{"line":449,"column":null}}]}},"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},"b":{"0":[0,0,0,0],"1":[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]}} +} 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..cb90e851a3 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/ActionButton.js.html @@ -0,0 +1,829 @@ + + + + + + Code coverage report for components/atoms/ActionButton.js + + + + + + + + + +
+
+

All files / components/atoms ActionButton.js

+
+ +
+ 100% + Statements + 19/19 +
+ + +
+ 85.71% + Branches + 42/49 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 19/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +24925x +25x +25x +  +  +  +  +78x +  +  +76x +  +76x +  +76x +  +76x +  +76x +  +76x +  +  +76x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +71x +71x +71x +63x +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +25x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
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 TERTIARY =
+    "text-multi-neutrals-black bg-white 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 === "tertiary"
+      ? TERTIARY
+      : 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) => {
+        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 w-fit text-mobilebody lg:text-p font-body ${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} ${props.iconStyle}`}
+          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 w-fit text-mobilebody lg:text-p font-body ${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} ${props.iconStyle}`}
+          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,
+ 
+  /**
+   * This will add styles to the icon span inside the button when needed
+   */
+  iconStyle: PropTypes.string,
+ 
+  /**
+   * 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",
+    "tertiary",
+  ]),
+ 
+  /**
+   * 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..fa9455aa1d --- /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 + + + + + + + + + +
+
+

All files / components/atoms ActionButton.stories.js

+
+ +
+ 94.44% + Statements + 17/18 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +491x +  +1x +  +  +  +  +  +  +5x +3x +3x +3x +5x +  +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..ab4e4054ea --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/Alert.js.html @@ -0,0 +1,235 @@ + + + + + + Code coverage report for components/atoms/Alert.js + + + + + + + + + +
+
+

All files / components/atoms Alert.js

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 33.33% + Branches + 1/3 +
+ + +
+ 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. +

+ +
+
+

+
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 +511x +1x +1x +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +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..9e48566ffd --- /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 + + + + + + + + + +
+
+

All files / components/atoms Alert.stories.js

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +161x +  +1x +  +  +  +  +  +  +4x +  +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..10b422131f --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/Banner.js.html @@ -0,0 +1,205 @@ + + + + + + Code coverage report for components/atoms/Banner.js + + + + + + + + + +
+
+

All files / components/atoms Banner.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 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. +

+ +
+
+

+
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 +419x +9x +  +  +  +  +  +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +  +  +  +  +  +  +  +  +  +  +  +9x + 
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..3689313321 --- /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 + + + + + + + + + +
+
+

All files / components/atoms Banner.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +171x +1x +  +1x +  +  +  +  +  +  +4x +  +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..be73a652f3 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/Breadcrumb.js.html @@ -0,0 +1,286 @@ + + + + + + Code coverage report for components/atoms/Breadcrumb.js + + + + + + + + + +
+
+

All files / components/atoms Breadcrumb.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 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. +

+ +
+
+

+
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 +689x +9x +9x +9x +  +  +  +  +16x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
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">
+        <li className="inline-block min-w-0 max-w-full truncate px-1 ml-0">
+          <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 px-1 ml-4"
+                >
+                  <span className="inline-block mr-6">
+                    <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..5bc7ebdb52 --- /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 + + + + + + + + + +
+
+

All files / components/atoms Breadcrumb.stories.js

+
+ +
+ 87.5% + Statements + 7/8 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +201x +  +1x +  +  +  +  +  +  +4x +3x +  +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..0650948f78 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/CheckBox.js.html @@ -0,0 +1,469 @@ + + + + + + Code coverage report for components/atoms/CheckBox.js + + + + + + + + + +
+
+

All files / components/atoms CheckBox.js

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 76.47% + Branches + 13/17 +
+ + +
+ 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. +

+ +
+
+

+
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 +1294x +  +  +  +  +72x +  +  +  +  +  +68x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +6x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+ 
+/**
+ * check box component for forms
+ */
+export function CheckBox({
+  checked = false,
+  value = "true",
+  showRequiredLabel = false,
+  ...props
+}) {
+  const ifControlledProps = !props.uncontrolled
+    ? {
+        checked: 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={value}
+        type="checkbox"
+        onChange={(e) =>
+          props.onChange(
+            props.uncontrolled ? !e.currentTarget.checked : checked,
+            props.name,
+            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}
+      >
+        {showRequiredLabel ? (
+          <b className="text-error-border-red" aria-hidden="true">
+            *
+          </b>
+        ) : undefined}{" "}
+        {props.label} {<p className="sr-only">{props.expandState}</p>}
+      </label>
+    </div>
+  );
+}
+ 
+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..8212b0a907 --- /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 + + + + + + + + + +
+
+

All files / components/atoms CheckBox.stories.js

+
+ +
+ 81.25% + Statements + 13/16 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 11/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +581x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +7x +1x +  +  +  +  +  +  +  +6x +1x +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  + 
import React from "react";
+import { CheckBox } from "./CheckBox";
+ 
+export default {
+  title: "Components/Atoms/CheckBox",
+  component: CheckBox,
+  decorators: [
+    (Story) => (
+      <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/DSButton.js.html b/main/coverage/lcov-report/components/atoms/DSButton.js.html new file mode 100644 index 0000000000..971e0461a1 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/DSButton.js.html @@ -0,0 +1,622 @@ + + + + + + Code coverage report for components/atoms/DSButton.js + + + + + + + + + +
+
+

All files / components/atoms DSButton.js

+
+ +
+ 100% + Statements + 10/10 +
+ + +
+ 62.85% + Branches + 22/35 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 10/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +18013x +13x +  +  +  +11x +  +  +  +  +  +  +  +  +10x +  +10x +  +10x +  +10x +  +10x +  +10x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +13x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+import { Image } from "./Image";
+ 
+// Button used in HelpIcon.js and CTA.js
+// Use ActionButton.js for all other buttons in the app
+export function DSButton({
+  id = "btn1",
+  styling = "supertask",
+  text = "default",
+  href = "no ref",
+  ...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";
+ 
+  styling =
+    styling === "primary"
+      ? PRIMARY
+      : styling === "secondary"
+      ? SECONDARY
+      : styling === "supertask"
+      ? SUPERTASK
+      : styling === "danger"
+      ? DANGER
+      : styling === "link"
+      ? LINK
+      : "";
+ 
+  return href === "no ref" ? (
+    <button
+      className={`flex flex-row px-[16px] py-[8px] ${styling} rounded-sm focus:ring focus:ring-offset-4 ${props.className} `}
+      onClick={props.onClick}
+      type={props.type}
+      id={id}
+      disabled={props.disabled}
+      {...props.attributes}
+      alt={props.iconAltText}
+    >
+      {props.icon && !props.iconEnd ? (
+        <span className="grid place-items-center h-8 w-8">
+          <Image className="pr-2" src={props.icon} alt={props.iconAltText} />
+        </span>
+      ) : undefined}
+      <span
+        className={`grid place-items-center ${
+          styling === "supertask" ? "h-8" : ""
+        }`}
+      >
+        {text}
+      </span>
+      {props.children}
+      {props.icon && props.iconEnd ? (
+        <span className="grid place-items-center h-8 w-8">
+          <Image className="pl-2" src={props.icon} alt={props.iconAltText} />
+        </span>
+      ) : undefined}
+    </button>
+  ) : (
+    <a
+      href={href}
+      className={`flex flex-row ${
+        styling !== "none" ? "btn-link" : ""
+      } focus:ring focus:ring-offset-4 ${props.className}`}
+      onClick={props.onClick}
+      id={id}
+      disabled={props.disabled}
+      role="button"
+    >
+      {props.icon && !props.iconEnd ? (
+        <Image
+          className="h-8 w-8 pr-2"
+          src={props.icon}
+          alt={props.iconAltText}
+        />
+      ) : undefined}
+      {text}
+      {props.children}
+      {props.icon && props.iconEnd ? (
+        <div className="grid place-items-center h-8 w-8">
+          <Image
+            className="pl-5 pb-3"
+            src={props.icon}
+            alt={props.iconAltText}
+          />
+        </div>
+      ) : undefined}
+    </a>
+  );
+}
+ 
+DSButton.propTypes = {
+  /**
+   * Identify which button being clicked
+   */
+  id: PropTypes.string.isRequired,
+ 
+  /**
+   * 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
+   */
+  styling: PropTypes.oneOf([
+    "supertask",
+    "primary",
+    "secondary",
+    "danger",
+    "link",
+    "none",
+  ]),
+ 
+  /**
+   * The text that the button will display
+   */
+  text: PropTypes.string.isRequired,
+ 
+  /**
+   * This will add a img inside the button when needed
+   */
+  icon: PropTypes.string,
+ 
+  /**
+   * Alt text for icon added to button
+   */
+  iconAltText: PropTypes.string,
+ 
+  /**
+   * This is for placing an icon at the end of the component
+   */
+  iconEnd: PropTypes.bool,
+ 
+  /**
+   * Use when button redirects to a new page.
+   * Automatically applies the Link styling
+   */
+  href: PropTypes.string,
+ 
+  /**
+   * the type of the button
+   */
+  type: PropTypes.oneOf(["submit", "reset", "button"]),
+ 
+  /**
+   * Callback for a click event on the button
+   */
+  onClick: PropTypes.func,
+ 
+  /**
+   * bool to disable a button
+   */
+  disabled: PropTypes.bool,
+ 
+  /**
+   * css overrides for button
+   */
+  className: PropTypes.string,
+ 
+  /**
+   * additional attributes for button
+   */
+  attributes: PropTypes.object,
+ 
+  /**
+   * any other elements you want to add to the button
+   */
+  children: PropTypes.oneOfType([
+    PropTypes.string,
+    PropTypes.element,
+    PropTypes.arrayOf(PropTypes.element),
+  ]),
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/atoms/DSButton.stories.js.html b/main/coverage/lcov-report/components/atoms/DSButton.stories.js.html new file mode 100644 index 0000000000..f64598f27b --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/DSButton.stories.js.html @@ -0,0 +1,268 @@ + + + + + + Code coverage report for components/atoms/DSButton.stories.js + + + + + + + + + +
+
+

All files / components/atoms DSButton.stories.js

+
+ +
+ 90.47% + Statements + 19/21 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 14/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +621x +  +1x +  +  +  +  +  +  +2x +1x +2x +2x +2x +2x +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  + 
import { DSButton } from "./DSButton";
+ 
+export default {
+  title: "Components/Atoms/DSButton",
+  component: DSButton,
+};
+ 
+const Template = (args) => <DSButton {...args} />;
+ 
+export const Supertask = Template.bind({});
+export const SupertaskIcon = Template.bind({});
+export const Primary = Template.bind({});
+export const Secondary = Template.bind({});
+export const Danger = Template.bind({});
+export const Link = Template.bind({});
+ 
+Supertask.args = {
+  id: "supertask",
+  styling: "supertask",
+  text: "Supertask button",
+  iconAltText: "supertask",
+};
+ 
+SupertaskIcon.args = {
+  id: "supertask_icon",
+  styling: "supertask",
+  text: "Supertask button",
+  icon: "plus.svg",
+  iconAltText: "icon",
+  iconEnd: false,
+};
+ 
+Primary.args = {
+  id: "primary",
+  text: "Primary button",
+  iconAltText: "prime",
+  styling: "primary",
+};
+ 
+Secondary.args = {
+  id: "secondary",
+  text: "Secondary Button",
+  iconEnd: false,
+  secondary: true,
+  styling: "secondary",
+};
+ 
+Danger.args = {
+  id: "danger",
+  text: "Danger Button",
+  iconEnd: false,
+  styling: "danger",
+};
+ 
+Link.args = {
+  id: "link",
+  text: "Link Button",
+  styling: "link",
+  href: "/",
+  iconAltText: "link",
+};
+ 
+ +
+
+ + + + + + + + \ 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..6b8149b4d7 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/DateModified.js.html @@ -0,0 +1,178 @@ + + + + + + Code coverage report for components/atoms/DateModified.js + + + + + + + + + +
+
+

All files / components/atoms DateModified.js

+
+ +
+ 100% + Statements + 10/10 +
+ + +
+ 100% + Branches + 5/5 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 10/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +329x +9x +  +16x +15x +  +15x +15x +8x +2x +6x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +  +  +  + 
import PropTypes from "prop-types";
+import { useTranslation } from "next-i18next";
+ 
+export function DateModified({ date = process.env.NEXT_PUBLIC_BUILD_DATE }) {
+  const { t } = useTranslation("common");
+  // TeamCity build dates are received in the format yyyyMMdd
+  let dateFormatted = "NA";
+  if (date) {
+    if (!date.match(/(?=\S*['-])([a-zA-Z'-]+)/gm)) {
+      dateFormatted = date.replace(/^(.{4})(.{2})/gm, "$1-$2-");
+    } else dateFormatted = 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.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..47def36929 --- /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 + + + + + + + + + +
+
+

All files / components/atoms DateModified.stories.js

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +151x +  +1x +  +  +  +  +  +  +5x +  +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..34f2dc95ec --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/ErrorLabel.js.html @@ -0,0 +1,154 @@ + + + + + + Code coverage report for components/atoms/ErrorLabel.js + + + + + + + + + +
+
+

All files / components/atoms ErrorLabel.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. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +2416x +  +  +  +  +7x +  +  +  +  +  +  +  +  +  +16x +  +  +  +  +  +  +  + 
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..eb9ac32947 --- /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 + + + + + + + + + +
+
+

All files / components/atoms ErrorLabel.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +151x +1x +  +1x +  +  +  +  +  +  +5x +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..67fdac542c --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/HTMList.js.html @@ -0,0 +1,163 @@ + + + + + + Code coverage report for components/atoms/HTMList.js + + + + + + + + + +
+
+

All files / components/atoms HTMList.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +271x +  +7x +7x +7x +  +18x +  +13x +  +  +  +  +  +  +  +  +  +  +  +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/Image.js.html b/main/coverage/lcov-report/components/atoms/Image.js.html new file mode 100644 index 0000000000..c3b93a9214 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/Image.js.html @@ -0,0 +1,199 @@ + + + + + + Code coverage report for components/atoms/Image.js + + + + + + + + + +
+
+

All files / components/atoms Image.js

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 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. +

+ +
+
+

+
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 +3916x +  +23x +23x +  +  +  +  +  +  +  +  +16x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+ 
+export function Image(props) {
+  const { src, alt, rounded = "", className = "" } = props;
+ 
+  return (
+    <>
+      <img src={src} alt={alt} className={`${className} ${rounded}`} />
+    </>
+  );
+}
+ 
+Image.propTypes = {
+  /**
+   * The text that the image tag will display
+   */
+  id: PropTypes.string,
+ 
+  /**
+   * Alternate text will be displayed in place of an image.
+   */
+  alt: PropTypes.string,
+ 
+  /**
+   * Identify source of image
+   */
+  src: PropTypes.string.isRequired,
+ 
+  /**
+   * css overrides for image
+   */
+  className: PropTypes.string,
+ 
+  /**
+   * Enables rounded corners for image
+   */
+  rounded: PropTypes.string,
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/atoms/Image.stories.js.html b/main/coverage/lcov-report/components/atoms/Image.stories.js.html new file mode 100644 index 0000000000..b00f8aa143 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/Image.stories.js.html @@ -0,0 +1,208 @@ + + + + + + Code coverage report for components/atoms/Image.stories.js + + + + + + + + + +
+
+

All files / components/atoms Image.stories.js

+
+ +
+ 94.11% + Statements + 16/17 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +421x +  +1x +  +  +  +1x +1x +  +  +  +1x +1x +1x +1x +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  +  + 
import { Image } from "./Image";
+ 
+export default {
+  title: "Components/Atoms/Image",
+  component: Image,
+};
+import imageFile from "../../public/image1.png";
+import imageFile2 from "../../public/image2.png";
+ 
+const Template = (args) => <Image {...args} />;
+ 
+export const Default = Template.bind({});
+export const Mobile = Template.bind({});
+export const DefaultWithRounded = Template.bind({});
+export const MobileWithRounded = Template.bind({});
+ 
+Default.args = {
+  id: "image",
+  alt: "Default Image",
+  src: imageFile,
+};
+ 
+DefaultWithRounded.args = {
+  id: "image",
+  alt: "Default Image with rounded",
+  rounded: "rounded",
+  src: imageFile,
+};
+ 
+Mobile.args = {
+  id: "image",
+  alt: "Mobile Image",
+  src: imageFile2,
+};
+ 
+MobileWithRounded.args = {
+  id: "image",
+  alt: "Mobile Image with rounded",
+  rounded: "rounded",
+  src: imageFile2,
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/atoms/Link.js.html b/main/coverage/lcov-report/components/atoms/Link.js.html new file mode 100644 index 0000000000..826034990a --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/Link.js.html @@ -0,0 +1,445 @@ + + + + + + Code coverage report for components/atoms/Link.js + + + + + + + + + +
+
+

All files / components/atoms Link.js

+
+ +
+ 95.23% + Statements + 20/21 +
+ + +
+ 94.44% + Branches + 17/18 +
+ + +
+ 50% + Functions + 1/2 +
+ + +
+ 95.23% + Lines + 20/21 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +14x +  +  +  +357x +  +356x +356x +  +1x +  +1x +  +1x +  +1x +  +66x +  +66x +  +273x +  +273x +  +1x +  +1x +  +1x +  +1x +  +13x +  +13x +  +  +356x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +14x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/* eslint-disable jsx-a11y/anchor-is-valid */
+import PropTypes from "prop-types";
+ 
+// Use this component for Footer link and use Next.js <Link>
+// for all links within the site
+export function Link({ target = "_self", href = "#", ...props }) {
+  //Styling for links based on Figma Design
+  let basicStyle = "";
+  switch (props.linkStyle) {
+    case "basicStyleWithEmphasis":
+      basicStyle =
+        "underline text-multi-blue-blue70b font-body text-mobilebody lg:text-p font-bold text-mobileh5 leading-33px hover:text-multi-blue-blue50b";
+      break;
+    case "titleLink":
+      basicStyle =
+        "underline text-multi-blue-blue70b font-header text-mobilebody lg:text-p leading-23px font-bold hover:text-multi-blue-blue50b";
+      break;
+    case "smfooterBlue":
+      basicStyle =
+        "text-multi-blue-blue70b font-body leading-20px text-browserh7 hover:underline";
+      break;
+    case "smfooterWhite":
+      basicStyle =
+        "text-multi-neutrals-white font-body text-browserh7 leading-20px font-regular hover:text-multi-neutrals-white hover:underline focus:ring-1 focus:ring-white";
+      break;
+    case "smBreadcrumbs":
+      basicStyle =
+        "text-multi-blue-blue70b font-body text-mobilebody lg:text-p leading-23px font-regular hover:text-multi-blue-blue50b";
+      break;
+    case "cardActionLink":
+      basicStyle =
+        "text-multi-blue-blue70b font-body text-mobilebody lg:text-p underline leading-28px font-regular hover:text-multi-blue-blue50b";
+      break;
+    default:
+      basicStyle =
+        "underline underline-offset-4 text-multi-blue-blue70b font-body text-mobilebody lg:text-p leading-33px hover:text-multi-blue-blue50b";
+      break;
+  }
+ 
+  const Component = props.component || "a";
+ 
+  function onKeyDown() {
+    true;
+  }
+ 
+  return Component !== "a" ? (
+    <Component
+      href={href}
+      disabled={props.disabled}
+      lang={props.lang}
+      target={target}
+      aria-label={props.ariaLabel || props.text}
+      role="link"
+      className={`${basicStyle}`}
+    >
+      {props.text}
+    </Component>
+  ) : (
+    <a
+      href={href}
+      className={`${basicStyle}`}
+      id={props.id}
+      disabled={props.disabled}
+      lang={props.lang}
+      target={target}
+      aria-label={props.ariaLabel || props.text}
+      locale={props.locale}
+      onClick={props.onClick ? props.onClick : undefined}
+      data-gc-analytics-customclick={props.dataGcAnalyticsCustomClick}
+    >
+      {props.text}
+    </a>
+  );
+}
+ 
+Link.propTypes = {
+  /**
+   * The text that Text Link will display
+   */
+  text: PropTypes.string,
+  /**
+   * Abbrivation for text
+   */
+  abbr: PropTypes.string,
+  /**
+   * Style link as a Text Link when there's a href
+   */
+  href: PropTypes.string,
+  /**
+   * Target attribute to tell the browser where the linked document should be loaded.
+   */
+  target: PropTypes.string,
+  /**
+   * Identify which Text Link being clicked
+   */
+  id: PropTypes.string.isRequired,
+  /**
+   * Lang attribute for links that do not match the language of the top level document
+   */
+  lang: PropTypes.string,
+  /**
+   * css overrides for Link
+   */
+  className: PropTypes.string,
+ 
+  /**
+   * For tracking on click of forms for analytics
+   */
+  analyticsTracking: PropTypes.bool,
+ 
+  /**
+   * use ariaLabel to provide more descriptive text for a link (screen reader friendly)
+   */
+  ariaLabel: PropTypes.string,
+ 
+  /**
+   * Allow user to use configurable component, default is html anchor tag
+   */
+  component: PropTypes.elementType,
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/atoms/Link.stories.js.html b/main/coverage/lcov-report/components/atoms/Link.stories.js.html new file mode 100644 index 0000000000..ce2f0b3276 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/Link.stories.js.html @@ -0,0 +1,253 @@ + + + + + + Code coverage report for components/atoms/Link.stories.js + + + + + + + + + +
+
+

All files / components/atoms Link.stories.js

+
+ +
+ 95.23% + Statements + 20/21 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 14/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +571x +  +1x +  +  +  +  +  +  +5x +3x +3x +3x +3x +3x +  +1x +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  +  +1x +  +  +  +  +  + 
import { Link } from "./Link";
+ 
+export default {
+  title: "Components/Atoms/Link",
+  component: Link,
+};
+ 
+const Template = (args) => <Link {...args} />;
+ 
+export const Default = Template.bind({});
+export const RegularLinkwithEmphasis = Template.bind({});
+export const TitleLink = Template.bind({});
+export const FooterBlueLink = Template.bind({});
+export const BreadcrumbsLink = Template.bind({});
+export const CardActionLink = Template.bind({});
+ 
+Default.args = {
+  id: "link",
+  text: "Regular Link",
+  href: "/",
+};
+ 
+RegularLinkwithEmphasis.args = {
+  id: "link",
+  text: "Regular link with Emphasis",
+  href: "/",
+  linkStyle: "basicStyleWithEmphasis",
+};
+ 
+TitleLink.args = {
+  id: "link",
+  text: "Title Link",
+  href: "/",
+  linkStyle: "titleLink",
+};
+ 
+FooterBlueLink.args = {
+  id: "link",
+  text: "Small link - Footer blue",
+  href: "/",
+  linkStyle: "smfooterBlue",
+};
+ 
+BreadcrumbsLink.args = {
+  id: "link",
+  text: "Small link - Breadcrumbs & French toggle",
+  href: "/",
+  linkStyle: "smBreadcrumbs",
+};
+ 
+CardActionLink.args = {
+  id: "link",
+  text: "Card Action Link",
+  href: "/",
+  linkStyle: "cardActionLink",
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/atoms/MultiSelectField.js.html b/main/coverage/lcov-report/components/atoms/MultiSelectField.js.html new file mode 100644 index 0000000000..81c5f6a5c6 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/MultiSelectField.js.html @@ -0,0 +1,796 @@ + + + + + + Code coverage report for components/atoms/MultiSelectField.js + + + + + + + + + +
+
+

All files / components/atoms MultiSelectField.js

+
+ +
+ 0% + Statements + 0/29 +
+ + +
+ 0% + Branches + 0/8 +
+ + +
+ 0% + Functions + 0/17 +
+ + +
+ 0% + Lines + 0/28 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+import { useTranslation } from "next-i18next";
+import Select, { components } from "react-select";
+import { useState } from "react";
+ 
+export function MultiSelectField(props) {
+  const { t } = useTranslation("multiSelect");
+ 
+  const removeItem = (e) => {
+    let filteredArray = props.selectedOptions.filter((obj) => {
+      return obj.value !== e.currentTarget.id;
+    });
+    props.onChange(filteredArray);
+  };
+ 
+  const Option = (props) => {
+    return (
+      <components.Option {...props}>
+        <div className="flex">
+          <input
+            className="flex-none"
+            aria-labelledby="optionLabel"
+            type="checkbox"
+            checked={props.isSelected}
+            onChange={() => null}
+          />{" "}
+          <label className="flex-auto pl-3" id="optionLabel">
+            {props.label}
+          </label>
+        </div>
+      </components.Option>
+    );
+  };
+ 
+  const selectedOptionsPills = props.options
+    .filter((option) => {
+      const selectedOptionsIds = new Set();
+      props.selectedOptions.forEach((o) => selectedOptionsIds.add(o.id));
+      return selectedOptionsIds.has(option.id);
+    })
+    .map((option) => {
+      return (
+        <div
+          key={option.value}
+          className="flex bg-custom-gray-lighter rounded-[16px] my-1 px-3 py-1 text-sm font-body font-semibold"
+        >
+          <span className="self-center">{option.label}</span>
+          <div className="flex pl-2">
+            <button
+              aria-label={`${t("ariaPillsRemove")}${option.label}`}
+              className="self-center"
+              id={option.value}
+              onClick={removeItem}
+            >
+              <svg className="w-6 h-6" viewBox="0 0 24 24">
+                <path d="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z" />
+              </svg>
+            </button>
+          </div>
+        </div>
+      );
+    });
+ 
+  return (
+    <div
+      className={`block leading-tight${
+        props.className ? " " + props.className : " mb-10px"
+      }`}
+    >
+      <label
+        id="multiSelectLabel"
+        className={`select-field-label block leading-tight text-sm lg:text-p font-body mb-2 ${
+          props.boldLabel ? "font-semibold" : ""
+        }`}
+      >
+        {props.label}
+      </label>
+      <Select
+        aria-labelledby="multiSelectLabel"
+        placeholder={props.placeholder}
+        // ariaLiveMessages={{ onFocus }}
+        controlShouldRenderValue={false}
+        isMulti
+        isClearable
+        escapeClearsValue
+        backspaceRemovesValue
+        isSearchable={false}
+        // noOptionsMessage={() => "no options friendo"}
+        options={props.options}
+        onChange={props.onChange}
+        components={{ Option }}
+        closeMenuOnSelect={false}
+        hideSelectedOptions={false}
+        value={props.selectedOptions}
+        styles={{
+          control: (baseStyles, state) => ({
+            ...baseStyles,
+            borderWidth: "2px",
+            borderColor: "black",
+            borderRadius: "3px",
+            boxShadow: state.isFocused ? "0 0 0 2px #2684FF" : "",
+          }),
+          dropdownIndicator: (baseStyles) => ({
+            ...baseStyles,
+            color: "black",
+          }),
+          indicatorSeparator: (baseStyles) => ({
+            ...baseStyles,
+            display: "none",
+          }),
+          clearIndicator: (baseStyles) => ({
+            ...baseStyles,
+            display: "none",
+            color: "black",
+          }),
+          placeholder: (baseStyles) => ({
+            ...baseStyles,
+            color: "black",
+            fontSize: "20px",
+          }),
+          menu: (baseStyles) => ({
+            ...baseStyles,
+            marginTop: "0px",
+            borderWidth: "1px",
+            borderColor: "black",
+            borderRadius: "3px",
+          }),
+          option: (baseStyles, state) => ({
+            ...baseStyles,
+            color: "black",
+            fontWeight: "600",
+            fontSize: "20px",
+            backgroundColor: state.isFocused ? "#b2d4ff" : "white",
+          }),
+          multiValueLabel: (baseStyles) => ({
+            ...baseStyles,
+            fontSize: "20px",
+            fontWeight: "500",
+          }),
+          multiValueRemove: (baseStyles) => ({
+            ...baseStyles,
+            color: "black",
+            fontSize: "20px",
+            fontWeight: "500",
+          }),
+        }}
+      />
+      <div className="mt-1 flex flex-col items-start">
+        {selectedOptionsPills}
+      </div>
+    </div>
+  );
+}
+ 
+MultiSelectField.defaultProps = {
+  value: "",
+};
+ 
+MultiSelectField.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/MultiSelectField.stories.js.html b/main/coverage/lcov-report/components/atoms/MultiSelectField.stories.js.html new file mode 100644 index 0000000000..6b36579482 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/MultiSelectField.stories.js.html @@ -0,0 +1,250 @@ + + + + + + Code coverage report for components/atoms/MultiSelectField.stories.js + + + + + + + + + +
+
+

All files / components/atoms MultiSelectField.stories.js

+
+ +
+ 0% + Statements + 0/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 0% + Lines + 0/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import React from "react";
+import { MultiSelectField } from "./MultiSelectField";
+ 
+export default {
+  title: "Components/Atoms/MultiSelectField",
+  component: MultiSelectField,
+  decorators: [
+    (Story) => (
+      <div className="w-full flex justify-center">
+        <div className="w-96">
+          <Story />
+        </div>
+      </div>
+    ),
+  ],
+};
+ 
+const Template = (args) => <MultiSelectField {...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",
+  boldLabel: true,
+  defaultOption: {
+    id: "defaultOption",
+    name: "Select option(s)",
+    value: "defaultOption",
+  },
+  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/MultiTextField.js.html b/main/coverage/lcov-report/components/atoms/MultiTextField.js.html new file mode 100644 index 0000000000..1cdad938d3 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/MultiTextField.js.html @@ -0,0 +1,508 @@ + + + + + + Code coverage report for components/atoms/MultiTextField.js + + + + + + + + + +
+
+

All files / components/atoms MultiTextField.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 66.66% + Branches + 8/12 +
+ + +
+ 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. +

+ +
+
+

+
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 +1423x +3x +3x +  +  +  +  +5x +4x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+import { ErrorLabel } from "./ErrorLabel";
+import { useTranslation } from "next-i18next";
+ 
+/**
+ * multi line text field
+ */
+export function MultiTextField({ spellCheck = true, wrap = "soft", ...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={spellCheck}
+        wrap={wrap}
+        required={props.required}
+        data-testid={props.dataTestId}
+        data-cy={props.dataCy}
+        aria-describedby={props.describedby}
+      >
+        {props.value}
+      </textarea>
+    </div>
+  );
+}
+ 
+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..ccd8b26c0d --- /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 + + + + + + + + + +
+
+

All files / components/atoms MultiTextField.stories.js

+
+ +
+ 76.92% + Statements + 10/13 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +501x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +1x +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  + 
import React from "react";
+import { MultiTextField } from "./MultiTextField";
+ 
+export default {
+  title: "Components/Atoms/MultiTextField",
+  component: MultiTextField,
+  decorators: [
+    (Story) => (
+      <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..c11863593d --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/ProjectInfo.js.html @@ -0,0 +1,238 @@ + + + + + + Code coverage report for components/atoms/ProjectInfo.js + + + + + + + + + +
+
+

All files / components/atoms ProjectInfo.js

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 4/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. +

+ +
+
+

+
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 +527x +7x +  +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +7x +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+import { HelpIcon } from "../organisms/HelpIcon";
+ 
+export function ProjectInfo(props) {
+  return (
+    <>
+      <div className="grid grid-cols-1 xl:grid-cols-3 gap-x-2 text-[20px]">
+        <strong className="font-body text-mobilebody lg:text-p col-span-1">
+          {props.termStarted}
+        </strong>
+        <p className="col-span-2">
+          {props.dateStarted && props.dateStarted.substring(0, 10)}
+        </p>
+        <strong className="font-body text-mobilebody lg:text-p col-span-1 pt-3 lg:pt-0">
+          {props.termEnded}
+        </strong>
+        <p className="col-span-2">
+          {props.dateEnded && props.dateEnded.substring(0, 10)}
+        </p>
+        <strong className="font-body text-mobilebody lg:text-p 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 text-mobilebody lg:text-p 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..d635fc9cf3 --- /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 + + + + + + + + + +
+
+

All files / components/atoms ProjectInfo.stories.js

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +181x +  +1x +  +  +  +  +  +  +4x +  +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 summary",
+};
+ 
+ +
+
+ + + + + + + + \ 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..54ecd3ab3a --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/RadioButton.js.html @@ -0,0 +1,418 @@ + + + + + + Code coverage report for components/atoms/RadioButton.js + + + + + + + + + +
+
+

All files / components/atoms RadioButton.js

+
+ +
+ 90% + Statements + 9/10 +
+ + +
+ 90.9% + Branches + 10/11 +
+ + +
+ 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. +

+ +
+
+

+
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 +1122x +  +  +  +  +17x +16x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +1x +1x +1x +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+ 
+/**
+ * Radio input styled as a button
+ **/
+export function RadioButton({ checked = false, ...props }) {
+  const ifControlledProps = !props.uncontrolled
+    ? {
+        checked: checked,
+      }
+    : {
+        defaultChecked: 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) => {
+          if (e.key === "Enter") {
+            e.preventDefault();
+            Iif (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.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..b77006629e --- /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 + + + + + + + + + +
+
+

All files / components/atoms RadioButton.stories.js

+
+ +
+ 94.73% + Statements + 18/19 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 13/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +591x +1x +  +1x +  +  +  +  +  +  +12x +1x +  +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  +  +  +3x +1x +  +  +  +  +  +  +  +  +3x +1x +  +  +  +  +  +  +  +  +3x +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..5b4cd3a2a8 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/RadioField.js.html @@ -0,0 +1,412 @@ + + + + + + Code coverage report for components/atoms/RadioField.js + + + + + + + + + +
+
+

All files / components/atoms RadioField.js

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 58.33% + Branches + 7/12 +
+ + +
+ 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. +

+ +
+
+

+
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 +1104x +  +  +  +  +10x +8x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+ 
+/**
+ * radio field
+ */
+export function RadioField({ checked = false, value = "true", ...props }) {
+  const ifControlledProps = !props.uncontrolled
+    ? {
+        checked: 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={value}
+        type="radio"
+        onChange={(e) =>
+          props.onChange(
+            props.uncontrolled ? !e.currentTarget.checked : checked,
+            props.name,
+            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(checked, props.name, value)}
+      >
+        {props.label}
+      </label>
+    </div>
+  );
+}
+ 
+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..363a7565b8 --- /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 + + + + + + + + + +
+
+

All files / components/atoms RadioField.stories.js

+
+ +
+ 84.61% + Statements + 11/13 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +481x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +7x +1x +  +  +  +  +  +  +  +4x +1x +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  + 
import React from "react";
+import { RadioField } from "./RadioField";
+ 
+export default {
+  title: "Components/Atoms/RadioField",
+  component: RadioField,
+  decorators: [
+    (Story) => (
+      <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..3e18454b74 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/SearchBar.js.html @@ -0,0 +1,244 @@ + + + + + + Code coverage report for components/atoms/SearchBar.js + + + + + + + + + +
+
+

All files / components/atoms SearchBar.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. +

+ +
+
+

+
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 +541x +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +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..bf69380381 --- /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 + + + + + + + + + +
+
+

All files / components/atoms SearchBar.stories.js

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +151x +  +1x +  +  +  +  +  +  +4x +  +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..4240d72147 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/SelectField.js.html @@ -0,0 +1,571 @@ + + + + + + Code coverage report for components/atoms/SelectField.js + + + + + + + + + +
+
+

All files / components/atoms SelectField.js

+
+ +
+ 92.3% + Statements + 12/13 +
+ + +
+ 55.55% + Branches + 10/18 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 92.3% + Lines + 12/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +1631x +1x +1x +  +4x +2x +  +2x +  +  +  +  +  +2x +2x +6x +6x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +8x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+import { ErrorLabel } from "./ErrorLabel";
+import { useTranslation } from "next-i18next";
+ 
+export function SelectField({ value = "", ...props }) {
+  const { t } = useTranslation("common");
+ 
+  const ifControlledProps = !props.uncontrolled
+    ? {
+        value: value,
+      }
+    : {};
+ 
+  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.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..61666647e9 --- /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 + + + + + + + + + +
+
+

All files / components/atoms SelectField.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +501x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import React from "react";
+import { SelectField } from "./SelectField";
+ 
+export default {
+  title: "Components/Atoms/SelectField",
+  component: SelectField,
+  decorators: [
+    (Story) => (
+      <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..497991adde --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/TableOfContents.js.html @@ -0,0 +1,187 @@ + + + + + + Code coverage report for components/atoms/TableOfContents.js + + + + + + + + + +
+
+

All files / components/atoms TableOfContents.js

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +351x +  +3x +  +  +  +  +  +  +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..971c8ea9a3 --- /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 + + + + + + + + + +
+
+

All files / components/atoms TableOfContents.stories.js

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +161x +  +1x +  +  +  +  +  +  +4x +  +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..0c3f68cd92 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/TextField.js.html @@ -0,0 +1,595 @@ + + + + + + Code coverage report for components/atoms/TextField.js + + + + + + + + + +
+
+

All files / components/atoms TextField.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 65% + Branches + 13/20 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +1713x +3x +3x +  +  +  +  +7x +6x +  +6x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+import { ErrorLabel } from "./ErrorLabel";
+import { useTranslation } from "next-i18next";
+ 
+/**
+ * text field component
+ */
+export function TextField({ value = "", type = "text", ...props }) {
+  const { t } = useTranslation("common");
+ 
+  const ifControlledProps = !props.uncontrolled
+    ? {
+        value: 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={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.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..4f06c7a3ab --- /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 + + + + + + + + + +
+
+

All files / components/atoms TextField.stories.js

+
+ +
+ 92.3% + Statements + 12/13 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +491x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +1x +  +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  +  +  +3x +1x +  +  +  +  +  +  +  +  + 
import React from "react";
+import { TextField } from "./TextField";
+ 
+export default {
+  title: "Components/Atoms/TextField",
+  component: TextField,
+  decorators: [
+    (Story) => (
+      <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/UpdateInfo.js.html b/main/coverage/lcov-report/components/atoms/UpdateInfo.js.html new file mode 100644 index 0000000000..6b19d1130a --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/UpdateInfo.js.html @@ -0,0 +1,205 @@ + + + + + + Code coverage report for components/atoms/UpdateInfo.js + + + + + + + + + +
+
+

All files / components/atoms UpdateInfo.js

+
+ +
+ 0% + Statements + 0/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+import { Link } from "./Link";
+ 
+export function UpdateInfo(props) {
+  return (
+    <>
+      <div className="grid grid-cols-1 lg:grid-cols-5 gap-x-2 text-[20px]">
+        <strong className="font-body text-mobilebody lg:text-p col-span-1">
+          {props.projectLabel}
+        </strong>
+        <div className="mb-1 col-span-2">
+          <Link
+            id="update-info-project-link"
+            className="text-mobilebody lg:text-p"
+            text={props.projectName}
+            href={props.projectHref}
+          />
+        </div>
+        <strong className="font-body text-mobilebody lg:text-p col-span-1 lg:row-start-2">
+          {props.postedOnLabel}
+        </strong>
+        <p className="col-span-2 lg:row-start-2 mb-1">{props.postedOn}</p>
+        <strong className="font-body text-mobilebody lg:text-p col-span-1 lg:row-start-3">
+          {props.lastUpdatedLabel}
+        </strong>
+        <p className="col-span-2 lg:row-start-3 mt-auto">{props.lastUpdated}</p>
+      </div>
+    </>
+  );
+}
+ 
+UpdateInfo.propTypes = {
+  projectLabel: PropTypes.string,
+  projectName: PropTypes.string,
+  projectHref: PropTypes.string,
+  postedOnLabel: PropTypes.string,
+  postedOn: PropTypes.string,
+  lastUpdatedLabel: PropTypes.string,
+  lastUpdated: PropTypes.string,
+};
+ 
+ +
+
+ + + + + + + + \ 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..f173926335 --- /dev/null +++ b/main/coverage/lcov-report/components/atoms/index.html @@ -0,0 +1,701 @@ + + + + + + Code coverage report for components/atoms + + + + + + + + + +
+
+

All files components/atoms

+
+ +
+ 83.12% + Statements + 335/403 +
+ + +
+ 72.47% + Branches + 158/218 +
+ + +
+ 61.81% + Functions + 34/55 +
+ + +
+ 87.61% + Lines + 290/331 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
ActionButton.js +
+
100%19/1985.71%42/49100%3/3100%19/19
ActionButton.stories.js +
+
94.44%17/18100%0/0100%0/0100%12/12
Alert.js +
+
100%5/533.33%1/3100%1/1100%5/5
Alert.stories.js +
+
83.33%5/6100%0/0100%0/0100%4/4
Banner.js +
+
100%7/7100%0/0100%1/1100%5/5
Banner.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
Breadcrumb.js +
+
100%7/7100%2/2100%2/2100%7/7
Breadcrumb.stories.js +
+
87.5%7/8100%0/0100%0/0100%5/5
CheckBox.js +
+
100%5/576.47%13/17100%2/2100%5/5
CheckBox.stories.js +
+
81.25%13/16100%0/0100%0/0100%11/11
DSButton.js +
+
100%10/1062.85%22/35100%1/1100%10/10
DSButton.stories.js +
+
90.47%19/21100%0/0100%0/0100%14/14
DateModified.js +
+
100%10/10100%5/5100%1/1100%10/10
DateModified.stories.js +
+
83.33%5/6100%0/0100%0/0100%4/4
ErrorLabel.js +
+
100%3/3100%0/0100%1/1100%3/3
ErrorLabel.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
HTMList.js +
+
100%7/7100%2/2100%4/4100%7/7
Image.js +
+
100%4/4100%2/2100%1/1100%4/4
Image.stories.js +
+
94.11%16/17100%0/0100%0/0100%12/12
Link.js +
+
95.23%20/2194.44%17/1850%1/295.23%20/21
Link.stories.js +
+
95.23%20/21100%0/0100%0/0100%14/14
MultiSelectField.js +
+
0%0/290%0/80%0/170%0/28
MultiSelectField.stories.js +
+
0%0/7100%0/0100%0/00%0/5
MultiTextField.js +
+
100%7/766.66%8/12100%2/2100%7/7
MultiTextField.stories.js +
+
76.92%10/13100%0/0100%0/0100%9/9
ProjectInfo.js +
+
100%4/4100%4/4100%1/1100%4/4
ProjectInfo.stories.js +
+
83.33%5/6100%0/0100%0/0100%4/4
RadioButton.js +
+
90%9/1090.9%10/11100%3/390%9/10
RadioButton.stories.js +
+
94.73%18/19100%0/0100%0/0100%13/13
RadioField.js +
+
83.33%5/658.33%7/1266.66%2/383.33%5/6
RadioField.stories.js +
+
84.61%11/13100%0/0100%0/0100%9/9
SearchBar.js +
+
100%3/3100%0/0100%1/1100%3/3
SearchBar.stories.js +
+
83.33%5/6100%0/0100%0/0100%4/4
SelectField.js +
+
92.3%12/1355.55%10/1875%3/492.3%12/13
SelectField.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
TableOfContents.js +
+
100%4/4100%0/0100%2/2100%4/4
TableOfContents.stories.js +
+
83.33%5/6100%0/0100%0/0100%4/4
TextField.js +
+
100%8/865%13/20100%2/2100%8/8
TextField.stories.js +
+
92.3%12/13100%0/0100%0/0100%9/9
UpdateInfo.js +
+
0%0/4100%0/00%0/10%0/4
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/FragmentRender.js.html b/main/coverage/lcov-report/components/fragment_renderer/FragmentRender.js.html new file mode 100644 index 0000000000..48044397ea --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/FragmentRender.js.html @@ -0,0 +1,826 @@ + + + + + + Code coverage report for components/fragment_renderer/FragmentRender.js + + + + + + + + + +
+
+

All files / components/fragment_renderer FragmentRender.js

+
+ +
+ 89.28% + Statements + 25/28 +
+ + +
+ 63.49% + Branches + 40/63 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 89.28% + Lines + 25/28 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +4x +  +  +4x +4x +4x +4x +4x +4x +4x +  +  +  +  +  +  +4x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +4x +17x +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +6x +  +  +  +  +  +  +  +  +5x +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +11x +  +11x +  +17x +  +  +17x +  +  +  +  +17x +  +  +  +  +  +  +  +  +  +  +  +  +10x +  + 
// Import UUID generator for unique React keys
+import { v4 as uuid } from "uuid";
+ 
+// Import all fragment-specific components
+import TextWithImage from "./fragment_components/TextWithImage";
+import TextContent from "./fragment_components/TextContent";
+import Button from "./fragment_components/Button";
+import ArticleCTA from "./fragment_components/ArticleCTA";
+import QuoteVerticalLineContent from "./fragment_components/QuoteVerticalLineContent";
+import ImageWithCollapse from "./fragment_components/ImageWithCollapse";
+import TextRender from "../text_node_renderer/TextRender";
+ 
+/**
+ * Map of fragment types to their corresponding React components
+ * Each key represents a specific AEM fragment model type
+ * Values are the React components responsible for rendering that fragment type
+ */
+const FRAGMENTS = {
+  "SCLabs-Comp-Content-Image-v1": TextWithImage, // Combined text and image layouts
+  "SCLabs-Comp-Content-v1": QuoteVerticalLineContent, // Quote blocks with vertical line styling
+  "SCLabs-Content-v1": TextContent, // Generic text content blocks
+  "SCLabs-Button-v1": Button, // Interactive button elements
+  "SCLabs-Feature-v1": ArticleCTA, // Call-to-action article features
+  "SCLabs-Image-v1": ImageWithCollapse, // Images with collapsible details
+};
+ 
+/**
+ * Maps AEM fragment data to component-specific props
+ * Handles bilingual content and different layout variations
+ *
+ * @param {Object} fragmentData - Raw fragment data from AEM
+ * @param {string} fragmentName - Type identifier for the fragment
+ * @param {string} locale - Current language locale (en/fr)
+ * @param {boolean} excludeH1 - Whether to exclude h1 headers
+ * @returns {Object} Props object formatted for the specific component
+ */
+const mapFragmentsToProps = (fragmentData, fragmentName, locale, excludeH1) => {
+  switch (fragmentName) {
+    // Article CTA Fragment handling
+    case "SCLabs-Feature-v1":
+      return {
+        heading:
+          locale === "en" ? fragmentData.scTitleEn : fragmentData.scTitleFr,
+        body: (
+          <TextRender
+            data={
+              locale === "en"
+                ? fragmentData.scContentEn.json
+                : fragmentData.scContentFr.json
+            }
+          />
+        ),
+        ButtonProps: {
+          id: fragmentData.scLabsButton[0].scId,
+          text:
+            locale === "en"
+              ? fragmentData.scLabsButton[0].scTitleEn
+              : fragmentData.scLabsButton[0].scTitleFr,
+          href:
+            locale === "en"
+              ? fragmentData.scLabsButton[0].scDestinationURLEn
+              : fragmentData.scLabsButton[0].scDestinationURLFr,
+        },
+      };
+ 
+    // Text with Image Fragment handling
+    case "SCLabs-Comp-Content-Image-v1":
+      switch (fragmentData.scLabLayout) {
+        // Default layout configuration
+        case "default":
+          return {
+            src:
+              locale === "en"
+                ? fragmentData.scLabImage.scImageEn._publishUrl
+                : fragmentData.scLabImage.scImageFr._publishUrl,
+            alt: fragmentData.scLabImage.scImageAltTextEn
+              ? locale === "en"
+                ? fragmentData.scLabImage.scImageAltTextEn
+                : fragmentData.scLabImage.scImageAltTextFr
+              : "",
+            width: fragmentData.scLabImage.scImageEn.width,
+            height: fragmentData.scLabImage.scImageEn.height,
+            data:
+              locale === "en"
+                ? fragmentData.scLabContent[0].scContentEn.json
+                : fragmentData.scLabContent[0].scContentFr.json,
+            layout: fragmentData.scLabLayout,
+            excludeH1: excludeH1,
+          };
+        // Vertical line layout configuration
+        case "image-vertical-line-content":
+          return {
+            src:
+              locale === "en"
+                ? fragmentData.scLabImage.scImageEn._publishUrl
+                : fragmentData.scLabImage.scImageFr._publishUrl,
+            alt: fragmentData.scLabImage.scImageAltTextEn
+              ? locale === "en"
+                ? fragmentData.scLabImage.scImageAltTextEn
+                : fragmentData.scLabImage.scImageAltTextFr
+              : "",
+            width: fragmentData.scLabImage.scImageEn.width,
+            height: fragmentData.scLabImage.scImageEn.height,
+            data:
+              locale === "en"
+                ? fragmentData.scLabContent[0].scContentEn.json
+                : fragmentData.scLabContent[0].scContentFr.json,
+            layout: fragmentData.scLabLayout,
+            title:
+              locale === "en"
+                ? fragmentData.scLabImage.scLongDescHeadingEn
+                : fragmentData.scLabImage.scLongDescHeadingFr,
+            longDesc:
+              locale === "en"
+                ? fragmentData.scLabImage.scLongDescEn
+                : fragmentData.scLabImage.scLongDescFr,
+            children: (
+              <TextRender
+                data={
+                  locale === "en"
+                    ? fragmentData.scLabImage.scLongDescEn?.json
+                    : fragmentData.scLabImage.scLongDescFr?.json
+                }
+              />
+            ),
+          };
+        default:
+          break;
+      }
+ 
+    // Quote with vertical line styling
+    case "SCLabs-Comp-Content-v1":
+      return {
+        quoteText:
+          locale === "en"
+            ? fragmentData.scLabContent[0].scContentEn.json
+            : fragmentData.scLabContent[0].scContentFr.json,
+        explanationtext:
+          locale === "en"
+            ? fragmentData.scLabContent[1].scContentEn.json
+            : fragmentData.scLabContent[1].scContentFr.json,
+      };
+ 
+    // Generic text content
+    case "SCLabs-Content-v1":
+      return {
+        data:
+          locale === "en"
+            ? fragmentData.scContentEn.json
+            : fragmentData.scContentFr.json,
+      };
+ 
+    // Interactive button element
+    case "SCLabs-Button-v1":
+      return {
+        id: fragmentData.scId,
+        buttonType: fragmentData.scButtonType[0],
+        href:
+          locale === "en"
+            ? fragmentData.scDestinationURLEn
+            : fragmentData.scDestinationURLFr,
+        text: locale === "en" ? fragmentData.scTitleEn : fragmentData.scTitleFr,
+      };
+ 
+    // Image with collapsible details
+    case "SCLabs-Image-v1":
+      return {
+        id: fragmentData.scId,
+        src:
+          locale === "en"
+            ? fragmentData.scImageEn._publishUrl
+            : fragmentData.scImageFr._publishUrl,
+        alt:
+          locale === "en"
+            ? fragmentData.scImageAltTextEn
+            : fragmentData.scImageAltTextFr,
+        width: fragmentData.scImageEn.width,
+        height: fragmentData.scImageEn.height,
+        content: (
+          <TextRender
+            data={
+              locale === "en"
+                ? fragmentData.scImageCaptionEn.json
+                : fragmentData.scImageCaptionFr.json
+            }
+          />
+        ),
+        title:
+          locale === "en"
+            ? fragmentData.scLongDescHeadingEn
+            : fragmentData.scLongDescHeadingFr,
+        longDesc:
+          locale === "en"
+            ? fragmentData.scLongDescEn
+            : fragmentData.scLongDescFr,
+        children: (
+          <TextRender
+            data={
+              locale === "en"
+                ? fragmentData.scLongDescEn.json
+                : fragmentData.scLongDescFr.json
+            }
+          />
+        ),
+      };
+    default:
+      break;
+  }
+};
+ 
+/**
+ * FragmentRender Component
+ * Main component responsible for rendering AEM content fragments
+ * Handles the transformation of AEM data into React components
+ *
+ * @param {Object} props - Component props
+ * @param {Array} props.fragments - Array of AEM content fragments
+ * @param {string} props.locale - Current language locale
+ * @param {boolean} props.excludeH1 - Flag to exclude h1 headers
+ */
+export default function FragmentRender(props) {
+  // Map each fragment to its corresponding React component
+  const pageFragments = props.fragments.map((fragmentData) => {
+    // Get the appropriate component based on the fragment model type
+    const Fragment = FRAGMENTS[fragmentData?._model.title];
+ 
+    // Skip if no matching component is found
+    Iif (!Fragment) {
+      return;
+    }
+ 
+    // Render the component with mapped props
+    return (
+      <Fragment
+        key={uuid()}
+        {...mapFragmentsToProps(
+          fragmentData,
+          fragmentData?._model.title,
+          props.locale,
+          props.excludeH1
+        )}
+      />
+    );
+  });
+ 
+  return pageFragments;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/FragmentRender.stories.js.html b/main/coverage/lcov-report/components/fragment_renderer/FragmentRender.stories.js.html new file mode 100644 index 0000000000..01e36abdb8 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/FragmentRender.stories.js.html @@ -0,0 +1,4360 @@ + + + + + + Code coverage report for components/fragment_renderer/FragmentRender.stories.js + + + + + + + + + +
+
+

All files / components/fragment_renderer FragmentRender.stories.js

+
+ +
+ 96.15% + Statements + 25/26 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 18/18 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +809 +810 +811 +812 +813 +814 +815 +816 +817 +818 +819 +820 +821 +822 +823 +824 +825 +826 +827 +828 +829 +830 +831 +832 +833 +834 +835 +836 +837 +838 +839 +840 +841 +842 +843 +844 +845 +846 +847 +848 +849 +850 +851 +852 +853 +854 +855 +856 +857 +858 +859 +860 +861 +862 +863 +864 +865 +866 +867 +868 +869 +870 +871 +872 +873 +874 +875 +876 +877 +878 +879 +880 +881 +882 +883 +884 +885 +886 +887 +888 +889 +890 +891 +892 +893 +894 +895 +896 +897 +898 +899 +900 +901 +902 +903 +904 +905 +906 +907 +908 +909 +910 +911 +912 +913 +914 +915 +916 +917 +918 +919 +920 +921 +922 +923 +924 +925 +926 +927 +928 +929 +930 +931 +932 +933 +934 +935 +936 +937 +938 +939 +940 +941 +942 +943 +944 +945 +946 +947 +948 +949 +950 +951 +952 +953 +954 +955 +956 +957 +958 +959 +960 +961 +962 +963 +964 +965 +966 +967 +968 +969 +970 +971 +972 +973 +974 +975 +976 +977 +978 +979 +980 +981 +982 +983 +984 +985 +986 +987 +988 +989 +990 +991 +992 +993 +994 +995 +996 +997 +998 +999 +1000 +1001 +1002 +1003 +1004 +1005 +1006 +1007 +1008 +1009 +1010 +1011 +1012 +1013 +1014 +1015 +1016 +1017 +1018 +1019 +1020 +1021 +1022 +1023 +1024 +1025 +1026 +1027 +1028 +1029 +1030 +1031 +1032 +1033 +1034 +1035 +1036 +1037 +1038 +1039 +1040 +1041 +1042 +1043 +1044 +1045 +1046 +1047 +1048 +1049 +1050 +1051 +1052 +1053 +1054 +1055 +1056 +1057 +1058 +1059 +1060 +1061 +1062 +1063 +1064 +1065 +1066 +1067 +1068 +1069 +1070 +1071 +1072 +1073 +1074 +1075 +1076 +1077 +1078 +1079 +1080 +1081 +1082 +1083 +1084 +1085 +1086 +1087 +1088 +1089 +1090 +1091 +1092 +1093 +1094 +1095 +1096 +1097 +1098 +1099 +1100 +1101 +1102 +1103 +1104 +1105 +1106 +1107 +1108 +1109 +1110 +1111 +1112 +1113 +1114 +1115 +1116 +1117 +1118 +1119 +1120 +1121 +1122 +1123 +1124 +1125 +1126 +1127 +1128 +1129 +1130 +1131 +1132 +1133 +1134 +1135 +1136 +1137 +1138 +1139 +1140 +1141 +1142 +1143 +1144 +1145 +1146 +1147 +1148 +1149 +1150 +1151 +1152 +1153 +1154 +1155 +1156 +1157 +1158 +1159 +1160 +1161 +1162 +1163 +1164 +1165 +1166 +1167 +1168 +1169 +1170 +1171 +1172 +1173 +1174 +1175 +1176 +1177 +1178 +1179 +1180 +1181 +1182 +1183 +1184 +1185 +1186 +1187 +1188 +1189 +1190 +1191 +1192 +1193 +1194 +1195 +1196 +1197 +1198 +1199 +1200 +1201 +1202 +1203 +1204 +1205 +1206 +1207 +1208 +1209 +1210 +1211 +1212 +1213 +1214 +1215 +1216 +1217 +1218 +1219 +1220 +1221 +1222 +1223 +1224 +1225 +1226 +1227 +1228 +1229 +1230 +1231 +1232 +1233 +1234 +1235 +1236 +1237 +1238 +1239 +1240 +1241 +1242 +1243 +1244 +1245 +1246 +1247 +1248 +1249 +1250 +1251 +1252 +1253 +1254 +1255 +1256 +1257 +1258 +1259 +1260 +1261 +1262 +1263 +1264 +1265 +1266 +1267 +1268 +1269 +1270 +1271 +1272 +1273 +1274 +1275 +1276 +1277 +1278 +1279 +1280 +1281 +1282 +1283 +1284 +1285 +1286 +1287 +1288 +1289 +1290 +1291 +1292 +1293 +1294 +1295 +1296 +1297 +1298 +1299 +1300 +1301 +1302 +1303 +1304 +1305 +1306 +1307 +1308 +1309 +1310 +1311 +1312 +1313 +1314 +1315 +1316 +1317 +1318 +1319 +1320 +1321 +1322 +1323 +1324 +1325 +1326 +1327 +1328 +1329 +1330 +1331 +1332 +1333 +1334 +1335 +1336 +1337 +1338 +1339 +1340 +1341 +1342 +1343 +1344 +1345 +1346 +1347 +1348 +1349 +1350 +1351 +1352 +1353 +1354 +1355 +1356 +1357 +1358 +1359 +1360 +1361 +1362 +1363 +1364 +1365 +1366 +1367 +1368 +1369 +1370 +1371 +1372 +1373 +1374 +1375 +1376 +1377 +1378 +1379 +1380 +1381 +1382 +1383 +1384 +1385 +1386 +1387 +1388 +1389 +1390 +1391 +1392 +1393 +1394 +1395 +1396 +1397 +1398 +1399 +1400 +1401 +1402 +1403 +1404 +1405 +1406 +1407 +1408 +1409 +1410 +1411 +1412 +1413 +1414 +1415 +1416 +1417 +1418 +1419 +1420 +1421 +1422 +1423 +1424 +1425 +14261x +1x +1x +  +1x +  +  +  +  +  +  +  +1x +1x +1x +1x +1x +1x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as React from "react";
+import FragmentRender from "./FragmentRender";
+import { CollapseData } from "../../__mocks__/mockStore";
+ 
+export default {
+  title: "Components/Fragment_Renderer/FragmentRender",
+  component: FragmentRender,
+  locale: "en",
+};
+ 
+const Template = (args) => <FragmentRender {...args} />;
+ 
+export const ArticleCTA = Template.bind({});
+export const TextWithImage = Template.bind({});
+export const TextWithImageCollapse = Template.bind({});
+export const QuoteVerticalLineContent = Template.bind({});
+export const TextContent = Template.bind({});
+export const Button = Template.bind({});
+export const ImageWithCollapse = Template.bind({});
+ 
+ArticleCTA.args = {
+  locale: "en",
+  fragments: [
+    {
+      _model: {
+        title: "SCLabs-Feature-v1",
+      },
+      scId: "INFORMATION-ALPHA-SCLABS",
+      scTitleEn: "Information",
+      scTitleFr: "Information",
+      scContentEn: {
+        json: [
+          {
+            nodeType: "paragraph",
+            content: [
+              {
+                nodeType: "text",
+                value: "Alpha:",
+                format: {
+                  variants: ["strong"],
+                },
+              },
+              {
+                nodeType: "text",
+                value:
+                  " Building a draft tool or service and testing it to see if it meets needs.",
+              },
+            ],
+          },
+        ],
+      },
+      scContentFr: {
+        json: [
+          {
+            nodeType: "paragraph",
+            content: [
+              {
+                nodeType: "text",
+                value: "Alpha : ",
+                format: {
+                  variants: ["strong"],
+                },
+              },
+              {
+                nodeType: "text",
+                value:
+                  "Construire une première version d’un outil ou d’un service et le tester pour savoir s’il répond aux besoins.",
+              },
+            ],
+          },
+        ],
+      },
+      scLabsButton: [
+        {
+          scId: "GIVE-FEEDBACK-OAS-ESTIMATOR",
+          scTitleEn: "Give feedback",
+          scTitleFr: "Fournir des commentaires",
+          scDestinationURLEn:
+            "https://srv217.services.gc.ca/ihst4/Intro.aspx?cid=74938e05-8e91-42a9-8e9d-29daf79f6fe0&lc=eng",
+          scDestinationURLFr:
+            "https://srv217.services.gc.ca/ihst4/Intro.aspx?cid=74938e05-8e91-42a9-8e9d-29daf79f6fe0&lc=fra",
+          scButtonType: ["gc:custom/decd-endc/button-type/secondary"],
+        },
+      ],
+    },
+  ],
+};
+ 
+TextWithImage.args = {
+  locale: "en",
+  fragments: [
+    {
+      _model: {
+        title: "SCLabs-Comp-Content-Image-v1",
+      },
+      scId: "NAVIGATOR-DIFFICULTIES-MAIN",
+      scLabContent: [
+        {
+          scId: "DIFFICULTIES-COMMUNITY-WORKERS",
+          scContentEn: {
+            json: [
+              {
+                nodeType: "header",
+                style: "h1",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Difficulties faced by community workers who help people with their benefits",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Government benefits are designed to improve the lives of Canadians. Many benefits help people based on their health, job, housing, or family situation.",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "According to the 2022 Auditor General’s report, accessing these benefits can be hard for many reasons (see ",
+                  },
+                  {
+                    nodeType: "link",
+                    data: {
+                      href: "https://www.oag-bvg.gc.ca/internet/English/parl_oag_202205_01_e_44033.html",
+                    },
+                    value: "Access to Benefits for Hard-to-Reach Populations",
+                  },
+                  {
+                    nodeType: "text",
+                    value: ").",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "The report lists a few of those reasons. It also lists some options available to those who need help with applying.",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "The report says that people often rely on community organizations to learn about the help they could receive. We saw a similar trend in other research reports. From that, we concluded that community workers play an important role in helping people get government benefits. So, we decided to learn more about the problems that they face when they carry out this task.",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Here are some problems that we identified from our own research studies and other reports.",
+                  },
+                ],
+              },
+              {
+                nodeType: "header",
+                style: "h2",
+                content: [
+                  {
+                    nodeType: "text",
+                    value: "It takes time to learn about government benefits",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "We talked to several community workers who said it takes a lot of time and effort to become familiar with government benefits. This is because there are so many of them, they come from different sources, and they have different eligibility criteria.",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "They also said it’s hard to understand information on government websites. This was also mentioned in the reports we read.",
+                  },
+                ],
+              },
+              {
+                nodeType: "header",
+                style: "h2",
+                content: [
+                  {
+                    nodeType: "text",
+                    value: "It's hard to stay updated on news about benefits",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "From our research, we learned that community workers try to stay updated on news about benefits, but don’t have a good way to do so.",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "There isn’t one location that a person can go to see all the updates. Instead, the workers we talked to said that they made their own solutions. Some created news alerts, others subscribed to newsletters. Despite that, they were sure that they were missing some updates.",
+                  },
+                ],
+              },
+              {
+                nodeType: "header",
+                style: "h2",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "It's hard to understand eligibility conditions and the application process",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "The reports we read said that it’s difficult to apply for benefits because applications are long and ask for a lot of information.",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "The workers we talked to said that it’s hard to know which forms people need and where to find them.",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Complicated eligibility criteria make it hard to know if someone qualifies for a benefit. This can stop people from starting a long application process. Most don’t want to spend the effort if they don’t think they qualify.",
+                  },
+                ],
+              },
+              {
+                nodeType: "header",
+                style: "h2",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "We want to make it easier to understand government benefits",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "To fix the problems identified in our research, we want to make a tool that simplifies information about government benefits.",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value: "This tool will make it easier for anyone to:",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+              {
+                nodeType: "unordered-list",
+                content: [
+                  {
+                    nodeType: "list-item",
+                    content: [
+                      {
+                        nodeType: "text",
+                        value: "be aware of benefits ",
+                      },
+                    ],
+                  },
+                  {
+                    nodeType: "list-item",
+                    content: [
+                      {
+                        nodeType: "text",
+                        value: "know how to apply ",
+                      },
+                    ],
+                  },
+                  {
+                    nodeType: "list-item",
+                    content: [
+                      {
+                        nodeType: "text",
+                        value: "stay updated on changes ",
+                      },
+                    ],
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "By making this information easier to understand, we believe more people will apply for the benefits to which they are entitled.",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+            ],
+          },
+          scContentFr: {
+            json: [
+              {
+                nodeType: "header",
+                style: "h1",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Difficultés rencontrées par les travailleuses et travailleurs communautaires qui aident les gens avec leurs prestations",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Les prestations du gouvernement sont conçues pour améliorer la vie des gens. Plusieurs prestations aident les personnes selon leur état de santé, leur emploi, leur logement ou leur situation familiale.",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Selon le rapport de la vérificatrice générale de 2022, l’accès aux prestations peut être difficile pour de nombreuses raisons (voir ",
+                  },
+                  {
+                    nodeType: "link",
+                    data: {
+                      href: "https://www.oag-bvg.gc.ca/internet/Francais/parl_oag_202205_01_f_44033.html",
+                    },
+                    value:
+                      "L’accès aux prestations pour les populations difficiles à joindre",
+                  },
+                  {
+                    nodeType: "text",
+                    value: ").",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Le rapport énumère quelques-unes de ces raisons. Il énumère aussi des options disponibles pour les gens qui ont besoin d’aide pour faire la demande de prestations.",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Le rapport explique que les gens ont souvent recours aux organismes communautaires pour en savoir plus sur l'aide qu’ils pourraient recevoir. Nous avons constaté une tendance similaire dans d’autres projets de recherche. Nous en avons conclu que les travailleuses et travailleurs communautaires jouent un rôle important en aidant les gens à obtenir des prestations gouvernementales. Nous avons donc décidé d’en savoir plus sur les obstacles rencontrés lorsqu’ils accomplissent cette tâche.",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Voici quelques problèmes que nous avons identifiés dans nos recherches et d’autres rapports. ",
+                  },
+                ],
+              },
+              {
+                nodeType: "header",
+                style: "h2",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Il faut du temps pour se renseigner sur les prestations",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Nous avons parlé à plusieurs travailleuses et travailleurs communautaires qui ont dit qu’il faut beaucoup de temps et d’efforts pour se familiariser avec les prestations gouvernementales. La raison est qu’elles sont très nombreuses, proviennent de sources différentes et ont des critères d’admissibilité différents.",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Ils nous ont aussi dit qu’il est difficile de comprendre l’information sur les sites Web du gouvernement. C'est également ce qui ressort des rapports que nous avons lus.",
+                  },
+                ],
+              },
+              {
+                nodeType: "header",
+                style: "h2",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Il est difficile de se tenir au courant des nouveautés à propos des prestations",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Nos recherches nous ont appris que les travailleuses et travailleurs communautaires essaient de se tenir au courant des nouvelles concernant les prestations, mais n'ont pas de bon moyen de le faire.",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Il n'existe pas d'endroit où l'on peut consulter toutes les mises à jour. Au lieu de cela, les travailleuses et travailleurs auxquels nous avons parlé ont dit qu'ils avaient trouvé leurs propres solutions. Certaines personnes ont créé des alertes, d’autres se sont abonnées à des bulletins d'information. Malgré cela, elles étaient sûres que des mises à jour leur échappaient.",
+                  },
+                ],
+              },
+              {
+                nodeType: "header",
+                style: "h2",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Il est difficile de comprendre les conditions d'admissibilité et la procédure de demande",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Les rapports que nous avons lus indiquent qu'il est difficile de demander des prestations parce que les formulaires sont longs et exigent beaucoup d'informations.",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Les travailleuses et travailleurs auxquels nous avons parlé ont dit qu'il était difficile de savoir de quels formulaires les gens avaient besoin et où les trouver.",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "La complexité des critères d'admissibilité fait qu'il est difficile de savoir si une personne a droit à une prestation. Cela peut empêcher les gens d'entamer une longue procédure de demande. La plupart ne veulent pas faire cet effort s'ils pensent qu'ils n'ont pas droit à une prestation. ",
+                  },
+                ],
+              },
+              {
+                nodeType: "header",
+                style: "h2",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Nous voulons faciliter la compréhension des prestations gouvernementales ",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Pour résoudre les problèmes identifiés dans nos recherches, nous voulons créer un outil qui simplifie l'information sur les prestations gouvernementales. ",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value: "Cet outil permettra de mieux :",
+                  },
+                ],
+              },
+              {
+                nodeType: "unordered-list",
+                content: [
+                  {
+                    nodeType: "list-item",
+                    content: [
+                      {
+                        nodeType: "text",
+                        value: "connaître les prestations;",
+                      },
+                    ],
+                  },
+                  {
+                    nodeType: "list-item",
+                    content: [
+                      {
+                        nodeType: "text",
+                        value: "savoir comment présenter une demande;",
+                      },
+                    ],
+                  },
+                  {
+                    nodeType: "list-item",
+                    content: [
+                      {
+                        nodeType: "text",
+                        value: "rester au courant des changements.",
+                      },
+                    ],
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "En rendant ces informations plus faciles à comprendre, nous pensons que plus de personnes demanderont les prestations auxquelles elles ont droit. ",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+            ],
+          },
+        },
+      ],
+      scLabImage: {
+        scId: "COMMUNITY-WORKERS-IMAGE",
+        scImageEn: {
+          _publishUrl:
+            "https://www.canada.ca/content/dam/decd-endc/images/sclabs/benefits-navigator/community-workers.jpg",
+          width: 555,
+          height: 321,
+        },
+        scImageFr: {
+          _publishUrl:
+            "https://www.canada.ca/content/dam/decd-endc/images/sclabs/benefits-navigator/community-workers.jpg",
+          width: 555,
+          height: 321,
+        },
+        scImageMobileEn: null,
+        scImageMobileFr: null,
+        scImageAltTextEn: "Community workers helping people",
+        scImageAltTextFr:
+          "Travailleuses et travailleurs communautaires qui aident des gens",
+        scImageCaptionEn: {
+          json: null,
+        },
+        scImageCaptionFr: {
+          json: null,
+        },
+      },
+      scLabLayout: "default",
+    },
+  ],
+};
+ 
+TextWithImageCollapse.args = {
+  locale: "en",
+  fragments: [
+    {
+      _model: {
+        title: "SCLabs-Comp-Content-Image-v1",
+      },
+      scId: "NAVIGATOR-DIFFICULTIES-MAIN",
+      scLabContent: [
+        {
+          scId: "FEATURE-DASHBOARD",
+          scContentEn: {
+            json: [
+              {
+                nodeType: "header",
+                style: "h3",
+                content: [
+                  {
+                    nodeType: "text",
+                    value: "Information is clearly presented ",
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value: "On the dashboard, you will find: ",
+                  },
+                ],
+              },
+              {
+                nodeType: "unordered-list",
+                content: [
+                  {
+                    nodeType: "list-item",
+                    content: [
+                      {
+                        nodeType: "text",
+                        value: "all your benefits on the same page ",
+                      },
+                    ],
+                  },
+                  {
+                    nodeType: "list-item",
+                    content: [
+                      {
+                        nodeType: "text",
+                        value:
+                          "a menu to access your personal information and security settings",
+                      },
+                    ],
+                  },
+                ],
+              },
+            ],
+          },
+          scContentFr: {
+            json: [
+              {
+                nodeType: "header",
+                style: "h3",
+                content: [
+                  {
+                    nodeType: "text",
+                    value: "Information clairement présentée",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value: "Sur le tableau de bord, vous trouverez :",
+                  },
+                ],
+              },
+              {
+                nodeType: "unordered-list",
+                content: [
+                  {
+                    nodeType: "list-item",
+                    content: [
+                      {
+                        nodeType: "text",
+                        value: "toutes vos prestations sur la même page;",
+                      },
+                    ],
+                  },
+                  {
+                    nodeType: "list-item",
+                    content: [
+                      {
+                        nodeType: "text",
+                        value:
+                          "un menu pour accéder à vos informations personnelles et à vos paramètres de sécurité.",
+                      },
+                    ],
+                  },
+                ],
+              },
+            ],
+          },
+          scFragments: [
+            {
+              scId: "FEATURE-DASHBOARD",
+              scImageEn: {
+                _publishUrl:
+                  "https://www.canada.ca/content/dam/decd-endc/images/sclabs/client-hub/feature-dashboard-en.png",
+                width: 759,
+                height: 498,
+              },
+              scImageFr: {
+                _publishUrl:
+                  "https://www.canada.ca/content/dam/decd-endc/images/sclabs/client-hub/feature-dashboard-fr.png",
+                width: 758,
+                height: 498,
+              },
+              scImageMobileEn: null,
+              scImageMobileFr: null,
+              scImageAltTextEn:
+                "My dashboard page from My Service Canada Account",
+              scImageAltTextFr:
+                "Page Mon tableau de bord de Mon dossier Service Canada",
+              scImageCaptionEn: {
+                json: null,
+              },
+              scImageCaptionFr: {
+                json: null,
+              },
+              scLongDescHeadingEn: "Text version of the image My dashboard",
+              scLongDescHeadingFr:
+                "Version textuelle de l’image Mon tableau de bord",
+              scLongDescEn: {
+                json: [
+                  {
+                    nodeType: "paragraph",
+                    content: [
+                      {
+                        nodeType: "text",
+                        value: "The dashboard page includes: ",
+                      },
+                    ],
+                  },
+                  {
+                    nodeType: "unordered-list",
+                    content: [
+                      {
+                        nodeType: "list-item",
+                        content: [
+                          {
+                            nodeType: "text",
+                            value: "a heading with: ",
+                          },
+                          {
+                            nodeType: "unordered-list",
+                            content: [
+                              {
+                                nodeType: "list-item",
+                                content: [
+                                  {
+                                    nodeType: "text",
+                                    value:
+                                      "the name of the site: My Service Canada Account ",
+                                  },
+                                ],
+                              },
+                              {
+                                nodeType: "list-item",
+                                content: [
+                                  {
+                                    nodeType: "text",
+                                    value: "an “Account” menu ",
+                                  },
+                                ],
+                              },
+                            ],
+                          },
+                        ],
+                      },
+                      {
+                        nodeType: "list-item",
+                        content: [
+                          {
+                            nodeType: "text",
+                            value: "benefits, such as: ",
+                          },
+                          {
+                            nodeType: "unordered-list",
+                            content: [
+                              {
+                                nodeType: "list-item",
+                                content: [
+                                  {
+                                    nodeType: "text",
+                                    value:
+                                      "Employment Insurance, with a link to applications, payments and claims, taxes, reports and documents, personal information ",
+                                  },
+                                  {
+                                    nodeType: "line-break",
+                                    content: [],
+                                  },
+                                ],
+                              },
+                              {
+                                nodeType: "list-item",
+                                content: [
+                                  {
+                                    nodeType: "text",
+                                    value:
+                                      "Canada Pension Plan, with a link to applications, payments, taxes, documents, provisions, personal information ",
+                                  },
+                                  {
+                                    nodeType: "line-break",
+                                    content: [],
+                                  },
+                                ],
+                              },
+                            ],
+                          },
+                        ],
+                      },
+                    ],
+                  },
+                ],
+              },
+              scLongDescFr: {
+                json: [
+                  {
+                    nodeType: "paragraph",
+                    content: [
+                      {
+                        nodeType: "text",
+                        value:
+                          "Le tableau de bord contient les éléments suivants : ",
+                      },
+                    ],
+                  },
+                  {
+                    nodeType: "unordered-list",
+                    content: [
+                      {
+                        nodeType: "list-item",
+                        content: [
+                          {
+                            nodeType: "text",
+                            value: "un en-tête avec : ",
+                          },
+                          {
+                            nodeType: "unordered-list",
+                            content: [
+                              {
+                                nodeType: "list-item",
+                                content: [
+                                  {
+                                    nodeType: "text",
+                                    value:
+                                      "le nom du site : Mon dossier Service Canada; ",
+                                  },
+                                ],
+                              },
+                              {
+                                nodeType: "list-item",
+                                content: [
+                                  {
+                                    nodeType: "text",
+                                    value: "un menu « Compte »; ",
+                                  },
+                                ],
+                              },
+                            ],
+                          },
+                        ],
+                      },
+                      {
+                        nodeType: "list-item",
+                        content: [
+                          {
+                            nodeType: "text",
+                            value: "des prestations, telles que : ",
+                          },
+                          {
+                            nodeType: "unordered-list",
+                            content: [
+                              {
+                                nodeType: "list-item",
+                                content: [
+                                  {
+                                    nodeType: "text",
+                                    value:
+                                      "Assurance-emploi, avec un lien vers les demandes de prestations, paiements et demandes, impôts, rapports et documents, renseignements personnels; ",
+                                  },
+                                ],
+                              },
+                              {
+                                nodeType: "list-item",
+                                content: [
+                                  {
+                                    nodeType: "text",
+                                    value:
+                                      "Régime de pensions du Canada, avec un lien vers les demandes de prestations, paiements, impôts, documents, clauses, renseignements personnels.",
+                                  },
+                                ],
+                              },
+                            ],
+                          },
+                        ],
+                      },
+                    ],
+                  },
+                ],
+              },
+            },
+          ],
+        },
+      ],
+      scLabImage: {
+        scImageEn: {
+          _publishUrl:
+            "https://www.canada.ca/content/dam/decd-endc/images/sclabs/client-hub/feature-dashboard-en.png",
+          width: 759,
+          height: 498,
+        },
+        scImageFr: {
+          _publishUrl:
+            "https://www.canada.ca/content/dam/decd-endc/images/sclabs/client-hub/feature-dashboard-fr.png",
+          width: 758,
+          height: 498,
+        },
+        scImageMobileEn: null,
+        scImageMobileFr: null,
+        scImageAltTextEn: "My dashboard page from My Service Canada Account",
+        scImageAltTextFr:
+          "Page Mon tableau de bord de Mon dossier Service Canada",
+        scImageCaptionEn: {
+          json: null,
+        },
+        scImageCaptionFr: {
+          json: null,
+        },
+        scLongDescHeadingEn: "Text version of the image My dashboard",
+        scLongDescHeadingFr: "Version textuelle de l’image Mon tableau de bord",
+        scLongDescEn: {
+          json: [
+            {
+              nodeType: "paragraph",
+              content: [
+                {
+                  nodeType: "text",
+                  value: "The dashboard page includes: ",
+                },
+              ],
+            },
+            {
+              nodeType: "unordered-list",
+              content: [
+                {
+                  nodeType: "list-item",
+                  content: [
+                    {
+                      nodeType: "text",
+                      value: "a heading with: ",
+                    },
+                    {
+                      nodeType: "unordered-list",
+                      content: [
+                        {
+                          nodeType: "list-item",
+                          content: [
+                            {
+                              nodeType: "text",
+                              value:
+                                "the name of the site: My Service Canada Account",
+                            },
+                          ],
+                        },
+                        {
+                          nodeType: "list-item",
+                          content: [
+                            {
+                              nodeType: "text",
+                              value: "an “Account” menu",
+                            },
+                          ],
+                        },
+                      ],
+                    },
+                  ],
+                },
+                {
+                  nodeType: "list-item",
+                  content: [
+                    {
+                      nodeType: "text",
+                      value: "benefits, such as: ",
+                    },
+                    {
+                      nodeType: "unordered-list",
+                      content: [
+                        {
+                          nodeType: "list-item",
+                          content: [
+                            {
+                              nodeType: "text",
+                              value:
+                                "Employment Insurance, with a link to applications, payments and claims, taxes, reports and documents, personal information",
+                            },
+                            {
+                              nodeType: "line-break",
+                              content: [],
+                            },
+                          ],
+                        },
+                        {
+                          nodeType: "list-item",
+                          content: [
+                            {
+                              nodeType: "text",
+                              value:
+                                "Canada Pension Plan, with a link to applications, payments, taxes, documents, provisions, personal information",
+                            },
+                          ],
+                        },
+                      ],
+                    },
+                  ],
+                },
+              ],
+            },
+          ],
+        },
+        scLongDescFr: {
+          json: [
+            {
+              nodeType: "paragraph",
+              content: [
+                {
+                  nodeType: "text",
+                  value: "Le tableau de bord contient les éléments suivants : ",
+                },
+              ],
+            },
+            {
+              nodeType: "unordered-list",
+              content: [
+                {
+                  nodeType: "list-item",
+                  content: [
+                    {
+                      nodeType: "text",
+                      value: "un en-tête avec : ",
+                    },
+                    {
+                      nodeType: "unordered-list",
+                      content: [
+                        {
+                          nodeType: "list-item",
+                          content: [
+                            {
+                              nodeType: "text",
+                              value:
+                                "le nom du site : Mon dossier Service Canada; ",
+                            },
+                          ],
+                        },
+                        {
+                          nodeType: "list-item",
+                          content: [
+                            {
+                              nodeType: "text",
+                              value: "un menu « Compte »; ",
+                            },
+                          ],
+                        },
+                      ],
+                    },
+                  ],
+                },
+                {
+                  nodeType: "list-item",
+                  content: [
+                    {
+                      nodeType: "text",
+                      value: "des prestations, telles que : ",
+                    },
+                    {
+                      nodeType: "unordered-list",
+                      content: [
+                        {
+                          nodeType: "list-item",
+                          content: [
+                            {
+                              nodeType: "text",
+                              value:
+                                "Assurance-emploi, avec un lien vers les demandes de prestations, paiements et demandes, impôts, rapports et documents, renseignements personnels; ",
+                            },
+                          ],
+                        },
+                        {
+                          nodeType: "list-item",
+                          content: [
+                            {
+                              nodeType: "text",
+                              value:
+                                "Régime de pensions du Canada, avec un lien vers les demandes de prestations, paiements, impôts, documents, clauses, renseignements personnels.",
+                            },
+                          ],
+                        },
+                      ],
+                    },
+                  ],
+                },
+              ],
+            },
+          ],
+        },
+      },
+      scLabLayout: "image-vertical-line-content",
+      scLongDescHeadingEn: CollapseData.scLongDescHeadingEn,
+      scLongDescHeadingFr: CollapseData.scLongDescHeadingFr,
+      scLongDescEn: CollapseData.scLongDescEn,
+      scLongDescFr: CollapseData.scLongDescFr,
+    },
+  ],
+};
+ 
+TextContent.args = {
+  locale: "en",
+  fragments: [
+    {
+      _model: {
+        title: "SCLabs-Content-v1",
+      },
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/components/tooltips/information-alpha",
+      scId: "INFORMATION-ALPHA-SCLABS",
+      scTitleEn: "Information",
+      scTitleFr: "Information",
+      scContentEn: {
+        json: [
+          {
+            nodeType: "paragraph",
+            content: [
+              {
+                nodeType: "text",
+                value: "Alpha:",
+                format: {
+                  variants: ["strong"],
+                },
+              },
+              {
+                nodeType: "text",
+                value:
+                  " Building a draft tool or service and testing it to see if it meets needs.",
+              },
+            ],
+          },
+        ],
+      },
+      scContentFr: {
+        json: [
+          {
+            nodeType: "paragraph",
+            content: [
+              {
+                nodeType: "text",
+                value: "Alpha : ",
+                format: {
+                  variants: ["strong"],
+                },
+              },
+              {
+                nodeType: "text",
+                value:
+                  "Construire une première version d’un outil ou d’un service et le tester pour savoir s’il répond aux besoins.",
+              },
+            ],
+          },
+        ],
+      },
+    },
+  ],
+};
+ 
+ImageWithCollapse.args = {
+  locale: "en",
+  fragments: [
+    {
+      _model: {
+        title: "SCLabs-Image-v1",
+      },
+      scId: "NEWS-IMAGE",
+      scImageEn: {
+        _publishUrl: CollapseData.scImageEn._publishUrl,
+        width: CollapseData.scImageEn.width,
+        height: CollapseData.scImageEn.height,
+      },
+      scImageFr: {
+        _publishUrl:
+          "https://www.canada.ca/content/dam/decd-endc/images/sclabs/benefits-navigator/news-fr.png",
+        width: 1363,
+        height: 890,
+      },
+      scImageMobileEn: null,
+      scImageMobileFr: null,
+      scImageAltTextEn: "Benefit news and updates page",
+      scImageAltTextFr: "Page Nouvelles et mises à jour sur les prestations",
+      scImageCaptionEn: {
+        json: [
+          {
+            nodeType: "paragraph",
+            content: [
+              {
+                nodeType: "text",
+                value: "Figure 1",
+              },
+            ],
+          },
+        ],
+      },
+      scImageCaptionFr: {
+        json: [
+          {
+            nodeType: "paragraph",
+            content: [
+              {
+                nodeType: "text",
+                value: "Figure 1",
+              },
+            ],
+          },
+        ],
+      },
+      scLongDescHeadingEn: CollapseData.scLongDescHeadingEn,
+      scLongDescHeadingFr: CollapseData.scLongDescHeadingFr,
+      scLongDescEn: CollapseData.scLongDescEn,
+      scLongDescFr: CollapseData.scLongDescFr,
+    },
+  ],
+};
+ 
+Button.args = {
+  locale: "en",
+  fragments: [
+    {
+      _model: {
+        title: "SCLabs-Button-v1",
+      },
+      scId: "SIGN-IN-MSCA-BUTTON",
+      scTitleEn: "Sign in to My Service Canada Account",
+      scTitleFr: "Se connecter à Mon dossier Service Canada",
+      scDestinationURLEn:
+        "https://www.canada.ca/en/employment-social-development/services/my-account.html",
+      scDestinationURLFr:
+        "https://www.canada.ca/fr/emploi-developpement-social/services/mon-dossier.html",
+      scButtonType: ["gc:custom/decd-endc/button-type/primary"],
+    },
+  ],
+};
+ 
+QuoteVerticalLineContent.args = {
+  locale: "en",
+  fragments: [
+    {
+      _model: {
+        title: "SCLabs-Comp-Content-v1",
+      },
+      scId: "ESTIMATOR-FUTURE-ESTIMATE-COMMENT-1",
+      scLabContent: [
+        {
+          scContentEn: {
+            json: [
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "I didn’t like having to change my birth year to get an estimate",
+                  },
+                ],
+              },
+            ],
+          },
+          scContentFr: {
+            json: [
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Je n’aimais pas devoir changer mon année de naissance pour avoir une estimation",
+                  },
+                ],
+              },
+            ],
+          },
+        },
+        {
+          scContentEn: {
+            json: [
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "We now generate results that give future estimates to those who aren’t eligible yet. ",
+                  },
+                ],
+              },
+            ],
+          },
+          scContentFr: {
+            json: [
+              {
+                nodeType: "paragraph",
+                content: [
+                  {
+                    nodeType: "text",
+                    value:
+                      "Nous générons maintenant des résultats qui donnent des estimations futures aux personnes qui ne sont pas encore admissibles. ",
+                  },
+                  {
+                    nodeType: "line-break",
+                    content: [],
+                  },
+                ],
+              },
+            ],
+          },
+        },
+      ],
+      scLabLayout: "quote",
+    },
+  ],
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/PageHead.js.html b/main/coverage/lcov-report/components/fragment_renderer/PageHead.js.html new file mode 100644 index 0000000000..39bbc18652 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/PageHead.js.html @@ -0,0 +1,568 @@ + + + + + + Code coverage report for components/fragment_renderer/PageHead.js + + + + + + + + + +
+
+

All files / components/fragment_renderer PageHead.js

+
+ +
+ 0% + Statements + 0/2 +
+ + +
+ 0% + Branches + 0/30 +
+ + +
+ 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. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import Head from "next/head";
+ 
+export default function PageHead(props) {
+  return (
+    <Head>
+      {/* Primary HTML Meta Tags */}
+      <title>
+        {props.locale === "en"
+          ? `${props.pageData.scTitleEn} - Service Canada Labs`
+          : `${props.pageData.scTitleFr} - Laboratoires de Service Canada`}
+      </title>
+      <meta
+        name="description"
+        content={
+          props.locale === "en"
+            ? props.pageData.scDescriptionEn.json[0].content[0].value
+            : props.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"
+            ? props.pageData.scKeywordsEn
+            : props.pageData.scKeywordsFr
+        }
+      />
+ 
+      {/* DCMI Meta Tags */}
+      <meta
+        name="dcterms.title"
+        content={
+          props.locale === "en"
+            ? props.pageData.scTitleEn
+            : props.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"
+            ? props.pageData.scTitleEn
+            : props.pageData.scTitleFr
+        }
+      />
+      <meta
+        name="dcterms.subject"
+        title="gccore"
+        content={props.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"
+              ? props.pageData.scPageNameEn
+              : props.pageData.scPageNameFr
+          }`
+        }
+      />
+      <meta
+        property="og:title"
+        content={
+          props.locale === "en"
+            ? props.pageData.scTitleEn
+            : props.pageData.scTitleFr
+        }
+      />
+      <meta
+        property="og:description"
+        content={
+          props.locale === "en"
+            ? props.pageData.scTitleEn
+            : props.pageData.scTitleFr
+        }
+      />
+      <meta
+        property="og:image"
+        content={props.pageData.scSocialMediaImageEn?._publishUrl}
+      />
+      <meta
+        property="og:image:alt"
+        content={
+          props.locale === "en"
+            ? props.pageData.scTitleEn
+            : props.pageData.scTitleFr
+        }
+      />
+ 
+      {/* Twitter */}
+      <meta name="twitter:card" content="summary_large_image" />
+      <meta
+        name="twitter:url"
+        content={
+          "https://alpha.service.canada.ca" +
+          `${
+            props.locale === "en"
+              ? props.pageData.scPageNameEn
+              : props.pageData.scPageNameFr
+          }`
+        }
+      />
+      <meta
+        name="twitter:title"
+        content={
+          props.locale === "en"
+            ? props.pageData.scTitleEn
+            : props.pageData.scTitleFr
+        }
+      />
+      <meta name="twitter:creator" content="Service Canada" />
+      <meta
+        name="twitter:description"
+        content={
+          props.locale === "en"
+            ? props.pageData.scTitleEn
+            : props.pageData.scTitleFr
+        }
+      />
+      <meta
+        name="twitter:image"
+        content={props.pageData.scSocialMediaImageEn?._publishUrl}
+      />
+      <meta
+        name="twitter:image:alt"
+        content={
+          props.locale === "en"
+            ? props.pageData.scTitleEn
+            : props.pageData.scTitleFr
+        }
+      />
+    </Head>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ArticleCTA.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ArticleCTA.js.html new file mode 100644 index 0000000000..9e3ef645c3 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ArticleCTA.js.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/ArticleCTA.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components ArticleCTA.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. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +145x +  +6x +  +  +  +  +  +  +  +  +  +  + 
import { CTA } from "../../molecules/CTA";
+ 
+export default function ArticleCTA({ heading, body, ButtonProps, LinkProps }) {
+  return (
+    <CTA
+      heading={heading}
+      body={body}
+      ButtonProps={ButtonProps}
+      LinkProps={LinkProps}
+      containerClass="layout-container my-4"
+    />
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ArticleCTA.stories.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ArticleCTA.stories.js.html new file mode 100644 index 0000000000..819ebe7211 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ArticleCTA.stories.js.html @@ -0,0 +1,151 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/ArticleCTA.stories.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components ArticleCTA.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +231x +1x +  +1x +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  + 
import * as React from "react";
+import ArticleCTA from "./ArticleCTA";
+ 
+export default {
+  title: "Components/Fragment_Renderer/Fragment_Components/ArticleCTA",
+  component: ArticleCTA,
+};
+ 
+const Template = (args) => <ArticleCTA {...args} />;
+ 
+export const Default = Template.bind({});
+Default.args = {
+  heading: "This is a heading",
+  body: "This is a body",
+  ButtonProps: {
+    text: "Action Button",
+  },
+  LinkProps: {
+    id: "privacy-policy",
+    text: "Review the Privacy Policy",
+  },
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/BasicTextWithImage.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/BasicTextWithImage.js.html new file mode 100644 index 0000000000..d35b5b16a0 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/BasicTextWithImage.js.html @@ -0,0 +1,184 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/BasicTextWithImage.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components BasicTextWithImage.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. +

+ +
+
+

+
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 +346x +6x +  +5x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import Image from "next/image";
+import TextRender from "../../text_node_renderer/TextRender";
+ 
+export default function BasicTextWithImage({
+  src,
+  alt,
+  width,
+  height,
+  data,
+  excludeH1,
+}) {
+  return (
+    <div className="layout-container grid grid-cols-12 gap-x-6 my-12">
+      <div className="hidden lg:grid col-start-8 col-span-5 row-start-1 row-span-2">
+        <div className="flex justify-center">
+          <div className="h-auto">
+            <Image
+              src={src}
+              alt={alt}
+              width={width}
+              height={height}
+              sizes="50vw"
+              quality={100}
+            />
+          </div>
+        </div>
+      </div>
+      <div className="col-span-12 lg:col-span-7">
+        <TextRender data={data} excludeH1={excludeH1} />
+      </div>
+    </div>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/BasicTextWithImage.stories.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/BasicTextWithImage.stories.js.html new file mode 100644 index 0000000000..fa3bb98a20 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/BasicTextWithImage.stories.js.html @@ -0,0 +1,172 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/BasicTextWithImage.stories.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components BasicTextWithImage.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +301x +1x +  +1x +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as React from "react";
+import BasicTextWithImage from "./BasicTextWithImage";
+ 
+export default {
+  title: "Components/Fragment_Renderer/Fragment_Components/BasicTextWithImage",
+  component: BasicTextWithImage,
+};
+ 
+const Template = (args) => <BasicTextWithImage {...args} />;
+ 
+export const Default = Template.bind({});
+Default.args = {
+  src: "https://www.canada.ca/content/dam/decd-endc/images/sclabs/benefits-navigator/navigator-overview.jpg",
+  alt: "image alt text",
+  width: 359,
+  height: 260,
+  data: [
+    {
+      nodeType: "paragraph",
+      content: [
+        {
+          nodeType: "text",
+          value:
+            "Every week, our product team meets for Feedback Friday to sort through all the new survey responses. We look at the ratings and comments people shared with us about their experience. ",
+        },
+      ],
+    },
+  ],
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/Button.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/Button.js.html new file mode 100644 index 0000000000..faaf40fcc7 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/Button.js.html @@ -0,0 +1,154 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/Button.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components Button.js

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 66.66% + Branches + 4/6 +
+ + +
+ 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. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +245x +  +7x +  +7x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { ActionButton } from "../../atoms/ActionButton";
+ 
+export default function Button({ id, buttonType, href, text }) {
+  const style =
+    buttonType === null
+      ? "primary"
+      : buttonType === "gc:custom/decd-endc/button-type/primary"
+      ? "primary"
+      : buttonType === "gc:custom/decd-endc/button-type/secondary"
+      ? "secondary"
+      : "primary";
+  return (
+    <div className="layout-container grid grid-cols-12 gap-x-6 my-12">
+      <ActionButton
+        id={id}
+        style={style}
+        custom="col-span-12"
+        href={href}
+        text={text}
+      />
+    </div>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/Button.stories.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/Button.stories.js.html new file mode 100644 index 0000000000..a7806e69e8 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/Button.stories.js.html @@ -0,0 +1,160 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/Button.stories.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components Button.stories.js

+
+ +
+ 90% + Statements + 9/10 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +261x +1x +  +1x +  +  +  +  +  +  +1x +1x +1x +  +  +  +  +  +  +1x +  +  +  +  +  + 
import * as React from "react";
+import Button from "./Button";
+ 
+export default {
+  title: "Components/Fragment_Renderer/Fragment_Components/Button",
+  component: Button,
+};
+ 
+const Template = (args) => <Button {...args} />;
+ 
+export const Primary = Template.bind({});
+export const Secondary = Template.bind({});
+Primary.args = {
+  id: "Primary",
+  buttonType: "gc:custom/decd-endc/button-type/primary",
+  href: "/",
+  text: "Primary Button",
+};
+ 
+Secondary.args = {
+  id: "Secondary",
+  buttonType: "gc:custom/decd-endc/button-type/secondary",
+  href: "/",
+  text: "Secondary Button",
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageFragment.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageFragment.js.html new file mode 100644 index 0000000000..f1f02c312b --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageFragment.js.html @@ -0,0 +1,178 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/ImageFragment.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components ImageFragment.js

+
+ +
+ 0% + Statements + 0/2 +
+ + +
+ 0% + Branches + 0/6 +
+ + +
+ 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. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import Image from "next/image";
+ 
+export default function ImageFragment(props) {
+  return (
+    <div className="layout-container grid grid-cols-12 gap-x-6 my-12">
+      <Image
+        id={props.scId}
+        src={
+          props.locale === "en"
+            ? props.fragmentData.scImageEn._publishUrl
+            : props.fragmentData.scImageFr._publishUrl
+        }
+        alt={
+          props.locale === "en"
+            ? props.fragmentData.scImageAltTextEn
+            : props.fragmentData.scImageAltTextFr
+        }
+        className="col-span-12 lg:col-span-10"
+        width={props.fragmentData.scImageEn.width}
+        height={props.fragmentData.scImageEn.height}
+        sizes="(max-width: 768px) 100vw, 80vw"
+        quality={100}
+      />
+      <p className="grid row-start-2 col-span-12 lg:col-span-10 justify-around">
+        {props.locale === "en"
+          ? props.fragmentData.scImageCaptionEn.json[0].content[0].value
+          : props.fragmentData.scImageCaptionFr.json[0].content[0].value}
+      </p>
+    </div>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageFragment.stories.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageFragment.stories.js.html new file mode 100644 index 0000000000..2417157740 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageFragment.stories.js.html @@ -0,0 +1,145 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/ImageFragment.stories.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components ImageFragment.stories.js

+
+ +
+ 0% + Statements + 0/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 0% + Lines + 0/3 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as React from "react";
+import ImageFragment from "./ImageFragment";
+ 
+export default {
+  title: "Components/Fragment_Renderer/Fragment_Components/ImageFragment",
+  component: ImageFragment,
+};
+ 
+// const Template = (args) => <ImageFragment {...args} />;
+ 
+// export const Default = Template.bind({});
+ 
+// Default.args = {
+//   locale: "en",
+//   id: "Primary",
+//   src: "/image1.png",
+//   alt: "alt text",
+//   width: 359,
+//   height: 260
+// };
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageVerticalLineContent.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageVerticalLineContent.js.html new file mode 100644 index 0000000000..4d7b86e5c3 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageVerticalLineContent.js.html @@ -0,0 +1,214 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/ImageVerticalLineContent.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components ImageVerticalLineContent.js

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 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. +

+ +
+
+

+
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 +446x +6x +6x +  +6x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import Image from "next/image";
+import TextRender from "../../text_node_renderer/TextRender";
+import { Collapse } from "../../molecules/Collapse";
+ 
+export default function ImageVerticalLineContent({
+  src,
+  alt,
+  width,
+  height,
+  data,
+  longDesc,
+  title,
+  children,
+}) {
+  return (
+    <div className="layout-container">
+      <div 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">
+          <Image
+            src={src}
+            alt={alt}
+            height={height}
+            width={width}
+            sizes="100vw"
+            quality={100}
+          />
+        </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">
+            <TextRender data={data} />
+          </div>
+        </div>
+        {longDesc ? (
+          <div className="mb-6 col-span-12 xl:col-span-8 row-start-2 xl:row-start-2">
+            <Collapse data-testid="summary" title={title} children={children} />
+          </div>
+        ) : (
+          ""
+        )}
+      </div>
+    </div>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageVerticalLineContent.stories.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageVerticalLineContent.stories.js.html new file mode 100644 index 0000000000..ee14bbc813 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageVerticalLineContent.stories.js.html @@ -0,0 +1,475 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/ImageVerticalLineContent.stories.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components ImageVerticalLineContent.stories.js

+
+ +
+ 91.66% + Statements + 11/12 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +1311x +1x +1x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as React from "react";
+import ImageVerticalLineContent from "./ImageVerticalLineContent";
+import TextRender from "../../text_node_renderer/TextRender";
+import { CollapseData } from "../../../__mocks__/mockStore";
+ 
+export default {
+  title:
+    "Components/Fragment_Renderer/Fragment_Components/ImageVerticalLineContent",
+  component: ImageVerticalLineContent,
+  decorators: [
+    (Story) => (
+      <div className="layout-container">
+        <Story />
+      </div>
+    ),
+  ],
+};
+ 
+const Template = (args) => <ImageVerticalLineContent {...args} />;
+ 
+export const Default = Template.bind({});
+export const WithCollapse = Template.bind({});
+Default.args = {
+  id: "ImageVerticalLineContent",
+  src: CollapseData.scImageEn._publishUrl,
+  alt: "image alt text",
+  width: CollapseData.scImageEn.width,
+  height: CollapseData.scImageEn.height,
+  data: [
+    {
+      nodeType: "header",
+      style: "h3",
+      content: [
+        {
+          nodeType: "text",
+          value: "Information is clearly presented ",
+        },
+      ],
+    },
+    {
+      nodeType: "paragraph",
+      content: [
+        {
+          nodeType: "text",
+          value: "On the dashboard, you will find: ",
+        },
+      ],
+    },
+    {
+      nodeType: "unordered-list",
+      content: [
+        {
+          nodeType: "list-item",
+          content: [
+            {
+              nodeType: "text",
+              value: "all your benefits on the same page ",
+            },
+          ],
+        },
+        {
+          nodeType: "list-item",
+          content: [
+            {
+              nodeType: "text",
+              value:
+                "a menu to access your personal information and security settings",
+            },
+          ],
+        },
+      ],
+    },
+  ],
+};
+ 
+WithCollapse.args = {
+  id: "ImageVerticalLineContent",
+  src: CollapseData.scImageEn._publishUrl,
+  alt: "image alt text",
+  width: 759,
+  height: 497,
+  data: [
+    {
+      nodeType: "header",
+      style: "h3",
+      content: [
+        {
+          nodeType: "text",
+          value: "Information is clearly presented ",
+        },
+      ],
+    },
+    {
+      nodeType: "paragraph",
+      content: [
+        {
+          nodeType: "text",
+          value: "On the dashboard, you will find: ",
+        },
+      ],
+    },
+    {
+      nodeType: "unordered-list",
+      content: [
+        {
+          nodeType: "list-item",
+          content: [
+            {
+              nodeType: "text",
+              value: "all your benefits on the same page ",
+            },
+          ],
+        },
+        {
+          nodeType: "list-item",
+          content: [
+            {
+              nodeType: "text",
+              value:
+                "a menu to access your personal information and security settings",
+            },
+          ],
+        },
+      ],
+    },
+  ],
+  title: "Example Title",
+  longDesc: "Test Description",
+  children: <TextRender data={CollapseData.scLongDescEn.json} />,
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageWithCollapse.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageWithCollapse.js.html new file mode 100644 index 0000000000..f719d71978 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageWithCollapse.js.html @@ -0,0 +1,214 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/ImageWithCollapse.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components ImageWithCollapse.js

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 50% + Branches + 2/4 +
+ + +
+ 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. +

+ +
+
+

+
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 +445x +5x +  +7x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Collapse } from "../../molecules/Collapse";
+import Image from "next/image";
+ 
+export default function ImageWithCollapse({
+  id,
+  src,
+  alt,
+  width,
+  height,
+  content,
+  longDesc,
+  title,
+  children,
+}) {
+  return (
+    <div className="layout-container grid grid-cols-12 gap-x-6 my-12">
+      <Image
+        id={id}
+        src={src}
+        alt={alt}
+        className="col-span-12 lg:col-span-10"
+        width={width}
+        height={height}
+        sizes="100vw"
+        quality={100}
+      />
+      {content ? (
+        <p className="grid row-start-2 col-span-12 lg:col-span-10 justify-around mb-8">
+          {content}
+        </p>
+      ) : (
+        ""
+      )}
+      {longDesc ? (
+        <div className="grid row-start-3 col-span-12 lg:col-span-10">
+          <Collapse title={title} children={children} />
+        </div>
+      ) : (
+        ""
+      )}
+    </div>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageWithCollapse.stories.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageWithCollapse.stories.js.html new file mode 100644 index 0000000000..d81fb7fe89 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/ImageWithCollapse.stories.js.html @@ -0,0 +1,157 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/ImageWithCollapse.stories.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components ImageWithCollapse.stories.js

+
+ +
+ 88.88% + Statements + 8/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +24 +251x +1x +1x +1x +  +1x +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  +  +  +  +  + 
import * as React from "react";
+import ImageWithCollapse from "./ImageWithCollapse";
+import TextRender from "../../text_node_renderer/TextRender";
+import { CollapseData } from "../../../__mocks__/mockStore";
+ 
+export default {
+  title: "Components/Fragment_Renderer/Fragment_Components/ImageWithCollapse",
+  component: ImageWithCollapse,
+};
+ 
+const Template = (args) => <ImageWithCollapse {...args} />;
+ 
+export const Default = Template.bind({});
+Default.args = {
+  id: "ImageWithCollapse",
+  src: CollapseData.scImageEn._publishUrl,
+  alt: "image alt text",
+  width: CollapseData.scImageEn.width,
+  height: CollapseData.scImageEn.height,
+  content: CollapseData.scImageCaptionEn.json[0].content[0].value,
+  title: "Example Title",
+  longDesc: "Test Description",
+  children: <TextRender data={CollapseData.scLongDescEn.json} />,
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/QuoteVerticalLineContent.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/QuoteVerticalLineContent.js.html new file mode 100644 index 0000000000..5dc1934a6b --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/QuoteVerticalLineContent.js.html @@ -0,0 +1,154 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/QuoteVerticalLineContent.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components QuoteVerticalLineContent.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. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +245x +  +6x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import TextRender from "../../text_node_renderer/TextRender";
+ 
+export default function QuoteVerticalLineContent({
+  quoteText,
+  explanationtext,
+}) {
+  return (
+    <div className="layout-container grid grid-cols-12 gap-x-4 my-12">
+      <div className="col-span-12 xl:col-span-3">
+        <div className="speech-bubble">
+          <div className="speech-bubble-top">
+            <blockquote className="speech-bubble-quote">
+              <TextRender data={quoteText} />
+            </blockquote>
+          </div>
+        </div>
+      </div>
+      <div className="col-span-12 lg:col-span-7 xl:col-span-4 xxl:-ml-14 h-fit p-5 border-l-4 border-multi-blue-blue60f">
+        <TextRender data={explanationtext} />
+      </div>
+    </div>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/QuoteVerticalLineContent.stories.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/QuoteVerticalLineContent.stories.js.html new file mode 100644 index 0000000000..c71700bfce --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/QuoteVerticalLineContent.stories.js.html @@ -0,0 +1,196 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/QuoteVerticalLineContent.stories.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components QuoteVerticalLineContent.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +381x +1x +  +1x +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as React from "react";
+import QuoteVerticalLineContent from "./QuoteVerticalLineContent";
+ 
+export default {
+  title:
+    "Components/Fragment_Renderer/Fragment_Components/QuoteVerticalLineContent",
+  component: QuoteVerticalLineContent,
+};
+ 
+const Template = (args) => <QuoteVerticalLineContent {...args} />;
+ 
+export const Default = Template.bind({});
+Default.args = {
+  locale: "en",
+  quoteText: [
+    {
+      nodeType: "paragraph",
+      content: [
+        {
+          nodeType: "text",
+          value: "Quote Text",
+        },
+      ],
+    },
+  ],
+  explanationtext: [
+    {
+      nodeType: "paragraph",
+      content: [
+        {
+          nodeType: "text",
+          value: "Explanation Text",
+        },
+      ],
+    },
+  ],
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextContent.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextContent.js.html new file mode 100644 index 0000000000..3a6b21fe38 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextContent.js.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/TextContent.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components TextContent.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. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +125x +  +6x +  +  +  +  +  +  +  +  + 
import TextRender from "../../text_node_renderer/TextRender";
+ 
+export default function TextContent({ data }) {
+  return (
+    <div className="layout-container grid grid-cols-12 gap-x-6 my-12">
+      <div className="col-span-12 lg:col-span-7">
+        <TextRender data={data} excludeH1={true} />
+      </div>
+    </div>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextContent.stories.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextContent.stories.js.html new file mode 100644 index 0000000000..180bea0f0c --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextContent.stories.js.html @@ -0,0 +1,163 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/TextContent.stories.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components TextContent.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +271x +1x +  +1x +  +  +  +  +  +  +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as React from "react";
+import TextContent from "./TextContent";
+ 
+export default {
+  title: "Components/Fragment_Renderer/Fragment_Components/TextContent",
+  component: TextContent,
+};
+ 
+const Template = (args) => <TextContent {...args} />;
+ 
+export const Default = Template.bind({});
+ 
+Default.args = {
+  data: [
+    {
+      nodeType: "paragraph",
+      content: [
+        {
+          nodeType: "text",
+          value:
+            "Every week, our product team meets for Feedback Friday to sort through all the new survey responses. We look at the ratings and comments people shared with us about their experience. ",
+        },
+      ],
+    },
+  ],
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextWithImage.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextWithImage.js.html new file mode 100644 index 0000000000..3ba1f167d8 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextWithImage.js.html @@ -0,0 +1,220 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/TextWithImage.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components TextWithImage.js

+
+ +
+ 80% + Statements + 4/5 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 80% + Lines + 4/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +465x +5x +  +8x +  +  +  +  +  +  +  +  +  +  +  +6x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import BasicTextWithImage from "./BasicTextWithImage";
+import ImageVerticalLineContent from "./ImageVerticalLineContent";
+ 
+export default function TextWithImage({
+  src,
+  alt,
+  width,
+  height,
+  data,
+  layout,
+  title,
+  longDesc,
+  children,
+  excludeH1,
+}) {
+  switch (layout) {
+    case "default":
+      return (
+        <BasicTextWithImage
+          src={src}
+          alt={alt}
+          width={width}
+          height={height}
+          data={data}
+          excludeH1={excludeH1}
+        />
+      );
+    case "image-vertical-line-content":
+      return (
+        <ImageVerticalLineContent
+          src={src}
+          alt={alt}
+          width={width}
+          height={height}
+          data={data}
+          title={title}
+          longDesc={longDesc}
+          children={children}
+          excludeH1={excludeH1}
+        />
+      );
+    default:
+      break;
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextWithImage.stories.js.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextWithImage.stories.js.html new file mode 100644 index 0000000000..eb14fa2e2b --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/TextWithImage.stories.js.html @@ -0,0 +1,517 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components/TextWithImage.stories.js + + + + + + + + + +
+
+

All files / components/fragment_renderer/fragment_components TextWithImage.stories.js

+
+ +
+ 93.33% + Statements + 14/15 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 11/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +1451x +1x +1x +1x +  +1x +  +  +  +  +  +  +1x +1x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import * as React from "react";
+import TextWithImage from "./TextWithImage";
+import TextRender from "../../text_node_renderer/TextRender";
+import { CollapseData } from "../../../__mocks__/mockStore";
+ 
+export default {
+  title: "Components/Fragment_Renderer/Fragment_Components/TextWithImage",
+  component: TextWithImage,
+};
+ 
+const Template = (args) => <TextWithImage {...args} />;
+ 
+export const Default = Template.bind({});
+export const Vertical = Template.bind({});
+export const VerticalWithCollapse = Template.bind({});
+ 
+Default.args = {
+  src: "/image2.png",
+  alt: "image alt text",
+  width: 759,
+  height: 498,
+  layout: "default",
+  data: [
+    {
+      nodeType: "paragraph",
+      content: [
+        {
+          nodeType: "text",
+          value:
+            "Every week, our product team meets for Feedback Friday to sort through all the new survey responses. We look at the ratings and comments people shared with us about their experience. ",
+        },
+      ],
+    },
+  ],
+};
+ 
+Vertical.args = {
+  src: CollapseData.scImageEn._publishUrl,
+  alt: "image alt text",
+  width: CollapseData.scImageEn.width,
+  height: CollapseData.scImageEn.height,
+  layout: "image-vertical-line-content",
+  data: [
+    {
+      nodeType: "header",
+      style: "h3",
+      content: [
+        {
+          nodeType: "text",
+          value: "Information is clearly presented ",
+        },
+      ],
+    },
+    {
+      nodeType: "paragraph",
+      content: [
+        {
+          nodeType: "text",
+          value: "On the dashboard, you will find: ",
+        },
+      ],
+    },
+    {
+      nodeType: "unordered-list",
+      content: [
+        {
+          nodeType: "list-item",
+          content: [
+            {
+              nodeType: "text",
+              value: "all your benefits on the same page ",
+            },
+          ],
+        },
+        {
+          nodeType: "list-item",
+          content: [
+            {
+              nodeType: "text",
+              value:
+                "a menu to access your personal information and security settings",
+            },
+          ],
+        },
+      ],
+    },
+  ],
+};
+ 
+VerticalWithCollapse.args = {
+  src: CollapseData.scImageEn._publishUrl,
+  alt: "image alt text",
+  width: CollapseData.scImageEn.width,
+  height: CollapseData.scImageEn.height,
+  layout: "image-vertical-line-content",
+  data: [
+    {
+      nodeType: "header",
+      style: "h3",
+      content: [
+        {
+          nodeType: "text",
+          value: "Information is clearly presented ",
+        },
+      ],
+    },
+    {
+      nodeType: "paragraph",
+      content: [
+        {
+          nodeType: "text",
+          value: "On the dashboard, you will find: ",
+        },
+      ],
+    },
+    {
+      nodeType: "unordered-list",
+      content: [
+        {
+          nodeType: "list-item",
+          content: [
+            {
+              nodeType: "text",
+              value: "all your benefits on the same page ",
+            },
+          ],
+        },
+        {
+          nodeType: "list-item",
+          content: [
+            {
+              nodeType: "text",
+              value:
+                "a menu to access your personal information and security settings",
+            },
+          ],
+        },
+      ],
+    },
+  ],
+  title: "Example Title",
+  longDesc: "Test Description",
+  children: <TextRender data={CollapseData.scLongDescEn.json} />,
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/fragment_components/index.html b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/index.html new file mode 100644 index 0000000000..1184b61652 --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/fragment_components/index.html @@ -0,0 +1,371 @@ + + + + + + Code coverage report for components/fragment_renderer/fragment_components + + + + + + + + + +
+
+

All files components/fragment_renderer/fragment_components

+
+ +
+ 85.57% + Statements + 89/104 +
+ + +
+ 42.1% + Branches + 8/19 +
+ + +
+ 88.88% + Functions + 8/9 +
+ + +
+ 92.77% + Lines + 77/83 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
ArticleCTA.js +
+
100%2/2100%0/0100%1/1100%2/2
ArticleCTA.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
BasicTextWithImage.js +
+
100%3/3100%0/0100%1/1100%3/3
BasicTextWithImage.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
Button.js +
+
100%3/366.66%4/6100%1/1100%3/3
Button.stories.js +
+
90%9/10100%0/0100%0/0100%7/7
ImageFragment.js +
+
0%0/20%0/60%0/10%0/2
ImageFragment.stories.js +
+
0%0/4100%0/0100%0/00%0/3
ImageVerticalLineContent.js +
+
100%4/4100%2/2100%1/1100%4/4
ImageVerticalLineContent.stories.js +
+
91.66%11/12100%0/0100%0/0100%9/9
ImageWithCollapse.js +
+
100%3/350%2/4100%1/1100%3/3
ImageWithCollapse.stories.js +
+
88.88%8/9100%0/0100%0/0100%7/7
QuoteVerticalLineContent.js +
+
100%2/2100%0/0100%1/1100%2/2
QuoteVerticalLineContent.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
TextContent.js +
+
100%2/2100%0/0100%1/1100%2/2
TextContent.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
TextWithImage.js +
+
80%4/50%0/1100%1/180%4/5
TextWithImage.stories.js +
+
93.33%14/15100%0/0100%0/0100%11/11
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/fragment_renderer/index.html b/main/coverage/lcov-report/components/fragment_renderer/index.html new file mode 100644 index 0000000000..63b7c8c1dd --- /dev/null +++ b/main/coverage/lcov-report/components/fragment_renderer/index.html @@ -0,0 +1,146 @@ + + + + + + Code coverage report for components/fragment_renderer + + + + + + + + + +
+
+

All files components/fragment_renderer

+
+ +
+ 89.28% + Statements + 50/56 +
+ + +
+ 43.01% + Branches + 40/93 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 89.58% + Lines + 43/48 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
FragmentRender.js +
+
89.28%25/2863.49%40/63100%3/389.28%25/28
FragmentRender.stories.js +
+
96.15%25/26100%0/0100%0/0100%18/18
PageHead.js +
+
0%0/20%0/300%0/10%0/2
+
+
+
+ + + + + + + + \ 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..f023224c17 --- /dev/null +++ b/main/coverage/lcov-report/components/index.html @@ -0,0 +1,116 @@ + + + + + + Code coverage report for components + + + + + + + + + +
+
+

All files components

+
+ +
+ 0% + Statements + 0/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 0% + Lines + 0/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
index.js +
+
0%0/1100%0/0100%0/00%0/1
+
+
+
+ + + + + + + + \ 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..85920a5c35 --- /dev/null +++ b/main/coverage/lcov-report/components/index.js.html @@ -0,0 +1,88 @@ + + + + + + Code coverage report for components/index.js + + + + + + + + + +
+
+

All files / components index.js

+
+ +
+ 0% + Statements + 0/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 0% + Lines + 0/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2  + 
import "prop-types";
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/molecules/CTA.js.html b/main/coverage/lcov-report/components/molecules/CTA.js.html new file mode 100644 index 0000000000..aec2852948 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/CTA.js.html @@ -0,0 +1,208 @@ + + + + + + Code coverage report for components/molecules/CTA.js + + + + + + + + + +
+
+

All files / components/molecules CTA.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 66.66% + Branches + 2/3 +
+ + +
+ 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. +

+ +
+
+

+
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 +426x +6x +6x +  +7x +  +  +  +  +  +  +  +5x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { DSButton } from "../atoms/DSButton";
+import { Link } from "../atoms/Link";
+import { Image } from "../atoms/Image";
+ 
+export function CTA({
+  heading,
+  body,
+  ButtonProps,
+  LinkProps,
+  containerClass = "",
+}) {
+  // Check if body prop is HTML content
+  const isHTML = (str) => /<\/?[a-z][\s\S]*>/i.test(str);
+ 
+  return (
+    <div className="bg-multi-blue-blue2 p-3">
+      <div className={`flex flex-row ${containerClass}`}>
+        <div className="flex flex-col w-[60px] shrink-0">
+          <Image alt="icon" src="/comment_bubble.svg" className="w-[60px]" />
+          <div className="flex-grow divide-x-2 divide-multi-blue-blue60a flex flex-row justify-center mt-3">
+            <div></div>
+            <div></div>
+          </div>
+        </div>
+        <div className="pt-0 pl-5">
+          <h3 className={`leading-[40px] text-multi-neutrals-grey100`}>
+            {heading}
+          </h3>
+          {isHTML(body) ? body : <p className="body">{body}</p>}
+          <DSButton
+            styling="primary"
+            className="my-3"
+            type="button"
+            {...ButtonProps}
+          />
+          {LinkProps && <Link {...LinkProps} />}
+        </div>
+      </div>
+    </div>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/molecules/CTA.stories.js.html b/main/coverage/lcov-report/components/molecules/CTA.stories.js.html new file mode 100644 index 0000000000..43403697b2 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/CTA.stories.js.html @@ -0,0 +1,175 @@ + + + + + + Code coverage report for components/molecules/CTA.stories.js + + + + + + + + + +
+
+

All files / components/molecules CTA.stories.js

+
+ +
+ 90% + Statements + 9/10 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +311x +1x +1x +  +  +  +  +  +  +4x +1x +  +  +  +  +  +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  + 
import * as React from "react";
+import { CTA } from "./CTA";
+export default {
+  title: "Components/Molecules/CTA",
+  component: CTA,
+};
+ 
+const Template = (args) => <CTA {...args} />;
+ 
+export const Default = Template.bind({});
+Default.args = {
+  heading: "This is a call-to-action!",
+  body: "This sentence explains the action we want the users to take.",
+  ButtonProps: {
+    text: "Action Button",
+  },
+  LinkProps: {
+    id: "privacy-policy",
+    text: "Review the Privacy Policy",
+  },
+};
+ 
+export const WithoutLink = Template.bind({});
+WithoutLink.args = {
+  heading: "This is a call-to-action!",
+  body: "This sentence explains the action we want the users to take.",
+  ButtonProps: {
+    text: "Action Button",
+  },
+};
+ 
+ +
+
+ + + + + + + + \ 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..66f0d7b449 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/Card.js.html @@ -0,0 +1,601 @@ + + + + + + Code coverage report for components/molecules/Card.js + + + + + + + + + +
+
+

All files / components/molecules Card.js

+
+ +
+ 91.66% + Statements + 11/12 +
+ + +
+ 66.66% + Branches + 10/15 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 10/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +17310x +10x +10x +10x +10x +  +  +  +  +  +10x +32x +  +  +  +  +  +  +32x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +10x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +31x + 
import React from "react";
+import PropTypes from "prop-types";
+import Link from "next/link";
+import { ActionButton } from "../atoms/ActionButton";
+import Image from "next/image";
+ 
+/**
+ * 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={`h-full group card-shadow border border-custom-gray-border rounded-md py-4 hover:cursor-pointer ${
+          "border-" + tagColour + ` ${props.customStyling}`
+        }`}
+        data-testid={props.dataTestId}
+        data-cy={props.dataCy}
+      >
+        {props.showImage ? (
+          <div className="h-[208px] flex justify-center">
+            <Image
+              src={props.imgSrc}
+              alt={props.imgAlt}
+              className="object-contain"
+              width={props.imgWidth}
+              height={props.imgHeight}
+              // Cards are single column up to 768px
+              sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
+              quality={100}
+            />
+          </div>
+        ) : (
+          ""
+        )}
+        <div className="flex">
+          <p
+            className={
+              `block font-display text-[22px] leading-7 text-custom-blue-projects-link font-bold underline underline-offset-[2px] my-1 py-2 px-6 items-center group-hover:text-custom-blue-projects-link-hover` +
+              ` ${props.cardHeadingStyling}`
+            }
+          >
+            {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>
+        ) : (
+          ""
+        )}
+        {props.htmlDesc ? (
+          props.htmlDesc
+        ) : (
+          <p className="text-custom-gray-text mx-6">{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,
+ 
+  /**
+   * the test id for unit tests
+   */
+  dataTestId: PropTypes.string,
+ 
+  /**
+   * the test id for cypress test
+   */
+  dataCy: PropTypes.string,
+ 
+  /**
+   * Boolean value to allow passing of html for description
+   */
+  htmlDesc: PropTypes.object,
+ 
+  /**
+   * 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..85575933c3 --- /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 + + + + + + + + + +
+
+

All files / components/molecules Card.stories.js

+
+ +
+ 80% + Statements + 16/20 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 14/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +601x +1x +1x +  +1x +  +  +  +  +  +  +4x +2x +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/Collapse.js.html b/main/coverage/lcov-report/components/molecules/Collapse.js.html new file mode 100644 index 0000000000..bba3418ad4 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/Collapse.js.html @@ -0,0 +1,235 @@ + + + + + + Code coverage report for components/molecules/Collapse.js + + + + + + + + + +
+
+

All files / components/molecules Collapse.js

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 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. +

+ +
+
+

+
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 +519x +  +12x +11x +11x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+ 
+export function Collapse({ id = "defaultAccordion", ...props }) {
+  const { title, children } = props;
+  return (
+    <details
+      key={id}
+      id={id}
+      className="mb-[5px] text-multi-neutrals-grey100 leading-[33px]  text-mobileh5 font-body"
+      data-testid="details"
+    >
+      <summary
+        key={`summary-${id}`}
+        data-testid="summary"
+        className="text-multi-blue-blue60d hover:hover:text-multi-blue-blue50b hover:underline border border-multi-neutrals-grey40 rounded px-[15px] py-[5px] cursor-pointer select-none outline-none"
+      >
+        {title}
+      </summary>
+      <div className="border border-multi-neutrals-grey40 rounded-b px-[18px] py-[5px] cursor-pointer select-none outline-none">
+        {children}
+      </div>
+    </details>
+  );
+}
+ 
+Collapse.propTypes = {
+  /**
+   * component id
+   */
+  id: PropTypes.string,
+ 
+  /**
+   * Title of the collapsible header
+   */
+  title: PropTypes.string,
+ 
+  /**
+   * code passed in to fill the expanded area.
+   */
+  children: PropTypes.oneOfType([
+    PropTypes.string,
+    PropTypes.element,
+    PropTypes.arrayOf(PropTypes.element),
+  ]),
+ 
+  /**
+   * Test id for unit test
+   */
+  dataTestId: PropTypes.string,
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/molecules/Collapse.stories.js.html b/main/coverage/lcov-report/components/molecules/Collapse.stories.js.html new file mode 100644 index 0000000000..a2a32bd0f2 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/Collapse.stories.js.html @@ -0,0 +1,193 @@ + + + + + + Code coverage report for components/molecules/Collapse.stories.js + + + + + + + + + +
+
+

All files / components/molecules Collapse.stories.js

+
+ +
+ 90% + Statements + 9/10 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +371x +1x +  +1x +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import React from "react";
+import { Collapse } from "./Collapse";
+ 
+export default {
+  title: "Components/Molecules/Collapse",
+  component: Collapse,
+};
+ 
+const Template = (args) => <Collapse {...args} />;
+ 
+export const TextDescription = Template.bind({});
+TextDescription.args = {
+  id: "collapseId",
+  title: "Example title",
+  children: "Example description",
+  dataTestId: "/placeholderImg",
+};
+ 
+export const HtmlDescription = Template.bind({});
+HtmlDescription.args = {
+  id: "collapseId",
+  title: "Example title",
+  children: [
+    <p>First paragraph tag</p>,
+    <p>Second paragprahp tag</p>,
+    <ul>
+      <li>Unorderded list item 1</li>
+      <li>Unorderded list item 2</li>
+    </ul>,
+    <ol>
+      <li>Ordered list item 1</li>
+      <li>Ordered list item 2</li>
+    </ol>,
+  ],
+  dataTestId: "exampleTestId",
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/molecules/ContextualAlert.js.html b/main/coverage/lcov-report/components/molecules/ContextualAlert.js.html new file mode 100644 index 0000000000..8166d41df4 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/ContextualAlert.js.html @@ -0,0 +1,448 @@ + + + + + + Code coverage report for components/molecules/ContextualAlert.js + + + + + + + + + +
+
+

All files / components/molecules ContextualAlert.js

+
+ +
+ 100% + Statements + 11/11 +
+ + +
+ 81.25% + Branches + 13/16 +
+ + +
+ 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. +

+ +
+
+

+
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 +1223x +  +9x +9x +9x +9x +9x +  +  +  +  +  +  +  +  +  +  +9x +  +  +7x +  +  +  +  +  +  +  +  +7x +  +  +  +  +  +  +  +7x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+ 
+export function ContextualAlert(props) {
+  const warning_img = "/warning_img.svg";
+  const danger_img = "/danger_img.svg";
+  const info_img = "/info_img.svg";
+  const success_img = "/success_img.svg";
+ 
+  const {
+    message_heading,
+    message_body,
+    id,
+    type,
+    alert_icon_id,
+    alert_icon_alt_text,
+    asHtml,
+    whiteBG,
+  } = props;
+ 
+  const alert_type =
+    type === "warning"
+      ? warning_img
+      : type === "danger"
+      ? danger_img
+      : type === "info"
+      ? info_img
+      : success_img;
+ 
+  const alert_color =
+    type === "warning"
+      ? "border-specific-orange-orange50"
+      : type === "danger"
+      ? "border-specific-red-red50b"
+      : type === "info"
+      ? "border-specific-cyan-cyan50"
+      : "border-specific-green-green50a";
+ 
+  let white_BG = whiteBG ? "bg-multi-neutrals-white" : " ";
+ 
+  return (
+    <div
+      id={id}
+      className={`relative min-w-[290px] sm:pl-[24px] pl-[16px] ${white_BG}`}
+    >
+      <div className="absolute top-3 sm:left-3.5 left-1.5 bg-multi-neutrals-white py-4px">
+        {/* change back to image component once fixed */}
+        <img id={alert_icon_id} src={alert_type} alt={alert_icon_alt_text} />
+      </div>
+      <div
+        className={`overflow-auto border-l-6 ${alert_color} pl-[24px] py-[17px] leading-8`}
+      >
+        {asHtml ? (
+          <h3
+            className="mt-0 text-mobileh3 lg:text-h3 leading-heading3 ml-1"
+            dangerouslySetInnerHTML={{ __html: message_heading }}
+          />
+        ) : (
+          <h3 className="mt-0 text-mobileh3 lg:text-h3 leading-heading3 ml-1">
+            {message_heading}
+          </h3>
+        )}
+        {asHtml ? (
+          <div
+            className="font-body ml-0.5 text-mobilebody lg:text-p"
+            dangerouslySetInnerHTML={{ __html: message_body }}
+          />
+        ) : (
+          <div className="font-body ml-0.5 text-mobilebody lg:text-p">
+            {message_body}
+          </div>
+        )}
+      </div>
+    </div>
+  );
+}
+ 
+ContextualAlert.propTypes = {
+  /**
+   * component id
+   */
+  id: PropTypes.string.isRequired,
+ 
+  /**
+   * alert type
+   */
+  type: PropTypes.oneOf(["warning", "info", "success", "danger"]).isRequired,
+ 
+  /**
+   * id for the alert icon
+   */
+  alert_icon_id: PropTypes.string.isRequired,
+ 
+  /**
+   * Alternate text for the alert icon
+   */
+  alert_icon_alt_text: PropTypes.string.isRequired,
+ 
+  /**
+   * heading text
+   */
+  message_heading: PropTypes.string.isRequired,
+ 
+  /**
+   * body text
+   */
+  message_body: PropTypes.oneOfType([
+    PropTypes.string,
+    PropTypes.element,
+    PropTypes.arrayOf(PropTypes.element),
+  ]).isRequired,
+ 
+  /**
+   * HTML toggle. Determines if text is parsed as plain text or HTML.
+   */
+  asHtml: PropTypes.bool,
+ 
+  /**
+   * If true the background will be white, default is transparent.
+   */
+  whiteBG: PropTypes.bool,
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/molecules/ContextualAlert.stories.js.html b/main/coverage/lcov-report/components/molecules/ContextualAlert.stories.js.html new file mode 100644 index 0000000000..076d88b6b1 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/ContextualAlert.stories.js.html @@ -0,0 +1,295 @@ + + + + + + Code coverage report for components/molecules/ContextualAlert.stories.js + + + + + + + + + +
+
+

All files / components/molecules ContextualAlert.stories.js

+
+ +
+ 93.33% + Statements + 14/15 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 10/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +711x +1x +  +  +  +  +  +  +4x +2x +2x +2x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { ContextualAlert } from "./ContextualAlert";
+export default {
+  title: "Components/Molecules/ContextualAlert",
+  component: ContextualAlert,
+};
+ 
+const Template = (args) => <ContextualAlert {...args} />;
+ 
+export const Success = Template.bind({});
+export const Info = Template.bind({});
+export const Warning = Template.bind({});
+export const Danger = Template.bind({});
+ 
+Success.args = {
+  id: "success",
+  type: "success",
+  message_heading: "COVID-19 New services and service changes",
+  message_body: [
+    <p>
+      Find out about new support for Canadians during the COVID-19 pandemic and
+      how Service Canada’s services are affectedFind out about new support for
+      Canadians during the COVID-19 pandemic and how Service Canada’s services
+      are affected
+      <a href="https://healthycanadians.gc.ca/video/suspect-eng.php#trans">
+        Transcript
+      </a>
+    </p>,
+  ],
+  alert_icon_alt_text: "success icon",
+  alert_icon_id: "success icon",
+};
+ 
+Info.args = {
+  id: "info",
+  type: "info",
+  message_heading: "COVID-19 New services and service changes",
+  message_body:
+    "Find out about new support for Canadians during the COVID-19 pandemic and how Service Canada’s services are affectedFind out about new support for Canadians during the COVID-19 pandemic and how Service Canada’s services are affected",
+  alert_icon_alt_text: "info icon",
+  alert_icon_id: "info icon",
+};
+ 
+Warning.args = {
+  id: "warning",
+  type: "warning",
+  message_heading: "COVID-19 New services and service changes",
+  message_body:
+    "Find out about new support for Canadians during the COVID-19 pandemic and how Service Canada’s services are affectedFind out about new support for Canadians during the COVID-19 pandemic and how Service Canada’s services are affected",
+  alert_icon_alt_text: "warning",
+  alert_icon_id: "warning icon",
+};
+ 
+Danger.args = {
+  id: "danger",
+  type: "danger",
+  message_heading: "COVID-19 New services and service changes",
+  message_body: [
+    <p>
+      Find out about new support for Canadians during the COVID-19 pandemic and
+      how Service Canada’s services are affectedFind out about new support for
+      Canadians during the COVID-19 pandemic and how Service Canada’s services
+      are affected
+      <a href="https://healthycanadians.gc.ca/video/suspect-eng.php#trans">
+        Transcript
+      </a>
+    </p>,
+  ],
+  alert_icon_alt_text: "danger icon",
+  alert_icon_id: "danger icon",
+};
+ 
+ +
+
+ + + + + + + + \ 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..ea8c49bf0e --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/CopyToClipboard.js.html @@ -0,0 +1,478 @@ + + + + + + Code coverage report for components/molecules/CopyToClipboard.js + + + + + + + + + +
+
+

All files / components/molecules CopyToClipboard.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 75% + Branches + 3/4 +
+ + +
+ 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. +

+ +
+
+

+
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 +1322x +2x +2x +  +5x +4x +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+import Clipboard from "react-copy-to-clipboard";
+import { ActionButton } from "../atoms/ActionButton";
+ 
+export function CopyToClipboard({ value = "", type = "text", ...props }) {
+  const ifControlledProps = !props.uncontrolled
+    ? {
+        value: 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={type}
+        onChange={(e) => props.onChange(e.currentTarget.value)}
+        {...ifControlledProps}
+        data-testid={props.dataTestId}
+        data-cy={props.dataCy}
+        aria-label={props.aria_label}
+      />
+      <Clipboard text={value}>
+        <ActionButton
+          id={props.buttonId}
+          className={`w-full ${props.buttonStyle}`}
+          onClick={props.onClick}
+        >
+          {props.buttonText}
+        </ActionButton>
+      </Clipboard>
+    </div>
+  );
+}
+ 
+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..c6668bcb62 --- /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 + + + + + + + + + +
+
+

All files / components/molecules CopyToClipboard.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +231x +1x +  +1x +  +  +  +  +  +  +5x +  +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..744e7d1d23 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/Details.js.html @@ -0,0 +1,217 @@ + + + + + + Code coverage report for components/molecules/Details.js + + + + + + + + + +
+
+

All files / components/molecules Details.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. +

+ +
+
+

+
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 +452x +  +  +  +  +11x +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
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..21f92d2108 --- /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 + + + + + + + + + +
+
+

All files / components/molecules Details.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +181x +1x +  +1x +  +  +  +  +  +  +6x +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..8e68dfef92 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/ErrorBox.js.html @@ -0,0 +1,280 @@ + + + + + + Code coverage report for components/molecules/ErrorBox.js + + + + + + + + + +
+
+

All files / components/molecules ErrorBox.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +661x +1x +  +  +  +  +4x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +  +  +  +  +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({ errors = [], ...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"
+      >
+        {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.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..79cd6efcd4 --- /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 + + + + + + + + + +
+
+

All files / components/molecules ErrorBox.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +421x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +11x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import React from "react";
+import { ErrorBox } from "./ErrorBox";
+ 
+export default {
+  title: "Components/Molecules/ErrorBox",
+  component: ErrorBox,
+  decorators: [
+    (Story) => (
+      <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..5d2dfedccd --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/FeedbackWidget.js.html @@ -0,0 +1,1006 @@ + + + + + + Code coverage report for components/molecules/FeedbackWidget.js + + + + + + + + + +
+
+

All files / components/molecules FeedbackWidget.js

+
+ +
+ 72.58% + Statements + 45/62 +
+ + +
+ 38.09% + Branches + 8/21 +
+ + +
+ 50% + Functions + 5/10 +
+ + +
+ 71.66% + Lines + 43/60 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +30810x +10x +10x +10x +10x +10x +10x +10x +10x +  +  +  +  +  +10x +  +  +  +  +  +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 +  +  +  +  +  +  +10x + 
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;
+ 
+    Iif (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..4aab87adf7 --- /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 + + + + + + + + + +
+
+

All files / components/molecules FeedbackWidget.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +161x +1x +  +1x +  +  +  +  +  +  +8x +  +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..4e4f26c521 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/Filter.js.html @@ -0,0 +1,298 @@ + + + + + + Code coverage report for components/molecules/Filter.js + + + + + + + + + +
+
+

All files / components/molecules Filter.js

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 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. +

+ +
+
+

+
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 +721x +1x +  +  +  +  +4x +  +  +  +  +  +  +  +  +  +  +  +  +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..5fecf1e03c --- /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 + + + + + + + + + +
+
+

All files / components/molecules Filter.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +331x +1x +  +1x +  +  +  +  +  +  +12x +  +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/Heading.js.html b/main/coverage/lcov-report/components/molecules/Heading.js.html new file mode 100644 index 0000000000..6cdcac6284 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/Heading.js.html @@ -0,0 +1,241 @@ + + + + + + Code coverage report for components/molecules/Heading.js + + + + + + + + + +
+
+

All files / components/molecules Heading.js

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 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. +

+ +
+
+

+
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 +5315x +  +12x +11x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +15x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+ 
+export function Heading(props) {
+  const { title, fromLink, fromText, id, className } = props;
+ 
+  return (
+    <>
+      <h1 className={`mb-0 pb-2 leading-heading1 ${className}`} id={id}>
+        {title}
+      </h1>
+      <div className="mb-11 border-b-[6px] border-b-multi-red-red50a w-[72px]"></div>
+      {fromLink && fromText && (
+        <p className="">
+          <strong>From: </strong>
+          <a
+            href={fromLink}
+            className="underline text-multi-blue-blue70b font-body lg:text-browserh5 font-bold text-mobileh5 leading-[33px] hover:text-multi-blue-blue50b"
+          >
+            {fromText}
+          </a>
+        </p>
+      )}
+    </>
+  );
+}
+ 
+Heading.propTypes = {
+  /**
+   * The text / title that will be displayed as heading
+   */
+  title: PropTypes.string.isRequired,
+  /**
+   * Link that should be dispayed under the main heading level
+   */
+  fromLink: PropTypes.string,
+  /**
+   * Text that will be displyed as text link
+   */
+  fromText: PropTypes.string,
+  /**
+   * css overrides for button
+   */
+  className: PropTypes.string,
+  /**
+   * To identify the heading element
+   */
+  id: PropTypes.string.isRequired,
+  /**
+   * Test id for unit test
+   */
+  dataTestId: PropTypes.string,
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/molecules/Heading.stories.js.html b/main/coverage/lcov-report/components/molecules/Heading.stories.js.html new file mode 100644 index 0000000000..877670961e --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/Heading.stories.js.html @@ -0,0 +1,154 @@ + + + + + + Code coverage report for components/molecules/Heading.stories.js + + + + + + + + + +
+
+

All files / components/molecules Heading.stories.js

+
+ +
+ 88.88% + Statements + 8/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 6/6 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +241x +  +1x +  +  +  +  +  +  +3x +1x +  +1x +  +  +  +  +1x +  +  +  +  +  + 
import { Heading } from "./Heading";
+ 
+export default {
+  title: "Components/Molecules/Heading",
+  component: Heading,
+};
+ 
+const Template = (args) => <Heading {...args} />;
+ 
+export const Default = Template.bind({});
+export const withFromLink = Template.bind({});
+ 
+Default.args = {
+  title: "Default Heading",
+  id: "withoutLink",
+};
+ 
+withFromLink.args = {
+  title: "Heading with from link",
+  fromLink: "https://www.google.com",
+  fromText: "Google",
+  id: "withLink",
+};
+ 
+ +
+
+ + + + + + + + \ 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..0f36139ae5 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/List.js.html @@ -0,0 +1,208 @@ + + + + + + Code coverage report for components/molecules/List.js + + + + + + + + + +
+
+

All files / components/molecules List.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 1/1 +
+ + +
+ 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. +

+ +
+
+

+
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 +421x +  +  +  +  +3x +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..877362f48a --- /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 + + + + + + + + + +
+
+

All files / components/molecules List.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +161x +1x +  +1x +  +  +  +  +  +  +5x +  +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/MainBand.js.html b/main/coverage/lcov-report/components/molecules/MainBand.js.html new file mode 100644 index 0000000000..d185758cfb --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/MainBand.js.html @@ -0,0 +1,214 @@ + + + + + + Code coverage report for components/molecules/MainBand.js + + + + + + + + + +
+
+

All files / components/molecules MainBand.js

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 2/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. +

+ +
+
+

+
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 +449x +9x +  +13x +13x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +273x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Link } from "../atoms/Link";
+import { useTranslation } from "next-i18next";
+ 
+export function MainBand(props) {
+  const { t } = useTranslation("common");
+ 
+  return (
+    <>
+      <h3 className="pt-[22px] text-multi-neutrals-white font-body font-bold text-[19px]">
+        {t("footerTitle")}
+      </h3>
+      <nav
+        className="pb-6"
+        role="navigation"
+        aria-labelledby="accessibleSectionHeader1"
+      >
+        <h2 className="sr-only" id="accessibleSectionHeader1">
+          {t("aboutGovernment")}
+        </h2>
+        <ul className="md:grid md:grid-cols-2 lg:grid-cols-3 flex flex-col gap-1 text-xs ml-0">
+          {props.landscapeLinks.map((key, index) => {
+            return (
+              <li
+                key={key + index}
+                className={`${
+                  index === 0 ? "footerLine pb-[22px] relative" : ""
+                } text-white w-64 sm:w-56 lg:w-80 my-2.5 list-none ml-0 text-xs`}
+              >
+                <Link
+                  id={"LandscapeLink" + index}
+                  href={t(`landscapeLinks.link.${key}`)}
+                  text={t(`landscapeLinks.text.${key}`)}
+                  linkStyle="smfooterWhite"
+                  target={props.target}
+                />
+              </li>
+            );
+          })}
+        </ul>
+      </nav>
+    </>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ 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..ababf2214a --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/Menu.js.html @@ -0,0 +1,448 @@ + + + + + + Code coverage report for components/molecules/Menu.js + + + + + + + + + +
+
+

All files / components/molecules Menu.js

+
+ +
+ 92.85% + Statements + 13/14 +
+ + +
+ 60% + Branches + 6/10 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 92.85% + Lines + 13/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +1221x +1x +1x +1x +  +  +  +  +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..f9021ac27d --- /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 + + + + + + + + + +
+
+

All files / components/molecules Menu.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +311x +1x +  +1x +  +  +  +  +  +  +6x +  +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..1dff97adf6 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/OptionalListField.js.html @@ -0,0 +1,529 @@ + + + + + + Code coverage report for components/molecules/OptionalListField.js + + + + + + + + + +
+
+

All files / components/molecules OptionalListField.js

+
+ +
+ 78.94% + Statements + 15/19 +
+ + +
+ 75% + Branches + 12/16 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 78.94% + Lines + 15/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +1491x +1x +1x +1x +  +  +  +  +5x +5x +5x +1x +  +  +1x +  +  +1x +  +  +  +5x +5x +  +  +5x +5x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +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({ controlType = "checkbox", ...props }) {
+  let [showListField, setShowListField] = useState(props.checked || false);
+  let handleCheckChange = (wasChecked, name, value) => {
+    Iif (wasChecked) {
+      setShowListField(false);
+    } else {
+      setShowListField(true);
+    }
+ 
+    Iif (props.onControlChange) {
+      props.onControlChange(wasChecked, name, value);
+    }
+  };
+  let sortedChildren = [...props.children].sort((a, b) => {
+    Iif (a.props.label < b.props.label) {
+      return -1;
+    }
+    if (b.props.label < a.props.label) {
+      return 1;
+    }
+    return 0;
+  });
+  return (
+    <>
+      {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.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..f20d387259 --- /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 + + + + + + + + + +
+
+

All files / components/molecules OptionalListField.stories.js

+
+ +
+ 90.47% + Statements + 19/21 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 15/15 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +1601x +1x +1x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +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: [
+    (Story) => (
+      <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..7ac6f92bb7 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/OptionalTextField.js.html @@ -0,0 +1,865 @@ + + + + + + Code coverage report for components/molecules/OptionalTextField.js + + + + + + + + + +
+
+

All files / components/molecules OptionalTextField.js

+
+ +
+ 85% + Statements + 17/20 +
+ + +
+ 78.94% + Branches + 15/19 +
+ + +
+ 50% + Functions + 2/4 +
+ + +
+ 85% + Lines + 17/20 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +2612x +2x +2x +2x +2x +2x +2x +  +  +  +  +54x +55x +55x +55x +55x +3x +  +  +  +3x +3x +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
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({ controlType = "checkbox", ...props }) {
+  let [showTextField, setShowTextField] = useState(props.checked || false);
+  const [expandState, setExpandState] = useState("collapsed");
+  const { t } = useTranslation("common");
+  let handleCheckChange = (wasChecked, name, value) => {
+    Iif (wasChecked) {
+      setShowTextField(false);
+      setExpandState(t("collapsed"));
+    } else {
+      setShowTextField(true);
+      setExpandState(t("expanded"));
+    }
+ 
+    Iif (props.onControlChange) {
+      props.onControlChange(wasChecked, name, value);
+    }
+  };
+  return (
+    <>
+      {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}
+        />
+      )}
+      {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.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..2a6587c4e1 --- /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 + + + + + + + + + +
+
+

All files / components/molecules OptionalTextField.stories.js

+
+ +
+ 84.21% + Statements + 16/19 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 13/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +861x +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  +  +  +  +  +  +2x +1x +  +  +  +  +  +  +  +  +  +  +  +  + 
import React from "react";
+import { OptionalTextField } from "./OptionalTextField";
+ 
+export default {
+  title: "Components/Molecules/OptionalTextField",
+  component: OptionalTextField,
+  decorators: [
+    (Story) => (
+      <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..e089267014 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/Quote.js.html @@ -0,0 +1,193 @@ + + + + + + Code coverage report for components/molecules/Quote.js + + + + + + + + + +
+
+

All files / components/molecules Quote.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. +

+ +
+
+

+
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 +371x +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +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..e7e7d42e0c --- /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 + + + + + + + + + +
+
+

All files / components/molecules Quote.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +171x +1x +  +1x +  +  +  +  +  +  +5x +  +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/SubFooterBand.js.html b/main/coverage/lcov-report/components/molecules/SubFooterBand.js.html new file mode 100644 index 0000000000..7a81175edf --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/SubFooterBand.js.html @@ -0,0 +1,511 @@ + + + + + + Code coverage report for components/molecules/SubFooterBand.js + + + + + + + + + +
+
+

All files / components/molecules SubFooterBand.js

+
+ +
+ 88.88% + Statements + 8/9 +
+ + +
+ 42.85% + Branches + 9/21 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 88.88% + Lines + 8/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +1439x +9x +  +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +13x +  +  +13x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +65x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Link } from "../atoms/Link";
+import { Image } from "../atoms/Image";
+ 
+const brandLinksDefaultEn = [
+  {
+    href: "https://www.canada.ca/en/social.html",
+    text: "Social media",
+  },
+  {
+    href: "https://www.canada.ca/en/mobile.html",
+    text: "Mobile applications",
+  },
+  {
+    href: "https://www.canada.ca/en/government/about.html",
+    text: "About Canada.ca",
+  },
+  {
+    href: "https://www.canada.ca/en/transparency/terms.html",
+    text: "Terms and conditions",
+  },
+  {
+    href: "https://www.canada.ca/en/transparency/privacy.html",
+    text: "Privacy",
+  },
+];
+ 
+const brandLinksDefaultFr = [
+  {
+    href: "https://www.canada.ca/fr/sociaux.html",
+    text: "Médias sociaux",
+  },
+  {
+    href: "https://www.canada.ca/fr/mobile.html",
+    text: "Applications mobiles",
+  },
+  {
+    href: "https://www.canada.ca/fr/gouvernement/a-propos.html",
+    text: "À propos de Canada.ca",
+  },
+  {
+    href: "https://www.canada.ca/fr/transparence/avis.html",
+    text: "Avis",
+  },
+  {
+    href: "https://www.canada.ca/fr/transparence/confidentialite.html",
+    text: "Confidentialité",
+  },
+];
+ 
+const brandLinksDefaults = (locale) => {
+  return locale === "en" ? brandLinksDefaultEn : brandLinksDefaultFr;
+};
+ 
+export function SubFooterBand(props) {
+  return (
+    <div className="bg-[#F8F8F8]">
+      <div
+        className={`lg:container mx-auto ${
+          props.isAuthenticated ? "min-h-[86px]" : "min-h-[96px]"
+        } ${props.error ? "items-center" : ""} flex justify-between`}
+      >
+        {props.error ? (
+          <div>
+            <a
+              id="top_btn"
+              href={props.btnLink}
+              className="sm:hidden float-left cursor-pointer pr-3"
+            >
+              Top of page / Haut de la page
+            </a>
+            <img src="/upArrow.svg" alt="" className="pt-2 sm:hidden" />
+          </div>
+        ) : (
+          <section className="flex items-center">
+            <nav role="navigation">
+              <ul className="flex flex-col md:flex-row whitespace-nowrap pt-4">
+                {props.brandLinks
+                  ? props.brandLinks.map(({ href, text, onClick }, index) => {
+                      return (
+                        <li
+                          key={index}
+                          className={`${
+                            index === 0 ? "" : "md:list-disc"
+                          } pr-4 mb-[17px] list-inside list-none text-xxs ml-6`}
+                        >
+                          <Link
+                            onClick={onClick ? onClick : undefined}
+                            id={"footerLink" + index}
+                            href={href}
+                            text={text}
+                            linkStyle="smfooterBlue"
+                            target={props.target}
+                          />
+                        </li>
+                      );
+                    })
+                  : brandLinksDefaults(props.locale).map(
+                      ({ href, text }, index) => {
+                        return (
+                          <li
+                            key={index}
+                            className={`${
+                              index === 0 ? "" : "md:list-disc"
+                            } pr-4 mb-[17px] list-inside list-none text-xxs ml-6`}
+                          >
+                            <Link
+                              onClick={
+                                props.onClick ? props.onClick : undefined
+                              }
+                              id={"footerLink" + index}
+                              href={href}
+                              text={text}
+                              linkStyle="smfooterBlue"
+                              target={props.target}
+                            />
+                          </li>
+                        );
+                      }
+                    )}
+              </ul>
+            </nav>
+          </section>
+        )}
+        <div
+          className={`${
+            props.error ? "items-center" : "items-center"
+          } min-h-[96px] flex mr-[5px]`}
+        >
+          <Image
+            className={`${
+              props.error
+                ? "h-[40px] w-auto"
+                : "h-[25px] md:h-[40px] w-full mr-2"
+            } my-[15px]`}
+            src={props.logo}
+            alt="Symbol of the Government of Canada"
+          />
+        </div>
+      </div>
+    </div>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/molecules/SurveyCTA.js.html b/main/coverage/lcov-report/components/molecules/SurveyCTA.js.html new file mode 100644 index 0000000000..dd41e9fdc4 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/SurveyCTA.js.html @@ -0,0 +1,166 @@ + + + + + + Code coverage report for components/molecules/SurveyCTA.js + + + + + + + + + +
+
+

All files / components/molecules SurveyCTA.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. +

+ +
+
+

+
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 +282x +  +5x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { ActionButton } from "../atoms/ActionButton";
+ 
+export const SurveyCTA = ({
+  heading,
+  description,
+  buttonId,
+  buttonLabel,
+  buttonLink,
+  buttonType,
+}) => {
+  return (
+    <div className="flex flex-col md:flex-row py-6 bg-multi-blue-blue70 rounded-2xl">
+      <div className="flex flex-col px-10 text-multi-neutrals-white">
+        <h3 className="font-display mt-0">{heading}</h3>
+        <p className="font-body">{description}</p>
+      </div>
+      <div className="flex flex-col px-10 pt-5 md:pt-0 md:justify-center md:items-center whitespace-nowrap">
+        <ActionButton
+          id={buttonId}
+          href={buttonLink}
+          text={buttonLabel}
+          style="tertiary"
+        />
+      </div>
+    </div>
+  );
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/molecules/SurveyCTA.stories.js.html b/main/coverage/lcov-report/components/molecules/SurveyCTA.stories.js.html new file mode 100644 index 0000000000..187d805618 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/SurveyCTA.stories.js.html @@ -0,0 +1,142 @@ + + + + + + Code coverage report for components/molecules/SurveyCTA.stories.js + + + + + + + + + +
+
+

All files / components/molecules SurveyCTA.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +201x +1x +  +1x +  +  +  +  +  +  +4x +  +1x +  +  +  +  +  +  + 
import React from "react";
+import { SurveyCTA } from "./SurveyCTA";
+ 
+export default {
+  title: "Components/Molecules/SurveyCTA",
+  component: SurveyCTA,
+};
+ 
+const Template = (args) => <SurveyCTA {...args}></SurveyCTA>;
+ 
+export const Primary = Template.bind({});
+ 
+Primary.args = {
+  heading: "CTA Heading",
+  description: "A description of what the CTA is for",
+  buttonLabel: "Button label",
+  buttonLink: "#",
+  buttonType: "gc:custom/decd-endc/button-type/secondary",
+};
+ 
+ +
+
+ + + + + + + + \ 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..87293c5676 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/TextButtonField.js.html @@ -0,0 +1,379 @@ + + + + + + Code coverage report for components/molecules/TextButtonField.js + + + + + + + + + +
+
+

All files / components/molecules TextButtonField.js

+
+ +
+ 100% + Statements + 6/6 +
+ + +
+ 66.66% + Branches + 4/6 +
+ + +
+ 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. +

+ +
+
+

+
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 +991x +1x +  +  +  +  +7x +  +  +6x +5x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +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..2a94f8d29b --- /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 + + + + + + + + + +
+
+

All files / components/molecules TextButtonField.stories.js

+
+ +
+ 93.75% + Statements + 15/16 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 11/11 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +461x +1x +  +1x +  +  +  +  +  +  +8x +3x +3x +3x +  +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/TopNavBar.js.html b/main/coverage/lcov-report/components/molecules/TopNavBar.js.html new file mode 100644 index 0000000000..e8d05664d4 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/TopNavBar.js.html @@ -0,0 +1,520 @@ + + + + + + Code coverage report for components/molecules/TopNavBar.js + + + + + + + + + +
+
+

All files / components/molecules TopNavBar.js

+
+ +
+ 58.33% + Statements + 7/12 +
+ + +
+ 15.78% + Branches + 3/19 +
+ + +
+ 25% + Functions + 1/4 +
+ + +
+ 58.33% + Lines + 7/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +1469x +9x +  +17x +  +  +  +  +  +  +  +  +  +15x +15x +  +  +15x +  +  +  +15x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import Link from "next/link";
+import React, { useState } from "react";
+ 
+export function TopNavBar({
+  homeLink,
+  homeLinkLabel,
+  updatesLink,
+  updatesLinkLabel,
+  projectsLink,
+  projectsLinkLabel,
+  navAriaLabel,
+  buttonAriaLabel,
+}) {
+  const [isOpen, setIsOpen] = useState(false);
+  const [isTransitioningClosed, setIsTransitioningClosed] = useState(false);
+ 
+  //Handles the opening and closing of our nav
+  const handleClick = () => {
+    isOpen ? animateCloseMenu() : setIsOpen(!isOpen);
+  };
+ 
+  const animateCloseMenu = () => {
+    setIsTransitioningClosed(true);
+    setTimeout(() => {
+      setIsTransitioningClosed(false);
+      setIsOpen(!isOpen);
+    }, 250);
+  };
+ 
+  return (
+    <nav
+      aria-label={navAriaLabel}
+      className="bg-custom-gray-lightest min-h-[64px] flex justify-end"
+    >
+      {/* Desktop Nav Menu */}
+      <div className="hidden lg:flex w-full self-center justify-between layout-container">
+        <Link
+          href={homeLink}
+          className="font-body font-semibold text-[25.31px]"
+        >
+          {homeLinkLabel}
+        </Link>
+        <div className="lg:mr-16">
+          <Link href={projectsLink} className="font-body mr-10 text-p">
+            {projectsLinkLabel}
+          </Link>
+          <Link href={updatesLink} className="font-body text-p">
+            {updatesLinkLabel}
+          </Link>
+        </div>
+      </div>
+      {/* Mobile Nav Menu */}
+      <div className="static lg:hidden mt-5 flex flex-col w-full mr-4">
+        <button
+          aria-label={buttonAriaLabel}
+          aria-haspopup="true"
+          aria-expanded={isOpen ? "true" : "false"}
+          aria-controls="menu"
+          onClick={handleClick}
+          className="self-end"
+        >
+          {isOpen ? (
+            <div
+              className={`${
+                isTransitioningClosed ? "fade-out" : "fade-in"
+              } -mt-1 p-1.5`}
+            >
+              <svg
+                width="20"
+                height="20"
+                viewBox="0 0 17 17"
+                fill="none"
+                xmlns="http://www.w3.org/2000/svg"
+                className="exit-icon"
+              >
+                <path d="M11.3775 8.25L16.0683 3.55922C16.6439 2.98359 16.6439 2.05031 16.0683 1.47422L15.0258 0.431719C14.4502 -0.143906 13.5169 -0.143906 12.9408 0.431719L8.25 5.1225L3.55922 0.431719C2.98359 -0.143906 2.05031 -0.143906 1.47422 0.431719L0.431719 1.47422C-0.143906 2.04984 -0.143906 2.98312 0.431719 3.55922L5.1225 8.25L0.431719 12.9408C-0.143906 13.5164 -0.143906 14.4497 0.431719 15.0258L1.47422 16.0683C2.04984 16.6439 2.98359 16.6439 3.55922 16.0683L8.25 11.3775L12.9408 16.0683C13.5164 16.6439 14.4502 16.6439 15.0258 16.0683L16.0683 15.0258C16.6439 14.4502 16.6439 13.5169 16.0683 12.9408L11.3775 8.25Z" />
+              </svg>
+            </div>
+          ) : (
+            <div className={`${isTransitioningClosed ? "fade-in" : ""} -mt-1`}>
+              <svg
+                width="32"
+                height="32"
+                viewBox="0 0 24 24"
+                fill="none"
+                xmlns="http://www.w3.org/2000/svg"
+              >
+                <path
+                  d="M4 18L20 18"
+                  stroke="#000000"
+                  strokeWidth="2"
+                  strokeLinecap="round"
+                />
+                <path
+                  d="M4 12L20 12"
+                  stroke="#000000"
+                  strokeWidth="2"
+                  strokeLinecap="round"
+                />
+                <path
+                  d="M4 6L20 6"
+                  stroke="#000000"
+                  strokeWidth="2"
+                  strokeLinecap="round"
+                />
+              </svg>
+            </div>
+          )}
+        </button>
+        {isOpen ? (
+          <ul
+            id="menu"
+            className={`${
+              isTransitioningClosed ? "fade-out" : "fade-in"
+            } absolute w-full flex flex-col mt-8 pb-4 bg-custom-gray-lightest drop-shadow-xl`}
+          >
+            <li
+              className={`${
+                isTransitioningClosed ? "decrease-margin" : "expand-margin"
+              } my-2 ml-4 text-[20px]`}
+            >
+              <Link href={homeLink}>{homeLinkLabel}</Link>
+            </li>
+            <li
+              className={`${
+                isTransitioningClosed ? "decrease-margin" : "expand-margin"
+              } my-2 ml-4 text-[20px]`}
+            >
+              <Link href={projectsLink}>{projectsLinkLabel}</Link>
+            </li>
+            <li
+              className={`${
+                isTransitioningClosed ? "decrease-margin" : "expand-margin"
+              } my-2 ml-4 text-[20px]`}
+            >
+              <Link href={updatesLink}>{updatesLinkLabel}</Link>
+            </li>
+          </ul>
+        ) : (
+          ""
+        )}
+      </div>
+    </nav>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/molecules/TopNavBar.stories.js.html b/main/coverage/lcov-report/components/molecules/TopNavBar.stories.js.html new file mode 100644 index 0000000000..4a5c007b77 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/TopNavBar.stories.js.html @@ -0,0 +1,151 @@ + + + + + + Code coverage report for components/molecules/TopNavBar.stories.js + + + + + + + + + +
+
+

All files / components/molecules TopNavBar.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +231x +1x +  +1x +  +  +  +  +  +  +6x +  +1x +  +  +  +  +  +  +  +  +  + 
import React from "react";
+import { TopNavBar } from "./TopNavBar";
+ 
+export default {
+  title: "Components/Molecules/TopNavBar",
+  component: TopNavBar,
+};
+ 
+const Template = (args) => <TopNavBar {...args}></TopNavBar>;
+ 
+export const Primary = Template.bind({});
+ 
+Primary.args = {
+  homeLink: "#home",
+  homeLinkLabel: "Home",
+  updatesLink: "#updates",
+  updatesLinkLabel: "Updates",
+  projectsLink: "#projects",
+  projectsLinkLabel: "Projects",
+  navAriaLabel: "nav-aria-label",
+  buttonAriaLabel: "button-aria-label",
+};
+ 
+ +
+
+ + + + + + + + \ 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..2b8d7483e6 --- /dev/null +++ b/main/coverage/lcov-report/components/molecules/index.html @@ -0,0 +1,671 @@ + + + + + + Code coverage report for components/molecules + + + + + + + + + +
+
+

All files components/molecules

+
+ +
+ 86.34% + Statements + 354/410 +
+ + +
+ 57.96% + Branches + 91/157 +
+ + +
+ 76% + Functions + 38/50 +
+ + +
+ 91.04% + Lines + 315/346 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
CTA.js +
+
100%6/666.66%2/3100%2/2100%5/5
CTA.stories.js +
+
90%9/10100%0/0100%0/0100%7/7
Card.js +
+
91.66%11/1266.66%10/15100%1/1100%10/10
Card.stories.js +
+
80%16/20100%0/0100%0/0100%14/14
Collapse.js +
+
100%5/5100%1/1100%1/1100%5/5
Collapse.stories.js +
+
90%9/10100%0/0100%0/0100%7/7
ContextualAlert.js +
+
100%11/1181.25%13/16100%1/1100%11/11
ContextualAlert.stories.js +
+
93.33%14/15100%0/0100%0/0100%10/10
CopyToClipboard.js +
+
100%7/775%3/4100%2/2100%7/7
CopyToClipboard.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
Details.js +
+
100%3/3100%0/0100%1/1100%3/3
Details.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
ErrorBox.js +
+
100%6/60%0/1100%3/3100%6/6
ErrorBox.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
FeedbackWidget.js +
+
72.58%45/6238.09%8/2150%5/1071.66%43/60
FeedbackWidget.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
Filter.js +
+
100%5/5100%0/0100%2/2100%5/5
Filter.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
Heading.js +
+
100%4/4100%2/2100%1/1100%4/4
Heading.stories.js +
+
88.88%8/9100%0/0100%0/0100%6/6
List.js +
+
100%8/8100%1/1100%2/2100%7/7
List.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
MainBand.js +
+
100%5/5100%2/2100%2/2100%5/5
Menu.js +
+
92.85%13/1460%6/1075%3/492.85%13/14
Menu.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
OptionalListField.js +
+
78.94%15/1975%12/16100%3/378.94%15/19
OptionalListField.stories.js +
+
90.47%19/21100%0/0100%0/0100%15/15
OptionalTextField.js +
+
85%17/2078.94%15/1950%2/485%17/20
OptionalTextField.stories.js +
+
84.21%16/19100%0/0100%0/0100%13/13
Quote.js +
+
100%3/3100%0/0100%1/1100%3/3
Quote.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
SubFooterBand.js +
+
88.88%8/942.85%9/2175%3/488.88%8/9
SurveyCTA.js +
+
100%3/3100%0/0100%1/1100%2/2
SurveyCTA.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
TextButtonField.js +
+
100%6/666.66%4/6100%1/1100%6/6
TextButtonField.stories.js +
+
93.75%15/16100%0/0100%0/0100%11/11
TopNavBar.js +
+
58.33%7/1215.78%3/1925%1/458.33%7/12
TopNavBar.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/organisms/ExploreProjects.js.html b/main/coverage/lcov-report/components/organisms/ExploreProjects.js.html new file mode 100644 index 0000000000..5ec9144d0c --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/ExploreProjects.js.html @@ -0,0 +1,253 @@ + + + + + + Code coverage report for components/organisms/ExploreProjects.js + + + + + + + + + +
+
+

All files / components/organisms ExploreProjects.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 100% + Branches + 10/10 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 100% + Lines + 8/8 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +577x +7x +  +  +7x +14x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +10x +  +10x +  +9x +14x +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import React, { useEffect } from "react";
+import Card from "../molecules/Card";
+ 
+//callback function that creates a card for a project when called
+const createCard = (locale, project) => {
+  return (
+    <li
+      key={project.scId}
+      className="rounded-md bg-multi-neutrals-white col-span-12 lg:col-span-4"
+    >
+      <Card
+        showImage
+        imgSrc={
+          locale === "en"
+            ? `https://www.canada.ca${project.scSocialMediaImageEn?._path}`
+            : `https://www.canada.ca${project.scSocialMediaImageFr?._path}`
+        }
+        imgAlt={
+          locale === "en"
+            ? project.scSocialMediaImageAltTextEn
+            : project.scSocialMediaImageAltTextFr
+        }
+        imgHeight={project.scSocialMediaImageEn?.height}
+        imgWidth={project.scSocialMediaImageEn?.width}
+        title={locale === "en" ? project.scTitleEn : project.scTitleFr}
+        href={locale === "en" ? project.scPageNameEn : project.scPageNameFr}
+        description={
+          locale === "en"
+            ? project.scDescriptionEn.json[0].content[0].value
+            : project.scDescriptionFr.json[0].content[0].value
+        }
+      />
+    </li>
+  );
+};
+ 
+export function ExploreProjects(props) {
+  //initialize props
+  const { locale, projects, heading } = props;
+  //create cards for current projects
+  const displayCurrentProjects = projects.map((project) =>
+    createCard(locale, project)
+  );
+  return (
+    //create html for "Explore other projects" section
+    <div className="py-24 max-w-full bg-multi-blue-blue65b">
+      <div className="layout-container">
+        <h2 className="mt-0 text-multi-neutrals-white">{heading}</h2>
+        <ul className="grid grid-cols-12 gap-x-6 gap-y-6 list-none">
+          {/*iterate over filteredProjects array and create card for each project */}
+          {displayCurrentProjects}
+        </ul>
+      </div>
+    </div>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/organisms/ExploreProjects.stories.js.html b/main/coverage/lcov-report/components/organisms/ExploreProjects.stories.js.html new file mode 100644 index 0000000000..7c6303ffb5 --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/ExploreProjects.stories.js.html @@ -0,0 +1,382 @@ + + + + + + Code coverage report for components/organisms/ExploreProjects.stories.js + + + + + + + + + +
+
+

All files / components/organisms ExploreProjects.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +1001x +1x +  +1x +  +  +  +  +  +  +3x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import React from "react";
+import { ExploreProjects } from "./ExploreProjects";
+ 
+export default {
+  title: "Components/organisms/ExploreProjects",
+  component: ExploreProjects,
+};
+ 
+const Template = (args) => <ExploreProjects {...args}></ExploreProjects>;
+ 
+export const Default = Template.bind({});
+ 
+Default.args = {
+  locale: "en",
+  projects: [
+    {
+      scId: "First project",
+      scTitleEn: "First project",
+      scTitleFr: "First project fr",
+      scPageNameEn: "/en/projects/digital-standards-playbook",
+      scPageNameFr: "/fr/projets/guide-normes-numeriques",
+      scSocialMediaImageEn: {
+        _path:
+          "/content/dam/decd-endc/images/sclabs/benefits-navigator/navigator-overview.jpg",
+        width: 359,
+        height: 260,
+      },
+      scSocialMediaImageFr: {
+        _path:
+          "/content/dam/decd-endc/images/sclabs/benefits-navigator/navigator-overview.jpg",
+        width: 359,
+        height: 260,
+      },
+      scSocialMediaImageAltTextEn: "first alt",
+      scSocialMediaImageAltTextFr: "first alt fr",
+      scDescriptionEn: {
+        json: [{ content: [{ value: "first description" }] }],
+      },
+      scDescriptionFr: {
+        json: [{ content: [{ value: "first description fr" }] }],
+      },
+    },
+    {
+      scId: "Second project",
+      scTitleEn: "Second project",
+      scTitleFr: "Second project fr",
+      scPageNameEn: "/en/projects/digital-standards-playbook",
+      scPageNameFr: "/fr/projets/guide-normes-numeriques",
+      scSocialMediaImageEn: {
+        _path:
+          "/content/dam/decd-endc/images/sclabs/benefits-navigator/navigator-overview.jpg",
+        width: 359,
+        height: 260,
+      },
+      scSocialMediaImageFr: {
+        _path:
+          "/content/dam/decd-endc/images/sclabs/benefits-navigator/navigator-overview.jpg",
+        width: 359,
+        height: 260,
+      },
+      scSocialMediaImageAltTextEn: "second alt",
+      scSocialMediaImageAltTextFr: "second alt fr",
+      scDescriptionEn: {
+        json: [{ content: [{ value: "second description" }] }],
+      },
+      scDescriptionFr: {
+        json: [{ content: [{ value: "second description fr" }] }],
+      },
+    },
+    {
+      scId: "Third project",
+      scTitleEn: "Third project",
+      scTitleFr: "Third project fr",
+      scPageNameEn: "/en/projects/digital-standards-playbook",
+      scPageNameFr: "/fr/projets/guide-normes-numeriques",
+      scSocialMediaImageEn: {
+        _path:
+          "/content/dam/decd-endc/images/sclabs/benefits-navigator/navigator-overview.jpg",
+        width: 359,
+        height: 260,
+      },
+      scSocialMediaImageFr: {
+        _path:
+          "/content/dam/decd-endc/images/sclabs/benefits-navigator/navigator-overview.jpg",
+        width: 359,
+        height: 260,
+      },
+      scSocialMediaImageAltTextEn: "third alt",
+      scSocialMediaImageAltTextFr: "third alt fr",
+      scDescriptionEn: {
+        json: [{ content: [{ value: "third description" }] }],
+      },
+      scDescriptionFr: {
+        json: [{ content: [{ value: "third description fr" }] }],
+      },
+    },
+  ],
+  heading: "Explore other projects",
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/organisms/ExploreUpdates.js.html b/main/coverage/lcov-report/components/organisms/ExploreUpdates.js.html new file mode 100644 index 0000000000..42532d7fca --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/ExploreUpdates.js.html @@ -0,0 +1,289 @@ + + + + + + Code coverage report for components/organisms/ExploreUpdates.js + + + + + + + + + +
+
+

All files / components/organisms ExploreUpdates.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 8/8 +
+ + +
+ 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. +

+ +
+
+

+
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 +698x +8x +8x +8x +  +8x +  +  +  +  +  +  +  +7x +12x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import Link from "next/link";
+import { Link as LinkWrapper } from "../atoms/Link";
+import Card from "../molecules/Card";
+import { getDictionaryTerm } from "../../lib/utils/getDictionaryTerm";
+ 
+export function ExploreUpdates({
+  heading,
+  updatesData,
+  href,
+  linkLabel,
+  locale,
+  dictionary,
+}) {
+  const updatesCards = updatesData.map((update) => {
+    return (
+      <li key={update.scId} className="bg-white list-none my-3">
+        <Card
+          cardHeadingStyling="!mt-0 !pt-0"
+          customStyling="flex flex-col justify-between !py-5"
+          title={locale === "en" ? update.scTitleEn : update.scTitleFr}
+          href={locale === "en" ? update.scPageNameEn : update.scPageNameFr}
+          htmlDesc={
+            <div className="flex flex-col pt-6 md:pt-0">
+              <span className="flex flex-row pt-2 pl-6">
+                <p className="text-multi-neutrals-grey100 font-semibold whitespace-nowrap">
+                  {locale === "en" ? "Project:" : "Projet :"}
+                </p>
+                <p className="mt-0 pl-1">
+                  {locale === "en"
+                    ? update.scLabProject.scTermEn
+                    : update.scLabProject.scTermFr}
+                </p>
+              </span>
+              <span className="flex flex-row pl-6">
+                <p className="text-multi-neutrals-grey100 font-semibold">
+                  {getDictionaryTerm(dictionary, "POSTED-ON", locale)}
+                </p>
+                <p className="mt-0 pl-1">{`${update.scDateModifiedOverwrite}`}</p>
+              </span>
+            </div>
+          }
+        />
+      </li>
+    );
+  });
+ 
+  return (
+    <div className="mt-14 bg-custom-blue-updates-blue">
+      <div className="layout-container py-28">
+        <div className="grid grid-cols-12">
+          <h2 className="grid col-span-12 xl:col-span-8 mt-0">{heading}</h2>
+          <ul className="grid col-span-12 xl:col-span-8">{updatesCards}</ul>
+          <div className="grid col-span-12 xl:col-span-8 mt-4">
+            <div className="flex justify-end">
+              <LinkWrapper
+                component={Link}
+                id="seeAllUpdatesLink"
+                href={href}
+                lang={locale}
+                text={linkLabel}
+              />
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/organisms/ExploreUpdates.stories.js.html b/main/coverage/lcov-report/components/organisms/ExploreUpdates.stories.js.html new file mode 100644 index 0000000000..fd69400009 --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/ExploreUpdates.stories.js.html @@ -0,0 +1,874 @@ + + + + + + Code coverage report for components/organisms/ExploreUpdates.stories.js + + + + + + + + + +
+
+

All files / components/organisms ExploreUpdates.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +2641x +1x +  +1x +  +  +  +  +  +  +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import React from "react";
+import { ExploreUpdates } from "./ExploreUpdates";
+ 
+export default {
+  title: "Components/organisms/ExploreUpdates",
+  component: ExploreUpdates,
+};
+ 
+const Template = (args) => <ExploreUpdates {...args}></ExploreUpdates>;
+ 
+export const Default = Template.bind({});
+ 
+Default.args = {
+  locale: "en",
+  heading: "Explore more updates",
+  updatesData: [
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/pages/projects/oas-benefits-estimator/project-updates/how-feedback-is-shaping-the-estimator",
+      scId: "HOW-FEEDBACK-SHAPING-ESTIMATOR",
+      scPageNameEn: "/en/projects/oas-benefits-estimator/how-feedback-shaping",
+      scPageNameFr:
+        "/fr/projets/estimateur-prestations-sv/faconner-grace-retroaction",
+      scLabProject: {
+        scTermEn: "OAS Benefits Estimator",
+        scTermFr: "Estimateur des prestations de la Sécurité de la vieillesse",
+      },
+      scTitleEn: "How feedback is shaping the estimator",
+      scTitleFr: "Façonner l’estimateur grâce à la rétroaction",
+      scBreadcrumbParentPages: [
+        {
+          scTitleEn: "Service Canada Labs",
+          scTitleFr: "Laboratoires de Service Canada",
+          scPageNameEn: "/en/home",
+          scPageNameFr: "/fr/accueil",
+        },
+        {
+          scTitleEn: "Old Age Security Benefits Estimator",
+          scTitleFr:
+            "Estimateur des prestations de la Sécurité de la vieillesse",
+          scPageNameEn: "/en/projects/oas-benefits-estimator",
+          scPageNameFr: "/fr/projets/estimateur-prestations-sv",
+        },
+      ],
+      scSubject: ["gc:subjects/gv-government-and-politics/government-services"],
+      scKeywordsEn: "feedback, benefits, estimator",
+      scKeywordsFr: "rétroaction, prestations, estimateur",
+      scContentType: [
+        "gc:content-types/promotional-material-featured-articles",
+      ],
+      scOwner: ["gc:institutions/service-canada"],
+      scDateModifiedOverwrite: "2023-12-12",
+      scSocialMediaImageEn: {
+        _path:
+          "/content/dam/decd-endc/images/sclabs/oas-benefits-estimator/feedback.jpg",
+        _publishUrl:
+          "https://www.canada.ca/content/dam/decd-endc/images/sclabs/oas-benefits-estimator/feedback.jpg",
+        width: 2670,
+        height: 1543,
+      },
+      scSocialMediaImageFr: {
+        _path:
+          "/content/dam/decd-endc/images/sclabs/oas-benefits-estimator/feedback.jpg",
+        _publishUrl:
+          "https://www.canada.ca/content/dam/decd-endc/images/sclabs/oas-benefits-estimator/feedback.jpg",
+        width: 2670,
+        height: 1543,
+      },
+      scSocialMediaImageAltTextEn:
+        " Different kinds of feedback being gathered",
+      scSocialMediaImageAltTextFr:
+        " Un rassemblement de différents types de rétroaction",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/pages/projects/oas-benefits-estimator/project-updates/what-we-learned",
+      scId: "WHAT-WE-LEARNED",
+      scPageNameEn: "/en/projects/oas-benefits-estimator/what-we-learned",
+      scPageNameFr:
+        "/fr/projets/estimateur-prestations-sv/ce-que-nous-avons-appris",
+      scLabProject: {
+        scTermEn: "OAS Benefits Estimator",
+        scTermFr: "Estimateur des prestations de la Sécurité de la vieillesse",
+      },
+      scTitleEn:
+        "What we learned on Service Canada Labs before going live on Canada.ca",
+      scTitleFr:
+        "Ce que nous avons appris dans les laboratoires avant notre lancement sur Canada.ca",
+      scBreadcrumbParentPages: [
+        {
+          scTitleEn: "Service Canada Labs",
+          scTitleFr: "Laboratoires de Service Canada",
+          scPageNameEn: "/en/home",
+          scPageNameFr: "/fr/accueil",
+        },
+        {
+          scTitleEn: "Old Age Security Benefits Estimator",
+          scTitleFr:
+            "Estimateur des prestations de la Sécurité de la vieillesse",
+          scPageNameEn: "/en/projects/oas-benefits-estimator",
+          scPageNameFr: "/fr/projets/estimateur-prestations-sv",
+        },
+      ],
+      scContentType: [
+        "gc:content-types/promotional-material-featured-articles",
+      ],
+      scDateModifiedOverwrite: "2023-07-02",
+      scSocialMediaImageEn: {
+        _path:
+          "/content/dam/decd-endc/images/sclabs/oas-benefits-estimator/what-we-learned.jpg",
+        _publishUrl:
+          "https://www.canada.ca/content/dam/decd-endc/images/sclabs/oas-benefits-estimator/what-we-learned.jpg",
+        width: 2670,
+        height: 1543,
+      },
+      scSocialMediaImageFr: {
+        _path:
+          "/content/dam/decd-endc/images/sclabs/oas-benefits-estimator/what-we-learned.jpg",
+        _publishUrl:
+          "https://www.canada.ca/content/dam/decd-endc/images/sclabs/oas-benefits-estimator/what-we-learned.jpg",
+        width: 2670,
+        height: 1543,
+      },
+      scSocialMediaImageAltTextEn: "People giving feedback",
+      scSocialMediaImageAltTextFr: "Personnes qui donnent de la rétroaction",
+    },
+  ],
+  dictionary: [
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sch/dictionary/opens-in-a-new-tab",
+      scId: "opens-in-a-new-tab",
+      scTermEn: "(Opens in a new tab)",
+      scTermFr: "(S'ouvre dans un nouvel onglet)",
+    },
+    {
+      _path: "/content/dam/decd-endc/content-fragments/sclabs/dictionary/all",
+      scId: "ALL",
+      scTermEn: "All",
+      scTermFr: "Tous",
+    },
+    {
+      _path: "/content/dam/decd-endc/content-fragments/sclabs/dictionary/ended",
+      scId: "ENDED",
+      scTermEn: "Ended",
+      scTermFr: "Fin",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/filter-by",
+      scId: "FILTER-BY",
+      scTermEn: "Filter by:",
+      scTermFr: "Filtrer par :",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/filter-by-project",
+      scId: "DICTIONARY-FILTER-BY-PROJECT",
+      scTermEn: "Filter by project",
+      scTermFr: "Filtrer par projet",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/filter-by-project-status",
+      scId: "DICTIONARY-FILTER-BY-PROJECT-STATUS",
+      scTermEn: "Filter by project status",
+      scTermFr: "Filtrer par état du projet",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/last-updated",
+      scId: "LAST-UPDATED",
+      scTermEn: "Last updated:",
+      scTermFr: "Dernière mise à jour :",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/on-this-page",
+      scId: "ON-THIS-PAGE",
+      scTermEn: "On this page",
+      scTermFr: "Sur cette page",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/optional-information",
+      scId: "OPTIONAL-INFORMATION",
+      scTermEn: "Optional information",
+      scTermFr: "Renseignements optionnels",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/past-projects",
+      scId: "PAST-PROJECTS",
+      scTermEn: "Past projects",
+      scTermFr: "Projets antérieurs",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/paused",
+      scId: "PAUSED",
+      scTermEn: "Paused:",
+      scTermFr: "Interrompu :",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/posted-on",
+      scId: "POSTED-ON",
+      scTermEn: "Posted on:",
+      scTermFr: "Publié le :",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/project-stage",
+      scId: "PROJECT-STAGE",
+      scTermEn: "Project stage:",
+      scTermFr: "Phase du projet :",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/project-updates",
+      scId: "PROJECT-UPDATES",
+      scTermEn: "Project updates",
+      scTermFr: "Mises à jour du projet",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/required-information",
+      scId: "REQUIRED-INFORMATION",
+      scTermEn: "Required information",
+      scTermFr: "Renseignements obligatoires",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/see-all-updates-project",
+      scId: "DICTIONARY-SEE-ALL-UPDATES-PROJECT",
+      scTermEn: "See all updates about this project",
+      scTermFr: "Consulter toutes les mises à jour de ce projet",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/started",
+      scId: "STARTED",
+      scTermEn: "Started:",
+      scTermFr: "Début :",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/summary",
+      scId: "SUMMARY",
+      scTermEn: "Summary:",
+      scTermFr: "Résumé :",
+    },
+    {
+      _path:
+        "/content/dam/decd-endc/content-fragments/sclabs/dictionary/upcoming-projects",
+      scId: "UPCOMING-PROJECTS",
+      scTermEn: "Upcoming projects",
+      scTermFr: "Projets à venir",
+    },
+  ],
+  href: "#",
+  linkLabel: "See more updates",
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/organisms/Feedback.js.html b/main/coverage/lcov-report/components/organisms/Feedback.js.html new file mode 100644 index 0000000000..71a4966dfe --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/Feedback.js.html @@ -0,0 +1,526 @@ + + + + + + Code coverage report for components/organisms/Feedback.js + + + + + + + + + +
+
+

All files / components/organisms Feedback.js

+
+ +
+ 47.82% + Statements + 11/23 +
+ + +
+ 66.66% + Branches + 4/6 +
+ + +
+ 14.28% + Functions + 1/7 +
+ + +
+ 45.45% + Lines + 10/22 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +1488x +8x +8x +8x +  +  +12x +12x +12x +  +12x +12x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +12x + 
import { useState, useRef } from "react";
+import Image from "next/image";
+import { useRouter } from "next/router";
+import { useTranslation } from "next-i18next";
+ 
+function Feedback() {
+  const [isSubmitted, setIsSubmitted] = useState(false);
+  const [isProvidingFeedback, setIsProvidingFeedback] = useState(false);
+  const thankYouRef = useRef(null);
+ 
+  const router = useRouter();
+  const { t } = useTranslation("common");
+ 
+  async function handleSubmit(e) {
+    e.preventDefault();
+    try {
+      await fetch("/api/submit-feedback", {
+        method: "POST",
+        headers: {
+          "Content-Type": "application/json",
+        },
+        body: JSON.stringify(Object.fromEntries(new FormData(e.target))),
+      });
+    } finally {
+      setIsSubmitted(true);
+      // Focus will move to thank you message when it appears
+      setFocus(thankYouRef);
+    }
+  }
+ 
+  function onYesClick() {
+    setIsSubmitted(true);
+    setFocus(thankYouRef);
+  }
+ 
+  function setFocus(ref) {
+    setTimeout(() => {
+      Iif (ref.current) {
+        ref.current.focus();
+      }
+    }, 100);
+  }
+ 
+  return (
+    <div className="sm:flex items-center justify-between gap-20 bg-gray-light-200 p-5 max-w-[568px] border rounded">
+      {isSubmitted && (
+        <div className="flex gap-5 items-center">
+          <Image
+            src="/success_img.svg"
+            alt=""
+            width={25}
+            height={25}
+            style={{ width: 25, height: 25 }}
+            priority
+          />
+          <p ref={thankYouRef} tabIndex={-1} role="status" aria-live="polite">
+            {t("feedback.thank-you")}
+          </p>
+        </div>
+      )}
+ 
+      {isProvidingFeedback && !isSubmitted && (
+        <form onSubmit={handleSubmit} className="space-y-5">
+          <input type="hidden" name="page" value={router.asPath} />
+          <fieldset>
+            <legend className="font-bold mb-2">
+              {t("feedback.what-was-wrong")}
+            </legend>
+            <label className="flex gap-2">
+              <input
+                type="radio"
+                name="what-was-wrong"
+                value="cant-find-info"
+                required
+              />
+              {t("feedback.cant-find-info")}
+            </label>
+            <label className="flex gap-2">
+              <input
+                type="radio"
+                name="what-was-wrong"
+                value="hard-to-understand"
+              />
+              {t("feedback.hard-to-understand")}
+            </label>
+            <label className="flex gap-2">
+              <input
+                type="radio"
+                name="what-was-wrong"
+                value="there-was-an-error"
+              />
+              {t("feedback.there-was-an-error")}
+            </label>
+            <label className="flex gap-2">
+              <input type="radio" name="what-was-wrong" value="other-reason" />
+              {t("feedback.other-reason")}
+            </label>
+          </fieldset>
+          <label className="flex flex-col gap-2">
+            <span className="font-bold">
+              {t("feedback.provide-more-details")}
+            </span>
+            <span id="extra-info" className="font-[500] text-xs">
+              {t("feedback.no-protected-info")}
+            </span>
+            <span id="maximum-characters" className="font-[300] text-xs">
+              {t("feedback.maximum-characters")}
+            </span>
+            <textarea
+              name="extra-details"
+              aria-describedby="extra-info maximum-characters"
+              maxLength={300}
+              className="p-1"
+            />
+          </label>
+          <button className="bg-multi-blue-blue70 hover:bg-multi-blue-blue60e text-white rounded py-1 px-2">
+            {t("feedback.submit")}
+          </button>
+        </form>
+      )}
+ 
+      {!isSubmitted && !isProvidingFeedback && (
+        <>
+          <p className="font-semibold text-sm">{t("feedback.did-you-find")}</p>
+          <div className="flex gap-2">
+            <button
+              onClick={() => onYesClick()}
+              className="bg-multi-blue-blue70 hover:bg-multi-blue-blue60e text-white rounded py-1 px-2"
+              aria-label={t("feedback.yes-aria-label")}
+            >
+              {t("feedback.yes")}
+            </button>
+            <button
+              onClick={() => setIsProvidingFeedback(true)}
+              className="bg-multi-blue-blue70 hover:bg-multi-blue-blue60e text-white rounded py-1 px-2"
+              aria-label={t("feedback.no-aria-label")}
+            >
+              {t("feedback.no")}
+            </button>
+          </div>
+        </>
+      )}
+    </div>
+  );
+}
+ 
+export default Feedback;
+ 
+ +
+
+ + + + + + + + \ 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..73f16b8eee --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/Footer.js.html @@ -0,0 +1,511 @@ + + + + + + Code coverage report for components/organisms/Footer.js + + + + + + + + + +
+
+

All files / components/organisms Footer.js

+
+ +
+ 100% + Statements + 8/8 +
+ + +
+ 66.66% + Branches + 4/6 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +9x +9x +9x +9x +  +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +14x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
/* eslint-disable no-prototype-builtins */
+import PropTypes from "prop-types";
+import { MainBand } from "../molecules/MainBand";
+import { SubFooterBand } from "../molecules/SubFooterBand";
+import { Link } from "../atoms/Link";
+ 
+const landscapeLinkKeys = [
+  "contacts",
+  "departments",
+  "about",
+  "jobs",
+  "taxes",
+  "canadaAndWorld",
+  "immigration",
+  "environment",
+  "finance",
+  "travel",
+  "nationalSecurity",
+  "innovation",
+  "business",
+  "culture",
+  "indigenous",
+  "benefit",
+  "policing",
+  "veterans",
+  "health",
+  "transport",
+  "youth",
+];
+ 
+export const Footer = ({
+  error,
+  id,
+  brandLinks,
+  target,
+  onClick,
+  btnLink,
+  preFooterTitle,
+  preFooterLink,
+  preFooterLinkText,
+  contactLink = "https://www.canada.ca/en/contact.html",
+  lang,
+  withMainBand = true,
+}) => {
+  return (
+    <footer id={id} data-testid="footer">
+      {preFooterTitle && preFooterLink ? (
+        <div className="bg-multi-blue-blue70c">
+          <div className="lg:container mx-auto px-6 pb-[22px]">
+            <h3 className="pt-[22px] text-multi-neutrals-white font-body font-bold text-[19px]">
+              {preFooterTitle}
+            </h3>
+            <Link
+              id=""
+              href={preFooterLink}
+              text={preFooterLinkText}
+              linkStyle="smfooterWhite"
+            />
+          </div>
+        </div>
+      ) : (
+        ""
+      )}
+      <div
+        className="bg-multi-blue-blue70 bg-no-repeat bg-clip-border sm:bg-right-bottom bg-bottom"
+        style={{
+          backgroundImage: `url(/footer_bg_img.svg)`,
+        }}
+      >
+        <div className="lg:container mx-auto px-6">
+          <MainBand landscapeLinks={landscapeLinkKeys} target={target} />
+        </div>
+      </div>
+      <SubFooterBand
+        locale={lang}
+        container="container"
+        brandLinks={brandLinks}
+        onClick={onClick}
+        target={target}
+        logo="/wmms-blk.svg"
+        error={error}
+        btnLink={btnLink}
+      />
+    </footer>
+  );
+};
+ 
+Footer.propTypes = {
+  /**
+   * id of this component
+   */
+  id: PropTypes.string.isRequired,
+  /**
+   * Add the path Link to the top of your page for the "to the Top" button in mobile
+   */
+  btnLink: PropTypes.string.isRequired,
+ 
+  /**
+   * If true will display the error page version of the footer component
+   */
+  error: PropTypes.bool,
+ 
+  /**
+   * Allow user to pass in their own contact link
+   */
+  contactLink: PropTypes.string,
+ 
+  /**
+   * List of links to display on the footer
+   */
+  brandLinks: PropTypes.arrayOf(
+    PropTypes.shape({
+      id: PropTypes.string,
+      text: PropTypes.string,
+      href: PropTypes.string,
+    }).isRequired
+  ),
+ 
+  /**
+   * Specifies where to open the linked document
+   */
+  target: PropTypes.string,
+ 
+  /**
+   * Handle onclick on the footer media link
+   */
+  onClick: PropTypes.func,
+ 
+  /**
+   * List of menu items to display in dropdown with links
+   */
+  contextualBandLinks: PropTypes.arrayOf(
+    PropTypes.shape({
+      key: PropTypes.string,
+      text: PropTypes.string,
+      link: PropTypes.string,
+    })
+  ),
+  preFooterTitle: PropTypes.string,
+  preFooterLink: PropTypes.string,
+  preFooterLinkText: PropTypes.string,
+};
+ 
+ +
+
+ + + + + + + + \ 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..d34391cf2b --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/Footer.stories.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for components/organisms/Footer.stories.js + + + + + + + + + +
+
+

All files / components/organisms Footer.stories.js

+
+ +
+ 85.71% + Statements + 6/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 5/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +171x +1x +  +1x +  +  +  +  +  +  +1x +1x +  +  +  +  + 
import React from "react";
+import { Footer } from "./Footer";
+ 
+export default {
+  title: "Components/Organisms/Footer",
+  component: Footer,
+};
+ 
+const Template = (args) => <Footer {...args} />;
+ 
+export const DefaultFooter = Template.bind({});
+DefaultFooter.args = {
+  id: "footer",
+  btnLink: "/",
+  target: "_blank",
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/organisms/HelpIcon.js.html b/main/coverage/lcov-report/components/organisms/HelpIcon.js.html new file mode 100644 index 0000000000..c130577bd8 --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/HelpIcon.js.html @@ -0,0 +1,313 @@ + + + + + + Code coverage report for components/organisms/HelpIcon.js + + + + + + + + + +
+
+

All files / components/organisms HelpIcon.js

+
+ +
+ 80% + Statements + 8/10 +
+ + +
+ 20% + Branches + 1/5 +
+ + +
+ 33.33% + Functions + 1/3 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +778x +8x +8x +  +10x +9x +9x +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { useState } from "react";
+import { Modal } from "react-bootstrap";
+import { DSButton } from "../atoms/DSButton";
+ 
+export const HelpIcon = ({ title, body, lang }) => {
+  const [showModal, setShowModal] = useState(false);
+  const handleClose = () => setShowModal(false);
+  const handleShow = () => setShowModal(true);
+ 
+  return (
+    <>
+      <button
+        onClick={handleShow}
+        className="info"
+        aria-label={`Help button ${title}`}
+        aria-expanded={showModal}
+      >
+        <svg
+          width="26"
+          height="26"
+          viewBox="0 0 26 26"
+          fill="none"
+          xmlns="http://www.w3.org/2000/svg"
+          className="help-icon"
+        >
+          <path d="M26 13C26 20.1813 20.1792 26 13 26C5.8208 26 0 20.1813 0 13C0 5.8229 5.8208 0 13 0C20.1792 0 26 5.8229 26 13ZM13.3489 4.29839C10.4922 4.29839 8.67016 5.50178 7.23943 7.64054C7.05407 7.91763 7.11608 8.29133 7.38175 8.49277L9.20065 9.87193C9.47349 10.0788 9.86223 10.0296 10.0742 9.76069C11.0106 8.57298 11.6527 7.88424 13.078 7.88424C14.1489 7.88424 15.4735 8.57345 15.4735 9.61187C15.4735 10.3969 14.8254 10.8001 13.768 11.3929C12.5349 12.0841 10.9032 12.9445 10.9032 15.0968V15.3065C10.9032 15.6538 11.1849 15.9355 11.5323 15.9355H14.4677C14.8151 15.9355 15.0968 15.6538 15.0968 15.3065V15.2366C15.0968 13.7446 19.4573 13.6825 19.4573 9.64516C19.4573 6.60473 16.3035 4.29839 13.3489 4.29839ZM13 17.2984C11.6704 17.2984 10.5887 18.3801 10.5887 19.7097C10.5887 21.0392 11.6704 22.121 13 22.121C14.3296 22.121 15.4113 21.0392 15.4113 19.7097C15.4113 18.3801 14.3296 17.2984 13 17.2984Z" />
+        </svg>
+      </button>
+ 
+      {showModal && (
+        <div className="modal-bg">
+          <Modal
+            show={showModal}
+            onHide={handleClose}
+            className="modal __variable_a1e2e3 __variable_3e745e"
+            aria-label={title}
+          >
+            <Modal.Header className="modal-header">
+              <h2 className="modal-title">{title}</h2>
+              <button
+                onClick={handleClose}
+                className="modal-exit"
+                aria-label={lang === "en" ? "Close" : "Fermer"}
+              >
+                <svg
+                  width="17"
+                  height="17"
+                  viewBox="0 0 17 17"
+                  fill="none"
+                  xmlns="http://www.w3.org/2000/svg"
+                  className="exit-icon"
+                >
+                  <path d="M11.3775 8.25L16.0683 3.55922C16.6439 2.98359 16.6439 2.05031 16.0683 1.47422L15.0258 0.431719C14.4502 -0.143906 13.5169 -0.143906 12.9408 0.431719L8.25 5.1225L3.55922 0.431719C2.98359 -0.143906 2.05031 -0.143906 1.47422 0.431719L0.431719 1.47422C-0.143906 2.04984 -0.143906 2.98312 0.431719 3.55922L5.1225 8.25L0.431719 12.9408C-0.143906 13.5164 -0.143906 14.4497 0.431719 15.0258L1.47422 16.0683C2.04984 16.6439 2.98359 16.6439 3.55922 16.0683L8.25 11.3775L12.9408 16.0683C13.5164 16.6439 14.4502 16.6439 15.0258 16.0683L16.0683 15.0258C16.6439 14.4502 16.6439 13.5169 16.0683 12.9408L11.3775 8.25Z" />
+                </svg>
+              </button>
+            </Modal.Header>
+            <Modal.Body>
+              <p
+                className="modal-body"
+                dangerouslySetInnerHTML={{ __html: body }}
+              />
+            </Modal.Body>
+            <Modal.Footer>
+              <DSButton
+                onClick={handleClose}
+                styling="primary"
+                text={lang === "en" ? "Close" : "Fermer"}
+                className="modal-close"
+              />
+            </Modal.Footer>
+          </Modal>
+        </div>
+      )}
+    </>
+  );
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/organisms/HelpIcon.stories.js.html b/main/coverage/lcov-report/components/organisms/HelpIcon.stories.js.html new file mode 100644 index 0000000000..d99b5cadbb --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/HelpIcon.stories.js.html @@ -0,0 +1,178 @@ + + + + + + Code coverage report for components/organisms/HelpIcon.stories.js + + + + + + + + + +
+
+

All files / components/organisms HelpIcon.stories.js

+
+ +
+ 76.92% + Statements + 10/13 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 9/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +321x +1x +  +1x +  +  +  +  +  +  +1x +1x +1x +  +1x +  +  +  +  +  +1x +  +  +  +  +  +1x +  +  +  +  + 
import * as React from "react";
+import { HelpIcon } from "./HelpIcon";
+ 
+export default {
+  title: "Components/Organisms/HelpIcon",
+  component: HelpIcon,
+};
+ 
+const Template = (args) => <HelpIcon {...args} />;
+ 
+export const Default = Template.bind({});
+export const SampleEN = Template.bind({});
+export const SampleFR = Template.bind({});
+ 
+Default.args = {
+  lang: "en",
+  title: "Descriptive title / Term requiring explanation",
+  body: "Description",
+};
+ 
+SampleEN.args = {
+  lang: "en",
+  title: "Separated",
+  body: "You are separated when you start living separate and apart from your spouse or common law partner because of a breakdown in the relationship for a period of at least 90 days.<br><br>Refer to marital status for more information",
+};
+ 
+SampleFR.args = {
+  lang: "fr",
+  title: "Séparé",
+  body: "Vous êtes considéré séparé lorsque vous vivez séparément de votre époux ou conjoint en raison de la rupture de votre union pour une période de 90 jours ou plus.<br><br>Voir état civil pour plus d’information",
+};
+ 
+ +
+
+ + + + + + + + \ 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..43ef9c7fd7 --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/Layout.js.html @@ -0,0 +1,805 @@ + + + + + + Code coverage report for components/organisms/Layout.js + + + + + + + + + +
+
+

All files / components/organisms Layout.js

+
+ +
+ 100% + Statements + 16/16 +
+ + +
+ 65% + Branches + 13/20 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 15/15 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +2418x +8x +8x +8x +8x +8x +8x +8x +8x +8x +  +  +  +  +15x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +12x +12x +12x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +8x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PropTypes from "prop-types";
+import { Banner } from "../atoms/Banner";
+import { PhaseBanner } from "./PhaseBanner";
+import Link from "next/link";
+import { useTranslation } from "next-i18next";
+import { DateModified } from "../atoms/DateModified";
+import { Breadcrumb } from "../atoms/Breadcrumb";
+import { Footer } from "../organisms/Footer";
+import Feedback from "./Feedback";
+import { TopNavBar } from "../molecules/TopNavBar";
+ 
+/**
+ * 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,
+  excludeFooterFeedback,
+  preFooterTitle,
+  preFooterLink,
+  preFooterLinkText,
+  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">
+      <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 skip-main"
+        href="#pageMainTitle"
+        data-cy-button={"skip-Content"}
+        draggable="false"
+        aria-label={t("skipToMainContentBtn")}
+      >
+        {t("skipToMainContentBtn")}
+      </a>
+ 
+      <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 lg:max-w-full pt-4 pb-3 !mx-0 !px-5 flex-col flex lg:flex lg:flex-row justify-between bg-custom-gray-lightest">
+          <div
+            className="flex flex-row justify-between"
+            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"
+                className="max-w-[280px]"
+              />
+            </a>
+            <h3 className="sr-only">{t("languageSelection")}</h3>
+            <Link
+              key={language}
+              href={langUrl}
+              locale={language}
+              data-testid="languageLink1"
+              className="block lg:hidden ml-6 -mt-1 sm:ml-16 underline underline-offset-[6px] font-body text-canada-footer-font lg:text-sm text-lg hover:text-canada-footer-hover-font-blue"
+            >
+              {language === "en" ? "EN" : "FR"}
+            </Link>
+          </div>
+          <div className="flex flex-col justify-center">
+            <Link
+              key={language}
+              href={langUrl}
+              locale={language}
+              data-testid="languageLink3"
+              className="flex lg:block hidden underline underline-offset-[5px] 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-b-[3px] border-multi-blue-blue35" />
+        <TopNavBar
+          homeLink={t("topNavBar.homeLink")}
+          homeLinkLabel={t("topNavBar.homeLinkLabel")}
+          updatesLink={t("topNavBar.updatesLink")}
+          updatesLinkLabel={t("topNavBar.updatesLinkLabel")}
+          projectsLink={t("topNavBar.projectsLink")}
+          projectsLinkLabel={t("topNavBar.projectsLinkLabel")}
+          navAriaLabel={t("topNavBar.ariaLabel")}
+          buttonAriaLabel={t("topNavBar.buttonAriaLabel")}
+        />
+        <div className="layout-container mt-4">
+          <Breadcrumb items={breadcrumbItems} />
+        </div>
+      </header>
+ 
+      <main>
+        {bannerText && bannerTitle ? (
+          <Banner siteTitle={bannerTitle} headline={bannerText} />
+        ) : null}
+        {children}
+        <div className="mt-12">
+          <h2 className="sr-only">{t("siteFooter")}</h2>
+          {!excludeFooterFeedback ? (
+            <div className="layout-container mt-5">
+              <Feedback />
+            </div>
+          ) : (
+            ""
+          )}
+          <div className="layout-container mb-2">
+            <DateModified date={dateModifiedOverride} />
+          </div>
+        </div>
+      </main>
+ 
+      <Footer
+        id="footer"
+        lang={locale}
+        btnLink={"#"}
+        preFooterTitle={preFooterTitle}
+        preFooterLink={preFooterLink}
+        preFooterLinkText={preFooterLinkText}
+      />
+    </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,
+  /**
+   * Boolean that determines whether the footer feedback is shown or not
+   */
+  excludeFooterFeedback: PropTypes.bool,
+  /**
+   * Title for the pre-footer
+   */
+  preFooterTitle: PropTypes.string,
+  /**
+   * URL for the pre-footer link
+   */
+  preFooterLink: PropTypes.string,
+  /**
+   * Text for the pre-footer link
+   */
+  preFooterLinkText: 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..39dee6b668 --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/Layout.stories.js.html @@ -0,0 +1,205 @@ + + + + + + Code coverage report for components/organisms/Layout.stories.js + + + + + + + + + +
+
+

All files / components/organisms Layout.stories.js

+
+ +
+ 90.9% + Statements + 10/11 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 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. +

+ +
+
+

+
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 +411x +1x +  +1x +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +6x +4x +  +1x +  +  +  +  +1x +  +  +  +  +  + 
import React from "react";
+import { Layout } from "./Layout";
+ 
+export default {
+  title: "Components/Organisms/Layout",
+  component: Layout,
+};
+ 
+const sampleText = () => {
+  return (
+    <div className="layout-container">
+      <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>
+    </div>
+  );
+};
+ 
+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..f48a74095f --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/PhaseBanner.js.html @@ -0,0 +1,490 @@ + + + + + + Code coverage report for components/organisms/PhaseBanner.js + + + + + + + + + +
+
+

All files / components/organisms PhaseBanner.js

+
+ +
+ 88.88% + Statements + 16/18 +
+ + +
+ 87.5% + Branches + 7/8 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 93.75% + Lines + 15/16 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +1369x +9x +9x +  +9x +9x +  +  +  +  +  +9x +  +  +  +  +  +  +  +3x +3x +3x +  +3x +1x +  +  +1x +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +9x + 
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) => {
+    Iif (showFeedback) {
+      toggle.current = "Collapsed";
+    } else {
+      toggle.current = "Expanded";
+    }
+ 
+    setShowFeedback(!showFeedback);
+  };
+ 
+  return (
+    <>
+      <div className="bg-multi-blue-blue70d">
+        <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-s text-white border-2 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>
+            <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..f9e5afbaa6 --- /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 + + + + + + + + + +
+
+

All files / components/organisms PhaseBanner.stories.js

+
+ +
+ 90% + Statements + 9/10 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +21 +22 +23 +241x +1x +  +1x +  +  +  +  +  +  +2x +2x +  +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..1e8cf376cc --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/ReportAProblem.js.html @@ -0,0 +1,1219 @@ + + + + + + Code coverage report for components/organisms/ReportAProblem.js + + + + + + + + + +
+
+

All files / components/organisms ReportAProblem.js

+
+ +
+ 94.87% + Statements + 37/39 +
+ + +
+ 90% + Branches + 9/10 +
+ + +
+ 66.66% + Functions + 2/3 +
+ + +
+ 94.73% + Lines + 36/38 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +3791x +1x +1x +1x +1x +1x +1x +1x +1x +  +  +  +  +7x +9x +8x +  +8x +  +8x +  +3x +  +  +3x +3x +24x +21x +1x +  +  +  +  +  +3x +  +3x +  +  +3x +5x +5x +  +  +  +3x +3x +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +3x +21x +  +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +3x +1x +  +  +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  + 
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;
+ 
+    Iif (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 mt-0">
+            {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..42d6c916db --- /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 + + + + + + + + + +
+
+

All files / components/organisms ReportAProblem.stories.js

+
+ +
+ 83.33% + Statements + 5/6 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 0/0 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +121x +1x +  +1x +  +  +  +  +  +  +10x + 
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..dd843e52c0 --- /dev/null +++ b/main/coverage/lcov-report/components/organisms/index.html @@ -0,0 +1,326 @@ + + + + + + Code coverage report for components/organisms + + + + + + + + + +
+
+

All files components/organisms

+
+ +
+ 85.78% + Statements + 163/190 +
+ + +
+ 76.71% + Branches + 56/73 +
+ + +
+ 60.86% + Functions + 14/23 +
+ + +
+ 90.79% + Lines + 148/163 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
ExploreProjects.js +
+
100%8/8100%10/10100%3/3100%8/8
ExploreProjects.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
ExploreUpdates.js +
+
100%7/7100%8/8100%2/2100%7/7
ExploreUpdates.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
Feedback.js +
+
47.82%11/2366.66%4/614.28%1/745.45%10/22
Footer.js +
+
100%8/866.66%4/6100%1/1100%7/7
Footer.stories.js +
+
85.71%6/7100%0/0100%0/0100%5/5
HelpIcon.js +
+
80%8/1020%1/533.33%1/3100%7/7
HelpIcon.stories.js +
+
76.92%10/13100%0/0100%0/0100%9/9
Layout.js +
+
100%16/1665%13/20100%1/1100%15/15
Layout.stories.js +
+
90.9%10/11100%0/0100%1/1100%8/8
PhaseBanner.js +
+
88.88%16/1887.5%7/8100%2/293.75%15/16
PhaseBanner.stories.js +
+
90%9/10100%0/0100%0/0100%7/7
ReportAProblem.js +
+
94.87%37/3990%9/1066.66%2/394.73%36/38
ReportAProblem.stories.js +
+
83.33%5/6100%0/0100%0/0100%4/4
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/text_node_renderer/TextRecur.jsx.html b/main/coverage/lcov-report/components/text_node_renderer/TextRecur.jsx.html new file mode 100644 index 0000000000..fb439ba95b --- /dev/null +++ b/main/coverage/lcov-report/components/text_node_renderer/TextRecur.jsx.html @@ -0,0 +1,295 @@ + + + + + + Code coverage report for components/text_node_renderer/TextRecur.jsx + + + + + + + + + +
+
+

All files / components/text_node_renderer TextRecur.jsx

+
+ +
+ 94.11% + Statements + 16/17 +
+ + +
+ 88.88% + Branches + 8/9 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 94.11% + Lines + 16/17 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +7112x +  +  +12x +12x +12x +12x +12x +12x +12x +12x +12x +  +  +  +  +  +  +  +  +  +  +12x +  +  +  +  +  +  +  +  +  +  +  +106x +  +516x +  +  +515x +  +  +  +  +515x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +411x +  +  +  +  +  +  +  +  +  + 
import { v4 as uuid } from "uuid";
+ 
+// Import all supported node type components
+import HeaderText from "./nodes/HeaderText";
+import LineBreak from "./nodes/LineBreak";
+import ListItem from "./nodes/ListItem";
+import OrderedList from "./nodes/OrderedList";
+import Paragraph from "./nodes/Paragraph";
+import Text from "./nodes/Text";
+import Span from "./nodes/Span";
+import UnorderedList from "./nodes/UnorderedList";
+import Link from "./nodes/Link";
+ 
+/**
+ * TextRecur Component
+ * Recursive component that handles the actual rendering of content nodes
+ * Supports various content types (headers, paragraphs, lists, etc.)
+ * Can handle nested content structures of arbitrary depth
+ */
+ 
+// Map of supported node types to their corresponding components
+// This mapping allows dynamic selection of the appropriate component based on nodeType
+const NODES = {
+  header: HeaderText, // Renders h1-h6 headers
+  paragraph: Paragraph, // Renders paragraph blocks
+  link: Link, // Renders hyperlinks
+  text: Text, // Renders plain text
+  span: Span, // Renders inline styled text
+  "unordered-list": UnorderedList, // Renders bullet lists
+  "ordered-list": OrderedList, // Renders numbered lists
+  "list-item": ListItem, // Renders individual list items
+  "line-break": LineBreak, // Renders line breaks
+};
+ 
+export default function TextRecur(props) {
+  // Get the appropriate component for the current node type
+  const Node = NODES[props.node?.nodeType];
+ 
+  // Get any child content from the current node
+  let content = props.node?.content;
+ 
+  // Skip rendering if:
+  // 1. No matching component exists for this node type
+  // 2. Node is an h1 header and excludeH1 flag is true
+  Iif (
+    !Node ||
+    (props.excludeH1 &&
+      props.node?.nodeType === "header" &&
+      props.node?.style === "h1")
+  ) {
+    return;
+  }
+ 
+  return (
+    <>
+      {/* Handle nodes differently based on whether they have child content */}
+      {content && content.length ? (
+        // For nodes with children: render the node and recursively render its children
+        <Node key={uuid()} node={props.node} index={props.index}>
+          {content.map((node) => (
+            <TextRecur key={uuid()} node={node} />
+          ))}
+        </Node>
+      ) : (
+        // For leaf nodes: render just the node itself
+        <Node key={uuid()} node={props.node}></Node>
+      )}
+    </>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/text_node_renderer/TextRender.jsx.html b/main/coverage/lcov-report/components/text_node_renderer/TextRender.jsx.html new file mode 100644 index 0000000000..452c6c42b0 --- /dev/null +++ b/main/coverage/lcov-report/components/text_node_renderer/TextRender.jsx.html @@ -0,0 +1,160 @@ + + + + + + Code coverage report for components/text_node_renderer/TextRender.jsx + + + + + + + + + +
+
+

All files / components/text_node_renderer TextRender.jsx

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +2612x +12x +  +  +  +  +  +  +35x +  +  +  +  +106x +  +  +  +  +  +  +  +  +  +  +  + 
import TextRecur from "./TextRecur";
+import { v4 as uuid } from "uuid"; // Import UUID generator for unique keys
+ 
+/**
+ * TextRender Component
+ * Top-level component that initiates the recursive rendering of text content
+ * Processes an array of content nodes from AEM and renders them recursively
+ */
+export default function TextRender(props) {
+  return (
+    <>
+      {/* Map through each content node and render it recursively */}
+      {props.data.map((node, index) => {
+        return (
+          <TextRecur
+            key={uuid()} // Generate unique key for React rendering
+            node={node} // Pass the current node data
+            index={index} // Pass index for potential ordering/styling
+            excludeH1={props.excludeH1} // Flag to exclude h1 headers if needed
+          />
+        );
+      })}
+    </>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/text_node_renderer/index.html b/main/coverage/lcov-report/components/text_node_renderer/index.html new file mode 100644 index 0000000000..9625423e96 --- /dev/null +++ b/main/coverage/lcov-report/components/text_node_renderer/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for components/text_node_renderer + + + + + + + + + +
+
+

All files components/text_node_renderer

+
+ +
+ 95.23% + Statements + 20/21 +
+ + +
+ 88.88% + Branches + 8/9 +
+ + +
+ 100% + Functions + 4/4 +
+ + +
+ 95.23% + Lines + 20/21 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
TextRecur.jsx +
+
94.11%16/1788.88%8/9100%2/294.11%16/17
TextRender.jsx +
+
100%4/4100%0/0100%2/2100%4/4
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/text_node_renderer/nodes/HeaderText.jsx.html b/main/coverage/lcov-report/components/text_node_renderer/nodes/HeaderText.jsx.html new file mode 100644 index 0000000000..c6a52aa911 --- /dev/null +++ b/main/coverage/lcov-report/components/text_node_renderer/nodes/HeaderText.jsx.html @@ -0,0 +1,181 @@ + + + + + + Code coverage report for components/text_node_renderer/nodes/HeaderText.jsx + + + + + + + + + +
+
+

All files / components/text_node_renderer/nodes HeaderText.jsx

+
+ +
+ 100% + Statements + 3/3 +
+ + +
+ 83.33% + Branches + 5/6 +
+ + +
+ 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. +

+ +
+
+

+
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 +3312x +  +12x +21x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { Heading } from "../../molecules/Heading";
+ 
+export default function HeaderText(props) {
+  switch (props.node.style) {
+    case "h1":
+      return (
+        <Heading
+          id={"mainHeading"}
+          className={props.index === 0 ? "mt-0" : ""}
+          title={props.children[0].props.node.value}
+        />
+      );
+    case "h2":
+      return (
+        <h2 id={props.index} className={props.index === 0 ? "mt-0" : ""}>
+          {props.children}
+        </h2>
+      );
+    case "h3":
+      return (
+        <h3 id={props.index} className={props.index === 0 ? "mt-0" : ""}>
+          {props.children}
+        </h3>
+      );
+    case "h4":
+      return <h4>{props.children}</h4>;
+    case "h5":
+      return <h5>{props.children}</h5>;
+    default:
+      return <h6>{props.children}</h6>;
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/text_node_renderer/nodes/LineBreak.jsx.html b/main/coverage/lcov-report/components/text_node_renderer/nodes/LineBreak.jsx.html new file mode 100644 index 0000000000..f511bcb139 --- /dev/null +++ b/main/coverage/lcov-report/components/text_node_renderer/nodes/LineBreak.jsx.html @@ -0,0 +1,94 @@ + + + + + + Code coverage report for components/text_node_renderer/nodes/LineBreak.jsx + + + + + + + + + +
+
+

All files / components/text_node_renderer/nodes LineBreak.jsx

+
+ +
+ 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. +

+ +
+
+

+
1 +2 +3 +412x +22x +  + 
export default function LineBreak() {
+  return <br />;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/text_node_renderer/nodes/Link.jsx.html b/main/coverage/lcov-report/components/text_node_renderer/nodes/Link.jsx.html new file mode 100644 index 0000000000..c45455929a --- /dev/null +++ b/main/coverage/lcov-report/components/text_node_renderer/nodes/Link.jsx.html @@ -0,0 +1,115 @@ + + + + + + Code coverage report for components/text_node_renderer/nodes/Link.jsx + + + + + + + + + +
+
+

All files / components/text_node_renderer/nodes Link.jsx

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +1112x +  +  +  +  +  +  +  +  +  + 
export default function Link(props) {
+  return (
+    <a
+      href={props.node.data.href}
+      className="underline underline-offset-[6px] text-custom-blue-projects-link hover:text-custom-blue-projects-link-hover"
+    >
+      {props.node.value}
+    </a>
+  );
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/text_node_renderer/nodes/ListItem.jsx.html b/main/coverage/lcov-report/components/text_node_renderer/nodes/ListItem.jsx.html new file mode 100644 index 0000000000..59f7613716 --- /dev/null +++ b/main/coverage/lcov-report/components/text_node_renderer/nodes/ListItem.jsx.html @@ -0,0 +1,94 @@ + + + + + + Code coverage report for components/text_node_renderer/nodes/ListItem.jsx + + + + + + + + + +
+
+

All files / components/text_node_renderer/nodes ListItem.jsx

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +412x +  +  + 
export default function ListItem(props) {
+  return <li className="ml-10 text-mobilebody lg:text-p">{props.children}</li>;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/text_node_renderer/nodes/OrderedList.jsx.html b/main/coverage/lcov-report/components/text_node_renderer/nodes/OrderedList.jsx.html new file mode 100644 index 0000000000..31f5861800 --- /dev/null +++ b/main/coverage/lcov-report/components/text_node_renderer/nodes/OrderedList.jsx.html @@ -0,0 +1,94 @@ + + + + + + Code coverage report for components/text_node_renderer/nodes/OrderedList.jsx + + + + + + + + + +
+
+

All files / components/text_node_renderer/nodes OrderedList.jsx

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +412x +  +  + 
export default function UnorderedList(props) {
+  return <ol className="list-decimal">{props.children}</ol>;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/text_node_renderer/nodes/Paragraph.jsx.html b/main/coverage/lcov-report/components/text_node_renderer/nodes/Paragraph.jsx.html new file mode 100644 index 0000000000..9aa0a72497 --- /dev/null +++ b/main/coverage/lcov-report/components/text_node_renderer/nodes/Paragraph.jsx.html @@ -0,0 +1,94 @@ + + + + + + Code coverage report for components/text_node_renderer/nodes/Paragraph.jsx + + + + + + + + + +
+
+

All files / components/text_node_renderer/nodes Paragraph.jsx

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +412x +  +  + 
export default function Paragraph(props) {
+  return <p>{props.children}</p>;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/text_node_renderer/nodes/Span.jsx.html b/main/coverage/lcov-report/components/text_node_renderer/nodes/Span.jsx.html new file mode 100644 index 0000000000..97783c3275 --- /dev/null +++ b/main/coverage/lcov-report/components/text_node_renderer/nodes/Span.jsx.html @@ -0,0 +1,94 @@ + + + + + + Code coverage report for components/text_node_renderer/nodes/Span.jsx + + + + + + + + + +
+
+

All files / components/text_node_renderer/nodes Span.jsx

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +412x +  +  + 
export default function Span(props) {
+  return <span>{props.children}</span>;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/text_node_renderer/nodes/Text.jsx.html b/main/coverage/lcov-report/components/text_node_renderer/nodes/Text.jsx.html new file mode 100644 index 0000000000..8a57bf1ffb --- /dev/null +++ b/main/coverage/lcov-report/components/text_node_renderer/nodes/Text.jsx.html @@ -0,0 +1,118 @@ + + + + + + Code coverage report for components/text_node_renderer/nodes/Text.jsx + + + + + + + + + +
+
+

All files / components/text_node_renderer/nodes Text.jsx

+
+ +
+ 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. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +1212x +  +223x +  +  +  +  +  +  +  +  + 
export default function Text(props) {
+  // todo: guessing on italic since I didn't see it, but I'm assuming it exists and will need to be updated
+  switch (props.node?.format?.variants?.[0]) {
+    case "strong":
+      return <strong>{props.node.value}</strong>;
+    case "emphasis":
+      return <em>{props.node.value}</em>;
+    default:
+      return <>{props.node.value}</>;
+  }
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/text_node_renderer/nodes/UnorderedList.jsx.html b/main/coverage/lcov-report/components/text_node_renderer/nodes/UnorderedList.jsx.html new file mode 100644 index 0000000000..f2aa0ed235 --- /dev/null +++ b/main/coverage/lcov-report/components/text_node_renderer/nodes/UnorderedList.jsx.html @@ -0,0 +1,94 @@ + + + + + + Code coverage report for components/text_node_renderer/nodes/UnorderedList.jsx + + + + + + + + + +
+
+

All files / components/text_node_renderer/nodes UnorderedList.jsx

+
+ +
+ 100% + Statements + 1/1 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 1/1 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +412x +  +  + 
export default function UnorderedList(props) {
+  return <ul className="list-disc">{props.children}</ul>;
+}
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/components/text_node_renderer/nodes/index.html b/main/coverage/lcov-report/components/text_node_renderer/nodes/index.html new file mode 100644 index 0000000000..9d4e5411de --- /dev/null +++ b/main/coverage/lcov-report/components/text_node_renderer/nodes/index.html @@ -0,0 +1,236 @@ + + + + + + Code coverage report for components/text_node_renderer/nodes + + + + + + + + + +
+
+

All files components/text_node_renderer/nodes

+
+ +
+ 100% + Statements + 13/13 +
+ + +
+ 83.33% + Branches + 5/6 +
+ + +
+ 88.88% + Functions + 8/9 +
+ + +
+ 100% + Lines + 13/13 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
HeaderText.jsx +
+
100%3/383.33%5/6100%1/1100%3/3
LineBreak.jsx +
+
100%2/2100%0/0100%1/1100%2/2
Link.jsx +
+
100%1/1100%0/0100%1/1100%1/1
ListItem.jsx +
+
100%1/1100%0/0100%1/1100%1/1
OrderedList.jsx +
+
100%1/1100%0/0100%1/1100%1/1
Paragraph.jsx +
+
100%1/1100%0/0100%1/1100%1/1
Span.jsx +
+
100%1/1100%0/00%0/1100%1/1
Text.jsx +
+
100%2/2100%0/0100%1/1100%2/2
UnorderedList.jsx +
+
100%1/1100%0/0100%1/1100%1/1
+
+
+
+ + + + + + + + \ 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 0000000000000000000000000000000000000000..c1525b811a167671e9de1fa78aab9f5c0b61cef7 GIT binary patch literal 445 zcmV;u0Yd(XP))rP{nL}Ln%S7`m{0DjX9TLF* zFCb$4Oi7vyLOydb!7n&^ItCzb-%BoB`=x@N2jll2Nj`kauio%aw_@fe&*}LqlFT43 z8doAAe))z_%=P%v^@JHp3Hjhj^6*Kr_h|g_Gr?ZAa&y>wxHE99Gk>A)2MplWz2xdG zy8VD2J|Uf#EAw*bo5O*PO_}X2Tob{%bUoO2G~T`@%S6qPyc}VkhV}UifBuRk>%5v( z)x7B{I~z*k<7dv#5tC+m{km(D087J4O%+<<;K|qwefb6@GSX45wCK}Sn*> + + + + Code coverage report for All files + + + + + + + + + +
+
+

All files

+
+ +
+ 65.24% + Statements + 1378/2112 +
+ + +
+ 43.39% + Branches + 736/1696 +
+ + +
+ 51.29% + Functions + 158/308 +
+ + +
+ 66.7% + Lines + 1248/1871 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
components +
+
0%0/1100%0/0100%0/00%0/1
components/atoms +
+
83.12%335/40372.47%158/21861.81%34/5587.61%290/331
components/fragment_renderer +
+
89.28%50/5643.01%40/9375%3/489.58%43/48
components/fragment_renderer/fragment_components +
+
85.57%89/10442.1%8/1988.88%8/992.77%77/83
components/molecules +
+
86.34%354/41057.96%91/15776%38/5091.04%315/346
components/organisms +
+
85.78%163/19076.71%56/7360.86%14/2390.79%148/163
components/text_node_renderer +
+
95.23%20/2188.88%8/9100%4/495.23%20/21
components/text_node_renderer/nodes +
+
100%13/1383.33%5/688.88%8/9100%13/13
lib/notify +
+
72.72%8/11100%0/033.33%1/366.66%6/9
lib/utils +
+
64.17%43/6750%11/2268.75%11/1661.4%35/57
middlewares +
+
57.89%11/1925%1/442.85%3/757.89%11/19
pages +
+
36.23%100/27626.81%74/27624.07%13/5437.93%99/261
pages/api +
+
90%36/4087.5%14/1675%3/489.74%35/39
pages/projects/benefits-finder +
+
39.39%26/6638.14%37/9730%3/1041.26%26/63
pages/projects/benefits-navigator +
+
36.48%27/7440.26%60/14930%3/1038.02%27/71
pages/projects/dashboard +
+
33.8%24/7136.89%38/10330%3/1035.29%24/68
pages/projects/digital-standards-playbook +
+
35.13%26/7440.31%52/12930%3/1036.61%26/71
pages/projects/making-easier-get-benefits +
+
35.52%27/7634.28%36/10530%3/1036.98%27/73
pages/projects/oas-benefits-estimator +
+
34.66%26/7538.21%47/12330%3/1036.11%26/72
pages/projects/transforming-ei-indigenous-peoples +
+
0%0/650%0/970%0/100%0/62
+
+
+
+ + + + + + + + \ 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..4465d8bfac --- /dev/null +++ b/main/coverage/lcov-report/lib/notify/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for lib/notify + + + + + + + + + +
+
+

All files lib/notify

+
+ +
+ 72.72% + Statements + 8/11 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 33.33% + Functions + 1/3 +
+ + +
+ 66.66% + Lines + 6/9 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
postFeedbackToGcNotify.js +
+
50%1/2100%0/00%0/150%1/2
submitEmail.js +
+
77.77%7/9100%0/050%1/271.42%5/7
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/lib/notify/postFeedbackToGcNotify.js.html b/main/coverage/lcov-report/lib/notify/postFeedbackToGcNotify.js.html new file mode 100644 index 0000000000..902a536147 --- /dev/null +++ b/main/coverage/lcov-report/lib/notify/postFeedbackToGcNotify.js.html @@ -0,0 +1,142 @@ + + + + + + Code coverage report for lib/notify/postFeedbackToGcNotify.js + + + + + + + + + +
+
+

All files / lib/notify postFeedbackToGcNotify.js

+
+ +
+ 50% + Statements + 1/2 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 50% + Lines + 1/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +201x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
export async function postFeedbackToGcNotify(data) {
+  return await fetch(
+    `${process.env.NOTIFY_BASE_API_URL}/v2/notifications/email`,
+    {
+      method: "POST",
+      headers: {
+        "Content-Type": "application/json",
+        Authorization: `ApiKey-v1 ${process.env.NOTIFY_API_KEY}`,
+      },
+      body: JSON.stringify({
+        email_address: process.env.SUBMIT_FEEDBACK_EMAIL,
+        template_id: process.env.NOTIFY_FEEDBACK_TEMPLATE_ID,
+        personalisation: {
+          ...data,
+        },
+      }),
+    }
+  );
+}
+ 
+ +
+
+ + + + + + + + \ 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..454959c4f5 --- /dev/null +++ b/main/coverage/lcov-report/lib/notify/submitEmail.js.html @@ -0,0 +1,280 @@ + + + + + + Code coverage report for lib/notify/submitEmail.js + + + + + + + + + +
+
+

All files / lib/notify submitEmail.js

+
+ +
+ 77.77% + Statements + 7/9 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 50% + Functions + 1/2 +
+ + +
+ 71.42% + Lines + 5/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +662x +  +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 = async (
+  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..eeec39a400 --- /dev/null +++ b/main/coverage/lcov-report/lib/utils/createBreadcrumbs.js.html @@ -0,0 +1,121 @@ + + + + + + Code coverage report for lib/utils/createBreadcrumbs.js + + + + + + + + + +
+
+

All files / lib/utils createBreadcrumbs.js

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 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. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +136x +6x +6x +  +  +  +  +  +  +  +  +  + 
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/filterItems.js.html b/main/coverage/lcov-report/lib/utils/filterItems.js.html new file mode 100644 index 0000000000..a8710acaef --- /dev/null +++ b/main/coverage/lcov-report/lib/utils/filterItems.js.html @@ -0,0 +1,106 @@ + + + + + + Code coverage report for lib/utils/filterItems.js + + + + + + + + + +
+
+

All files / lib/utils filterItems.js

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 2/2 +
+ + +
+ 100% + Lines + 4/4 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +86x +  +6x +6x +  +6x +  + 
export const filterItems = (items, activeItem) => {
+  //filter out current project from projects array
+  const filteredProjects = items.filter((currentItem) => {
+    return currentItem.scId !== activeItem;
+  });
+  return filteredProjects;
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/lib/utils/generateCollapseElements.js.html b/main/coverage/lcov-report/lib/utils/generateCollapseElements.js.html new file mode 100644 index 0000000000..527b3a7661 --- /dev/null +++ b/main/coverage/lcov-report/lib/utils/generateCollapseElements.js.html @@ -0,0 +1,214 @@ + + + + + + Code coverage report for lib/utils/generateCollapseElements.js + + + + + + + + + +
+
+

All files / lib/utils generateCollapseElements.js

+
+ +
+ 0% + Statements + 0/19 +
+ + +
+ 0% + Branches + 0/9 +
+ + +
+ 0% + Functions + 0/3 +
+ + +
+ 0% + Lines + 0/18 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
export const generateCollapseElements = (json) => {
+  const elements = [];
+ 
+  for (const item of json) {
+    if (item.nodeType === "paragraph") {
+      elements.push(
+        <p key={elements.length}>{generateCollapseElements(item.content)}</p>
+      );
+    } else if (item.nodeType === "unordered-list") {
+      const listItems = item.content.map((listItem, index) => (
+        <li key={index} className="my-0">
+          {generateCollapseElements(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((listItem, index) => (
+        <li key={index} className="my-0">
+          {generateCollapseElements(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">
+          {generateCollapseElements(item.content)}
+        </li>
+      );
+    } else Iif (item.nodeType === "text") {
+      elements.push(item.value);
+    }
+  }
+ 
+  return elements;
+};
+ 
+ +
+
+ + + + + + + + \ 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..49fc075253 --- /dev/null +++ b/main/coverage/lcov-report/lib/utils/getAllUpdateIds.js.html @@ -0,0 +1,133 @@ + + + + + + Code coverage report for lib/utils/getAllUpdateIds.js + + + + + + + + + +
+
+

All files / lib/utils getAllUpdateIds.js

+
+ +
+ 0% + Statements + 0/3 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/2 +
+ + +
+ 0% + Lines + 0/2 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
export function getAllUpdateIds(items) {
+  return items.flatMap((item) => [
+    {
+      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/getDictionaryTerm.js.html b/main/coverage/lcov-report/lib/utils/getDictionaryTerm.js.html new file mode 100644 index 0000000000..548793a5c4 --- /dev/null +++ b/main/coverage/lcov-report/lib/utils/getDictionaryTerm.js.html @@ -0,0 +1,97 @@ + + + + + + Code coverage report for lib/utils/getDictionaryTerm.js + + + + + + + + + +
+
+

All files / lib/utils getDictionaryTerm.js

+
+ +
+ 100% + Statements + 5/5 +
+ + +
+ 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. +

+ +
+
+

+
1 +2 +3 +4 +528x +358x +28x +  + 
export const getDictionaryTerm = (dictionary, entryId, locale) => {
+  const dictionaryEntry = dictionary.find((obj) => obj.scId === entryId);
+  return locale === "en" ? dictionaryEntry.scTermEn : dictionaryEntry.scTermFr;
+};
+ 
+ +
+
+ + + + + + + + \ 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..ca6758858b --- /dev/null +++ b/main/coverage/lcov-report/lib/utils/index.html @@ -0,0 +1,236 @@ + + + + + + Code coverage report for lib/utils + + + + + + + + + +
+
+

All files lib/utils

+
+ +
+ 64.17% + Statements + 43/67 +
+ + +
+ 50% + Branches + 11/22 +
+ + +
+ 68.75% + Functions + 11/16 +
+ + +
+ 61.4% + Lines + 35/57 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
createBreadcrumbs.js +
+
100%4/450%2/4100%2/2100%3/3
filterItems.js +
+
100%5/5100%0/0100%2/2100%4/4
generateCollapseElements.js +
+
0%0/190%0/90%0/30%0/18
getAllUpdateIds.js +
+
0%0/3100%0/00%0/20%0/2
getDictionaryTerm.js +
+
100%5/5100%2/2100%2/2100%3/3
maskEmail.js +
+
100%13/13100%7/7100%1/1100%12/12
shuffle.js +
+
71.42%5/7100%0/0100%1/160%3/5
sortUpdatesByDate.js +
+
100%4/4100%0/0100%2/2100%3/3
stripFeedback.js +
+
100%7/7100%0/0100%1/1100%7/7
+
+
+
+ + + + + + + + \ 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..d565fd8fde --- /dev/null +++ b/main/coverage/lcov-report/lib/utils/maskEmail.js.html @@ -0,0 +1,142 @@ + + + + + + Code coverage report for lib/utils/maskEmail.js + + + + + + + + + +
+
+

All files / lib/utils maskEmail.js

+
+ +
+ 100% + Statements + 13/13 +
+ + +
+ 100% + Branches + 7/7 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20  +1x +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/shuffle.js.html b/main/coverage/lcov-report/lib/utils/shuffle.js.html new file mode 100644 index 0000000000..1cb2ea2ce6 --- /dev/null +++ b/main/coverage/lcov-report/lib/utils/shuffle.js.html @@ -0,0 +1,109 @@ + + + + + + Code coverage report for lib/utils/shuffle.js + + + + + + + + + +
+
+

All files / lib/utils shuffle.js

+
+ +
+ 71.42% + Statements + 5/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 60% + Lines + 3/5 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +96x +  +1x +  +  +  +1x +  + 
export const shuffle = (projects) => {
+  //randomize order of projects array
+  for (let i = projects.length - 1; i > 0; i--) {
+    const j = Math.floor(Math.random() * (i + 1));
+    [projects[i], projects[j]] = [projects[j], projects[i]];
+  }
+  return projects;
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/lib/utils/sortUpdatesByDate.js.html b/main/coverage/lcov-report/lib/utils/sortUpdatesByDate.js.html new file mode 100644 index 0000000000..29fca0c841 --- /dev/null +++ b/main/coverage/lcov-report/lib/utils/sortUpdatesByDate.js.html @@ -0,0 +1,100 @@ + + + + + + Code coverage report for lib/utils/sortUpdatesByDate.js + + + + + + + + + +
+
+

All files / lib/utils sortUpdatesByDate.js

+
+ +
+ 100% + Statements + 4/4 +
+ + +
+ 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. +

+ +
+
+

+
1 +2 +3 +4 +5 +67x +7x +5x +  +  + 
export const sortUpdatesByDate = (array) => {
+  return [...array].sort((a, b) => {
+    return b.scDateModifiedOverwrite.localeCompare(a.scDateModifiedOverwrite);
+  });
+};
+ 
+ +
+
+ + + + + + + + \ 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..45551cbed1 --- /dev/null +++ b/main/coverage/lcov-report/lib/utils/stripFeedback.js.html @@ -0,0 +1,178 @@ + + + + + + Code coverage report for lib/utils/stripFeedback.js + + + + + + + + + +
+
+

All files / lib/utils stripFeedback.js

+
+ +
+ 100% + Statements + 7/7 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 7/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +327x +  +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..8693088bfd --- /dev/null +++ b/main/coverage/lcov-report/middlewares/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for middlewares + + + + + + + + + +
+
+

All files middlewares

+
+ +
+ 57.89% + Statements + 11/19 +
+ + +
+ 25% + Branches + 1/4 +
+ + +
+ 42.85% + Functions + 3/7 +
+ + +
+ 57.89% + Lines + 11/19 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
initMiddleware.js +
+
0%0/70%0/10%0/40%0/7
joi.js +
+
91.66%11/1233.33%1/3100%3/391.66%11/12
+
+
+
+ + + + + + + + \ 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..d23ace0486 --- /dev/null +++ b/main/coverage/lcov-report/middlewares/initMiddleware.js.html @@ -0,0 +1,124 @@ + + + + + + Code coverage report for middlewares/initMiddleware.js + + + + + + + + + +
+
+

All files / middlewares initMiddleware.js

+
+ +
+ 0% + Statements + 0/7 +
+ + +
+ 0% + Branches + 0/1 +
+ + +
+ 0% + Functions + 0/4 +
+ + +
+ 0% + Lines + 0/7 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 (req, res) =>
+    new Promise((resolve, reject) => {
+      middleware(req, res, (result) => {
+        Iif (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..5ac209220c --- /dev/null +++ b/main/coverage/lcov-report/middlewares/joi.js.html @@ -0,0 +1,160 @@ + + + + + + Code coverage report for middlewares/joi.js + + + + + + + + + +
+
+

All files / middlewares joi.js

+
+ +
+ 91.66% + Statements + 11/12 +
+ + +
+ 33.33% + Branches + 1/3 +
+ + +
+ 100% + Functions + 3/3 +
+ + +
+ 91.66% + Lines + 11/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +261x +1x +  +  +  +  +  +  +  +  +1x +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;
+    Iif (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..864e2d639f --- /dev/null +++ b/main/coverage/lcov-report/pages/404.js.html @@ -0,0 +1,820 @@ + + + + + + Code coverage report for pages/404.js + + + + + + + + + +
+
+

All files / pages 404.js

+
+ +
+ 76.92% + Statements + 20/26 +
+ + +
+ 40.9% + Branches + 9/22 +
+ + +
+ 66.66% + Functions + 2/3 +
+ + +
+ 80% + Lines + 20/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +2461x +1x +1x +1x +1x +1x +1x +1x +  +1x +2x +2x +2x +2x +  +2x +1x +  +  +  +  +  +1x +  +  +1x +  +  +  +  +2x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  + 
import Head from "next/head";
+import { useTranslation } from "next-i18next";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import Link from "next/link";
+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(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+ 
+    //If using Internet Explorer, redirect to /notsupported
+    Iif (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 (
+    <>
+      <Head>
+        {/* 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>
+      <main>
+        <div className="min-h-screen relative">
+          <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="/en/home"
+                        locale={false}
+                        className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+                      >
+                        {pageData.scContentEn.json[3].content[1].value}
+                      </Link>
+                    </p>
+                  </div>
+                </div>
+              </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="/fr/accueil"
+                        locale={false}
+                        className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+                      >
+                        {pageData.scContentFr.json[3].content[1].value}
+                      </Link>
+                    </p>
+                  </div>
+                </div>
+              </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>
+      </main>
+    </>
+  );
+}
+ 
+export const getStaticProps = async ({ locale }) => {
+  const { data } = await aemServiceInstance.getFragment("error404Query");
+ 
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      ...(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..70f5bdfa3b --- /dev/null +++ b/main/coverage/lcov-report/pages/500.js.html @@ -0,0 +1,907 @@ + + + + + + Code coverage report for pages/500.js + + + + + + + + + +
+
+

All files / pages 500.js

+
+ +
+ 76.92% + Statements + 20/26 +
+ + +
+ 40% + Branches + 8/20 +
+ + +
+ 66.66% + Functions + 2/3 +
+ + +
+ 80% + Lines + 20/25 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +2751x +1x +1x +1x +1x +1x +1x +1x +  +1x +2x +2x +2x +2x +  +2x +1x +  +  +  +  +  +1x +  +  +1x +  +  +  +  +2x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  + 
import Head from "next/head";
+import { useTranslation } from "next-i18next";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import Link from "next/link";
+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(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+ 
+    //If using Internet Explorer, redirect to /notsupported
+    Iif (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 (
+    <>
+      <Head>
+        {/* 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>
+      <main>
+        <div className="min-h-screen relative">
+          <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="/en/home"
+                        locale={false}
+                        className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+                      >
+                        {pageData.scContentEn.json[3].content[1].value}
+                      </Link>
+                    </p>
+                  </div>
+                </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-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="/fr/accueil"
+                        locale={false}
+                        className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+                      >
+                        {pageData.scContentFr.json[3].content[1].value}
+                      </Link>
+                    </p>
+                  </div>
+                </div>
+              </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>
+      </main>
+    </>
+  );
+}
+ 
+export const getStaticProps = async ({ locale }) => {
+  const { data } = await aemServiceInstance.getFragment("error500Query");
+ 
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      ...(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..a9a18acafb --- /dev/null +++ b/main/coverage/lcov-report/pages/_app.js.html @@ -0,0 +1,199 @@ + + + + + + Code coverage report for pages/_app.js + + + + + + + + + +
+
+

All files / pages _app.js

+
+ +
+ 0% + Statements + 0/13 +
+ + +
+ 100% + Branches + 0/0 +
+ + +
+ 0% + Functions + 0/1 +
+ + +
+ 0% + Lines + 0/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
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";
+import { Noto_Sans, Lato } from "next/font/google";
+ 
+config.autoAddCss = false;
+ 
+// Setup fonts for pre-loading
+const notoSans = Noto_Sans({
+  subsets: ["latin"],
+  weight: ["300", "400", "700", "900"],
+  variable: "--font-notoSans",
+});
+const lato = Lato({
+  subsets: ["latin"],
+  weight: ["300", "400", "700", "900"],
+  variable: "--font-lato",
+});
+ 
+function MyApp({ Component, pageProps }) {
+  return (
+    <>
+      <Head>
+        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+      </Head>
+      {/* Pre-load fonts */}
+      <div className={`${notoSans.variable} ${lato.variable}`}>
+        <Component {...pageProps} />
+      </div>
+    </>
+  );
+}
+ 
+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..1aa7668a77 --- /dev/null +++ b/main/coverage/lcov-report/pages/api/healthcheck.js.html @@ -0,0 +1,97 @@ + + + + + + Code coverage report for pages/api/healthcheck.js + + + + + + + + + +
+
+

All files / pages/api healthcheck.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. +

+ +
+
+

+
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..59f1af712f --- /dev/null +++ b/main/coverage/lcov-report/pages/api/index.html @@ -0,0 +1,161 @@ + + + + + + Code coverage report for pages/api + + + + + + + + + +
+
+

All files pages/api

+
+ +
+ 90% + Statements + 36/40 +
+ + +
+ 87.5% + Branches + 14/16 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 89.74% + Lines + 35/39 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
healthcheck.js +
+
0%0/2100%0/00%0/10%0/2
report-a-problem.js +
+
87.5%14/1680%8/10100%1/186.66%13/15
robots.js +
+
100%10/10100%2/2100%1/1100%10/10
submit-feedback.js +
+
100%12/12100%4/4100%1/1100%12/12
+
+
+
+ + + + + + + + \ 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..b101292945 --- /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 + + + + + + + + + +
+
+

All files / pages/api report-a-problem.js

+
+ +
+ 87.5% + Statements + 14/16 +
+ + +
+ 80% + Branches + 8/10 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 86.66% + Lines + 13/15 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +641x +  +  +  +  +  +  +5x +  +5x +  +  +  +2x +  +3x +3x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +2x +1x +  +1x +1x +  +  +1x +1x +  +  +  +  +  +  +  +  +5x + 
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..d1a5a399f9 --- /dev/null +++ b/main/coverage/lcov-report/pages/api/robots.js.html @@ -0,0 +1,142 @@ + + + + + + Code coverage report for pages/api/robots.js + + + + + + + + + +
+
+

All files / pages/api robots.js

+
+ +
+ 100% + Statements + 10/10 +
+ + +
+ 100% + Branches + 2/2 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 10/10 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20  +  +  +  +  +  +2x +2x +1x +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");
+    res.write("Disallow: /rsdc-demander\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/api/submit-feedback.js.html b/main/coverage/lcov-report/pages/api/submit-feedback.js.html new file mode 100644 index 0000000000..698a26c363 --- /dev/null +++ b/main/coverage/lcov-report/pages/api/submit-feedback.js.html @@ -0,0 +1,145 @@ + + + + + + Code coverage report for pages/api/submit-feedback.js + + + + + + + + + +
+
+

All files / pages/api submit-feedback.js

+
+ +
+ 100% + Statements + 12/12 +
+ + +
+ 100% + Branches + 4/4 +
+ + +
+ 100% + Functions + 1/1 +
+ + +
+ 100% + Lines + 12/12 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17 +18 +19 +20 +211x +  +3x +3x +3x +1x +  +2x +2x +2x +1x +  +1x +  +  +1x +1x +  +  +  + 
import { postFeedbackToGcNotify } from "../../lib/notify/postFeedbackToGcNotify";
+ 
+export default async function handler(req, res) {
+  const data = req.body;
+  if (!data["what-was-wrong"]) {
+    res.status(400).json({ message: "required field missing" });
+  } else {
+    try {
+      let r = await postFeedbackToGcNotify(data);
+      if (r.ok) {
+        res.status(200).json(data);
+      } else {
+        throw new Error("bad request");
+      }
+    } catch (e) {
+      console.error("Failed to post to GC Notify");
+      res.status(500).json({ message: "something went wrong" });
+    }
+  }
+}
+ 
+ +
+
+ + + + + + + + \ 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..acba470195 --- /dev/null +++ b/main/coverage/lcov-report/pages/error.js.html @@ -0,0 +1,1438 @@ + + + + + + Code coverage report for pages/error.js + + + + + + + + + +
+
+

All files / pages error.js

+
+ +
+ 0% + Statements + 0/25 +
+ + +
+ 0% + Branches + 0/43 +
+ + +
+ 0% + Functions + 0/3 +
+ + +
+ 0% + Lines + 0/24 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import Head from "next/head";
+import Link from "next/link";
+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(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      <Head>
+        {/* 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>
+        <div className="min-h-screen relative">
+          <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="/en/home"
+                              locale={false}
+                              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="/en/home"
+                          locale={false}
+                          className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+                        >
+                          {pageData.scContentEn.json[10].content[1].value}
+                        </Link>
+                      </p>
+                    </div>
+                  )}
+                </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>
+              {/* 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="/fr/accueil"
+                              locale={false}
+                              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="/fr/accueil"
+                          locale={false}
+                          className="underline hover:text-canada-footer-hover-font-blue text-canada-footer-font"
+                        >
+                          {pageData.scContentFr.json[10].content[1].value}
+                        </Link>
+                      </p>
+                    </div>
+                  )}
+                </div>
+              </div>
+            </div>
+          </section>
+        </div>
+        <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>
+      </main>
+    </>
+  );
+}
+ 
+export const getStaticProps = async ({ locale }) => {
+  const { data } = await aemServiceInstance.getFragment("customErrorQuery");
+ 
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      ...(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..f478096593 --- /dev/null +++ b/main/coverage/lcov-report/pages/home.js.html @@ -0,0 +1,1585 @@ + + + + + + Code coverage report for pages/home.js + + + + + + + + + +
+
+

All files / pages home.js

+
+ +
+ 75% + Statements + 33/44 +
+ + +
+ 45.12% + Branches + 37/82 +
+ + +
+ 55.55% + Functions + 5/9 +
+ + +
+ 76.19% + Lines + 32/42 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +1x +1x +  +1x +1x +1x +  +1x +1x +1x +1x +1x +1x +1x +1x +  +  +  +  +  +  +1x +  +2x +1x +1x +1x +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  +1x +  +1x +  +  +  +  +  +  +  +  +  +1x +1x +7x +  +  +  +1x +  +  +1x +  +  +  +  +  +  +1x +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
// Core Next.js imports for page head management and i18n (internationalization)
+import Head from "next/head";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+// Custom components imports - using atomic design principles (atoms, molecules, organisms)
+import { Layout } from "../components/organisms/Layout";
+import { useEffect } from "react";
+import Card from "../components/molecules/Card";
+// Service for interacting with Adobe Experience Manager (AEM)
+import aemServiceInstance from "../services/aemServiceInstance";
+import { ContextualAlert } from "../components/molecules/ContextualAlert";
+import { Link as LinkWrapper } from "../components/atoms/Link";
+import Link from "next/link";
+import { ExploreUpdates } from "../components/organisms/ExploreUpdates";
+import FragmentRender from "../components/fragment_renderer/FragmentRender";
+import { sortUpdatesByDate } from "../lib/utils/sortUpdatesByDate";
+import { SurveyCTA } from "../components/molecules/SurveyCTA";
+ 
+/**
+ * Home Page Component for Service Canada Labs
+ * Renders the main landing page with projects, updates, and survey CTA
+ * Supports bilingual content (English/French) based on locale
+ */
+export default function Home(props) {
+  // Extract content data from props
+  const pageData = props.pageData?.item; // Core page content from AEM
+  const experimentsData = props.experimentsData; // List of all projects/experiments
+  const dictionary = props.dictionary; // Translation dictionary for UI elements
+  const updatesData = props.updatesData; // Recent updates for projects
+ 
+  // Filter to show only currently active projects
+  // Projects must have a specific AEM status code to be considered "current"
+  const currentProjects = experimentsData.filter((project) => {
+    return (
+      project.scLabProjectStatus[0] ===
+      "gc:custom/decd-endc/project-status/current"
+    );
+  });
+ 
+  /**
+   * Sorts projects according to a predefined order and returns top 3
+   * Order is manually maintained until content strategy is finalized
+   * @param {Array} objects - Array of project objects to sort
+   * @returns {Array} - Top 3 sorted projects
+   */
+  const sortProjects = (objects) => {
+    // Predefined display order for projects
+    const sortOrder = [
+      "Transforming EI with Indigenous peoples",
+      "Benefits Finder",
+      "Making it easier to get benefits",
+      "Digital Standards Playbook",
+      "New dashboard for My Service Canada Account",
+      "Old Age Security Benefits Estimator",
+      "Benefits Navigator",
+    ];
+    // Create lookup object for efficient sorting
+    const titleOrder = {};
+    for (let i = 0; i < sortOrder.length; i++) {
+      titleOrder[sortOrder[i]] = i;
+    }
+ 
+    // Sort projects based on predefined order
+    const sorted = objects.sort((a, b) => {
+      return titleOrder[a.scTitleEn] - titleOrder[b.scTitleEn];
+    });
+    return sorted.slice(0, 3); // Return only top 3 projects
+  };
+ 
+  /**
+   * Maps current projects to Card components with bilingual support
+   * Handles image sources, alt text, and "New update" tags
+   */
+  const displayCurrentProjects = sortProjects(currentProjects).map(
+    (project) => (
+      <li key={project.scId} className="list-none ml-0">
+        <Card
+          showImage
+          // Show "New update" tag if project has a future expiry date
+          showTag={
+            project.scLabsNewExpiryDate &&
+            Date.now() <= new Date(project.scLabsNewExpiryDate)
+          }
+          tagLabel={
+            props.locale === "en" ? "New update" : "Nouvelle mise à jour"
+          }
+          tag="new_update"
+          // Bilingual image handling
+          imgSrc={
+            props.locale === "en"
+              ? project.scSocialMediaImageEn._publishUrl
+              : project.scSocialMediaImageFr._publishUrl
+          }
+          imgAlt={
+            props.locale === "en"
+              ? project.scSocialMediaImageAltTextEn
+              : project.scSocialMediaImageAltTextFr
+          }
+          imgHeight={
+            project.scSocialMediaImageEn.height
+              ? project.scSocialMediaImageEn.height
+              : ""
+          }
+          imgWidth={
+            project.scSocialMediaImageEn.width
+              ? project.scSocialMediaImageEn.width
+              : ""
+          }
+          // Bilingual content handling
+          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>
+    )
+  );
+ 
+  // Initialize Adobe Analytics data layer on page load
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      <Layout
+        locale={props.locale}
+        // Alternate language URL for language toggle
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+      >
+        {/* Page head component for meta tags */}
+        <Head>
+          {/* Primary HTML Meta Tags */}
+          <title>
+            {props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr}
+          </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>
+ 
+        {/* Main Page Content */}
+        <div id="pageMainTitle" className="mt-24">
+          <FragmentRender
+            locale={props.locale}
+            fragments={[pageData.scFragments[0]]}
+          />
+        </div>
+ 
+        <div className="layout-container">
+          {/* Survey Call-to-Action Section */}
+          <SurveyCTA
+            heading={
+              props.locale === "en"
+                ? pageData.scFragments[1].scTitleEn
+                : pageData.scFragments[1].scTitleFr
+            }
+            description={
+              props.locale === "en"
+                ? pageData.scFragments[1].scContentEn.json[0].content[0].value
+                : pageData.scFragments[1].scContentFr.json[0].content[0].value
+            }
+            buttonId={
+              props.locale === "en"
+                ? pageData.scFragments[1].scLabsButton[0].scId
+                : pageData.scFragments[1].scLabsButton[0].scIdFr
+            }
+            buttonLabel={
+              props.locale === "en"
+                ? pageData.scFragments[1].scLabsButton[0].scTitleEn
+                : pageData.scFragments[1].scLabsButton[0].scTitleFr
+            }
+            buttonLink={
+              props.locale === "en"
+                ? pageData.scFragments[1].scLabsButton[0].scDestinationURLEn
+                : pageData.scFragments[1].scLabsButton[0].scDestinationURLFr
+            }
+          />
+ 
+          {/* Projects Section Title */}
+          <h2>
+            {props.locale === "en"
+              ? pageData.scFragments[2].scContentEn.json[0].content[0].value
+              : pageData.scFragments[2].scContentFr.json[0].content[0]
+                  .value}{" "}
+          </h2>
+ 
+          {/* Information Alert Section */}
+          <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[3].scTitleEn
+                  : pageData.scFragments[3].scTitleFr
+              }
+              message_body={
+                // Conditional rendering of alert message with embedded link
+                props.locale === "en" ? (
+                  <>
+                    {
+                      pageData.scFragments[3].scContentEn.json[0].content[0]
+                        .value
+                    }
+                    <a
+                      className="underline text-canada-footer-font hover:text-canada-footer-hover-font-blue"
+                      href={
+                        pageData.scFragments[3].scContentEn.json[0].content[1]
+                          .data.href
+                      }
+                    >
+                      {
+                        pageData.scFragments[3].scContentEn.json[0].content[1]
+                          .value
+                      }
+                    </a>
+                    {
+                      pageData.scFragments[3].scContentEn.json[0].content[2]
+                        .value
+                    }
+                  </>
+                ) : (
+                  // French version of alert message
+                  <>
+                    {
+                      pageData.scFragments[3].scContentFr.json[0].content[0]
+                        .value
+                    }
+                    <a
+                      className="underline text-canada-footer-font hover:text-canada-footer-hover-font-blue"
+                      href={
+                        pageData.scFragments[3].scContentFr.json[0].content[1]
+                          .data.href
+                      }
+                    >
+                      {
+                        pageData.scFragments[3].scContentFr.json[0].content[1]
+                          .value
+                      }
+                    </a>
+                    {
+                      pageData.scFragments[3].scContentEn.json[0].content[2]
+                        .value
+                    }
+                  </>
+                )
+              }
+            />
+          </div>
+ 
+          {/* Project Cards Grid Section */}
+          <div className="mb-4">
+            <ul className="grid lg:grid-cols-3 gap-6 list-none ml-0">
+              {displayCurrentProjects}
+            </ul>
+            {/* "See all projects" link */}
+            <div className="mt-6 flex justify-end">
+              <LinkWrapper
+                component={Link}
+                id="projectsLink"
+                href={
+                  props.locale === "en"
+                    ? pageData.scFragments[4].scContentEn.json[0].content[0]
+                        .data.href
+                    : pageData.scFragments[4].scContentFr.json[0].content[0]
+                        .data.href
+                }
+                lang={props.locale}
+                text={
+                  props.locale === "en"
+                    ? pageData.scFragments[4].scContentEn.json[0].content[0]
+                        .value
+                    : pageData.scFragments[4].scContentFr.json[0].content[0]
+                        .value
+                }
+              />
+            </div>
+          </div>
+        </div>
+ 
+        {/* Updates Section */}
+        <section>
+          <ExploreUpdates
+            locale={props.locale}
+            updatesData={sortUpdatesByDate(updatesData).slice(0, 3)}
+            dictionary={dictionary}
+            heading={
+              props.locale === "en"
+                ? pageData.scFragments[5].scContentEn.json[0].content[0].value
+                : pageData.scFragments[5].scContentFr.json[0].content[0].value
+            }
+            linkLabel={
+              props.locale === "en"
+                ? pageData.scFragments[6].scContentEn.json[0].content[0].value
+                : pageData.scFragments[6].scContentFr.json[0].content[0].value
+            }
+            href={
+              props.locale === "en"
+                ? pageData.scFragments[6].scContentEn.json[0].content[0].data
+                    .href
+                : pageData.scFragments[6].scContentFr.json[0].content[0].data
+                    .href
+            }
+          />
+        </section>
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Next.js Static Site Generation (SSG) function
+ * Fetches all required data at build time for static page generation
+ * Enables Incremental Static Regeneration (ISR) if configured
+ */
+export const getStaticProps = async ({ locale }) => {
+  // Fetch main page content from AEM
+  const { data: pageData } = await fetch(
+    `${process.env.AEM_BASE_URL}/getSclHomeV2`
+  ).then((res) => res.json());
+ 
+  // Fetch projects/experiments data
+  const { data: experimentsData } = await aemServiceInstance.getFragment(
+    "projectQuery"
+  );
+ 
+  // Fetch updates data for all projects
+  const { data: updatesData } = await fetch(
+    `${process.env.AEM_BASE_URL}/getSclAllUpdatesV1`
+  ).then((res) => res.json());
+ 
+  // Fetch translation dictionary
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+ 
+  // Return all props needed for page rendering
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      pageData: pageData.sclabsPageV1ByPath,
+      experimentsData: experimentsData.sclabsPageV1List.items,
+      updatesData: updatesData.sclabsPageV1List.items,
+      dictionary: dictionary.dictionaryV1List.items,
+      ...(await serverSideTranslations(locale, ["common"])),
+    },
+    // Enable ISR if configured in environment
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ 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..9acfb594bd --- /dev/null +++ b/main/coverage/lcov-report/pages/index.html @@ -0,0 +1,236 @@ + + + + + + Code coverage report for pages + + + + + + + + + +
+
+

All files pages

+
+ +
+ 36.23% + Statements + 100/276 +
+ + +
+ 26.81% + Branches + 74/276 +
+ + +
+ 24.07% + Functions + 13/54 +
+ + +
+ 37.93% + Lines + 99/261 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
404.js +
+
76.92%20/2640.9%9/2266.66%2/380%20/25
500.js +
+
76.92%20/2640%8/2066.66%2/380%20/25
_app.js +
+
0%0/13100%0/00%0/10%0/12
error.js +
+
0%0/250%0/430%0/30%0/24
home.js +
+
75%33/4445.12%37/8255.55%5/976.19%32/42
index.js +
+
75%12/1611.11%1/966.66%2/385.71%12/14
notsupported.js +
+
62.5%15/2444.18%19/4340%2/565.21%15/23
projects.js +
+
0%0/470%0/290%0/130%0/44
updates.js +
+
0%0/550%0/280%0/140%0/52
+
+
+
+ + + + + + + + \ 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..f89a77fdd1 --- /dev/null +++ b/main/coverage/lcov-report/pages/index.js.html @@ -0,0 +1,673 @@ + + + + + + Code coverage report for pages/index.js + + + + + + + + + +
+
+

All files / pages index.js

+
+ +
+ 75% + Statements + 12/16 +
+ + +
+ 11.11% + Branches + 1/9 +
+ + +
+ 66.66% + Functions + 2/3 +
+ + +
+ 85.71% + Lines + 12/14 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +1971x +1x +1x +1x +1x +1x +  +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(() => {
+    Iif (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>
+        {/* 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")}`} />
+        // Site ownership verification to use URL Inspection Tool
+        <meta
+          name="google-site-verification"
+          content="cJ7yrE6jUDOrRFwPgxPanWrgaRqI9l0qG0F9rqFhZxM"
+        />
+      </Head>
+      <main>
+        <div 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>
+        </div>
+      </main>
+    </>
+  );
+}
+ 
+export const getServerSideProps = async ({ locale }) => ({
+  props: {
+    locale: locale ?? "en",
+    adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+    ...(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..4ced1e88cf --- /dev/null +++ b/main/coverage/lcov-report/pages/notsupported.js.html @@ -0,0 +1,1537 @@ + + + + + + Code coverage report for pages/notsupported.js + + + + + + + + + +
+
+

All files / pages notsupported.js

+
+ +
+ 62.5% + Statements + 15/24 +
+ + +
+ 44.18% + Branches + 19/43 +
+ + +
+ 40% + Functions + 2/5 +
+ + +
+ 65.21% + Lines + 15/23 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +4851x +1x +1x +1x +1x +1x +  +1x +  +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(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  function onClickEn() {
+    setEnCopied(true);
+    setFrCopied(false);
+  }
+ 
+  function onClickFr() {
+    setFrCopied(true);
+    setEnCopied(false);
+  }
+  return (
+    <>
+      <Head>
+        {/* 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>
+      <main>
+        <div className="min-h-screen relative">
+          <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>
+      </main>
+    </>
+  );
+}
+ 
+export const getStaticProps = async ({ locale }) => {
+  const { data } = await aemServiceInstance.getFragment("notsupportedQuery");
+ 
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      ...(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.js.html b/main/coverage/lcov-report/pages/projects.js.html new file mode 100644 index 0000000000..89a03f6294 --- /dev/null +++ b/main/coverage/lcov-report/pages/projects.js.html @@ -0,0 +1,799 @@ + + + + + + Code coverage report for pages/projects.js + + + + + + + + + +
+
+

All files / pages projects.js

+
+ +
+ 0% + Statements + 0/47 +
+ + +
+ 0% + Branches + 0/29 +
+ + +
+ 0% + Functions + 0/13 +
+ + +
+ 0% + Lines + 0/44 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
// Import required dependencies
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { Layout } from "../components/organisms/Layout";
+import { useEffect, useState } from "react";
+import Card from "../components/molecules/Card";
+import PageHead from "../components/fragment_renderer/PageHead";
+import { MultiSelectField } from "../components/atoms/MultiSelectField";
+// Utility functions for breadcrumb generation and dictionary term lookup
+import { createBreadcrumbs } from "../lib/utils/createBreadcrumbs";
+import { getDictionaryTerm } from "../lib/utils/getDictionaryTerm";
+import { useTranslation } from "next-i18next";
+ 
+/**
+ * Projects Page Component
+ * Displays a filterable grid of all Service Canada Lab projects
+ * Supports bilingual content and project status filtering
+ */
+export default function ProjectsPage(props) {
+  // Extract data from props
+  const pageData = props.pageData?.item; // Page content from AEM
+  const projectsData = props.projectsData; // All projects data
+  const dictionary = props.dictionary; // Translation dictionary
+  // State for managing selected filter options
+  const [selectedOptions, setSelectedOptions] = useState([]);
+  // Translation hook for i18n
+  const { t } = useTranslation("common");
+ 
+  /**
+   * Extracts unique project statuses and converts them to select options
+   * @param {Array} arr - Array of project objects
+   * @returns {Array} Array of formatted options for MultiSelectField
+   */
+  const getSelectOptionsFromProjectsData = (arr) => {
+    // Use Set to track unique status values
+    const seen = new Set();
+    // Reduce array to unique status entries
+    let reducedArray = arr.reduce((acc, obj) => {
+      Iif (!seen.has(obj.scLabProjectStatus[0])) {
+        seen.add(obj.scLabProjectStatus[0]);
+        acc.push(obj);
+      }
+      return acc;
+    }, []);
+    // Format options for the MultiSelectField component
+    let optionsArray = reducedArray.map((option) => {
+      return {
+        id: option.scLabProjectStatus[0],
+        // Translate status labels using i18n
+        label: t(option.scLabProjectStatus[0].substring(3)),
+        value: option.scLabProjectStatus[0],
+      };
+    });
+    return optionsArray;
+  };
+ 
+  /**
+   * Filters projects based on selected status options
+   * @param {Array} projects - Array of all projects
+   * @param {Array} selectedOptions - Array of selected filter options
+   * @returns {Array} Filtered projects array
+   */
+  const filterProjects = (projects, selectedOptions) => {
+    // If no filters selected, return all projects
+    Iif (selectedOptions.length === 0) return projects;
+    // Create Set of selected status IDs for efficient lookup
+    const selectedIds = new Set(selectedOptions.map((option) => option.id));
+    // Return projects matching selected statuses
+    return projects.filter((project) =>
+      selectedIds.has(project.scLabProjectStatus[0])
+    );
+  };
+ 
+  /**
+   * Maps filtered projects to Card components
+   * Handles bilingual content for each project card
+   */
+  const projectsCards = filterProjects(projectsData, selectedOptions).map(
+    (project) => {
+      return (
+        <li
+          key={project.scId}
+          className="grid col-span-12 md:col-span-6 xl:col-span-4 list-none"
+        >
+          <Card
+            // Bilingual title handling
+            title={
+              props.locale === "en" ? project.scTitleEn : project.scTitleFr
+            }
+            href={
+              props.locale === "en"
+                ? project.scPageNameEn
+                : project.scPageNameFr
+            }
+            showImage
+            // Bilingual image handling
+            imgSrc={
+              props.locale === "en"
+                ? project.scSocialMediaImageEn._publishUrl
+                : project.scSocialMediaImageFr._publishUrl
+            }
+            imgAlt={
+              props.locale === "en"
+                ? project.scSocialMediaImageAltTextEn
+                : project.scSocialMediaImageAltTextFr
+            }
+            imgHeight={
+              project.scSocialMediaImageEn.height
+                ? project.scSocialMediaImageEn.height
+                : ""
+            }
+            imgWidth={
+              project.scSocialMediaImageEn.width
+                ? project.scSocialMediaImageEn.width
+                : ""
+            }
+            // Bilingual description handling
+            description={
+              props.locale === "en"
+                ? project.scDescriptionEn.json[0].content[0].value
+                : project.scDescriptionFr.json[0].content[0].value
+            }
+          />
+        </li>
+      );
+    }
+  );
+ 
+  // Initialize Adobe Analytics
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      <Layout
+        locale={props.locale}
+        // Alternate language URL for language toggle
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        // Generate breadcrumb navigation
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        {/* Page head component for meta tags */}
+        <PageHead locale={props.locale} pageData={pageData} />
+ 
+        {/* Hero section with background image */}
+        <div
+          id="pageMainTitle"
+          className="flex flex-col justify-center content-center mt-16 h-[182px] bg-multi-blue-blue70 bg-no-repeat sm:bg-right-bottom"
+          style={{
+            backgroundImage: `url(/981A606F-CEBD-4DD1-BDF5-FC7DD4834CCA_4_5005_c.jpeg)`,
+            backgroundSize: "cover",
+          }}
+        >
+          <div className="layout-container text-white">
+            {/* Bilingual page title and description */}
+            <h1 className="m-0">
+              {props.locale === "en"
+                ? pageData.scFragments[0].scContentEn.json[0].content[0].value
+                : pageData.scFragments[0].scContentFr.json[0].content[0].value}
+            </h1>
+            <p>
+              {" "}
+              {props.locale === "en"
+                ? pageData.scFragments[0].scContentEn.json[1].content[0].value
+                : pageData.scFragments[0].scContentFr.json[1].content[0].value}
+            </p>
+          </div>
+        </div>
+ 
+        <div className="layout-container">
+          {/* Project status filter dropdown */}
+          <div className="my-12 max-w-[350px]">
+            <MultiSelectField
+              label={getDictionaryTerm(
+                dictionary,
+                "DICTIONARY-FILTER-BY-PROJECT-STATUS",
+                props.locale
+              )}
+              placeholder={getDictionaryTerm(dictionary, "ALL", props.locale)}
+              boldLabel
+              options={getSelectOptionsFromProjectsData(projectsData)}
+              onChange={setSelectedOptions}
+              selectedOptions={selectedOptions}
+            />
+          </div>
+          {/* Grid of project cards */}
+          <ul className="grid grid-cols-12 gap-6 mt-20">{projectsCards}</ul>
+        </div>
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Next.js Static Site Generation (SSG) function
+ * Fetches all required data at build time
+ * Enables Incremental Static Regeneration (ISR) if configured
+ */
+export const getStaticProps = async ({ locale }) => {
+  // Fetch main page content from AEM
+  const { data: pageData } = await fetch(
+    `${process.env.AEM_BASE_URL}/getSclProjectsV2`
+  ).then((res) => res.json());
+ 
+  // Fetch all projects data
+  const { data: projectsData } = await fetch(
+    `${process.env.AEM_BASE_URL}/getSclAllProjectsV1`
+  ).then((res) => res.json());
+ 
+  // Fetch translation dictionary
+  const { data: dictionary } = await fetch(
+    `${process.env.AEM_BASE_URL}/getSclDictionaryV1`
+  ).then((res) => res.json());
+ 
+  // Return props for page rendering
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      pageData: pageData.sclabsPageV1ByPath,
+      projectsData: projectsData.sclabsPageV1List.items,
+      dictionary: dictionary.dictionaryV1List.items,
+      // Include translations for common terms and multiSelect component
+      ...(await serverSideTranslations(locale, ["common", "multiSelect"])),
+    },
+    // Enable ISR if configured in environment
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/projects/benefits-finder/[id].js.html b/main/coverage/lcov-report/pages/projects/benefits-finder/[id].js.html new file mode 100644 index 0000000000..8a42174657 --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/benefits-finder/[id].js.html @@ -0,0 +1,589 @@ + + + + + + Code coverage report for pages/projects/benefits-finder/[id].js + + + + + + + + + +
+
+

All files / pages/projects/benefits-finder [id].js

+
+ +
+ 0% + Statements + 0/33 +
+ + +
+ 0% + Branches + 0/20 +
+ + +
+ 0% + Functions + 0/6 +
+ + +
+ 0% + Lines + 0/31 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PageHead from "../../../components/fragment_renderer/PageHead";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { Layout } from "../../../components/organisms/Layout";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { getAllUpdateIds } from "../../../lib/utils/getAllUpdateIds";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import FragmentRender from "../../../components/fragment_renderer/FragmentRender";
+import { Heading } from "../../../components/molecules/Heading";
+import { getDictionaryTerm } from "../../../lib/utils/getDictionaryTerm";
+ 
+/**
+ * Benefits Finder Articles Component
+ * Displays individual article pages for the Benefits Finder project
+ * Handles dynamic routing and bilingual content
+ */
+export default function BenefitFinderArticles({ key, ...props }) {
+  // Initialize state with page data and dictionary
+  const [pageData] = useState(props.pageData); // Current article content
+  const [dictionary] = useState(props.dictionary.items); // Translation dictionary
+ 
+  // Initialize Adobe Analytics
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      <Layout
+        locale={props.locale}
+        // Set alternate language URL for language toggle
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        // Generate breadcrumb navigation
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        {/* Page head component for meta tags */}
+        <PageHead pageData={pageData} locale={props.locale} />
+ 
+        <section className="mb-12">
+          <div className="layout-container">
+            {/* Article Title */}
+            <Heading
+              tabIndex="-1"
+              id="pageMainTitle"
+              title={
+                props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+              }
+            />
+ 
+            {/* Article Metadata Grid - Posted and Updated dates */}
+            <div id="postedOnUpdatedOnSection" className="grid grid-cols-12">
+              {/* Posted On Label - Responsive column widths */}
+              <p
+                className={`col-span-6 sm:col-span-4 ${
+                  props.locale === "en" ? "lg:col-span-2" : "lg:col-span-3"
+                } font-bold`}
+              >
+                {getDictionaryTerm(dictionary, "POSTED-ON", props.locale)}
+              </p>
+              {/* Posted Date */}
+              <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>
+ 
+              {/* Last Updated Label - Responsive column widths */}
+              <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`}
+              >
+                {getDictionaryTerm(dictionary, "LAST-UPDATED", props.locale)}
+              </p>
+              {/* Updated Date */}
+              <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>
+ 
+          {/* Main Article Content */}
+          <div id="mainContentSection">
+            <FragmentRender
+              fragments={props.pageData.scFragments}
+              locale={props.locale}
+            />
+          </div>
+        </section>
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Generate static paths for all article pages
+ * Required for dynamic routing in Next.js
+ * Creates paths for both English and French versions
+ */
+export async function getStaticPaths() {
+  // Fetch all Benefits Navigator articles from AEM
+  const { data } = await aemServiceInstance.getFragment(
+    "benefitsNavigatorArticlesQuery"
+  );
+  // Generate paths for dynamic routes using page names
+  const paths = getAllUpdateIds(data.sclabsPageV1List.items);
+  // Extract the last segment of the URL for the ID parameter
+  paths.map((path) => (path.params.id = path.params.id.split("/").at(-1)));
+ 
+  return {
+    paths,
+    fallback: "blocking", // Show loading state while generating new pages
+  };
+}
+ 
+/**
+ * Fetch page data at build time
+ * Handles data fetching for both languages and 404 cases
+ */
+export const getStaticProps = async ({ locale, params }) => {
+  // Fetch all Benefits Finder articles
+  const { data } = await aemServiceInstance.getFragment(
+    "benefitsFinderArticlesQuery"
+  );
+  // Fetch translation dictionary
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+ 
+  const pages = data.sclabsPageV1List.items;
+  // Filter for the current article based on URL parameter
+  const pageData = pages.filter((page) => {
+    return (
+      (locale === "en" ? page.scPageNameEn : page.scPageNameFr)
+        .split("/")
+        .at(-1) === params.id
+    );
+  });
+ 
+  // Return 404 if page not found
+  Iif (!pageData || !pageData.length) {
+    return {
+      notFound: true,
+    };
+  }
+ 
+  // Return props for page rendering
+  return {
+    props: {
+      key: params.id,
+      locale: locale,
+      pageData: pageData[0],
+      dictionary: dictionary.dictionaryV1List,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      // Include translations for common terms and virtual clinic
+      ...(await serverSideTranslations(locale, ["common", "vc"])),
+    },
+    // Enable ISR if configured in environment
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/projects/benefits-finder/index.html b/main/coverage/lcov-report/pages/projects/benefits-finder/index.html new file mode 100644 index 0000000000..774848dd78 --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/benefits-finder/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for pages/projects/benefits-finder + + + + + + + + + +
+
+

All files pages/projects/benefits-finder

+
+ +
+ 39.39% + Statements + 26/66 +
+ + +
+ 38.14% + Branches + 37/97 +
+ + +
+ 30% + Functions + 3/10 +
+ + +
+ 41.26% + Lines + 26/63 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
[id].js +
+
0%0/330%0/200%0/60%0/31
index.js +
+
78.78%26/3348.05%37/7775%3/481.25%26/32
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/projects/benefits-finder/index.js.html b/main/coverage/lcov-report/pages/projects/benefits-finder/index.js.html new file mode 100644 index 0000000000..7045d1cb21 --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/benefits-finder/index.js.html @@ -0,0 +1,1393 @@ + + + + + + Code coverage report for pages/projects/benefits-finder/index.js + + + + + + + + + +
+
+

All files / pages/projects/benefits-finder index.js

+
+ +
+ 78.78% + Statements + 26/33 +
+ + +
+ 48.05% + Branches + 37/77 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 81.25% + Lines + 26/32 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +4371x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +  +  +  +  +  +  +1x +  +1x +1x +1x +  +  +  +  +  +21x +  +  +  +  +  +  +  +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 aemServiceInstance from "../../../services/aemServiceInstance";
+import { ProjectInfo } from "../../../components/atoms/ProjectInfo";
+import Card from "../../../components/molecules/Card";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import { Heading } from "../../../components/molecules/Heading";
+import Image from "next/image";
+import stageDictionary from "../../../lib/utils/stageDictionary";
+import { sortUpdatesByDate } from "../../../lib/utils/sortUpdatesByDate";
+import FragmentRender from "../../../components/fragment_renderer/FragmentRender";
+import { ExploreProjects } from "../../../components/organisms/ExploreProjects";
+import { ExploreUpdates } from "../../../components/organisms/ExploreUpdates";
+import { getDictionaryTerm } from "../../../lib/utils/getDictionaryTerm";
+import { filterItems } from "../../../lib/utils/filterItems";
+import { shuffle } from "../../../lib/utils/shuffle";
+ 
+/**
+ * Benefits Finder Project Overview Component
+ * Displays detailed information about the Benefits Finder project
+ * Includes project summary, stage information, updates, and related projects
+ */
+export default function BenefitsFinderOverview(props) {
+  // Initialize state and data management
+  const [pageData] = useState(props.pageData.item); // Core page content from AEM
+  const updatesData = sortUpdatesByDate(props.updatesData); // Project updates sorted by date
+  const allProjects = props.allProjects; // All SC Labs projects
+ 
+  // Filter dictionary to only include terms needed for this page
+  const [filteredDictionary] = useState(
+    props.dictionary.filter(
+      (item) =>
+        item.scId === "STARTED" || // Project start date label
+        item.scId === "ENDED" || // Project end date label
+        item.scId === "PROJECT-STAGE" || // Project stage label
+        item.scId === "SUMMARY" // Summary section label
+    )
+  );
+ 
+  // Initialize Adobe Analytics data layer
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      <Layout
+        locale={props.locale}
+        // Set alternate language URL for language toggle
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        // Generate breadcrumb navigation from parent pages
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        <Head>
+          {/* 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[2].scImageEn._publishUrl}
+          />
+          <meta
+            property="og:image:alt"
+            content={
+              props.locale === "en"
+                ? pageData.scFragments[2].scImageAltTextEn
+                : pageData.scFragments[2].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[2].scImageEn._publishUrl}
+          />
+          <meta
+            property="twitter:image:alt"
+            content={
+              props.locale === "en"
+                ? pageData.scFragments[2].scImageAltTextEn
+                : pageData.scFragments[2].scImageAltTextFr
+            }
+          />
+        </Head>
+ 
+        {/* Main Content Container */}
+        <div className="layout-container">
+          <section aria-labelledby="pageMainTitle">
+            {/* Two-column grid layout for desktop, stack on mobile */}
+            <div className="flex flex-col break-words lg:grid lg:grid-cols-2">
+              {/* Page Title - spans full width */}
+              <div className="col-span-2">
+                <Heading
+                  tabIndex="-1"
+                  id="pageMainTitle"
+                  title={
+                    props.locale === "en"
+                      ? pageData.scTitleEn
+                      : pageData.scTitleFr
+                  }
+                />
+              </div>
+ 
+              {/* Project Image - hidden on mobile, shown in right column on desktop */}
+              <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">
+                    <Image
+                      src={
+                        props.locale === "en"
+                          ? pageData.scFragments[2].scImageEn._publishUrl
+                          : pageData.scFragments[2].scImageFr._publishUrl
+                      }
+                      alt={
+                        props.locale === "en"
+                          ? pageData.scFragments[2].scImageAltTextEn
+                          : pageData.scFragments[2].scImageAltTextFr
+                      }
+                      width={pageData.scFragments[2].scImageEn.width}
+                      height={pageData.scFragments[2].scImageEn.height}
+                      priority // Load image with high priority
+                      sizes="33vw"
+                      quality={100}
+                    />
+                  </div>
+                </div>
+              </div>
+ 
+              {/* Project Description Text */}
+              <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>
+ 
+              {/* Project Information Component - contains key project details */}
+              <div className="row-start-3">
+                <ProjectInfo
+                  locale={props.locale}
+                  // Pass translated terms and labels
+                  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
+                  }
+                  // Pass project-specific information
+                  dateStarted={
+                    pageData.scFragments[0].scContentEn.json[2].content[0].value
+                  }
+                  term={
+                    props.locale === "en"
+                      ? pageData.scFragments[0].scContentEn.json[0].content[0]
+                          .value + " "
+                      : pageData.scFragments[0].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.scLabProjectSummaryEn.json[0].content[0].value
+                      : pageData.scLabProjectSummaryFr.json[0].content[0].value
+                  }
+                />
+              </div>
+ 
+              {/* Additional Project Information */}
+              <strong className="font-body text-p pt-8">
+                {props.locale === "en"
+                  ? pageData.scFragments[0].scContentEn.json[5].content[0].value
+                  : pageData.scFragments[0].scContentFr.json[5].content[0]
+                      .value}
+              </strong>
+            </div>
+          </section>
+        </div>
+ 
+        {/* Render Additional Content Fragments */}
+        <FragmentRender
+          fragments={pageData.scFragments.slice(3)}
+          locale={props.locale}
+        />
+ 
+        {/* Project Updates Section - Only shown if updates exist */}
+        {props.updatesData.length !== 0 ? (
+          <ExploreUpdates
+            locale={props.locale}
+            updatesData={sortUpdatesByDate(updatesData)}
+            dictionary={props.dictionary}
+            heading={
+              props.locale === "en"
+                ? `${pageData.scTitleEn} ${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )}`
+                : `${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )} ${pageData.scTitleFr}`
+            }
+            linkLabel={`${getDictionaryTerm(
+              props.dictionary,
+              "DICTIONARY-SEE-ALL-UPDATES-PROJECT",
+              props.locale
+            )}`}
+            href={
+              props.locale === "en"
+                ? `/en/updates?project=${pageData.scTitleEn}`
+                : `/fr/mises-a-jour?projet=${pageData.scTitleFr}`
+            }
+          />
+        ) : null}
+ 
+        {/* Related Projects Section - Shows 3 random other projects */}
+        <ExploreProjects
+          heading={getDictionaryTerm(
+            props.dictionary,
+            "EXPLORE-OTHER-PROJECTS",
+            props.locale
+          )}
+          locale={props.locale}
+          projects={filterItems(allProjects, pageData.scId).slice(0, 3)}
+        />
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Next.js Static Site Generation (SSG) function
+ * Fetches all required data at build time
+ */
+export const getStaticProps = async ({ locale }) => {
+  // Fetch main Benefits Finder content from AEM
+  const { data: pageData } = await aemServiceInstance.getFragment(
+    "benefitsFinderQuery"
+  );
+ 
+  // Fetch translation dictionary
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+ 
+  // Fetch all projects for related projects section
+  const { data: allProjects } = await aemServiceInstance.getFragment(
+    "projectQuery"
+  );
+ 
+  // Return props for page rendering
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      pageData: pageData.sclabsPageV1ByPath,
+      updatesData: pageData.sclabsPageV1ByPath.item.scLabProjectUpdates,
+      dictionary: dictionary.dictionaryV1List.items,
+      // Randomize project order for related projects section
+      allProjects: shuffle(allProjects.sclabsPageV1List.items),
+      // Include common translations
+      ...(await serverSideTranslations(locale, ["common"])),
+    },
+    // Enable ISR if configured in environment
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ 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..a78e10d92b --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/benefits-navigator/[id].js.html @@ -0,0 +1,805 @@ + + + + + + Code coverage report for pages/projects/benefits-navigator/[id].js + + + + + + + + + +
+
+

All files / pages/projects/benefits-navigator [id].js

+
+ +
+ 0% + Statements + 0/40 +
+ + +
+ 0% + Branches + 0/26 +
+ + +
+ 0% + Functions + 0/6 +
+ + +
+ 0% + Lines + 0/38 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PageHead from "../../../components/fragment_renderer/PageHead";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { Layout } from "../../../components/organisms/Layout";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { getAllUpdateIds } from "../../../lib/utils/getAllUpdateIds";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import FragmentRender from "../../../components/fragment_renderer/FragmentRender";
+import { Heading } from "../../../components/molecules/Heading";
+import { ExploreUpdates } from "../../../components/organisms/ExploreUpdates";
+import { filterItems } from "../../../lib/utils/filterItems";
+import { sortUpdatesByDate } from "../../../lib/utils/sortUpdatesByDate";
+import { getDictionaryTerm } from "../../../lib/utils/getDictionaryTerm";
+import { UpdateInfo } from "../../../components/atoms/UpdateInfo";
+import { ExploreProjects } from "../../../components/organisms/ExploreProjects";
+ 
+/**
+ * Benefits Navigator Articles Component
+ * Displays individual article pages for the Benefits Navigator project
+ * Supports bilingual content, project metadata, and related content
+ * Uses dynamic routing to handle multiple article URLs
+ */
+export default function BenefitNavigatorArticles({ key, ...props }) {
+  // State management for page content and translations
+  const [pageData] = useState(props.pageData); // Individual article data from AEM
+  const [dictionary] = useState(props.dictionary); // Translation dictionary for UI elements
+  const projectData = props.projectData; // Parent project information
+ 
+  // Initialize Adobe Analytics tracking
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      {/* Layout wrapper component provides consistent page structure */}
+      <Layout
+        locale={props.locale}
+        // Alternate language URL for language switching
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        // Last modified date for the page
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        // Breadcrumb navigation generated from parent pages
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        {/* PageHead component manages meta tags */}
+        <PageHead pageData={pageData} locale={props.locale} />
+ 
+        {/* Main article section */}
+        <section className="mb-12">
+          <div className="layout-container">
+            {/* Article title with accessibility support */}
+            <Heading
+              tabIndex="-1"
+              id="pageMainTitle"
+              title={
+                // Bilingual title handling
+                props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+              }
+            />
+ 
+            {/* Article metadata component showing project context and dates */}
+            <UpdateInfo
+              // Project label and name with translation
+              projectLabel={`${getDictionaryTerm(
+                dictionary,
+                "PROJECT",
+                props.locale
+              )}`}
+              projectName={
+                // Bilingual project name
+                props.locale === "en"
+                  ? pageData.scLabProject.scTermEn
+                  : pageData.scLabProject.scTermFr
+              }
+              // Link to parent project page
+              projectHref={
+                props.locale === "en"
+                  ? pageData.scLabProject.scDestinationURLEn
+                  : pageData.scLabProject.scDestinationURLFr
+              }
+              // Posted date label and value
+              postedOnLabel={`${getDictionaryTerm(
+                dictionary,
+                "POSTED-ON",
+                props.locale
+              )}`}
+              postedOn={pageData.scDateModifiedOverwrite}
+              // Last updated label and value
+              lastUpdatedLabel={`${getDictionaryTerm(
+                dictionary,
+                "LAST-UPDATED",
+                props.locale
+              )}`}
+              lastUpdated={pageData.scDateModifiedOverwrite}
+            />
+          </div>
+ 
+          {/* Main article content rendered from AEM fragments */}
+          <div id="mainContentSection">
+            <FragmentRender
+              fragments={props.pageData.scFragments}
+              locale={props.locale}
+              excludeH1={true} // Exclude H1 as it's already rendered in the Heading component
+            />
+          </div>
+        </section>
+ 
+        {/* Related Updates Section - Conditionally rendered if updates exist */}
+        {filterItems(props.updatesData, pageData.scId).length !== 0 ? (
+          <ExploreUpdates
+            locale={props.locale}
+            // Filter updates related to this article
+            updatesData={filterItems(props.updatesData, pageData.scId)}
+            dictionary={props.dictionary}
+            // Construct bilingual section heading
+            heading={
+              props.locale === "en"
+                ? `${projectData.scTitleEn} ${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )}`
+                : `${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )} ${projectData.scTitleFr}`
+            }
+            // "See all updates" link label
+            linkLabel={`${getDictionaryTerm(
+              props.dictionary,
+              "DICTIONARY-SEE-ALL-UPDATES-PROJECT",
+              props.locale
+            )}`}
+            // Link to filtered updates page
+            href={
+              props.locale === "en"
+                ? `/en/updates?project=${pageData.scLabProject.scTermEn}`
+                : `/fr/mises-a-jour?projet=${pageData.scLabProject.scTermFr}`
+            }
+          />
+        ) : null}
+ 
+        {/* Parent Project Information Section */}
+        <ExploreProjects
+          projects={[projectData]} // Show only the parent project
+          heading={getDictionaryTerm(
+            dictionary,
+            "EXPLORE-THE-PROJECT",
+            props.locale
+          )}
+          locale={props.locale}
+        />
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Generate static paths for all Benefits Navigator articles
+ * Required for Next.js dynamic routing
+ * Creates paths for both English and French versions of each article
+ */
+export async function getStaticPaths() {
+  // Fetch all Benefits Navigator articles from AEM
+  const { data } = await aemServiceInstance.getFragment(
+    "benefitsNavigatorArticlesQuery"
+  );
+  // Generate paths array for all articles in both languages
+  const paths = getAllUpdateIds(data.sclabsPageV1List.items);
+  // Extract the article ID from the full path
+  paths.map((path) => (path.params.id = path.params.id.split("/").at(-1)));
+ 
+  return {
+    paths,
+    fallback: "blocking", // Show loading state for new pages being generated
+  };
+}
+ 
+/**
+ * Fetch and prepare data for page rendering at build time
+ * Handles data fetching, language selection, and 404 cases
+ * @param {Object} context - Contains locale and URL parameters
+ */
+export const getStaticProps = async ({ locale, params }) => {
+  // Fetch all articles data from AEM
+  const { data: updatesData } = await aemServiceInstance.getFragment(
+    "benefitsNavigatorArticlesQuery"
+  );
+  // Fetch parent project data from AEM
+  const { data: projectData } = await aemServiceInstance.getFragment(
+    "benefitsNavigatorQuery"
+  );
+  // Fetch translation dictionary
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+ 
+  const pages = updatesData.sclabsPageV1List.items;
+  // Find the specific article based on URL parameter
+  const pageData = pages.filter((page) => {
+    return (
+      (locale === "en" ? page.scPageNameEn : page.scPageNameFr)
+        .split("/")
+        .at(-1) === params.id
+    );
+  });
+ 
+  // Return 404 response if article not found
+  Iif (!pageData || !pageData.length) {
+    return {
+      notFound: true,
+    };
+  }
+ 
+  // Return props for page rendering
+  return {
+    props: {
+      key: params.id, // Unique key for React
+      locale: locale, // Current language
+      pageData: pageData[0], // Article content
+      updatesData: updatesData.sclabsPageV1List.items, // All updates for filtering
+      projectData: projectData.sclabsPageV1ByPath.item, // Parent project data
+      dictionary: dictionary.dictionaryV1List.items, // Translation dictionary
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null, // Analytics configuration
+      ...(await serverSideTranslations(locale, ["common", "vc"])), // Load translations
+    },
+    // Enable Incremental Static Regeneration if configured
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ 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..de3fb6a34f --- /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

+
+ +
+ 36.48% + Statements + 27/74 +
+ + +
+ 40.26% + Branches + 60/149 +
+ + +
+ 30% + Functions + 3/10 +
+ + +
+ 38.02% + Lines + 27/71 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
[id].js +
+
0%0/400%0/260%0/60%0/38
index.js +
+
79.41%27/3448.78%60/12375%3/481.81%27/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..3e082ed11f --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/benefits-navigator/index.js.html @@ -0,0 +1,2200 @@ + + + + + + Code coverage report for pages/projects/benefits-navigator/index.js + + + + + + + + + +
+
+

All files / pages/projects/benefits-navigator index.js

+
+ +
+ 79.41% + Statements + 27/34 +
+ + +
+ 48.78% + Branches + 60/123 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 81.81% + Lines + 27/33 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +7061x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +  +  +  +  +  +  +1x +  +1x +1x +1x +  +  +  +  +  +21x +  +  +  +  +  +  +  +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 aemServiceInstance from "../../../services/aemServiceInstance";
+import { ProjectInfo } from "../../../components/atoms/ProjectInfo";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import { Heading } from "../../../components/molecules/Heading";
+import { Collapse } from "../../../components/molecules/Collapse";
+import Image from "next/image";
+import stageDictionary from "../../../lib/utils/stageDictionary";
+import { ExploreProjects } from "../../../components/organisms/ExploreProjects";
+import TextRender from "../../../components/text_node_renderer/TextRender";
+import { ExploreUpdates } from "../../../components/organisms/ExploreUpdates";
+import { shuffle } from "../../../lib/utils/shuffle";
+import { filterItems } from "../../../lib/utils/filterItems";
+import { sortUpdatesByDate } from "../../../lib/utils/sortUpdatesByDate";
+import { getDictionaryTerm } from "../../../lib/utils/getDictionaryTerm";
+import { ContextualAlert } from "../../../components/molecules/ContextualAlert";
+ 
+/**
+ * Benefits Navigator Overview Component
+ * Main landing page for the Benefits Navigator project
+ * Features bilingual content, project details, and feature showcases
+ */
+export default function BenefitsNavigatorOverview(props) {
+  // Initialize state with project data and filtered dictionary terms
+  const [allProjects] = useState(props.allProjects); // All SC Labs projects for related content
+  const [pageData] = useState(props.pageData.item); // Current page content from AEM
+  const updatesData = props.updatesData; // Project updates data
+ 
+  // Filter dictionary to only include specific terms needed for project info display
+  const [filteredDictionary] = useState(
+    props.dictionary.filter(
+      (item) =>
+        item.scId === "STARTED" || // Project start date label
+        item.scId === "ENDED" || // Project end date label
+        item.scId === "PROJECT-STAGE" || // Current stage label
+        item.scId === "SUMMARY" // Summary section label
+    )
+  );
+ 
+  // Initialize Adobe Analytics data layer
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      {/* Main Layout Component - Provides consistent page structure */}
+      <Layout
+        locale={props.locale}
+        // Set alternate language URL for language toggle
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        // Generate breadcrumb navigation from parent pages
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        <Head>
+          {/* 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[1].scImageEn._publishUrl}
+          />
+          <meta
+            property="og:image:alt"
+            content={
+              props.locale === "en"
+                ? pageData.scFragments[1].scImageAltTextEn
+                : pageData.scFragments[1].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[1].scImageEn._publishUrl}
+          />
+          <meta
+            property="twitter:image:alt"
+            content={
+              props.locale === "en"
+                ? pageData.scFragments[1].scImageAltTextEn
+                : pageData.scFragments[1].scImageAltTextFr
+            }
+          />
+        </Head>
+        {/* Main Content Container */}
+        <div className="layout-container mb-24">
+          {/* Main Content Section with ARIA labelledby */}
+          <section aria-labelledby="pageMainTitle">
+            {/* Two-column layout for desktop, single column for mobile */}
+            <div className="flex flex-col break-words lg:grid lg:grid-cols-2">
+              {/* Page Title and Alert Section - Full Width */}
+              <div className="col-span-2">
+                <Heading
+                  tabIndex="-1"
+                  id="pageMainTitle"
+                  title={
+                    props.locale === "en"
+                      ? pageData.scTitleEn
+                      : pageData.scTitleFr
+                  }
+                />
+                {/* Warning Alert for Project Status */}
+                <div className="mb-10 max-w-[76ch]">
+                  <ContextualAlert
+                    id="alert"
+                    type="warning"
+                    message_heading={
+                      props.locale === "en"
+                        ? pageData.scFragments[0].scTitleEn
+                        : pageData.scFragments[0].scTitleFr
+                    }
+                    message_body={
+                      <TextRender
+                        data={
+                          props.locale === "en"
+                            ? pageData.scFragments[0].scContentEn.json
+                            : pageData.scFragments[0].scContentFr.json
+                        }
+                      />
+                    }
+                    alert_icon_alt_text=""
+                    alert_icon_id="project-status-cta-icon"
+                  />
+                </div>
+              </div>
+ 
+              {/* Project Image - Hidden on mobile, shown in right column on desktop */}
+              <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">
+                    <Image
+                      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={pageData.scFragments[1].scImageEn.width}
+                      height={pageData.scFragments[1].scImageEn.height}
+                      priority // Load image with high priority
+                      sizes="33vw"
+                      quality={100}
+                    />
+                  </div>
+                </div>
+              </div>
+ 
+              {/* Project Description Text */}
+              <p className="row-start-2 mb-4">
+                {props.locale === "en"
+                  ? pageData.scFragments[3].scContentEn.json[1].content[0].value
+                  : pageData.scFragments[3].scContentFr.json[1].content[0]
+                      .value}
+              </p>
+ 
+              {/* Project Information Component - Contains key project details */}
+              <div className="row-start-3">
+                <ProjectInfo
+                  locale={props.locale}
+                  // Pass translated terms and labels
+                  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[3].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[3].scContentEn.json[4].content[0]
+                          .value
+                      : pageData.scFragments[3].scContentFr.json[4].content[0]
+                          .value
+                  }
+                />
+              </div>
+            </div>
+          </section>
+          {/* Features Grid Section - Uses 12-column grid system */}
+          <div className="grid grid-cols-12">
+            {/* Features Section Title */}
+            <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>
+ 
+            {/* Features Introduction Paragraphs - 8 columns on desktop */}
+            <p className="col-span-12 xl:col-span-8">
+              {props.locale === "en"
+                ? pageData.scFragments[4].scContentEn.json[1].content[0].value
+                : pageData.scFragments[4].scContentFr.json[1].content[0].value}
+            </p>
+            <p className="col-span-12 xl:col-span-8">
+              {props.locale === "en"
+                ? pageData.scFragments[4].scContentEn.json[2].content[0].value
+                : pageData.scFragments[4].scContentFr.json[2].content[0].value}
+            </p>
+ 
+            {/* Feature List - Bulleted list of key features */}
+            <ul className="list-disc col-span-12 xl:col-span-8 text-mobilebody lg:text-p">
+              {/* Individual feature items with responsive text sizing */}
+              <li className="ml-10">
+                {props.locale === "en"
+                  ? pageData.scFragments[4].scContentEn.json[3].content[0]
+                      .content[0].value
+                  : pageData.scFragments[4].scContentFr.json[3].content[0]
+                      .content[0].value}
+              </li>
+              <li className="ml-10">
+                {props.locale === "en"
+                  ? pageData.scFragments[4].scContentEn.json[3].content[1]
+                      .content[0].value
+                  : pageData.scFragments[4].scContentFr.json[3].content[1]
+                      .content[0].value}
+              </li>
+              <li className="ml-10">
+                {props.locale === "en"
+                  ? pageData.scFragments[4].scContentEn.json[3].content[2]
+                      .content[0].value
+                  : pageData.scFragments[4].scContentFr.json[3].content[2]
+                      .content[0].value}
+              </li>
+            </ul>
+ 
+            {/* Features Section with Images and Descriptions */}
+            <div id="feature-section" className="col-span-12">
+              {/* Features Section Title */}
+              <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>
+ 
+              {/* Feature 1 - Grid Layout with Image, Description, and Collapse */}
+              <div id="feature-1" className="grid grid-cols-12 gap-x-6 mb-9">
+                {/* Feature Image - Full width on mobile, 8 columns on desktop */}
+                <div className="mb-6 object-fill col-span-12 row-start-1 xl:row-start-1 xl:col-span-8">
+                  <Image
+                    src={
+                      props.locale === "en"
+                        ? pageData.scFragments[5].scFragments[0].scFragments[0]
+                            .scImageEn._publishUrl
+                        : pageData.scFragments[5].scFragments[0].scFragments[0]
+                            .scImageFr._publishUrl
+                    }
+                    alt={
+                      props.locale === "en"
+                        ? pageData.scFragments[5].scFragments[0].scFragments[0]
+                            .scImageAltTextEn
+                        : pageData.scFragments[5].scFragments[0].scFragments[0]
+                            .scImageAltTextFr
+                    }
+                    height={
+                      pageData.scFragments[5].scFragments[0].scFragments[0]
+                        .scImageEn.height
+                    }
+                    width={
+                      pageData.scFragments[5].scFragments[0].scFragments[0]
+                        .scImageEn.width
+                    }
+                    sizes="100vw"
+                    quality={100}
+                  />
+                </div>
+                {/* Feature Description - With blue left border */}
+                <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">
+                    <TextRender
+                      data={
+                        props.locale === "en"
+                          ? pageData.scFragments[5].scFragments[0].scContentEn
+                              .json
+                          : pageData.scFragments[5].scFragments[0].scContentFr
+                              .json
+                      }
+                    />
+                  </div>
+                </div>
+                {/* Collapsible Long Description */}
+                <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[5].scFragments[0].scFragments[0]
+                            .scLongDescHeadingEn
+                        : pageData.scFragments[5].scFragments[0].scFragments[0]
+                            .scLongDescHeadingFr
+                    }
+                    children={
+                      <TextRender
+                        data={
+                          props.locale === "en"
+                            ? pageData.scFragments[5].scFragments[0]
+                                .scFragments[0].scLongDescEn.json
+                            : pageData.scFragments[5].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">
+                  <Image
+                    src={
+                      props.locale === "en"
+                        ? pageData.scFragments[5].scFragments[1].scFragments[0]
+                            .scImageEn._publishUrl
+                        : pageData.scFragments[5].scFragments[1].scFragments[0]
+                            .scImageFr._publishUrl
+                    }
+                    alt={
+                      props.locale === "en"
+                        ? pageData.scFragments[5].scFragments[1].scFragments[0]
+                            .scImageAltTextEn
+                        : pageData.scFragments[5].scFragments[1].scFragments[0]
+                            .scImageAltTextFr
+                    }
+                    height={
+                      pageData.scFragments[5].scFragments[1].scFragments[0]
+                        .scImageEn.height
+                    }
+                    width={
+                      pageData.scFragments[5].scFragments[1].scFragments[0]
+                        .scImageEn.width
+                    }
+                    sizes="100vw"
+                    quality={100}
+                  />
+                </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">
+                    <TextRender
+                      data={
+                        props.locale === "en"
+                          ? pageData.scFragments[5].scFragments[1].scContentEn
+                              .json
+                          : pageData.scFragments[5].scFragments[1].scContentFr
+                              .json
+                      }
+                    />
+                  </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[5].scFragments[1].scFragments[0]
+                            .scLongDescHeadingEn
+                        : pageData.scFragments[5].scFragments[1].scFragments[0]
+                            .scLongDescHeadingFr
+                    }
+                    children={
+                      <TextRender
+                        data={
+                          props.locale === "en"
+                            ? pageData.scFragments[5].scFragments[1]
+                                .scFragments[0].scLongDescEn.json
+                            : pageData.scFragments[5].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">
+                  <Image
+                    src={
+                      props.locale === "en"
+                        ? pageData.scFragments[5].scFragments[2].scFragments[0]
+                            .scImageEn._publishUrl
+                        : pageData.scFragments[5].scFragments[2].scFragments[0]
+                            .scImageFr._publishUrl
+                    }
+                    alt={
+                      props.locale === "en"
+                        ? pageData.scFragments[5].scFragments[2].scFragments[0]
+                            .scImageAltTextEn
+                        : pageData.scFragments[5].scFragments[2].scFragments[0]
+                            .scImageAltTextFr
+                    }
+                    height={
+                      pageData.scFragments[5].scFragments[2].scFragments[0]
+                        .scImageEn.height
+                    }
+                    width={
+                      pageData.scFragments[5].scFragments[2].scFragments[0]
+                        .scImageEn.width
+                    }
+                    sizes="100vw"
+                    quality={100}
+                  />
+                </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">
+                    <TextRender
+                      data={
+                        props.locale === "en"
+                          ? pageData.scFragments[5].scFragments[2].scContentEn
+                              .json
+                          : pageData.scFragments[5].scFragments[2].scContentFr
+                              .json
+                      }
+                    />
+                  </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[5].scFragments[2].scFragments[0]
+                            .scLongDescHeadingEn
+                        : pageData.scFragments[5].scFragments[2].scFragments[0]
+                            .scLongDescHeadingFr
+                    }
+                    children={
+                      <TextRender
+                        data={
+                          props.locale === "en"
+                            ? pageData.scFragments[5].scFragments[2]
+                                .scFragments[0].scLongDescEn.json
+                            : pageData.scFragments[5].scFragments[2]
+                                .scFragments[0].scLongDescFr.json
+                        }
+                      />
+                    }
+                  />
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+        {props.updatesData.length !== 0 ? (
+          <ExploreUpdates
+            locale={props.locale}
+            updatesData={sortUpdatesByDate(updatesData)}
+            dictionary={props.dictionary}
+            heading={
+              props.locale === "en"
+                ? `${pageData.scTitleEn} ${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )}`
+                : `${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )} ${pageData.scTitleFr}`
+            }
+            linkLabel={`${getDictionaryTerm(
+              props.dictionary,
+              "DICTIONARY-SEE-ALL-UPDATES-PROJECT",
+              props.locale
+            )}`}
+            href={
+              props.locale === "en"
+                ? `/en/updates?project=${pageData.scTitleEn}`
+                : `/fr/mises-a-jour?projet=${pageData.scTitleFr}`
+            }
+          />
+        ) : null}
+        <ExploreProjects
+          heading={getDictionaryTerm(
+            props.dictionary,
+            "EXPLORE-OTHER-PROJECTS",
+            props.locale
+          )}
+          locale={props.locale}
+          projects={filterItems(allProjects, pageData.scId).slice(0, 3)}
+        />
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Next.js Static Site Generation (SSG) function
+ * Fetches all required data at build time
+ */
+export const getStaticProps = async ({ locale }) => {
+  // Fetch main page content from AEM
+  const { data: pageData } = await aemServiceInstance.getFragment(
+    "benefitsNavigatorQuery"
+  );
+ 
+  // Fetch translation dictionary
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+ 
+  // Fetch all projects for related content
+  const { data: allProjects } = await aemServiceInstance.getFragment(
+    "projectQuery"
+  );
+ 
+  // Return props for page rendering
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      pageData: pageData.sclabsPageV1ByPath,
+      updatesData: pageData.sclabsPageV1ByPath.item.scLabProjectUpdates,
+      dictionary: dictionary.dictionaryV1List.items,
+      // Randomize projects order for variety
+      allProjects: shuffle(allProjects.sclabsPageV1List.items),
+      // Include common translations
+      ...(await serverSideTranslations(locale, ["common"])),
+    },
+    // Enable ISR if configured in environment
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/projects/dashboard/[id].js.html b/main/coverage/lcov-report/pages/projects/dashboard/[id].js.html new file mode 100644 index 0000000000..b5a99f3aba --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/dashboard/[id].js.html @@ -0,0 +1,784 @@ + + + + + + Code coverage report for pages/projects/dashboard/[id].js + + + + + + + + + +
+
+

All files / pages/projects/dashboard [id].js

+
+ +
+ 0% + Statements + 0/40 +
+ + +
+ 0% + Branches + 0/26 +
+ + +
+ 0% + Functions + 0/6 +
+ + +
+ 0% + Lines + 0/38 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PageHead from "../../../components/fragment_renderer/PageHead";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { Layout } from "../../../components/organisms/Layout";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { getAllUpdateIds } from "../../../lib/utils/getAllUpdateIds";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import FragmentRender from "../../../components/fragment_renderer/FragmentRender";
+import { Heading } from "../../../components/molecules/Heading";
+import { filterItems } from "../../../lib/utils/filterItems";
+import { ExploreUpdates } from "../../../components/organisms/ExploreUpdates";
+import { sortUpdatesByDate } from "../../../lib/utils/sortUpdatesByDate";
+import { getDictionaryTerm } from "../../../lib/utils/getDictionaryTerm";
+import { UpdateInfo } from "../../../components/atoms/UpdateInfo";
+import { ExploreProjects } from "../../../components/organisms/ExploreProjects";
+ 
+/**
+ * MSCA Dashboard Articles Component
+ * Displays individual article pages for the My Service Canada Account Dashboard project
+ * Supports bilingual content, project context, and related updates
+ */
+export default function MscaDashboardArticles({ key, ...props }) {
+  // Initialize state with content data
+  const [pageData] = useState(props.pageData); // Current article content
+  const [dictionary] = useState(props.dictionary.items); // Translation dictionary
+  const [projectData] = useState(props.projectData); // Parent project data
+ 
+  // Initialize Adobe Analytics
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      {/* Main Layout Component - Provides consistent page structure */}
+      <Layout
+        locale={props.locale}
+        // Alternate language URL for language toggle
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        // Generate breadcrumb navigation
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        {/* Head component for meta tags */}
+        <PageHead pageData={pageData} locale={props.locale} />
+ 
+        {/* Main Article Section */}
+        <section className="mb-12">
+          <div className="layout-container">
+            {/* Article Title with accessibility support */}
+            <Heading
+              tabIndex="-1"
+              id="pageMainTitle"
+              title={
+                props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+              }
+            />
+ 
+            {/* Article Metadata Component */}
+            <UpdateInfo
+              // Project context labels and links
+              projectLabel={`${getDictionaryTerm(
+                dictionary,
+                "PROJECT",
+                props.locale
+              )}`}
+              projectName={
+                props.locale === "en"
+                  ? pageData.scLabProject.scTermEn
+                  : pageData.scLabProject.scTermFr
+              }
+              projectHref={
+                props.locale === "en"
+                  ? pageData.scLabProject.scDestinationURLEn
+                  : pageData.scLabProject.scDestinationURLFr
+              }
+              // Publishing dates
+              postedOnLabel={`${getDictionaryTerm(
+                dictionary,
+                "POSTED-ON",
+                props.locale
+              )}`}
+              postedOn={pageData.scDateModifiedOverwrite}
+              lastUpdatedLabel={`${getDictionaryTerm(
+                dictionary,
+                "LAST-UPDATED",
+                props.locale
+              )}`}
+              lastUpdated={pageData.scDateModifiedOverwrite}
+            />
+          </div>
+ 
+          {/* Main Article Content */}
+          <div id="mainContentSection">
+            <FragmentRender
+              fragments={props.pageData.scFragments}
+              locale={props.locale}
+              excludeH1={true} // Exclude H1 as it's already rendered in Heading
+            />
+          </div>
+        </section>
+ 
+        {/* Related Updates Section - Conditionally rendered if updates exist */}
+        {filterItems(props.updatesData, pageData.scId).length !== 0 ? (
+          <ExploreUpdates
+            locale={props.locale}
+            // Filter updates related to this article
+            updatesData={filterItems(props.updatesData, pageData.scId)}
+            dictionary={dictionary}
+            // Construct bilingual section heading
+            heading={
+              props.locale === "en"
+                ? `${projectData.scTitleEn} ${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )}`
+                : `${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )} ${projectData.scTitleFr}`
+            }
+            // "See all updates" link label
+            linkLabel={`${getDictionaryTerm(
+              dictionary,
+              "DICTIONARY-SEE-ALL-UPDATES-PROJECT",
+              props.locale
+            )}`}
+            // Link to filtered updates page
+            href={
+              props.locale === "en"
+                ? `/en/updates?project=${pageData.scLabProject.scTermEn}`
+                : `/fr/mises-a-jour?projet=${pageData.scLabProject.scTermFr}`
+            }
+          />
+        ) : null}
+ 
+        {/* Parent Project Information Section */}
+        <ExploreProjects
+          projects={[projectData]} // Show only the parent project
+          heading={getDictionaryTerm(
+            dictionary,
+            "EXPLORE-THE-PROJECT",
+            props.locale
+          )}
+          locale={props.locale}
+        />
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Generate static paths for all MSCA Dashboard articles
+ * Required for Next.js dynamic routing
+ * Creates paths for both English and French versions
+ */
+export async function getStaticPaths() {
+  // Fetch all MSCA Dashboard articles from AEM
+  const { data } = await aemServiceInstance.getFragment(
+    "getMSCADashboardArticles"
+  );
+  // Generate paths for dynamic routes using page names
+  const paths = getAllUpdateIds(data.sclabsPageV1List.items);
+  // Extract the last segment of the URL for the ID parameter
+  paths.map((path) => (path.params.id = path.params.id.split("/").at(-1)));
+ 
+  return {
+    paths,
+    fallback: "blocking", // Show loading state while generating new pages
+  };
+}
+ 
+/**
+ * Fetch page data at build time
+ * Handles data fetching for both languages and 404 cases
+ */
+export const getStaticProps = async ({ locale, params }) => {
+  // Fetch all MSCA Dashboard articles
+  const { data: updatesData } = await aemServiceInstance.getFragment(
+    "getMSCADashboardArticles"
+  );
+  // Fetch parent project data
+  const { data: projectData } = await aemServiceInstance.getFragment(
+    "getMSCADashBoardPage"
+  );
+  // Fetch translation dictionary
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+ 
+  const pages = updatesData.sclabsPageV1List.items;
+  // Filter for the current article based on URL parameter
+  const pageData = pages.filter((page) => {
+    return (
+      (locale === "en" ? page.scPageNameEn : page.scPageNameFr)
+        .split("/")
+        .at(-1) === params.id
+    );
+  });
+ 
+  // Return 404 if page not found
+  Iif (!pageData || !pageData.length) {
+    return {
+      notFound: true,
+    };
+  }
+ 
+  // Return props for page rendering
+  return {
+    props: {
+      key: params.id,
+      locale: locale,
+      pageData: pageData[0],
+      updatesData: updatesData.sclabsPageV1List.items,
+      projectData: projectData.sclabsPageV1ByPath.item,
+      dictionary: dictionary.dictionaryV1List,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      ...(await serverSideTranslations(locale, ["common", "vc"])),
+    },
+    // Enable ISR if configured in environment
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ 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..06165d4622 --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/dashboard/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for pages/projects/dashboard + + + + + + + + + +
+
+

All files pages/projects/dashboard

+
+ +
+ 33.8% + Statements + 24/71 +
+ + +
+ 36.89% + Branches + 38/103 +
+ + +
+ 30% + Functions + 3/10 +
+ + +
+ 35.29% + Lines + 24/68 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
[id].js +
+
0%0/400%0/260%0/60%0/38
index.js +
+
77.41%24/3149.35%38/7775%3/480%24/30
+
+
+
+ + + + + + + + \ 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..331f0b1cc7 --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/dashboard/index.js.html @@ -0,0 +1,1369 @@ + + + + + + Code coverage report for pages/projects/dashboard/index.js + + + + + + + + + +
+
+

All files / pages/projects/dashboard index.js

+
+ +
+ 77.41% + Statements + 24/31 +
+ + +
+ 49.35% + Branches + 38/77 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 80% + Lines + 24/30 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +4291x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +  +1x +1x +1x +1x +1x +1x +  +  +  +  +  +  +1x +  +1x +1x +  +  +  +  +21x +  +  +  +  +  +  +1x +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +1x +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import Head from "next/head";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { Layout } from "../../../components/organisms/Layout";
+import { useEffect } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { ProjectInfo } from "../../../components/atoms/ProjectInfo";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import { Heading } from "../../../components/molecules/Heading";
+import Image from "next/image";
+import stageDictionary from "../../../lib/utils/stageDictionary";
+import { ExploreUpdates } from "../../../components/organisms/ExploreUpdates";
+import { useState } from "react";
+import { ExploreProjects } from "../../../components/organisms/ExploreProjects";
+import { shuffle } from "../../../lib/utils/shuffle";
+import { filterItems } from "../../../lib/utils/filterItems";
+import { sortUpdatesByDate } from "../../../lib/utils/sortUpdatesByDate";
+import FragmentRender from "../../../components/fragment_renderer/FragmentRender";
+import { getDictionaryTerm } from "../../../lib/utils/getDictionaryTerm";
+ 
+/**
+ * MSCA Dashboard Component
+ * Main landing page for the My Service Canada Account Dashboard project
+ * Features project overview, updates, and related project information
+ */
+export default function MscaDashboard(props) {
+  // Initialize state and data management
+  const pageData = props.pageData?.item; // Core page content from AEM
+  const [allProjects] = useState(props.allProjects); // All SC Labs projects
+ 
+  // Filter dictionary to include only required terms for project information
+  const filteredDictionary = props.dictionary?.filter(
+    (item) =>
+      item.scId === "STARTED" || // Project start date label
+      item.scId === "ENDED" || // Project end date label
+      item.scId === "PROJECT-STAGE" || // Project stage label
+      item.scId === "SUMMARY" // Summary section label
+  );
+ 
+  // Initialize Adobe Analytics
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      {/* Main Layout Component - Provides consistent page structure */}
+      <Layout
+        locale={props.locale}
+        // Alternate language URL for language toggle
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        // Generate breadcrumb navigation
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        {/* Page Head meta tags */}
+        <Head>
+          {/* 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>
+ 
+        {/* Main Content Container */}
+        <div className="layout-container mb-20">
+          <section aria-labelledby="pageMainTitle">
+            {/* Two-column layout for desktop */}
+            <div className="flex flex-col break-words lg:grid lg:grid-cols-2">
+              {/* Page Title - Full width */}
+              <div className="col-span-2">
+                <Heading
+                  tabIndex="-1"
+                  id="pageMainTitle"
+                  title={
+                    props.locale === "en"
+                      ? pageData.scTitleEn
+                      : pageData.scTitleFr
+                  }
+                />
+              </div>
+ 
+              {/* Feature Image - Hidden on mobile, shown in right column on desktop */}
+              <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">
+                    <Image
+                      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) ?? ""
+                      }
+                      height={pageData.scFragments[1].scImageEn.height}
+                      width={pageData.scFragments[1].scImageEn.width}
+                      priority // Load image with high priority
+                      sizes="33vw"
+                      quality={100}
+                    />
+                  </div>
+                </div>
+              </div>
+ 
+              {/* Project Description */}
+              <p className="row-start-2 mb-4">
+                {props.locale === "en"
+                  ? pageData.scFragments[0].scContentEn.json[1].content[0].value
+                  : pageData.scFragments[0].scContentFr.json[1].content[0]
+                      .value}
+              </p>
+ 
+              {/* Project Information Component */}
+              <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>
+ 
+        {/* Main Content Section with Project Details */}
+        <section id="pageMainContent">
+          <FragmentRender
+            locale={props.locale}
+            fragments={pageData.scFragments.slice(3)}
+            excludeH1={true} // Exclude H1 as it's already rendered in Heading
+          />
+        </section>
+ 
+        {/* Updates Section - Conditionally rendered if updates exist */}
+        {props.updatesData.length !== 0 ? (
+          <ExploreUpdates
+            locale={props.locale}
+            updatesData={sortUpdatesByDate(props.updatesData)}
+            dictionary={props.dictionary}
+            heading={
+              // Bilingual heading construction
+              props.locale === "en"
+                ? `${pageData.scTitleEn} ${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )}`
+                : `${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )} ${pageData.scTitleFr}`
+            }
+            linkLabel={`${getDictionaryTerm(
+              props.dictionary,
+              "DICTIONARY-SEE-ALL-UPDATES-PROJECT",
+              props.locale
+            )}`}
+            href={
+              // Link to filtered updates page
+              props.locale === "en"
+                ? `/en/updates?project=${pageData.scTitleEn}`
+                : `/fr/mises-a-jour?projet=${pageData.scTitleFr}`
+            }
+          />
+        ) : null}
+ 
+        {/* Related Projects Section */}
+        <ExploreProjects
+          heading={getDictionaryTerm(
+            props.dictionary,
+            "EXPLORE-OTHER-PROJECTS",
+            props.locale
+          )}
+          locale={props.locale}
+          projects={filterItems(allProjects, pageData.scId).slice(0, 3)}
+        />
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Next.js Static Site Generation (SSG) function
+ * Fetches all required data at build time
+ */
+export const getStaticProps = async ({ locale }) => {
+  // Fetch MSCA Dashboard page content from AEM
+  const { data: pageData } = await aemServiceInstance.getFragment(
+    "getMSCADashBoardPage"
+  );
+ 
+  // Fetch dictionary
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+ 
+  // Fetch all projects for related projects section
+  const { data: allProjects } = await aemServiceInstance.getFragment(
+    "projectQuery"
+  );
+ 
+  // Return props for page rendering
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      pageData: pageData.sclabsPageV1ByPath,
+      updatesData: pageData.sclabsPageV1ByPath.item.scLabProjectUpdates,
+      dictionary: dictionary.dictionaryV1List.items,
+      // Randomize projects order for related projects
+      allProjects: shuffle(allProjects.sclabsPageV1List.items),
+      // Include common translations
+      ...(await serverSideTranslations(locale, ["common"])),
+    },
+    // Enable ISR if configured in environment
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/projects/digital-standards-playbook/[id].js.html b/main/coverage/lcov-report/pages/projects/digital-standards-playbook/[id].js.html new file mode 100644 index 0000000000..110fc39afd --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/digital-standards-playbook/[id].js.html @@ -0,0 +1,790 @@ + + + + + + Code coverage report for pages/projects/digital-standards-playbook/[id].js + + + + + + + + + +
+
+

All files / pages/projects/digital-standards-playbook [id].js

+
+ +
+ 0% + Statements + 0/41 +
+ + +
+ 0% + Branches + 0/26 +
+ + +
+ 0% + Functions + 0/6 +
+ + +
+ 0% + Lines + 0/39 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { useTranslation } from "next-i18next";
+import PageHead from "../../../components/fragment_renderer/PageHead";
+import { Layout } from "../../../components/organisms/Layout";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { getAllUpdateIds } from "../../../lib/utils/getAllUpdateIds";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import FragmentRender from "../../../components/fragment_renderer/FragmentRender";
+import { Heading } from "../../../components/molecules/Heading";
+import { filterItems } from "../../../lib/utils/filterItems";
+import { ExploreUpdates } from "../../../components/organisms/ExploreUpdates";
+import { getDictionaryTerm } from "../../../lib/utils/getDictionaryTerm";
+import { UpdateInfo } from "../../../components/atoms/UpdateInfo";
+import { ExploreProjects } from "../../../components/organisms/ExploreProjects";
+ 
+/**
+ * Digital Standards Articles Component
+ * Displays individual article pages for the Digital Standards Playbook project
+ * Supports bilingual content, project context, and related updates
+ */
+export default function DigitalStandardsArticles({ key, ...props }) {
+  // Initialize required hooks and state
+  const { t } = useTranslation("common"); // Translation hook
+  const [pageData] = useState(props.pageData); // Current article content
+  const [projectData] = useState(props.projectData); // Parent project data
+  const [dictionary] = useState(props.dictionary.items); // Translation dictionary
+ 
+  // Initialize Adobe Analytics
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      {/* Main Layout Component - Provides consistent page structure */}
+      <Layout
+        locale={props.locale}
+        // Alternate language URL for language toggle
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        // Generate breadcrumb navigation
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        {/* Meta tags component */}
+        <PageHead pageData={pageData} locale={props.locale} />
+ 
+        {/* Main Article Section */}
+        <section className="mb-12">
+          <div className="layout-container">
+            {/* Article Title with accessibility support */}
+            <Heading
+              tabIndex="-1"
+              id="pageMainTitle"
+              title={
+                props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+              }
+            />
+ 
+            {/* Article Metadata Component */}
+            <UpdateInfo
+              // Project context labels and links
+              projectLabel={`${getDictionaryTerm(
+                dictionary,
+                "PROJECT",
+                props.locale
+              )}`}
+              projectName={
+                props.locale === "en"
+                  ? pageData.scLabProject.scTermEn
+                  : pageData.scLabProject.scTermFr
+              }
+              projectHref={
+                props.locale === "en"
+                  ? pageData.scLabProject.scDestinationURLEn
+                  : pageData.scLabProject.scDestinationURLFr
+              }
+              // Article dates
+              postedOnLabel={`${getDictionaryTerm(
+                dictionary,
+                "POSTED-ON",
+                props.locale
+              )}`}
+              postedOn={pageData.scDateModifiedOverwrite}
+              lastUpdatedLabel={`${getDictionaryTerm(
+                dictionary,
+                "LAST-UPDATED",
+                props.locale
+              )}`}
+              lastUpdated={pageData.scDateModifiedOverwrite}
+            />
+          </div>
+ 
+          {/* Main Article Content */}
+          <div id="mainContentSection">
+            <FragmentRender
+              fragments={props.pageData.scFragments}
+              locale={props.locale}
+              excludeH1={true} // Exclude H1 as it's already rendered in Heading
+            />
+          </div>
+        </section>
+ 
+        {/* Related Updates Section - Conditionally rendered if updates exist */}
+        {filterItems(props.updatesData, pageData.scId).length !== 0 ? (
+          <ExploreUpdates
+            locale={props.locale}
+            // Filter updates related to this article
+            updatesData={filterItems(props.updatesData, pageData.scId)}
+            dictionary={dictionary}
+            // Construct bilingual section heading
+            heading={
+              props.locale === "en"
+                ? `${projectData.scTitleEn} ${getDictionaryTerm(
+                    dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )}`
+                : `${getDictionaryTerm(
+                    dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )} ${projectData.scTitleFr}`
+            }
+            // "See all updates" link label
+            linkLabel={`${getDictionaryTerm(
+              dictionary,
+              "DICTIONARY-SEE-ALL-UPDATES-PROJECT",
+              props.locale
+            )}`}
+            // Link to filtered updates page
+            href={
+              props.locale === "en"
+                ? `/en/updates?project=${pageData.scLabProject.scTermEn}`
+                : `/fr/mises-a-jour?projet=${pageData.scLabProject.scTermFr}`
+            }
+          />
+        ) : null}
+ 
+        {/* Parent Project Information Section */}
+        <ExploreProjects
+          projects={[projectData]} // Show only the parent project
+          heading={getDictionaryTerm(
+            dictionary,
+            "EXPLORE-THE-PROJECT",
+            props.locale
+          )}
+          locale={props.locale}
+        />
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Generate static paths for all Digital Standards articles
+ * Required for Next.js dynamic routing
+ * Creates paths for both English and French versions
+ */
+export async function getStaticPaths() {
+  // Fetch all Digital Standards articles from AEM
+  const { data } = await aemServiceInstance.getFragment(
+    "getDigitalStandardsPlaybookArticles"
+  );
+  // Generate paths for dynamic routes using page names
+  const paths = getAllUpdateIds(data.sclabsPageV1List.items);
+  // Extract the last segment of the URL for the ID parameter
+  // Example: "/en/projects/digital-standards/article" becomes "article"
+  paths.map((path) => (path.params.id = path.params.id.split("/").at(-1)));
+ 
+  return {
+    paths,
+    fallback: "blocking", // Show loading state while generating new pages
+  };
+}
+ 
+/**
+ * Fetch page data at build time
+ * Handles data fetching for both languages and 404 cases
+ */
+export const getStaticProps = async ({ locale, params }) => {
+  // Fetch all Digital Standards articles
+  const { data: updatesData } = await aemServiceInstance.getFragment(
+    "getDigitalStandardsPlaybookArticles"
+  );
+  // Fetch parent project data
+  const { data: projectData } = await aemServiceInstance.getFragment(
+    "getDigitalStandardsPlaybookPage"
+  );
+  // Fetch translation dictionary
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+ 
+  const pages = updatesData.sclabsPageV1List.items;
+  // Filter for the current article based on URL parameter
+  const pageData = pages.filter((page) => {
+    return (
+      (locale === "en" ? page.scPageNameEn : page.scPageNameFr)
+        .split("/")
+        .at(-1) === params.id
+    );
+  });
+ 
+  // Return 404 if page not found
+  Iif (!pageData || !pageData.length) {
+    return {
+      notFound: true,
+    };
+  }
+ 
+  // Return props for page rendering
+  return {
+    props: {
+      key: params.id, // Unique key for React
+      locale: locale, // Current language
+      pageData: pageData[0], // Article content
+      updatesData: updatesData.sclabsPageV1List.items, // All updates for filtering
+      projectData: projectData.sclabsPageV1ByPath.item, // Parent project data
+      dictionary: dictionary.dictionaryV1List, // Translation dictionary
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null, // Analytics config
+      ...(await serverSideTranslations(locale, ["common"])), // Load translations
+    },
+    // Enable ISR if configured
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/projects/digital-standards-playbook/index.html b/main/coverage/lcov-report/pages/projects/digital-standards-playbook/index.html new file mode 100644 index 0000000000..6675aec5fd --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/digital-standards-playbook/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for pages/projects/digital-standards-playbook + + + + + + + + + +
+
+

All files pages/projects/digital-standards-playbook

+
+ +
+ 35.13% + Statements + 26/74 +
+ + +
+ 40.31% + Branches + 52/129 +
+ + +
+ 30% + Functions + 3/10 +
+ + +
+ 36.61% + Lines + 26/71 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
[id].js +
+
0%0/410%0/260%0/60%0/39
index.js +
+
78.78%26/3350.48%52/10375%3/481.25%26/32
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/projects/digital-standards-playbook/index.js.html b/main/coverage/lcov-report/pages/projects/digital-standards-playbook/index.js.html new file mode 100644 index 0000000000..1f0b58c7aa --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/digital-standards-playbook/index.js.html @@ -0,0 +1,1615 @@ + + + + + + Code coverage report for pages/projects/digital-standards-playbook/index.js + + + + + + + + + +
+
+

All files / pages/projects/digital-standards-playbook index.js

+
+ +
+ 78.78% + Statements + 26/33 +
+ + +
+ 50.48% + Branches + 52/103 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 81.25% + Lines + 26/32 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +5111x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +  +  +  +  +  +  +1x +  +1x +1x +1x +  +  +  +  +21x +  +  +  +  +  +  +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 aemServiceInstance from "../../../services/aemServiceInstance";
+import { ProjectInfo } from "../../../components/atoms/ProjectInfo";
+import Card from "../../../components/molecules/Card";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import { Heading } from "../../../components/molecules/Heading";
+import { ActionButton } from "../../../components/atoms/ActionButton";
+import Image from "next/image";
+import stageDictionary from "../../../lib/utils/stageDictionary";
+import { ExploreUpdates } from "../../../components/organisms/ExploreUpdates";
+import { ExploreProjects } from "../../../components/organisms/ExploreProjects";
+import { shuffle } from "../../../lib/utils/shuffle";
+import { filterItems } from "../../../lib/utils/filterItems";
+import { sortUpdatesByDate } from "../../../lib/utils/sortUpdatesByDate";
+import { getDictionaryTerm } from "../../../lib/utils/getDictionaryTerm";
+ 
+/**
+ * Digital Standards Playbook Page Component
+ * Main landing page for the Digital Standards Playbook project
+ * Features project overview, survey integration, and related content sections
+ */
+export default function DigitalStandardsPlaybookPage(props) {
+  // Initialize state with content data
+  const [pageData] = useState(props.pageData.item); // Page content from AEM
+  const [updatesData] = useState(props.updatesData); // Project updates
+  const [allProjects] = useState(props.allProjects); // All SC Labs projects
+ 
+  // Filter dictionary to include only terms needed for project information
+  const filteredDictionary = props.dictionary?.filter(
+    (item) =>
+      item.scId === "STARTED" || // Project start date label
+      item.scId === "ENDED" || // Project end date label
+      item.scId === "PROJECT-STAGE" || // Project stage label
+      item.scId === "SUMMARY" // Summary section label
+  );
+ 
+  // Initialize Adobe Analytics
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      {/* Main Layout Component - Provides consistent page structure */}
+      <Layout
+        locale={props.locale}
+        // Alternate language URL for language toggle
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        // Page last modified date with fallback
+        dateModifiedOverride={pageData.scDateModifiedOverwrite ?? "2023-11-24"}
+        // Generate breadcrumb navigation
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        {/* Page Head meta tags */}
+        <Head>
+          {/* 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>
+ 
+        {/* Main Content Container */}
+        <div className="layout-container mb-24">
+          {/* Hero Section */}
+          <section aria-labelledby="pageMainTitle">
+            {/* Two-column layout for desktop */}
+            <div className="flex flex-col break-words lg:grid lg:grid-cols-2">
+              {/* Page Title - Full width */}
+              <div className="col-span-2">
+                <Heading
+                  tabIndex="-1"
+                  id="pageMainTitle"
+                  title={
+                    props.locale === "en"
+                      ? pageData.scTitleEn
+                      : pageData.scTitleFr
+                  }
+                />
+              </div>
+ 
+              {/* Feature Image - Hidden on mobile, shown in right column on desktop */}
+              <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">
+                    <Image
+                      src={
+                        props.locale === "en"
+                          ? pageData.scFragments[2].scImageEn._publishUrl
+                          : pageData.scFragments[2].scImageFr._publishUrl
+                      }
+                      alt={
+                        (props.locale === "en"
+                          ? pageData.scFragments[2].scImageAltTextEn
+                          : pageData.scFragments[2].scImageAltTextFr) ?? ""
+                      }
+                      height={pageData.scFragments[2].scImageEn.height}
+                      width={pageData.scFragments[2].scImageEn.width}
+                      priority // Load image with high priority
+                      sizes="33vw"
+                      quality={100}
+                    />
+                  </div>
+                </div>
+              </div>
+ 
+              {/* Project Description */}
+              <p className="row-start-2 mb-4">
+                {props.locale === "en"
+                  ? pageData.scFragments[0].scContentEn.json[1].content[0].value
+                  : pageData.scFragments[0].scContentFr.json[1].content[0]
+                      .value}
+              </p>
+ 
+              {/* Project Information Component */}
+              <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[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[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>
+ 
+          {/* Main Content Section */}
+          <section id="pageMainContent">
+            <div className="grid grid-cols-12">
+              {/* First Content Block */}
+              <h2 className="col-span-12">
+                {props.locale === "en"
+                  ? pageData.scFragments[0].scContentEn.json[5].content[0].value
+                  : pageData.scFragments[0].scContentFr.json[5].content[0]
+                      .value}
+              </h2>
+              <p className="col-span-12 xl:col-span-8">
+                {props.locale === "en"
+                  ? pageData.scFragments[0].scContentEn.json[6].content[0].value
+                  : pageData.scFragments[0].scContentFr.json[6].content[0]
+                      .value}
+              </p>
+              <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>
+ 
+              <h2 className="col-span-12">
+                {props.locale === "en"
+                  ? pageData.scFragments[0].scContentEn.json[8].content[0].value
+                  : pageData.scFragments[0].scContentFr.json[8].content[0]
+                      .value}
+              </h2>
+              <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>
+ 
+              {/* Survey Call-to-Action Button */}
+              <ActionButton
+                id="take-survey"
+                style="primary"
+                custom="col-span-12 my-6"
+                href={
+                  props.locale === "en"
+                    ? pageData.scFragments[3].scDestinationURLEn
+                    : pageData.scFragments[3].scDestinationURLFr
+                }
+                text={
+                  props.locale === "en"
+                    ? pageData.scFragments[3].scTitleEn
+                    : pageData.scFragments[3].scTitleFr
+                }
+                ariaExpanded={props.ariaExpanded}
+              />
+ 
+              {/* Additional Content with Link */}
+              <p className="col-span-12 xl:col-span-8">
+                {props.locale === "en"
+                  ? pageData.scFragments[4].scContentEn.json[0].content[0].value
+                  : pageData.scFragments[4].scContentFr.json[0].content[0]
+                      .value}
+                <a
+                  className="underline underline-offset-[6px]"
+                  href={
+                    props.locale === "en"
+                      ? pageData.scFragments[4].scContentEn.json[0].content[1]
+                          .data.href
+                      : pageData.scFragments[4].scContentFr.json[0].content[1]
+                          .data.href
+                  }
+                >
+                  {props.locale === "en"
+                    ? pageData.scFragments[4].scContentEn.json[0].content[1]
+                        .value
+                    : pageData.scFragments[4].scContentFr.json[0].content[1]
+                        .value}
+                </a>
+                {props.locale === "en"
+                  ? pageData.scFragments[4].scContentEn.json[0].content[2].value
+                  : pageData.scFragments[4].scContentFr.json[0].content[2]
+                      .value}
+              </p>
+              <p className="col-span-12 xl:col-span-8">
+                {props.locale === "en"
+                  ? pageData.scFragments[4].scContentEn.json[1].content[0].value
+                  : pageData.scFragments[4].scContentFr.json[1].content[0]
+                      .value}
+              </p>
+            </div>
+          </section>
+        </div>
+ 
+        {/* Updates Section - Conditionally rendered if updates exist */}
+        {props.updatesData.length !== 0 ? (
+          <ExploreUpdates
+            locale={props.locale}
+            updatesData={sortUpdatesByDate(updatesData)}
+            dictionary={props.dictionary}
+            heading={
+              props.locale === "en"
+                ? `${pageData.scTitleEn} ${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )}`
+                : `${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )} ${pageData.scTitleFr}`
+            }
+            linkLabel={`${getDictionaryTerm(
+              props.dictionary,
+              "DICTIONARY-SEE-ALL-UPDATES-PROJECT",
+              props.locale
+            )}`}
+            href={
+              props.locale === "en"
+                ? `/en/updates?project=${pageData.scTitleEn}`
+                : `/fr/mises-a-jour?projet=${pageData.scTitleFr}`
+            }
+          />
+        ) : null}
+ 
+        {/* Related Projects Section */}
+        <ExploreProjects
+          heading={getDictionaryTerm(
+            props.dictionary,
+            "EXPLORE-OTHER-PROJECTS",
+            props.locale
+          )}
+          locale={props.locale}
+          projects={filterItems(allProjects, pageData.scId).slice(0, 3)}
+        />
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Next.js Static Site Generation (SSG) function
+ * Fetches all required data at build time
+ */
+export const getStaticProps = async ({ locale }) => {
+  // Fetch Digital Standards page content from AEM
+  const { data: pageData } = await aemServiceInstance.getFragment(
+    "getDigitalStandardsPlaybookPage"
+  );
+ 
+  // Fetch translation dictionary
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+ 
+  // Fetch all projects for related projects section
+  const { data: allProjects } = await aemServiceInstance.getFragment(
+    "projectQuery"
+  );
+ 
+  // Return props for page rendering
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      pageData: pageData.sclabsPageV1ByPath,
+      updatesData: pageData.sclabsPageV1ByPath.item.scLabProjectUpdates,
+      dictionary: dictionary.dictionaryV1List.items,
+      // Randomize projects order for related projects
+      allProjects: shuffle(allProjects.sclabsPageV1List.items),
+      // Include common translations
+      ...(await serverSideTranslations(locale, ["common"])),
+    },
+    // Enable ISR if configured in environment
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/projects/making-easier-get-benefits/[id].js.html b/main/coverage/lcov-report/pages/projects/making-easier-get-benefits/[id].js.html new file mode 100644 index 0000000000..40a6415572 --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/making-easier-get-benefits/[id].js.html @@ -0,0 +1,742 @@ + + + + + + Code coverage report for pages/projects/making-easier-get-benefits/[id].js + + + + + + + + + +
+
+

All files / pages/projects/making-easier-get-benefits [id].js

+
+ +
+ 0% + Statements + 0/42 +
+ + +
+ 0% + Branches + 0/26 +
+ + +
+ 0% + Functions + 0/6 +
+ + +
+ 0% + Lines + 0/40 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
// Import required dependencies and components
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { useTranslation } from "next-i18next";
+import PageHead from "../../../components/fragment_renderer/PageHead";
+import { Layout } from "../../../components/organisms/Layout";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { getAllUpdateIds } from "../../../lib/utils/getAllUpdateIds";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import FragmentRender from "../../../components/fragment_renderer/FragmentRender";
+import { Heading } from "../../../components/molecules/Heading";
+import { filterItems } from "../../../lib/utils/filterItems";
+import { ExploreUpdates } from "../../../components/organisms/ExploreUpdates";
+import { sortUpdatesByDate } from "../../../lib/utils/sortUpdatesByDate";
+import { getDictionaryTerm } from "../../../lib/utils/getDictionaryTerm";
+import { UpdateInfo } from "../../../components/atoms/UpdateInfo";
+import { ExploreProjects } from "../../../components/organisms/ExploreProjects";
+ 
+// Main component for rendering Integrated Channel Strategy Articles
+export default function IntegratedChannelStrategyArticles({ key, ...props }) {
+  // Initialize translations
+  const { t } = useTranslation("common");
+ 
+  // Set up state using props data
+  const [pageData] = useState(props.pageData);
+  const [projectData] = useState(props.projectData);
+  const [dictionary] = useState(props.dictionary.items);
+ 
+  // Initialize Adobe Analytics on page load if URL is provided
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      {/* Main layout wrapper with language and breadcrumb navigation */}
+      <Layout
+        locale={props.locale}
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        {/* Page header metadata */}
+        <PageHead pageData={pageData} locale={props.locale} />
+ 
+        {/* Main content section */}
+        <section className="mb-12">
+          <div className="layout-container">
+            {/* Page title */}
+            <Heading
+              tabIndex="-1"
+              id="pageMainTitle"
+              title={
+                props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+              }
+            />
+ 
+            {/* Project and update information */}
+            <UpdateInfo
+              projectLabel={`${getDictionaryTerm(
+                dictionary,
+                "PROJECT",
+                props.locale
+              )}`}
+              projectName={
+                props.locale === "en"
+                  ? pageData.scLabProject.scTermEn
+                  : pageData.scLabProject.scTermFr
+              }
+              projectHref={
+                props.locale === "en"
+                  ? pageData.scLabProject.scDestinationURLEn
+                  : pageData.scLabProject.scDestinationURLFr
+              }
+              postedOnLabel={`${getDictionaryTerm(
+                dictionary,
+                "POSTED-ON",
+                props.locale
+              )}`}
+              postedOn={pageData.scDateModifiedOverwrite}
+              lastUpdatedLabel={`${getDictionaryTerm(
+                dictionary,
+                "LAST-UPDATED",
+                props.locale
+              )}`}
+              lastUpdated={pageData.scDateModifiedOverwrite}
+            />
+          </div>
+ 
+          {/* Main content fragments */}
+          <div id="mainContentSection">
+            <FragmentRender
+              fragments={props.pageData.scFragments}
+              locale={props.locale}
+              excludeH1={true}
+            />
+          </div>
+        </section>
+ 
+        {/* Show updates section if there are related updates */}
+        {filterItems(props.updatesData, pageData.scId).length !== 0 ? (
+          <ExploreUpdates
+            locale={props.locale}
+            updatesData={filterItems(props.updatesData, pageData.scId)}
+            dictionary={dictionary}
+            heading={
+              props.locale === "en"
+                ? `${projectData.scTitleEn} ${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )}`
+                : `${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )} ${projectData.scTitleFr}`
+            }
+            linkLabel={`${getDictionaryTerm(
+              dictionary,
+              "DICTIONARY-SEE-ALL-UPDATES-PROJECT",
+              props.locale
+            )}`}
+            href={
+              props.locale === "en"
+                ? `/en/updates?project=${pageData.scLabProject.scTermEn}`
+                : `/fr/mises-a-jour?projet=${pageData.scLabProject.scTermFr}`
+            }
+          />
+        ) : null}
+ 
+        {/* Related projects section */}
+        <ExploreProjects
+          projects={[projectData]}
+          heading={getDictionaryTerm(
+            dictionary,
+            "EXPLORE-THE-PROJECT",
+            props.locale
+          )}
+          locale={props.locale}
+        />
+      </Layout>
+    </>
+  );
+}
+ 
+// Generate static paths for all articles
+export async function getStaticPaths() {
+  // Fetch all article data from AEM
+  const { data } = await aemServiceInstance.getFragment(
+    "integratedChannelStrategyArticlesQuery"
+  );
+ 
+  // Generate paths for dynamic routing
+  const paths = getAllUpdateIds(data.sclabsPageV1List.items);
+ 
+  // Extract the final segment of the URL for the page ID
+  paths.map((path) => (path.params.id = path.params.id.split("/").at(-1)));
+ 
+  return {
+    paths,
+    fallback: "blocking", // Show loading state while generating new pages
+  };
+}
+ 
+// Generate static props for each article page
+export const getStaticProps = async ({ locale, params }) => {
+  // Fetch required data from AEM
+  const { data: updatesData } = await aemServiceInstance.getFragment(
+    "integratedChannelStrategyArticlesQuery"
+  );
+  const { data: projectData } = await aemServiceInstance.getFragment(
+    "integratedChannelStrategyQuery"
+  );
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+ 
+  const pages = updatesData.sclabsPageV1List.items;
+ 
+  // Find the matching page data for current URL
+  const pageData = pages.filter((page) => {
+    return (
+      (locale === "en" ? page.scPageNameEn : page.scPageNameFr)
+        .split("/")
+        .at(-1) === params.id
+    );
+  });
+ 
+  // Return 404 if page not found
+  Iif (!pageData || !pageData.length) {
+    return {
+      notFound: true,
+    };
+  }
+ 
+  // Return props for page rendering
+  return {
+    props: {
+      key: params.id,
+      locale: locale,
+      pageData: pageData[0],
+      updatesData: updatesData.sclabsPageV1List.items,
+      projectData: projectData.sclabsPageV1ByPath.item,
+      dictionary: dictionary.dictionaryV1List,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      ...(await serverSideTranslations(locale, ["common"])),
+    },
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false, // Enable ISR if configured
+  };
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/projects/making-easier-get-benefits/index.html b/main/coverage/lcov-report/pages/projects/making-easier-get-benefits/index.html new file mode 100644 index 0000000000..9d36f831e6 --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/making-easier-get-benefits/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for pages/projects/making-easier-get-benefits + + + + + + + + + +
+
+

All files pages/projects/making-easier-get-benefits

+
+ +
+ 35.52% + Statements + 27/76 +
+ + +
+ 34.28% + Branches + 36/105 +
+ + +
+ 30% + Functions + 3/10 +
+ + +
+ 36.98% + Lines + 27/73 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
[id].js +
+
0%0/420%0/260%0/60%0/40
index.js +
+
79.41%27/3445.56%36/7975%3/481.81%27/33
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/projects/making-easier-get-benefits/index.js.html b/main/coverage/lcov-report/pages/projects/making-easier-get-benefits/index.js.html new file mode 100644 index 0000000000..454156edd7 --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/making-easier-get-benefits/index.js.html @@ -0,0 +1,1354 @@ + + + + + + Code coverage report for pages/projects/making-easier-get-benefits/index.js + + + + + + + + + +
+
+

All files / pages/projects/making-easier-get-benefits index.js

+
+ +
+ 79.41% + Statements + 27/34 +
+ + +
+ 45.56% + Branches + 36/79 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 81.81% + Lines + 27/33 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +4241x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +  +  +  +  +  +  +1x +  +1x +1x +1x +  +  +1x +  +  +21x +  +  +  +  +  +  +  +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 aemServiceInstance from "../../../services/aemServiceInstance";
+import { ProjectInfo } from "../../../components/atoms/ProjectInfo";
+import Card from "../../../components/molecules/Card";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import { Heading } from "../../../components/molecules/Heading";
+import TextRender from "../../../components/text_node_renderer/TextRender";
+import Image from "next/image";
+import stageDictionary from "../../../lib/utils/stageDictionary";
+import { ExploreUpdates } from "../../../components/organisms/ExploreUpdates";
+import { ExploreProjects } from "../../../components/organisms/ExploreProjects";
+import { shuffle } from "../../../lib/utils/shuffle";
+import { filterItems } from "../../../lib/utils/filterItems";
+import { sortUpdatesByDate } from "../../../lib/utils/sortUpdatesByDate";
+import { getDictionaryTerm } from "../../../lib/utils/getDictionaryTerm";
+ 
+/**
+ * Component for displaying an Integrated Channel Strategy page
+ * Handles bilingual content (English/French) and various project-related information
+ * @param {Object} props Component properties from getStaticProps
+ */
+export default function IntegratedChannelStrategyPage(props) {
+  // Initialize state with props data, using array destructuring for read-only values
+  const [pageData] = useState(props.pageData.item);
+  const [updatesData] = useState(props.updatesData);
+  const [allProjects] = useState(props.allProjects);
+ 
+  // Filter dictionary to only include specific status-related terms
+  const [filteredDictionary] = useState(
+    props.dictionary.filter(
+      (item) =>
+        item.scId === "STARTED" ||
+        item.scId === "ENDED" ||
+        item.scId === "PROJECT-STAGE" ||
+        item.scId === "SUMMARY"
+    )
+  );
+ 
+  // Initialize Adobe Analytics on page load if URL is provided
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      {/* Main layout wrapper with language-specific configuration */}
+      <Layout
+        locale={props.locale}
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        {/* Page head metadata */}
+        <Head>
+          {/* 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>
+        {/* Main content container */}
+        <div className="layout-container mb-24">
+          <section aria-labelledby="pageMainTitle">
+            {/* Grid layout for main content area */}
+            <div className="flex flex-col break-words lg:grid lg:grid-cols-2">
+              {/* Page title section */}
+              <div className="col-span-2">
+                <Heading
+                  tabIndex="-1"
+                  id="pageMainTitle"
+                  title={
+                    props.locale === "en"
+                      ? pageData.scTitleEn
+                      : pageData.scTitleFr
+                  }
+                />
+              </div>
+              {/* Desktop-only image section */}
+              <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">
+                    <Image
+                      src={
+                        props.locale === "en"
+                          ? pageData.scFragments[2].scImageEn._publishUrl
+                          : pageData.scFragments[2].scImageFr._publishUrl
+                      }
+                      alt={
+                        (props.locale === "en"
+                          ? pageData.scFragments[2].scImageAltTextEn
+                          : pageData.scFragments[2].scImageAltTextFr) ?? ""
+                      }
+                      height={pageData.scFragments[2].scImageEn.height}
+                      width={pageData.scFragments[2].scImageEn.width}
+                      priority
+                      sizes="33vw"
+                      quality={100}
+                    />
+                  </div>
+                </div>
+              </div>
+              {/* Introduction paragraph */}
+              <p className="row-start-2 mb-4">
+                {props.locale === "en"
+                  ? pageData.scFragments[0].scContentEn.json[1].content[0].value
+                  : pageData.scFragments[0].scContentFr.json[1].content[0]
+                      .value}
+              </p>
+              {/* Project information component */}
+              <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[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[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>
+          {/* Main content text section */}
+          <div id="pageMainContent" className="grid grid-cols-12">
+            <div className="col-span-12 lg:col-span-7 mt-[48px]">
+              <TextRender
+                data={
+                  props.locale === "en"
+                    ? pageData.scFragments[0].scContentEn.json.slice(5)
+                    : pageData.scFragments[0].scContentFr.json.slice(5)
+                }
+                excludeH1={true}
+              />
+            </div>
+          </div>
+        </div>
+        {/* Conditional rendering of updates section */}
+        {props.updatesData.length !== 0 ? (
+          <ExploreUpdates
+            locale={props.locale}
+            updatesData={sortUpdatesByDate(updatesData)}
+            dictionary={props.dictionary}
+            heading={
+              props.locale === "en"
+                ? `${pageData.scTitleEn} ${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )}`
+                : `${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )} ${pageData.scTitleFr}`
+            }
+            linkLabel={`${getDictionaryTerm(
+              props.dictionary,
+              "DICTIONARY-SEE-ALL-UPDATES-PROJECT",
+              props.locale
+            )}`}
+            href={
+              props.locale === "en"
+                ? `/en/updates?project=${pageData.scTitleEn}`
+                : `/fr/mises-a-jour?projet=${pageData.scTitleFr}`
+            }
+          />
+        ) : null}
+        {/* Related projects section */}
+        <ExploreProjects
+          heading={getDictionaryTerm(
+            props.dictionary,
+            "EXPLORE-OTHER-PROJECTS",
+            props.locale
+          )}
+          locale={props.locale}
+          projects={filterItems(allProjects, pageData.scId).slice(0, 3)}
+        />
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Next.js getStaticProps function to fetch data at build time
+ * Retrieves page data, dictionary terms, and project information from AEM
+ * @param {Object} context Contains locale information
+ * @returns {Object} Props for the page component
+ */
+export const getStaticProps = async ({ locale }) => {
+  // Fetch page-specific data from AEM
+  const { data: pageData } = await aemServiceInstance.getFragment(
+    "integratedChannelStrategyQuery"
+  );
+  // Fetch dictionary terms for translations
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+  // Fetch all projects data
+  const { data: allProjects } = await aemServiceInstance.getFragment(
+    "projectQuery"
+  );
+ 
+  // Return props object with all necessary data
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      pageData: pageData.sclabsPageV1ByPath,
+      updatesData: pageData.sclabsPageV1ByPath.item.scLabProjectUpdates,
+      dictionary: dictionary.dictionaryV1List.items,
+      allProjects: shuffle(allProjects.sclabsPageV1List.items),
+      ...(await serverSideTranslations(locale, ["common"])),
+    },
+    // Configure ISR (Incremental Static Regeneration) if enabled
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ 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..7d56af83f4 --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/oas-benefits-estimator/[id].js.html @@ -0,0 +1,796 @@ + + + + + + Code coverage report for pages/projects/oas-benefits-estimator/[id].js + + + + + + + + + +
+
+

All files / pages/projects/oas-benefits-estimator [id].js

+
+ +
+ 0% + Statements + 0/42 +
+ + +
+ 0% + Branches + 0/26 +
+ + +
+ 0% + Functions + 0/6 +
+ + +
+ 0% + Lines + 0/40 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
// Import necessary Next.js internationalization utilities
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { useTranslation } from "next-i18next";
+ 
+// Import components from project structure
+import PageHead from "../../../components/fragment_renderer/PageHead";
+import { Layout } from "../../../components/organisms/Layout";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { getAllUpdateIds } from "../../../lib/utils/getAllUpdateIds";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import FragmentRender from "../../../components/fragment_renderer/FragmentRender";
+import { Heading } from "../../../components/molecules/Heading";
+import { filterItems } from "../../../lib/utils/filterItems";
+import { ExploreUpdates } from "../../../components/organisms/ExploreUpdates";
+import { sortUpdatesByDate } from "../../../lib/utils/sortUpdatesByDate";
+import { getDictionaryTerm } from "../../../lib/utils/getDictionaryTerm";
+import { UpdateInfo } from "../../../components/atoms/UpdateInfo";
+import { ExploreProjects } from "../../../components/organisms/ExploreProjects";
+ 
+/**
+ * Component for displaying OAS Benefits Estimator article pages
+ * Handles bilingual content (English/French) and displays project updates and related information
+ * This is a dynamic page that renders different articles based on the URL parameter
+ */
+export default function OASBenefitsEstimatorArticles({ key, ...props }) {
+  // Initialize translation hook for common terms
+  const { t } = useTranslation("common");
+ 
+  // Initialize state with props data, using array destructuring for read-only values
+  const [pageData] = useState(props.pageData);
+  const [projectData] = useState(props.projectData);
+  const [dictionary] = useState(props.dictionary);
+ 
+  // Initialize Adobe Analytics on page load if URL is provided
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      {/* Main layout wrapper with language-specific configuration */}
+      <Layout
+        locale={props.locale}
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        {/* Page metadata component */}
+        <PageHead pageData={pageData} locale={props.locale} />
+ 
+        {/* Main article section */}
+        <section className="mb-12">
+          <div className="layout-container">
+            {/* Page title */}
+            <Heading
+              tabIndex="-1"
+              id="pageMainTitle"
+              title={
+                props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+              }
+            />
+ 
+            {/* Article metadata (project info, posting date, last updated) */}
+            <UpdateInfo
+              projectLabel={`${getDictionaryTerm(
+                dictionary,
+                "PROJECT",
+                props.locale
+              )}`}
+              projectName={
+                props.locale === "en"
+                  ? pageData.scLabProject.scTermEn
+                  : pageData.scLabProject.scTermFr
+              }
+              projectHref={
+                props.locale === "en"
+                  ? pageData.scLabProject.scDestinationURLEn
+                  : pageData.scLabProject.scDestinationURLFr
+              }
+              postedOnLabel={`${getDictionaryTerm(
+                dictionary,
+                "POSTED-ON",
+                props.locale
+              )}`}
+              postedOn={pageData.scDateModifiedOverwrite}
+              lastUpdatedLabel={`${getDictionaryTerm(
+                dictionary,
+                "LAST-UPDATED",
+                props.locale
+              )}`}
+              lastUpdated={pageData.scDateModifiedOverwrite}
+            />
+          </div>
+ 
+          {/* Main content area rendering AEM fragments */}
+          <div id="mainContentSection">
+            <FragmentRender
+              fragments={props.pageData.scFragments}
+              locale={props.locale}
+              excludeH1={true}
+            />
+          </div>
+        </section>
+ 
+        {/* Conditional rendering of updates section if updates exist */}
+        {filterItems(props.updatesData, pageData.scId).length !== 0 ? (
+          <ExploreUpdates
+            locale={props.locale}
+            updatesData={filterItems(props.updatesData, pageData.scId)}
+            dictionary={props.dictionary}
+            heading={
+              props.locale === "en"
+                ? `${projectData.scTitleEn} ${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )}`
+                : `${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )} ${projectData.scTitleFr}`
+            }
+            linkLabel={`${getDictionaryTerm(
+              props.dictionary,
+              "DICTIONARY-SEE-ALL-UPDATES-PROJECT",
+              props.locale
+            )}`}
+            href={
+              props.locale === "en"
+                ? `/en/updates?project=${pageData.scLabProject.scTermEn}`
+                : `/fr/mises-a-jour?projet=${pageData.scLabProject.scTermFr}`
+            }
+          />
+        ) : null}
+ 
+        {/* Related project exploration section */}
+        <ExploreProjects
+          projects={[projectData]}
+          heading={getDictionaryTerm(
+            dictionary,
+            "EXPLORE-THE-PROJECT",
+            props.locale
+          )}
+          locale={props.locale}
+        />
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Next.js getStaticPaths function to specify dynamic routes
+ * Generates paths for all OAS Benefits Estimator articles at build time
+ * @returns {Object} Contains paths for all article pages and fallback behavior
+ */
+export async function getStaticPaths() {
+  // Fetch all OAS Benefits Estimator articles data from AEM
+  const { data } = await aemServiceInstance.getFragment(
+    "oasBenefitsEstimatorArticlesQuery"
+  );
+ 
+  // Generate paths for each article
+  const paths = getAllUpdateIds(data.sclabsPageV1List.items);
+ 
+  // Extract the final segment of the URL for use as the dynamic parameter
+  // Example: "/en/projects/oas-benefits-estimator/what-we-learned" -> "what-we-learned"
+  paths.map((path) => (path.params.id = path.params.id.split("/").at(-1)));
+ 
+  return {
+    paths,
+    // Use blocking fallback for server-side rendering of new paths
+    fallback: "blocking",
+  };
+}
+ 
+/**
+ * Next.js getStaticProps function to fetch data at build time
+ * Retrieves specific article data, project info, and dictionary terms from AEM
+ * @param {Object} context Contains locale and URL parameters
+ * @returns {Object} Props for the page component or notFound flag
+ */
+export const getStaticProps = async ({ locale, params }) => {
+  // Fetch all necessary data from AEM
+  const { data: updatesData } = await aemServiceInstance.getFragment(
+    "oasBenefitsEstimatorArticlesQuery"
+  );
+  const { data: projectData } = await aemServiceInstance.getFragment(
+    "oasBenefitsEstimatorQuery"
+  );
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+ 
+  const pages = updatesData.sclabsPageV1List.items;
+ 
+  // Find the specific page data matching the current URL parameter
+  const pageData = pages.filter((page) => {
+    return (
+      (locale === "en" ? page.scPageNameEn : page.scPageNameFr)
+        .split("/")
+        .at(-1) === params.id
+    );
+  });
+ 
+  // Return 404 if page data isn't found
+  Iif (!pageData || !pageData.length) {
+    return {
+      notFound: true,
+    };
+  }
+ 
+  // Return props object with all necessary data
+  return {
+    props: {
+      key: params.id,
+      locale: locale,
+      pageData: pageData[0],
+      updatesData: updatesData.sclabsPageV1List.items,
+      projectData: projectData.sclabsPageV1ByPath.item,
+      dictionary: dictionary.dictionaryV1List.items,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      ...(await serverSideTranslations(locale, ["common"])),
+    },
+    // Configure ISR (Incremental Static Regeneration) if enabled
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ 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..84984235b7 --- /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

+
+ +
+ 34.66% + Statements + 26/75 +
+ + +
+ 38.21% + Branches + 47/123 +
+ + +
+ 30% + Functions + 3/10 +
+ + +
+ 36.11% + Lines + 26/72 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
[id].js +
+
0%0/420%0/260%0/60%0/40
index.js +
+
78.78%26/3348.45%47/9775%3/481.25%26/32
+
+
+
+ + + + + + + + \ 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..d82a9ef576 --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/oas-benefits-estimator/index.js.html @@ -0,0 +1,1540 @@ + + + + + + Code coverage report for pages/projects/oas-benefits-estimator/index.js + + + + + + + + + +
+
+

All files / pages/projects/oas-benefits-estimator index.js

+
+ +
+ 78.78% + Statements + 26/33 +
+ + +
+ 48.45% + Branches + 47/97 +
+ + +
+ 75% + Functions + 3/4 +
+ + +
+ 81.25% + Lines + 26/32 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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 +4861x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +1x +  +  +  +  +  +  +1x +  +1x +1x +1x +  +  +1x +  +  +21x +  +  +  +  +  +  +  +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 { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import { Heading } from "../../../components/molecules/Heading";
+import Image from "next/image";
+import stageDictionary from "../../../lib/utils/stageDictionary";
+import { ExploreUpdates } from "../../../components/organisms/ExploreUpdates";
+import { ExploreProjects } from "../../../components/organisms/ExploreProjects";
+import { shuffle } from "../../../lib/utils/shuffle";
+import { filterItems } from "../../../lib/utils/filterItems";
+import { sortUpdatesByDate } from "../../../lib/utils/sortUpdatesByDate";
+import { getDictionaryTerm } from "../../../lib/utils/getDictionaryTerm";
+ 
+/**
+ * Main component for the OAS Benefits Estimator project page
+ * Displays project information, an interactive estimator tool, and related content
+ * Handles bilingual content (English/French) throughout
+ */
+export default function OasBenefitsEstimator(props) {
+  // Initialize state with props data, using array destructuring for read-only values
+  const [pageData] = useState(props.pageData.item);
+  const [updatesData] = useState(props.updatesData);
+  const [allProjects] = useState(props.allProjects);
+ 
+  // Filter dictionary to only include status-related terms needed for project info
+  const [filteredDictionary] = useState(
+    props.dictionary.filter(
+      (item) =>
+        item.scId === "STARTED" ||
+        item.scId === "ENDED" ||
+        item.scId === "PROJECT-STAGE" ||
+        item.scId === "SUMMARY"
+    )
+  );
+ 
+  // Initialize Adobe Analytics on page load if URL is provided
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      {/* Main layout wrapper with language-specific configuration */}
+      <Layout
+        locale={props.locale}
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        <Head>
+          {/* 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>
+ 
+        {/* Main content container */}
+        <div className="layout-container mb-24">
+          {/* Hero section with title, image, and project info */}
+          <section aria-labelledby="pageMainTitle">
+            <div className="flex flex-col break-words lg:grid lg:grid-cols-2">
+              {/* Page title */}
+              <div className="col-span-2">
+                <Heading
+                  tabIndex="-1"
+                  id="pageMainTitle"
+                  title={
+                    props.locale === "en"
+                      ? pageData.scTitleEn
+                      : pageData.scTitleFr
+                  }
+                />
+              </div>
+              {/* Desktop-only feature image */}
+              <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">
+                    <Image
+                      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) ?? ""
+                      }
+                      height={pageData.scFragments[1].scImageEn.height}
+                      width={pageData.scFragments[1].scImageEn.width}
+                      priority
+                      sizes="33vw"
+                      quality={100}
+                    />
+                  </div>
+                </div>
+              </div>
+              {/* Introduction paragraph */}
+              <p className="row-start-2 mb-4">
+                {props.locale === "en"
+                  ? pageData.scFragments[0].scContentEn.json[1].content[0].value
+                  : pageData.scFragments[0].scContentFr.json[1].content[0]
+                      .value}
+              </p>
+              {/* Project information component */}
+              <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>
+ 
+          {/* Estimator tool section with CTA */}
+          <div className="grid grid-cols-12">
+            {/* Tool introduction heading */}
+            <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>
+            {/* Primary CTA button to launch estimator tool */}
+            <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}
+            />
+ 
+            {/* Information section about the tool */}
+            <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>
+            {/* Descriptive paragraphs about the tool's functionality */}
+            <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>
+ 
+          {/* Feedback section */}
+          <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>
+        </div>
+ 
+        {/* Conditional rendering of updates section if updates exist */}
+        {props.updatesData.length !== 0 ? (
+          <ExploreUpdates
+            locale={props.locale}
+            updatesData={sortUpdatesByDate(updatesData)}
+            dictionary={props.dictionary}
+            heading={
+              props.locale === "en"
+                ? `${pageData.scTitleEn} ${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )}`
+                : `${getDictionaryTerm(
+                    props.dictionary,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )} ${pageData.scTitleFr}`
+            }
+            linkLabel={`${getDictionaryTerm(
+              props.dictionary,
+              "DICTIONARY-SEE-ALL-UPDATES-PROJECT",
+              props.locale
+            )}`}
+            href={
+              props.locale === "en"
+                ? `/en/updates?project=${pageData.scTitleEn}`
+                : `/fr/mises-a-jour?projet=${pageData.scTitleFr}`
+            }
+          />
+        ) : null}
+ 
+        {/* Related projects section */}
+        <ExploreProjects
+          heading={getDictionaryTerm(
+            props.dictionary,
+            "EXPLORE-OTHER-PROJECTS",
+            props.locale
+          )}
+          locale={props.locale}
+          projects={filterItems(allProjects, pageData.scId).slice(0, 3)}
+        />
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Next.js getStaticProps function to fetch data at build time
+ * Retrieves page data, dictionary terms, and project information from AEM
+ * @param {Object} context Contains locale information
+ * @returns {Object} Props for the page component
+ */
+export const getStaticProps = async ({ locale }) => {
+  // Fetch main page data from AEM
+  const { data: pageData } = await aemServiceInstance.getFragment(
+    "oasBenefitsEstimatorQuery"
+  );
+  // Fetch dictionary terms for translations
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+  // Fetch all projects data for the related projects section
+  const { data: allProjects } = await aemServiceInstance.getFragment(
+    "projectQuery"
+  );
+ 
+  // Return props object with all necessary data
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      pageData: pageData.sclabsPageV1ByPath,
+      updatesData: pageData.sclabsPageV1ByPath.item.scLabProjectUpdates,
+      dictionary: dictionary.dictionaryV1List.items,
+      allProjects: shuffle(allProjects.sclabsPageV1List.items),
+      ...(await serverSideTranslations(locale, ["common"])),
+    },
+    // Configure ISR (Incremental Static Regeneration) if enabled
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/projects/transforming-ei-indigenous-peoples/[id].js.html b/main/coverage/lcov-report/pages/projects/transforming-ei-indigenous-peoples/[id].js.html new file mode 100644 index 0000000000..c9af30563c --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/transforming-ei-indigenous-peoples/[id].js.html @@ -0,0 +1,673 @@ + + + + + + Code coverage report for pages/projects/transforming-ei-indigenous-peoples/[id].js + + + + + + + + + +
+
+

All files / pages/projects/transforming-ei-indigenous-peoples [id].js

+
+ +
+ 0% + Statements + 0/32 +
+ + +
+ 0% + Branches + 0/20 +
+ + +
+ 0% + Functions + 0/6 +
+ + +
+ 0% + Lines + 0/30 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
import PageHead from "../../../components/fragment_renderer/PageHead";
+import { Layout } from "../../../components/organisms/Layout";
+import { Heading } from "../../../components/molecules/Heading";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { getAllUpdateIds } from "../../../lib/utils/getAllUpdateIds";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import FragmentRender from "../../../components/fragment_renderer/FragmentRender";
+ 
+/**
+ * Component for displaying Indigenous EI (Employment Insurance) related articles
+ * This is a dynamic page component that renders different articles based on the URL parameter
+ * Handles bilingual content (English/French) and provides metadata about posting/update dates
+ *
+ * Part of the Indigenous EI content series, which provides information about EI services
+ * specifically tailored for Indigenous communities and their unique needs
+ */
+export default function IndigenousEiArticles({ key, ...props }) {
+  // Initialize state with props data
+  // pageData contains the specific article content and metadata
+  const [pageData] = useState(props.pageData);
+  // dictionary contains translation terms used throughout the application
+  const [dictionary] = useState(props.dictionary.items);
+ 
+  // Initialize Adobe Analytics tracking
+  // This helps track page views and user interactions for analytics purposes
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      {/* Main layout wrapper with language-specific configuration
+          Handles the overall page structure and navigation elements */}
+      <Layout
+        locale={props.locale}
+        langUrl={
+          // Set up language toggle URL based on current locale
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        // Generate breadcrumb navigation based on page hierarchy
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        {/* Page metadata component for SEO and document structure */}
+        <PageHead pageData={pageData} locale={props.locale} />
+ 
+        {/* Main content section containing the article */}
+        <section className="mb-12">
+          <div className="layout-container">
+            {/* Article title */}
+            <Heading
+              tabIndex="-1"
+              id="pageMainTitle"
+              title={
+                props.locale === "en" ? pageData.scTitleEn : pageData.scTitleFr
+              }
+            />
+ 
+            {/* Article metadata grid showing posting and update dates
+                Uses a responsive grid layout that adjusts based on screen size */}
+            <div id="postedOnUpdatedOnSection" className="grid grid-cols-12">
+              {/* "Posted On" label - width adjusts based on language and screen size */}
+              <p
+                className={`col-span-6 sm:col-span-4 ${
+                  // French labels typically need more space due to longer text
+                  props.locale === "en" ? "lg:col-span-2" : "lg:col-span-3"
+                } font-bold`}
+              >
+                {getDictionaryTerm(dictionary, "POSTED-ON", props.locale)}
+              </p>
+              {/* Posted date display */}
+              <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>
+ 
+              {/* "Last Updated" label - follows same responsive pattern */}
+              <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`}
+              >
+                {getDictionaryTerm(dictionary, "LAST-UPDATED", props.locale)}
+              </p>
+              {/* Last updated date display */}
+              <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>
+ 
+          {/* Main article content section
+              Renders the AEM content fragments that make up the article body */}
+          <div id="mainContentSection">
+            <FragmentRender
+              fragments={props.pageData.scFragments}
+              locale={props.locale}
+            />
+          </div>
+        </section>
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Next.js getStaticPaths function to specify dynamic routes
+ * Generates paths for all Indigenous EI articles at build time
+ * This function is crucial for static site generation with dynamic routes
+ *
+ * @returns {Object} Contains paths for all article pages and fallback behavior
+ */
+export async function getStaticPaths() {
+  // Fetch all Indigenous EI articles data from AEM
+  const { data } = await aemServiceInstance.getFragment(
+    "indigenousEiArticlesQuery"
+  );
+ 
+  // Generate paths for each article using their unique identifiers
+  const paths = getAllUpdateIds(data.sclabsPageV1List.items);
+ 
+  // Extract the final segment of the URL for use as the dynamic parameter
+  // Example: "/en/services/indigenous-ei/article-name" -> "article-name"
+  paths.map((path) => (path.params.id = path.params.id.split("/").at(-1)));
+ 
+  return {
+    paths,
+    // Use blocking fallback for server-side rendering of new paths
+    // This ensures SEO-friendly content delivery and proper handling of new articles
+    fallback: "blocking",
+  };
+}
+ 
+/**
+ * Next.js getStaticProps function to fetch data at build time
+ * Retrieves specific article data and dictionary terms from AEM
+ * This function runs at build time for each page in getStaticPaths
+ *
+ * @param {Object} context Contains locale and URL parameters
+ * @returns {Object} Props for the page component or notFound flag
+ */
+export const getStaticProps = async ({ locale, params }) => {
+  // Fetch all articles data from AEM content repository
+  const { data } = await aemServiceInstance.getFragment(
+    "indigenousEiArticlesQuery"
+  );
+ 
+  // Fetch dictionary terms for translations
+  // These terms are used throughout the site for consistent language
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+ 
+  const pages = data.sclabsPageV1List.items;
+ 
+  // Find the specific page data matching the current URL parameter
+  // Filters the full page list to find the matching article
+  const pageData = pages.filter((page) => {
+    return (
+      (locale === "en" ? page.scPageNameEn : page.scPageNameFr)
+        .split("/")
+        .at(-1) === params.id
+    );
+  });
+ 
+  // Return 404 if page data isn't found
+  // This handles cases where an invalid article ID is requested
+  Iif (!pageData || !pageData.length) {
+    return {
+      notFound: true,
+    };
+  }
+ 
+  // Return props object with all necessary data for page rendering
+  return {
+    props: {
+      key: params.id,
+      locale: locale,
+      pageData: pageData[0],
+      dictionary: dictionary.dictionaryV1List,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      // Include necessary translation namespaces for the page
+      ...(await serverSideTranslations(locale, ["common", "vc"])),
+    },
+    // Configure ISR (Incremental Static Regeneration) if enabled
+    // Allows pages to be regenerated after deployment when content changes
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/projects/transforming-ei-indigenous-peoples/index.html b/main/coverage/lcov-report/pages/projects/transforming-ei-indigenous-peoples/index.html new file mode 100644 index 0000000000..089bb131f4 --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/transforming-ei-indigenous-peoples/index.html @@ -0,0 +1,131 @@ + + + + + + Code coverage report for pages/projects/transforming-ei-indigenous-peoples + + + + + + + + + +
+
+

All files pages/projects/transforming-ei-indigenous-peoples

+
+ +
+ 0% + Statements + 0/65 +
+ + +
+ 0% + Branches + 0/97 +
+ + +
+ 0% + Functions + 0/10 +
+ + +
+ 0% + Lines + 0/62 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileStatementsBranchesFunctionsLines
[id].js +
+
0%0/320%0/200%0/60%0/30
index.js +
+
0%0/330%0/770%0/40%0/32
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/projects/transforming-ei-indigenous-peoples/index.js.html b/main/coverage/lcov-report/pages/projects/transforming-ei-indigenous-peoples/index.js.html new file mode 100644 index 0000000000..9520cac9ce --- /dev/null +++ b/main/coverage/lcov-report/pages/projects/transforming-ei-indigenous-peoples/index.js.html @@ -0,0 +1,1438 @@ + + + + + + Code coverage report for pages/projects/transforming-ei-indigenous-peoples/index.js + + + + + + + + + +
+
+

All files / pages/projects/transforming-ei-indigenous-peoples index.js

+
+ +
+ 0% + Statements + 0/33 +
+ + +
+ 0% + Branches + 0/77 +
+ + +
+ 0% + Functions + 0/4 +
+ + +
+ 0% + Lines + 0/32 +
+ + +
+

+ Press n or j to go to the next uncovered block, b, p or k for the previous block. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
// Import Next.js core components for head management and image optimization
+import Head from "next/head";
+import Image from "next/image";
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { useEffect, useState } from "react";
+import aemServiceInstance from "../../../services/aemServiceInstance";
+import { Layout } from "../../../components/organisms/Layout";
+import { ProjectInfo } from "../../../components/atoms/ProjectInfo";
+import { Heading } from "../../../components/molecules/Heading";
+import TextRender from "../../../components/text_node_renderer/TextRender";
+import { ExploreUpdates } from "../../../components/organisms/ExploreUpdates";
+import { ExploreProjects } from "../../../components/organisms/ExploreProjects";
+import { createBreadcrumbs } from "../../../lib/utils/createBreadcrumbs";
+import stageDictionary from "../../../lib/utils/stageDictionary";
+import { sortUpdatesByDate } from "../../../lib/utils/sortUpdatesByDate";
+import { getDictionaryTerm } from "../../../lib/utils/getDictionaryTerm";
+import { shuffle } from "../../../lib/utils/shuffle";
+import { filterItems } from "../../../lib/utils/filterItems";
+ 
+/**
+ * Component for the EI (Employment Insurance) Indigenous Overview page
+ * Serves as the main landing page for Indigenous-specific EI information
+ *
+ * This component presents comprehensive information about EI services and programs
+ * specifically designed for Indigenous communities, including:
+ * - Project overview and current status
+ * - Key information and updates
+ * - Related projects and resources
+ * - Bilingual content support (English/French)
+ */
+export default function EiIndigenousOverview(props) {
+  // Initialize primary page data state
+  // Contains main content, metadata, and project information from AEM
+  const [pageData] = useState(props.pageData.item);
+ 
+  // Sort updates by date for chronological display
+  // Updates don't need state as they don't change after initial sort
+  const updatesData = sortUpdatesByDate(props.updatesData);
+ 
+  // Initialize state for all related projects
+  const [allProjects] = useState(props.allProjects);
+ 
+  // Filter dictionary to only include status-related terms
+  // These terms are used in the ProjectInfo component to display project status
+  const [filteredDictionary] = useState(
+    props.dictionary.items.filter(
+      (item) =>
+        item.scId === "STARTED" ||
+        item.scId === "ENDED" ||
+        item.scId === "PROJECT-STAGE" ||
+        item.scId === "SUMMARY"
+    )
+  );
+ 
+  // Initialize Adobe Analytics tracking
+  // Tracks page views and user interactions for analytics reporting
+  useEffect(() => {
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+  }, []);
+ 
+  return (
+    <>
+      {/* Main layout wrapper with language-specific configuration
+          Provides consistent site structure and navigation */}
+      <Layout
+        locale={props.locale}
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        <Head>
+          {/* 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[2].scImageEn._publishUrl}
+          />
+          <meta
+            property="og:image:alt"
+            content={
+              props.locale === "en"
+                ? pageData.scFragments[2].scImageAltTextEn
+                : pageData.scFragments[2].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[2].scImageEn._publishUrl}
+          />
+          <meta
+            property="twitter:image:alt"
+            content={
+              props.locale === "en"
+                ? pageData.scFragments[2].scImageAltTextEn
+                : pageData.scFragments[2].scImageAltTextFr
+            }
+          />
+        </Head>
+ 
+        {/* Main content container with hero section */}
+        <div className="layout-container">
+          <section aria-labelledby="pageMainTitle">
+            {/* Two-column grid layout for desktop view */}
+            <div className="flex flex-col break-words lg:grid lg:grid-cols-2">
+              {/* Page title spanning both columns */}
+              <div className="col-span-2">
+                <Heading
+                  tabIndex="-1"
+                  id="pageMainTitle"
+                  title={
+                    props.locale === "en"
+                      ? pageData.scTitleEn
+                      : pageData.scTitleFr
+                  }
+                />
+              </div>
+ 
+              {/* Feature image - hidden on mobile, shown on desktop */}
+              <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">
+                    <Image
+                      src={
+                        props.locale === "en"
+                          ? pageData.scFragments[2].scImageEn._publishUrl
+                          : pageData.scFragments[2].scImageFr._publishUrl
+                      }
+                      alt={
+                        props.locale === "en"
+                          ? pageData.scFragments[2].scImageAltTextEn
+                          : pageData.scFragments[2].scImageAltTextFr
+                      }
+                      width={pageData.scFragments[2].scImageEn.width}
+                      height={pageData.scFragments[2].scImageEn.height}
+                      priority // Load image with high priority for above-the-fold content
+                      sizes="33vw"
+                      quality={100}
+                    />
+                  </div>
+                </div>
+              </div>
+ 
+              {/* Introduction paragraph */}
+              <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>
+ 
+              {/* Project information component displaying key project details */}
+              <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[0].scContentEn.json[0].content[0]
+                          .value + " "
+                      : pageData.scFragments[0].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.scLabProjectSummaryEn.json[0].content[0].value
+                      : pageData.scLabProjectSummaryFr.json[0].content[0].value
+                  }
+                />
+              </div>
+            </div>
+          </section>
+        </div>
+ 
+        {/* Main content text section
+            Uses grid layout for responsive column sizing */}
+        <div className="layout-container mt-[48px] mb-24 grid grid-cols-12">
+          <div className="col-span-12 lg:col-span-7">
+            <TextRender
+              data={
+                props.locale === "en"
+                  ? pageData.scFragments[0].scContentEn.json.slice(5)
+                  : pageData.scFragments[0].scContentFr.json.slice(5)
+              }
+            />
+          </div>
+        </div>
+ 
+        {/* Conditional rendering of updates section if updates exist */}
+        {props.updatesData.length !== 0 ? (
+          <ExploreUpdates
+            locale={props.locale}
+            updatesData={sortUpdatesByDate(updatesData)}
+            dictionary={props.dictionary}
+            heading={
+              props.locale === "en"
+                ? `${pageData.scTitleEn} ${getDictionaryTerm(
+                    props.dictionary.items,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )}`
+                : `${getDictionaryTerm(
+                    props.dictionary.items,
+                    "PROJECT-UPDATES",
+                    props.locale
+                  )} ${pageData.scTitleFr}`
+            }
+            linkLabel={`${getDictionaryTerm(
+              props.dictionary.items,
+              "DICTIONARY-SEE-ALL-UPDATES-PROJECT",
+              props.locale
+            )}`}
+            href={
+              props.locale === "en"
+                ? `/en/updates?project=${pageData.scTitleEn}`
+                : `/fr/mises-a-jour?projet=${pageData.scTitleFr}`
+            }
+          />
+        ) : null}
+ 
+        {/* Related projects section
+            Shows up to 3 related projects, excluding the current project */}
+        <ExploreProjects
+          heading={getDictionaryTerm(
+            props.dictionary.items,
+            "EXPLORE-OTHER-PROJECTS",
+            props.locale
+          )}
+          locale={props.locale}
+          projects={filterItems(allProjects, pageData.scId).slice(0, 3)}
+        />
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Next.js getStaticProps function to fetch data at build time
+ * Retrieves all necessary page data from AEM content repository
+ *
+ * @param {Object} context Contains locale information for internationalization
+ * @returns {Object} Props for the page component including all required data
+ */
+export const getStaticProps = async ({ locale }) => {
+  // Fetch main page content and structure from AEM
+  const { data: pageData } = await aemServiceInstance.getFragment(
+    "indigenousEiQuery"
+  );
+ 
+  // Fetch dictionary terms for consistent translations across the site
+  const { data: dictionary } = await aemServiceInstance.getFragment(
+    "dictionaryQuery"
+  );
+ 
+  // Fetch all projects data for the related projects section
+  const { data: allProjects } = await aemServiceInstance.getFragment(
+    "projectQuery"
+  );
+ 
+  // Return props object with all necessary data and configuration
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      pageData: pageData.sclabsPageV1ByPath,
+      updatesData: pageData.sclabsPageV1ByPath.item.scLabProjectUpdates,
+      dictionary: dictionary.dictionaryV1List,
+      allProjects: shuffle(allProjects.sclabsPageV1List.items),
+      // Include necessary translation configuration
+      ...(await serverSideTranslations(locale, ["common"])),
+    },
+    // Configure ISR (Incremental Static Regeneration) if enabled
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/main/coverage/lcov-report/pages/updates.js.html b/main/coverage/lcov-report/pages/updates.js.html new file mode 100644 index 0000000000..ab10ddc20b --- /dev/null +++ b/main/coverage/lcov-report/pages/updates.js.html @@ -0,0 +1,823 @@ + + + + + + Code coverage report for pages/updates.js + + + + + + + + + +
+
+

All files / pages updates.js

+
+ +
+ 0% + Statements + 0/55 +
+ + +
+ 0% + Branches + 0/28 +
+ + +
+ 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. +

+ +
+
+

+
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  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  +  + 
// Import required dependencies for internationalization and routing
+import { serverSideTranslations } from "next-i18next/serverSideTranslations";
+import { Layout } from "../components/organisms/Layout";
+import { useEffect, useState } from "react";
+import Card from "../components/molecules/Card";
+import { sortUpdatesByDate } from "../lib/utils/sortUpdatesByDate";
+import PageHead from "../components/fragment_renderer/PageHead";
+import { MultiSelectField } from "../components/atoms/MultiSelectField";
+import { createBreadcrumbs } from "../lib/utils/createBreadcrumbs";
+import { getDictionaryTerm } from "../lib/utils/getDictionaryTerm";
+import { useRouter } from "next/router";
+ 
+/**
+ * Updates Page Component
+ * Displays a filterable list of project updates
+ * Supports bilingual content and project-based filtering
+ */
+export default function UpdatesPage(props) {
+  const router = useRouter(); // Next.js router for query params
+  const pageData = props.pageData?.item; // Page content from AEM
+  const updatesData = props.updatesData; // Updates data for all projects
+  const dictionary = props.dictionary; // Translation dictionary
+  // State for managing selected filter options
+  const [selectedOptions, setSelectedOptions] = useState([]);
+ 
+  /**
+   * Extracts unique project IDs and creates select options for filtering
+   * @param {Array} arr - Array of update objects
+   * @returns {Array} Array of formatted options for MultiSelectField
+   */
+  const getSelectOptionsFromUpdateData = (arr) => {
+    // Use Set to track unique project IDs
+    const seen = new Set();
+    // Reduce array to unique project entries
+    let reducedArray = arr.reduce((acc, obj) => {
+      Iif (!seen.has(obj.scLabProject.scId)) {
+        seen.add(obj.scLabProject.scId);
+        acc.push(obj);
+      }
+      return acc;
+    }, []);
+    // Format options for the MultiSelectField component with bilingual labels
+    let optionsArray = reducedArray.map((option) => {
+      return {
+        id: option.scLabProject.scId,
+        label:
+          props.locale === "en"
+            ? option.scLabProject.scTermEn
+            : option.scLabProject.scTermFr,
+        value: option.scLabProject.scId,
+      };
+    });
+    return optionsArray;
+  };
+ 
+  /**
+   * Filters updates based on selected project options
+   * @param {Array} updates - Array of all updates
+   * @param {Array} selectedOptions - Array of selected filter options
+   * @returns {Array} Filtered updates array
+   */
+  const filterUpdates = (updates, selectedOptions) => {
+    // If no filters selected, return all updates
+    Iif (selectedOptions.length === 0) return updates;
+    // Create Set of selected project IDs for efficient lookup
+    const selectedIds = new Set(selectedOptions.map((option) => option.id));
+    // Return updates matching selected projects
+    return updates.filter((update) =>
+      selectedIds.has(update.scLabProject.scId)
+    );
+  };
+ 
+  /**
+   * Maps filtered and sorted updates to Card components
+   * Includes project name and posting date for each update
+   */
+  const updatesCards = filterUpdates(
+    sortUpdatesByDate(updatesData),
+    selectedOptions
+  ).map((update) => {
+    return (
+      <li key={update.scId} className="grid col-span-12 bg-white list-none">
+        <Card
+          customStyling="py-8 border-x-0 border-t-0 border-b-2 !shadow-none rounded-none"
+          cardHeadingStyling="!text-mobileh2 lg:!text-h2l pl-0 no-underline !pt-0 !mt-0"
+          // Bilingual title and link handling
+          title={props.locale === "en" ? update.scTitleEn : update.scTitleFr}
+          href={
+            props.locale === "en" ? update.scPageNameEn : update.scPageNameFr
+          }
+          // Custom HTML description with project name and date
+          htmlDesc={
+            <div className="flex flex-col lg:pt-5">
+              <span className="flex flex-row">
+                <p className="text-multi-neutrals-grey100 font-semibold whitespace-nowrap">
+                  {props.locale === "en" ? "Project:" : "Projet :"}
+                </p>
+                <p className="mt-0 pl-1">
+                  {props.locale === "en"
+                    ? update.scLabProject.scTermEn
+                    : update.scLabProject.scTermFr}
+                </p>
+              </span>
+              <span className="flex flex-row">
+                <p className="text-multi-neutrals-grey100 font-semibold">
+                  {getDictionaryTerm(dictionary, "POSTED-ON", props.locale)}
+                </p>
+                <p className="mt-0 pl-1">{`${update.scDateModifiedOverwrite}`}</p>
+              </span>
+            </div>
+          }
+        />
+      </li>
+    );
+  });
+ 
+  /**
+   * Effect to handle Adobe Analytics and URL query parameters
+   * Sets initial filter based on URL query if present
+   */
+  useEffect(() => {
+    // Initialize Adobe Analytics if configured
+    Iif (props.adobeAnalyticsUrl) {
+      window.adobeDataLayer = window.adobeDataLayer || [];
+      window.adobeDataLayer.push({ event: "pageLoad" });
+    }
+    // Get available filter options
+    const options = getSelectOptionsFromUpdateData(updatesData);
+    // Handle URL query parameters once router is ready
+    Iif (router.isReady) {
+      // Get project query parameter based on language
+      const routerQuery =
+        props.locale === "en" ? router.query.project : router.query.projet;
+      // Find matching options for the query parameter
+      const selectedOptionsFromQueryString = options.filter(
+        (option) => option.label === routerQuery
+      );
+      console.log(
+        "Selected options from query string:",
+        selectedOptionsFromQueryString
+      );
+      // Set initial filter state based on URL query
+      setSelectedOptions(selectedOptionsFromQueryString);
+    }
+  }, [router.isReady, setSelectedOptions]);
+ 
+  return (
+    <>
+      <Layout
+        locale={props.locale}
+        // Alternate language URL for language toggle
+        langUrl={
+          props.locale === "en" ? pageData.scPageNameFr : pageData.scPageNameEn
+        }
+        dateModifiedOverride={pageData.scDateModifiedOverwrite}
+        // Generate breadcrumb navigation
+        breadcrumbItems={createBreadcrumbs(
+          pageData.scBreadcrumbParentPages,
+          props.locale
+        )}
+      >
+        <PageHead locale={props.locale} pageData={pageData} />
+ 
+        {/* Hero section with background image */}
+        <div
+          id="pageMainTitle"
+          className="flex flex-col justify-center content-center mt-16 h-[182px] bg-multi-blue-blue70 bg-no-repeat sm:bg-right-bottom"
+          style={{
+            backgroundImage: `url(/981A606F-CEBD-4DD1-BDF5-FC7DD4834CCA_4_5005_c.jpeg)`,
+            backgroundSize: "cover",
+          }}
+        >
+          <div className="layout-container text-white">
+            {/* Bilingual page title and description */}
+            <h1 className="m-0">
+              {props.locale === "en"
+                ? pageData.scFragments[0].scContentEn.json[0].content[0].value
+                : pageData.scFragments[0].scContentFr.json[0].content[0].value}
+            </h1>
+            <p>
+              {" "}
+              {props.locale === "en"
+                ? pageData.scFragments[0].scContentEn.json[1].content[0].value
+                : pageData.scFragments[0].scContentFr.json[1].content[0].value}
+            </p>
+          </div>
+        </div>
+ 
+        <div className="layout-container">
+          {/* Project filter dropdown */}
+          <div className="my-12 max-w-[350px]">
+            <MultiSelectField
+              label={getDictionaryTerm(dictionary, "FILTER-BY", props.locale)}
+              placeholder={getDictionaryTerm(dictionary, "ALL", props.locale)}
+              boldLabel
+              options={getSelectOptionsFromUpdateData(updatesData)}
+              onChange={setSelectedOptions}
+              selectedOptions={selectedOptions}
+            />
+          </div>
+          {/* Updates list */}
+          <div className="grid grid-cols-12">
+            <ul className="col-span-12 xl:col-span-8">{updatesCards}</ul>
+          </div>
+        </div>
+      </Layout>
+    </>
+  );
+}
+ 
+/**
+ * Next.js Static Site Generation (SSG) function
+ * Fetches all required data at build time
+ * Enables Incremental Static Regeneration (ISR) if configured
+ */
+export const getStaticProps = async ({ locale }) => {
+  // Fetch main page content from AEM
+  const { data: pageData } = await fetch(
+    `${process.env.AEM_BASE_URL}/getSclUpdatesV1`
+  ).then((res) => res.json());
+ 
+  // Fetch all updates data
+  const { data: updatesData } = await fetch(
+    `${process.env.AEM_BASE_URL}/getSclAllUpdatesV1`
+  ).then((res) => res.json());
+ 
+  // Fetch translation dictionary
+  const { data: dictionary } = await fetch(
+    `${process.env.AEM_BASE_URL}/getSclDictionaryV1`
+  ).then((res) => res.json());
+ 
+  // Return props for page rendering
+  return {
+    props: {
+      locale: locale,
+      adobeAnalyticsUrl: process.env.ADOBE_ANALYTICS_URL ?? null,
+      pageData: pageData.sclabsPageV1ByPath,
+      updatesData: updatesData.sclabsPageV1List.items,
+      dictionary: dictionary.dictionaryV1List.items,
+      // Include translations for common terms and multiSelect component
+      ...(await serverSideTranslations(locale, ["common", "multiSelect"])),
+    },
+    // Enable ISR if configured in environment
+    revalidate: process.env.ISR_ENABLED === "true" ? 10 : false,
+  };
+};
+ 
+ +
+
+ + + + + + + + \ 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",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); diff --git a/main/coverage/lcov-report/sort-arrow-sprite.png b/main/coverage/lcov-report/sort-arrow-sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed68316eb3f65dec9063332d2f69bf3093bbfab GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^>_9Bd!3HEZxJ@+%Qh}Z>jv*C{$p!i!8j}?a+@3A= zIAGwzjijN=FBi!|L1t?LM;Q;gkwn>2cAy-KV{dn nf0J1DIvEHQu*n~6U}x}qyky7vi4|9XhBJ7&`njxgN@xNA8m%nc literal 0 HcmV?d00001 diff --git a/main/coverage/lcov-report/sorter.js b/main/coverage/lcov-report/sorter.js new file mode 100644 index 0000000000..2bb296a8ca --- /dev/null +++ b/main/coverage/lcov-report/sorter.js @@ -0,0 +1,196 @@ +/* eslint-disable */ +var addSorting = (function() { + 'use strict'; + var cols, + currentSort = { + index: 0, + desc: false + }; + + // returns the summary table element + function getTable() { + return document.querySelector('.coverage-summary'); + } + // returns the thead element of the summary table + function getTableHeader() { + return getTable().querySelector('thead tr'); + } + // returns the tbody element of the summary table + function getTableBody() { + return getTable().querySelector('tbody'); + } + // returns the th element for nth column + function getNthColumn(n) { + return getTableHeader().querySelectorAll('th')[n]; + } + + function onFilterInput() { + const searchValue = document.getElementById('fileSearch').value; + const rows = document.getElementsByTagName('tbody')[0].children; + for (let i = 0; i < rows.length; i++) { + const row = rows[i]; + if ( + row.textContent + .toLowerCase() + .includes(searchValue.toLowerCase()) + ) { + row.style.display = ''; + } else { + row.style.display = 'none'; + } + } + } + + // loads the search box + function addSearchBox() { + var template = document.getElementById('filterTemplate'); + var templateClone = template.content.cloneNode(true); + templateClone.getElementById('fileSearch').oninput = onFilterInput; + template.parentElement.appendChild(templateClone); + } + + // loads all columns + function loadColumns() { + var colNodes = getTableHeader().querySelectorAll('th'), + colNode, + cols = [], + col, + i; + + for (i = 0; i < colNodes.length; i += 1) { + colNode = colNodes[i]; + col = { + key: colNode.getAttribute('data-col'), + sortable: !colNode.getAttribute('data-nosort'), + type: colNode.getAttribute('data-type') || 'string' + }; + cols.push(col); + if (col.sortable) { + col.defaultDescSort = col.type === 'number'; + colNode.innerHTML = + colNode.innerHTML + ''; + } + } + return cols; + } + // attaches a data attribute to every tr element with an object + // of data values keyed by column name + function loadRowData(tableRow) { + var tableCols = tableRow.querySelectorAll('td'), + colNode, + col, + data = {}, + i, + val; + for (i = 0; i < tableCols.length; i += 1) { + colNode = tableCols[i]; + col = cols[i]; + val = colNode.getAttribute('data-value'); + if (col.type === 'number') { + val = Number(val); + } + data[col.key] = val; + } + return data; + } + // loads all row data + function loadData() { + var rows = getTableBody().querySelectorAll('tr'), + i; + + for (i = 0; i < rows.length; i += 1) { + rows[i].data = loadRowData(rows[i]); + } + } + // sorts the table using the data for the ith column + function sortByIndex(index, desc) { + var key = cols[index].key, + sorter = function(a, b) { + a = a.data[key]; + b = b.data[key]; + return a < b ? -1 : a > b ? 1 : 0; + }, + finalSorter = sorter, + tableBody = document.querySelector('.coverage-summary tbody'), + rowNodes = tableBody.querySelectorAll('tr'), + rows = [], + i; + + if (desc) { + finalSorter = function(a, b) { + return -1 * sorter(a, b); + }; + } + + for (i = 0; i < rowNodes.length; i += 1) { + rows.push(rowNodes[i]); + tableBody.removeChild(rowNodes[i]); + } + + rows.sort(finalSorter); + + for (i = 0; i < rows.length; i += 1) { + tableBody.appendChild(rows[i]); + } + } + // removes sort indicators for current column being sorted + function removeSortIndicators() { + var col = getNthColumn(currentSort.index), + cls = col.className; + + cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); + col.className = cls; + } + // adds sort indicators for current column being sorted + function addSortIndicators() { + getNthColumn(currentSort.index).className += currentSort.desc + ? ' sorted-desc' + : ' sorted'; + } + // adds event listeners for all sorter widgets + function enableUI() { + var i, + el, + ithSorter = function ithSorter(i) { + var col = cols[i]; + + return function() { + var desc = col.defaultDescSort; + + if (currentSort.index === i) { + desc = !currentSort.desc; + } + sortByIndex(i, desc); + removeSortIndicators(); + currentSort.index = i; + currentSort.desc = desc; + addSortIndicators(); + }; + }; + for (i = 0; i < cols.length; i += 1) { + if (cols[i].sortable) { + // add the click event handler on the th so users + // dont have to click on those tiny arrows + el = getNthColumn(i).querySelector('.sorter').parentElement; + if (el.addEventListener) { + el.addEventListener('click', ithSorter(i)); + } else { + el.attachEvent('onclick', ithSorter(i)); + } + } + } + } + // adds sorting functionality to the UI + return function() { + if (!getTable()) { + return; + } + cols = loadColumns(); + loadData(); + addSearchBox(); + addSortIndicators(); + enableUI(); + }; +})(); + +window.addEventListener('load', addSorting); diff --git a/main/coverage/lcov.info b/main/coverage/lcov.info new file mode 100644 index 0000000000..4474737841 --- /dev/null +++ b/main/coverage/lcov.info @@ -0,0 +1,5677 @@ +TN: +SF:components/index.js +FNF:0 +FNH:0 +DA:1,0 +LF:1 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/ActionButton.js +FN:8,ActionButton +FN:39,(anonymous_3) +FN:42,(anonymous_4) +FNF:3 +FNH:3 +FNDA:76,ActionButton +FNDA:71,(anonymous_3) +FNDA:1,(anonymous_4) +DA:1,25 +DA:2,25 +DA:3,25 +DA:8,78 +DA:11,76 +DA:13,76 +DA:15,76 +DA:17,76 +DA:19,76 +DA:21,76 +DA:24,76 +DA:39,71 +DA:40,71 +DA:41,71 +DA:42,63 +DA:43,1 +DA:44,1 +DA:45,1 +DA:118,25 +LF:19 +LH:19 +BRDA:24,0,0,10 +BRDA:24,0,1,61 +BRDA:26,1,0,5 +BRDA:26,1,1,56 +BRDA:28,2,0,3 +BRDA:28,2,1,53 +BRDA:30,3,0,1 +BRDA:30,3,1,52 +BRDA:32,4,0,1 +BRDA:32,4,1,51 +BRDA:34,5,0,2 +BRDA:34,5,1,49 +BRDA:41,6,0,63 +BRDA:43,7,0,1 +BRDA:43,8,0,1 +BRDA:43,8,1,0 +BRDA:52,9,0,28 +BRDA:54,10,0,6 +BRDA:54,10,1,22 +BRDA:59,11,0,28 +BRDA:59,11,1,20 +BRDA:66,12,0,0 +BRDA:66,12,1,28 +BRDA:66,13,0,28 +BRDA:66,13,1,3 +BRDA:71,14,0,3 +BRDA:71,14,1,25 +BRDA:71,15,0,28 +BRDA:71,15,1,3 +BRDA:80,16,0,0 +BRDA:80,16,1,43 +BRDA:81,17,0,12 +BRDA:81,17,1,31 +BRDA:87,18,0,43 +BRDA:87,18,1,15 +BRDA:90,19,0,13 +BRDA:90,19,1,30 +BRDA:92,20,0,0 +BRDA:92,20,1,43 +BRDA:92,21,0,43 +BRDA:92,21,1,0 +BRDA:95,22,0,6 +BRDA:95,22,1,37 +BRDA:95,23,0,43 +BRDA:95,23,1,6 +BRDA:108,24,0,0 +BRDA:108,24,1,43 +BRDA:108,25,0,43 +BRDA:108,25,1,0 +BRF:49 +BRH:42 +end_of_record +TN: +SF:components/atoms/ActionButton.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:3,1 +DA:10,5 +DA:11,3 +DA:12,3 +DA:13,3 +DA:14,5 +DA:16,1 +DA:22,1 +DA:29,1 +DA:36,1 +DA:43,1 +LF:12 +LH:12 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/Alert.js +FN:11,Alert +FNF:1 +FNH:1 +FNDA:2,Alert +DA:1,1 +DA:2,1 +DA:3,1 +DA:11,3 +DA:41,1 +LF:5 +LH:5 +BRDA:16,0,0,0 +BRDA:16,0,1,2 +BRDA:21,1,0,0 +BRF:3 +BRH:1 +end_of_record +TN: +SF:components/atoms/Alert.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:3,1 +DA:10,4 +DA:12,1 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/Banner.js +FN:8,(anonymous_4) +FNF:1 +FNH:1 +FNDA:4,(anonymous_4) +DA:1,9 +DA:2,9 +DA:8,9 +DA:28,9 +DA:40,9 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/Banner.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,4 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/Breadcrumb.js +FN:9,Breadcrumb +FN:23,(anonymous_3) +FNF:2 +FNH:2 +FNDA:16,Breadcrumb +FNDA:9,(anonymous_3) +DA:1,9 +DA:2,9 +DA:3,9 +DA:4,9 +DA:9,16 +DA:24,9 +DA:50,9 +LF:7 +LH:7 +BRDA:22,0,0,7 +BRDA:22,0,1,8 +BRF:2 +BRH:2 +end_of_record +TN: +SF:components/atoms/Breadcrumb.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:3,1 +DA:10,4 +DA:11,3 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/CheckBox.js +FN:6,CheckBox +FN:29,(anonymous_3) +FNF:2 +FNH:2 +FNDA:68,CheckBox +FNDA:6,(anonymous_3) +DA:1,4 +DA:6,72 +DA:12,68 +DA:30,6 +DA:59,4 +LF:5 +LH:5 +BRDA:7,0,0,64 +BRDA:8,1,0,8 +BRDA:9,2,0,68 +BRDA:12,3,0,12 +BRDA:12,3,1,56 +BRDA:20,4,0,50 +BRDA:20,4,1,18 +BRDA:31,5,0,4 +BRDA:31,5,1,2 +BRDA:37,6,0,0 +BRDA:37,6,1,68 +BRDA:44,7,0,0 +BRDA:44,7,1,68 +BRDA:45,8,0,0 +BRDA:45,8,1,68 +BRDA:48,9,0,0 +BRDA:48,9,1,68 +BRF:17 +BRH:13 +end_of_record +TN: +SF:components/atoms/CheckBox.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:20,7 +DA:21,1 +DA:29,6 +DA:30,1 +DA:39,1 +DA:40,1 +DA:49,1 +DA:50,1 +LF:11 +LH:11 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/DSButton.js +FN:6,DSButton +FNF:1 +FNH:1 +FNDA:10,DSButton +DA:1,13 +DA:2,13 +DA:6,11 +DA:15,10 +DA:17,10 +DA:19,10 +DA:21,10 +DA:23,10 +DA:25,10 +DA:100,13 +LF:10 +LH:10 +BRDA:7,0,0,4 +BRDA:8,1,0,0 +BRDA:9,2,0,0 +BRDA:10,3,0,8 +BRDA:26,4,0,6 +BRDA:26,4,1,4 +BRDA:28,5,0,1 +BRDA:28,5,1,3 +BRDA:30,6,0,1 +BRDA:30,6,1,2 +BRDA:32,7,0,1 +BRDA:32,7,1,1 +BRDA:34,8,0,1 +BRDA:34,8,1,0 +BRDA:39,9,0,8 +BRDA:48,10,0,0 +BRDA:48,10,1,8 +BRDA:48,11,0,8 +BRDA:48,11,1,0 +BRDA:55,12,0,0 +BRDA:55,12,1,8 +BRDA:61,13,0,0 +BRDA:61,13,1,8 +BRDA:61,14,0,8 +BRDA:61,14,1,0 +BRDA:71,15,0,2 +BRDA:71,15,1,0 +BRDA:78,16,0,0 +BRDA:78,16,1,2 +BRDA:78,17,0,2 +BRDA:78,17,1,0 +BRDA:87,18,0,0 +BRDA:87,18,1,2 +BRDA:87,19,0,2 +BRDA:87,19,1,0 +BRF:35 +BRH:22 +end_of_record +TN: +SF:components/atoms/DSButton.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:3,1 +DA:10,2 +DA:11,1 +DA:12,2 +DA:13,2 +DA:14,2 +DA:15,2 +DA:17,1 +DA:24,1 +DA:33,1 +DA:40,1 +DA:48,1 +DA:55,1 +LF:14 +LH:14 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/DateModified.js +FN:4,DateModified +FNF:1 +FNH:1 +FNDA:15,DateModified +DA:1,9 +DA:2,9 +DA:4,16 +DA:5,15 +DA:7,15 +DA:8,15 +DA:9,8 +DA:10,2 +DA:11,6 +DA:28,9 +LF:10 +LH:10 +BRDA:4,0,0,6 +BRDA:8,1,0,8 +BRDA:9,2,0,2 +BRDA:9,2,1,6 +BRDA:19,3,0,7 +BRF:5 +BRH:5 +end_of_record +TN: +SF:components/atoms/DateModified.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:3,1 +DA:10,5 +DA:12,1 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/ErrorLabel.js +FN:6,ErrorLabel +FNF:1 +FNH:1 +FNDA:5,ErrorLabel +DA:1,16 +DA:6,7 +DA:16,16 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/ErrorLabel.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,5 +DA:12,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/HTMList.js +FN:3,HTMList +FN:4,(anonymous_3) +FN:7,(anonymous_4) +FN:8,(anonymous_5) +FNF:4 +FNH:4 +FNDA:7,HTMList +FNDA:7,(anonymous_3) +FNDA:18,(anonymous_4) +FNDA:13,(anonymous_5) +DA:1,1 +DA:3,7 +DA:4,7 +DA:5,7 +DA:7,18 +DA:9,13 +DA:21,1 +LF:7 +LH:7 +BRDA:3,0,0,5 +BRDA:15,1,0,6 +BRF:2 +BRH:2 +end_of_record +TN: +SF:components/atoms/Image.js +FN:3,Image +FNF:1 +FNH:1 +FNDA:23,Image +DA:1,16 +DA:3,23 +DA:4,23 +DA:13,16 +LF:4 +LH:4 +BRDA:4,0,0,20 +BRDA:4,1,0,4 +BRF:2 +BRH:2 +end_of_record +TN: +SF:components/atoms/Image.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:3,1 +DA:7,1 +DA:8,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:17,1 +DA:23,1 +DA:30,1 +DA:36,1 +LF:12 +LH:12 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/Link.js +FN:6,Link +FN:42,onKeyDown +FNF:2 +FNH:1 +FNDA:356,Link +FNDA:0,onKeyDown +DA:2,14 +DA:6,357 +DA:8,356 +DA:9,356 +DA:11,1 +DA:13,1 +DA:15,1 +DA:17,1 +DA:19,66 +DA:21,66 +DA:23,273 +DA:25,273 +DA:27,1 +DA:29,1 +DA:31,1 +DA:33,1 +DA:35,13 +DA:37,13 +DA:40,356 +DA:43,0 +DA:76,14 +LF:21 +LH:20 +BRDA:6,0,0,330 +BRDA:6,1,0,3 +BRDA:9,2,0,1 +BRDA:9,2,1,1 +BRDA:9,2,2,66 +BRDA:9,2,3,273 +BRDA:9,2,4,1 +BRDA:9,2,5,1 +BRDA:9,2,6,13 +BRDA:40,3,0,356 +BRDA:40,3,1,348 +BRDA:47,4,0,8 +BRDA:52,5,0,8 +BRDA:52,5,1,8 +BRDA:66,6,0,348 +BRDA:66,6,1,348 +BRDA:68,7,0,0 +BRDA:68,7,1,348 +BRF:18 +BRH:17 +end_of_record +TN: +SF:components/atoms/Link.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:3,1 +DA:10,5 +DA:11,3 +DA:12,3 +DA:13,3 +DA:14,3 +DA:15,3 +DA:17,1 +DA:23,1 +DA:30,1 +DA:37,1 +DA:44,1 +DA:51,1 +LF:14 +LH:14 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/MultiSelectField.js +FN:6,MultiSelectField +FN:9,(anonymous_6) +FN:10,(anonymous_7) +FN:16,(anonymous_8) +FN:25,(anonymous_9) +FN:36,(anonymous_10) +FN:38,(anonymous_11) +FN:41,(anonymous_12) +FN:96,(anonymous_13) +FN:103,(anonymous_14) +FN:107,(anonymous_15) +FN:111,(anonymous_16) +FN:116,(anonymous_17) +FN:121,(anonymous_18) +FN:128,(anonymous_19) +FN:135,(anonymous_20) +FN:140,(anonymous_21) +FNF:17 +FNH:0 +FNDA:0,MultiSelectField +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +FNDA:0,(anonymous_18) +FNDA:0,(anonymous_19) +FNDA:0,(anonymous_20) +FNDA:0,(anonymous_21) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:13,0 +DA:16,0 +DA:25,0 +DA:35,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:42,0 +DA:96,0 +DA:103,0 +DA:107,0 +DA:111,0 +DA:116,0 +DA:121,0 +DA:128,0 +DA:135,0 +DA:140,0 +DA:155,0 +DA:159,0 +LF:28 +LH:0 +BRDA:67,0,0,0 +BRDA:67,0,1,0 +BRDA:73,1,0,0 +BRDA:73,1,1,0 +BRDA:101,2,0,0 +BRDA:101,2,1,0 +BRDA:133,3,0,0 +BRDA:133,3,1,0 +BRF:8 +BRH:0 +end_of_record +TN: +SF:components/atoms/MultiSelectField.stories.js +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +DA:20,0 +DA:21,0 +LF:5 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/MultiTextField.js +FN:8,MultiTextField +FN:41,(anonymous_3) +FNF:2 +FNH:2 +FNDA:4,MultiTextField +FNDA:1,(anonymous_3) +DA:1,3 +DA:2,3 +DA:3,3 +DA:8,5 +DA:9,4 +DA:41,1 +DA:57,3 +LF:7 +LH:7 +BRDA:8,0,0,4 +BRDA:8,1,0,3 +BRDA:14,2,0,0 +BRDA:14,2,1,4 +BRDA:19,3,0,1 +BRDA:19,3,1,3 +BRDA:23,4,0,0 +BRDA:23,4,1,4 +BRDA:33,5,0,0 +BRDA:33,5,1,4 +BRDA:36,6,0,0 +BRDA:36,6,1,4 +BRF:12 +BRH:8 +end_of_record +TN: +SF:components/atoms/MultiTextField.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:20,4 +DA:21,1 +DA:29,1 +DA:30,1 +DA:39,1 +DA:40,1 +LF:9 +LH:9 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/ProjectInfo.js +FN:4,ProjectInfo +FNF:1 +FNH:1 +FNDA:8,ProjectInfo +DA:1,7 +DA:2,7 +DA:4,9 +DA:44,7 +LF:4 +LH:4 +BRDA:12,0,0,8 +BRDA:12,0,1,8 +BRDA:18,1,0,8 +BRDA:18,1,1,2 +BRF:4 +BRH:4 +end_of_record +TN: +SF:components/atoms/ProjectInfo.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:3,1 +DA:10,4 +DA:12,1 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/RadioButton.js +FN:6,RadioButton +FN:22,(anonymous_3) +FN:25,(anonymous_4) +FNF:3 +FNH:3 +FNDA:16,RadioButton +FNDA:3,(anonymous_3) +FNDA:1,(anonymous_4) +DA:1,2 +DA:6,17 +DA:7,16 +DA:23,3 +DA:26,1 +DA:27,1 +DA:28,1 +DA:29,0 +DA:31,1 +DA:51,2 +LF:10 +LH:9 +BRDA:6,0,0,6 +BRDA:7,1,0,15 +BRDA:7,1,1,1 +BRDA:12,2,0,1 +BRDA:12,2,1,1 +BRDA:26,3,0,1 +BRDA:28,4,0,0 +BRDA:41,5,0,4 +BRDA:41,5,1,12 +BRDA:42,6,0,4 +BRDA:42,6,1,12 +BRF:11 +BRH:10 +end_of_record +TN: +SF:components/atoms/RadioButton.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,12 +DA:12,1 +DA:20,2 +DA:21,1 +DA:30,3 +DA:31,1 +DA:40,3 +DA:41,1 +DA:50,3 +DA:51,1 +LF:13 +LH:13 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/RadioField.js +FN:6,RadioField +FN:24,(anonymous_3) +FN:42,(anonymous_4) +FNF:3 +FNH:2 +FNDA:8,RadioField +FNDA:1,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,4 +DA:6,10 +DA:7,8 +DA:25,1 +DA:42,0 +DA:50,4 +LF:6 +LH:5 +BRDA:6,0,0,4 +BRDA:6,1,0,2 +BRDA:7,2,0,8 +BRDA:7,2,1,0 +BRDA:15,3,0,0 +BRDA:15,3,1,8 +BRDA:26,4,0,0 +BRDA:26,4,1,1 +BRDA:32,5,0,0 +BRDA:32,5,1,8 +BRDA:39,6,0,0 +BRDA:39,6,1,8 +BRF:12 +BRH:7 +end_of_record +TN: +SF:components/atoms/RadioField.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:20,7 +DA:21,1 +DA:29,4 +DA:30,1 +DA:39,1 +DA:40,1 +LF:9 +LH:9 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/SearchBar.js +FN:6,SearchBar +FNF:1 +FNH:1 +FNDA:2,SearchBar +DA:1,1 +DA:6,3 +DA:33,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/SearchBar.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:3,1 +DA:10,4 +DA:12,1 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/SelectField.js +FN:5,SelectField +FN:15,(anonymous_3) +FN:49,(anonymous_4) +FN:60,(anonymous_5) +FNF:4 +FNH:3 +FNDA:2,SelectField +FNDA:6,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:8,(anonymous_5) +DA:1,1 +DA:2,1 +DA:3,1 +DA:5,4 +DA:6,2 +DA:8,2 +DA:14,2 +DA:15,2 +DA:16,6 +DA:17,6 +DA:49,0 +DA:61,8 +DA:84,1 +LF:13 +LH:12 +BRDA:5,0,0,2 +BRDA:8,1,0,0 +BRDA:8,1,1,2 +BRDA:14,2,0,2 +BRDA:24,3,0,0 +BRDA:24,3,1,2 +BRDA:29,4,0,0 +BRDA:29,4,1,2 +BRDA:33,5,0,0 +BRDA:33,5,1,2 +BRDA:40,6,0,0 +BRDA:40,6,1,2 +BRDA:43,7,0,0 +BRDA:43,7,1,2 +BRDA:48,8,0,0 +BRDA:48,8,1,2 +BRDA:67,9,0,0 +BRDA:67,9,1,2 +BRF:18 +BRH:10 +end_of_record +TN: +SF:components/atoms/SelectField.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:20,4 +DA:21,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/TableOfContents.js +FN:3,TableOfContents +FN:9,(anonymous_3) +FNF:2 +FNH:2 +FNDA:2,TableOfContents +FNDA:2,(anonymous_3) +DA:1,1 +DA:3,3 +DA:10,2 +DA:25,1 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/TableOfContents.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:3,1 +DA:10,4 +DA:12,1 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/TextField.js +FN:8,TextField +FN:61,(anonymous_3) +FNF:2 +FNH:2 +FNDA:6,TextField +FNDA:2,(anonymous_3) +DA:1,3 +DA:2,3 +DA:3,3 +DA:8,7 +DA:9,6 +DA:11,6 +DA:61,2 +DA:70,3 +LF:8 +LH:8 +BRDA:8,0,0,6 +BRDA:8,1,0,6 +BRDA:11,2,0,3 +BRDA:11,2,1,3 +BRDA:19,3,0,0 +BRDA:19,3,1,6 +BRDA:24,4,0,1 +BRDA:24,4,1,5 +BRDA:28,5,0,0 +BRDA:28,5,1,6 +BRDA:35,6,0,0 +BRDA:35,6,1,6 +BRDA:46,7,0,0 +BRDA:46,7,1,6 +BRDA:49,8,0,0 +BRDA:49,8,1,6 +BRDA:50,9,0,0 +BRDA:50,9,1,6 +BRDA:60,10,0,0 +BRDA:60,10,1,6 +BRF:20 +BRH:13 +end_of_record +TN: +SF:components/atoms/TextField.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:20,4 +DA:21,1 +DA:29,2 +DA:30,1 +DA:39,3 +DA:40,1 +LF:9 +LH:9 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/atoms/UpdateInfo.js +FN:4,UpdateInfo +FNF:1 +FNH:0 +FNDA:0,UpdateInfo +DA:1,0 +DA:2,0 +DA:4,0 +DA:32,0 +LF:4 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/FragmentRender.js +FN:37,(anonymous_2) +FN:221,FragmentRender +FN:223,(anonymous_4) +FNF:3 +FNH:3 +FNDA:17,(anonymous_2) +FNDA:11,FragmentRender +FNDA:17,(anonymous_4) +DA:2,4 +DA:5,4 +DA:6,4 +DA:7,4 +DA:8,4 +DA:9,4 +DA:10,4 +DA:11,4 +DA:18,4 +DA:37,4 +DA:38,17 +DA:41,1 +DA:68,3 +DA:71,2 +DA:92,1 +DA:128,0 +DA:133,1 +DA:146,6 +DA:155,5 +DA:167,1 +DA:207,0 +DA:221,11 +DA:223,11 +DA:225,17 +DA:228,17 +DA:229,0 +DA:233,17 +DA:246,10 +LF:28 +LH:25 +BRDA:38,0,0,1 +BRDA:38,0,1,3 +BRDA:38,0,2,1 +BRDA:38,0,3,6 +BRDA:38,0,4,5 +BRDA:38,0,5,1 +BRDA:38,0,6,0 +BRDA:43,1,0,1 +BRDA:43,1,1,0 +BRDA:47,2,0,1 +BRDA:47,2,1,0 +BRDA:56,3,0,1 +BRDA:56,3,1,0 +BRDA:60,4,0,1 +BRDA:60,4,1,0 +BRDA:68,5,0,2 +BRDA:68,5,1,1 +BRDA:68,5,2,0 +BRDA:73,6,0,1 +BRDA:73,6,1,1 +BRDA:76,7,0,1 +BRDA:76,7,1,1 +BRDA:77,8,0,1 +BRDA:77,8,1,0 +BRDA:84,9,0,1 +BRDA:84,9,1,1 +BRDA:94,10,0,1 +BRDA:94,10,1,0 +BRDA:97,11,0,1 +BRDA:97,11,1,0 +BRDA:98,12,0,1 +BRDA:98,12,1,0 +BRDA:105,13,0,1 +BRDA:105,13,1,0 +BRDA:110,14,0,1 +BRDA:110,14,1,0 +BRDA:114,15,0,1 +BRDA:114,15,1,0 +BRDA:120,16,0,1 +BRDA:120,16,1,0 +BRDA:135,17,0,1 +BRDA:135,17,1,0 +BRDA:139,18,0,1 +BRDA:139,18,1,0 +BRDA:148,19,0,1 +BRDA:148,19,1,5 +BRDA:159,20,0,1 +BRDA:159,20,1,4 +BRDA:162,21,0,1 +BRDA:162,21,1,4 +BRDA:170,22,0,1 +BRDA:170,22,1,0 +BRDA:174,23,0,1 +BRDA:174,23,1,0 +BRDA:182,24,0,1 +BRDA:182,24,1,0 +BRDA:189,25,0,1 +BRDA:189,25,1,0 +BRDA:193,26,0,1 +BRDA:193,26,1,0 +BRDA:199,27,0,1 +BRDA:199,27,1,0 +BRDA:228,28,0,0 +BRF:63 +BRH:40 +end_of_record +TN: +SF:components/fragment_renderer/FragmentRender.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:3,1 +DA:5,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,1 +DA:19,1 +DA:21,1 +DA:89,1 +DA:682,1 +DA:1214,1 +DA:1272,1 +DA:1329,1 +DA:1348,1 +LF:18 +LH:18 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/PageHead.js +FN:3,PageHead +FNF:1 +FNH:0 +FNDA:0,PageHead +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRDA:8,0,0,0 +BRDA:8,0,1,0 +BRDA:15,1,0,0 +BRDA:15,1,1,0 +BRDA:26,2,0,0 +BRDA:26,2,1,0 +BRDA:36,3,0,0 +BRDA:36,3,1,0 +BRDA:43,4,0,0 +BRDA:43,4,1,0 +BRDA:49,5,0,0 +BRDA:49,5,1,0 +BRDA:62,6,0,0 +BRDA:62,6,1,0 +BRDA:82,7,0,0 +BRDA:82,7,1,0 +BRDA:91,8,0,0 +BRDA:91,8,1,0 +BRDA:99,9,0,0 +BRDA:99,9,1,0 +BRDA:111,10,0,0 +BRDA:111,10,1,0 +BRDA:124,11,0,0 +BRDA:124,11,1,0 +BRDA:133,12,0,0 +BRDA:133,12,1,0 +BRDA:142,13,0,0 +BRDA:142,13,1,0 +BRDA:154,14,0,0 +BRDA:154,14,1,0 +BRF:30 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/ArticleCTA.js +FN:3,ArticleCTA +FNF:1 +FNH:1 +FNDA:2,ArticleCTA +DA:1,5 +DA:3,6 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/ArticleCTA.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,1 +DA:12,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/BasicTextWithImage.js +FN:4,BasicTextWithImage +FNF:1 +FNH:1 +FNDA:4,BasicTextWithImage +DA:1,6 +DA:2,6 +DA:4,5 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/BasicTextWithImage.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,1 +DA:12,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/Button.js +FN:3,Button +FNF:1 +FNH:1 +FNDA:7,Button +DA:1,5 +DA:3,7 +DA:5,7 +LF:3 +LH:3 +BRDA:5,0,0,0 +BRDA:5,0,1,7 +BRDA:7,1,0,4 +BRDA:7,1,1,3 +BRDA:9,2,0,3 +BRDA:9,2,1,0 +BRF:6 +BRH:4 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/Button.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:20,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/ImageFragment.js +FN:3,ImageFragment +FNF:1 +FNH:0 +FNDA:0,ImageFragment +DA:1,0 +DA:3,0 +LF:2 +LH:0 +BRDA:9,0,0,0 +BRDA:9,0,1,0 +BRDA:14,1,0,0 +BRDA:14,1,1,0 +BRDA:25,2,0,0 +BRDA:25,2,1,0 +BRF:6 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/ImageFragment.stories.js +FNF:0 +FNH:0 +DA:1,0 +DA:2,0 +DA:4,0 +LF:3 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/ImageVerticalLineContent.js +FN:5,ImageVerticalLineContent +FNF:1 +FNH:1 +FNDA:5,ImageVerticalLineContent +DA:1,6 +DA:2,6 +DA:3,6 +DA:5,6 +LF:4 +LH:4 +BRDA:33,0,0,3 +BRDA:33,0,1,2 +BRF:2 +BRH:2 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/ImageVerticalLineContent.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:6,1 +DA:21,1 +DA:22,1 +DA:23,1 +DA:76,1 +LF:9 +LH:9 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/ImageWithCollapse.js +FN:4,ImageWithCollapse +FNF:1 +FNH:1 +FNDA:3,ImageWithCollapse +DA:1,5 +DA:2,5 +DA:4,7 +LF:3 +LH:3 +BRDA:27,0,0,3 +BRDA:27,0,1,0 +BRDA:34,1,0,3 +BRDA:34,1,1,0 +BRF:4 +BRH:2 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/ImageWithCollapse.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:6,1 +DA:13,2 +DA:14,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/QuoteVerticalLineContent.js +FN:3,QuoteVerticalLineContent +FNF:1 +FNH:1 +FNDA:2,QuoteVerticalLineContent +DA:1,5 +DA:3,6 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/QuoteVerticalLineContent.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:12,1 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/TextContent.js +FN:3,TextContent +FNF:1 +FNH:1 +FNDA:7,TextContent +DA:1,5 +DA:3,6 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/TextContent.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,1 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/TextWithImage.js +FN:4,TextWithImage +FNF:1 +FNH:1 +FNDA:6,TextWithImage +DA:1,5 +DA:2,5 +DA:4,8 +DA:16,6 +DA:43,0 +LF:5 +LH:4 +BRDA:16,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:components/fragment_renderer/fragment_components/TextWithImage.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:6,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:17,1 +DA:37,1 +DA:90,1 +LF:11 +LH:11 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/CTA.js +FN:5,CTA +FN:13,(anonymous_2) +FNF:2 +FNH:2 +FNDA:5,CTA +FNDA:5,(anonymous_2) +DA:1,6 +DA:2,6 +DA:3,6 +DA:5,7 +DA:13,5 +LF:5 +LH:5 +BRDA:10,0,0,3 +BRDA:29,1,0,0 +BRDA:36,2,0,5 +BRF:3 +BRH:2 +end_of_record +TN: +SF:components/molecules/CTA.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:3,1 +DA:10,4 +DA:11,1 +DA:23,2 +DA:24,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/Card.js +FN:11,(anonymous_4) +FNF:1 +FNH:1 +FNDA:32,(anonymous_4) +DA:1,10 +DA:2,10 +DA:3,10 +DA:4,10 +DA:5,10 +DA:11,10 +DA:12,32 +DA:19,32 +DA:105,10 +DA:172,31 +LF:10 +LH:10 +BRDA:19,0,0,32 +BRDA:19,0,1,29 +BRDA:30,1,0,15 +BRDA:30,1,1,15 +BRDA:54,2,0,0 +BRDA:54,2,1,30 +BRDA:55,3,0,0 +BRDA:55,3,1,0 +BRDA:66,4,0,1 +BRDA:66,4,1,29 +BRDA:77,5,0,0 +BRDA:77,5,1,30 +BRDA:85,6,0,12 +BRDA:89,7,0,0 +BRDA:89,7,1,30 +BRF:15 +BRH:10 +end_of_record +TN: +SF:components/molecules/Card.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:3,1 +DA:5,1 +DA:12,4 +DA:13,2 +DA:14,1 +DA:15,1 +DA:16,1 +DA:18,1 +DA:26,1 +DA:35,1 +DA:44,1 +DA:52,1 +LF:14 +LH:14 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/Collapse.js +FN:3,Collapse +FNF:1 +FNH:1 +FNDA:11,Collapse +DA:1,9 +DA:3,12 +DA:4,11 +DA:5,11 +DA:26,9 +LF:5 +LH:5 +BRDA:3,0,0,6 +BRF:1 +BRH:1 +end_of_record +TN: +SF:components/molecules/Collapse.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,2 +DA:12,1 +DA:19,2 +DA:20,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/ContextualAlert.js +FN:3,ContextualAlert +FNF:1 +FNH:1 +FNDA:9,ContextualAlert +DA:1,3 +DA:3,9 +DA:4,9 +DA:5,9 +DA:6,9 +DA:7,9 +DA:18,9 +DA:21,7 +DA:30,7 +DA:38,7 +DA:77,3 +LF:11 +LH:11 +BRDA:21,0,0,2 +BRDA:21,0,1,5 +BRDA:23,1,0,1 +BRDA:23,1,1,4 +BRDA:25,2,0,2 +BRDA:25,2,1,2 +BRDA:30,3,0,2 +BRDA:30,3,1,5 +BRDA:32,4,0,1 +BRDA:32,4,1,4 +BRDA:34,5,0,2 +BRDA:34,5,1,2 +BRDA:38,6,0,0 +BRDA:38,6,1,7 +BRDA:53,7,0,0 +BRDA:63,8,0,0 +BRF:16 +BRH:13 +end_of_record +TN: +SF:components/molecules/ContextualAlert.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:9,4 +DA:10,2 +DA:11,2 +DA:12,2 +DA:14,1 +DA:33,1 +DA:43,1 +DA:53,1 +LF:10 +LH:10 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/CopyToClipboard.js +FN:5,CopyToClipboard +FN:20,(anonymous_3) +FNF:2 +FNH:2 +FNDA:4,CopyToClipboard +FNDA:1,(anonymous_3) +DA:1,2 +DA:2,2 +DA:3,2 +DA:5,5 +DA:6,4 +DA:20,1 +DA:39,2 +LF:7 +LH:7 +BRDA:5,0,0,2 +BRDA:5,1,0,4 +BRDA:6,2,0,4 +BRDA:6,2,1,0 +BRF:4 +BRH:3 +end_of_record +TN: +SF:components/molecules/CopyToClipboard.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,5 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/Details.js +FN:6,Details +FNF:1 +FNH:1 +FNDA:11,Details +DA:1,2 +DA:6,11 +DA:19,2 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/Details.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,6 +DA:12,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/ErrorBox.js +FN:7,ErrorBox +FN:23,(anonymous_3) +FN:29,(anonymous_4) +FNF:3 +FNH:3 +FNDA:3,ErrorBox +FNDA:9,(anonymous_3) +FNDA:1,(anonymous_4) +DA:1,1 +DA:2,1 +DA:7,4 +DA:24,9 +DA:29,1 +DA:43,1 +LF:6 +LH:6 +BRDA:7,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:components/molecules/ErrorBox.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:23,11 +DA:25,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/FeedbackWidget.js +FN:15,(anonymous_7) +FN:31,(anonymous_8) +FN:42,(anonymous_9) +FN:43,(anonymous_10) +FN:57,setFocusAfterSubmit +FN:71,(anonymous_12) +FN:176,(anonymous_13) +FN:201,(anonymous_14) +FN:272,(anonymous_15) +FN:273,(anonymous_16) +FNF:10 +FNH:5 +FNDA:10,(anonymous_7) +FNDA:7,(anonymous_8) +FNDA:1,(anonymous_9) +FNDA:1,(anonymous_10) +FNDA:0,setFocusAfterSubmit +FNDA:1,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +DA:1,10 +DA:2,10 +DA:3,10 +DA:4,10 +DA:5,10 +DA:6,10 +DA:7,10 +DA:8,10 +DA:9,10 +DA:15,10 +DA:21,10 +DA:22,10 +DA:23,10 +DA:24,10 +DA:25,10 +DA:26,10 +DA:27,10 +DA:29,10 +DA:31,10 +DA:32,7 +DA:33,2 +DA:34,2 +DA:39,10 +DA:43,1 +DA:44,1 +DA:46,0 +DA:47,0 +DA:49,1 +DA:50,1 +DA:53,1 +DA:58,0 +DA:61,10 +DA:62,10 +DA:63,10 +DA:71,10 +DA:73,1 +DA:75,1 +DA:77,1 +DA:79,1 +DA:81,1 +DA:88,1 +DA:92,1 +DA:94,1 +DA:96,0 +DA:105,0 +DA:106,0 +DA:107,0 +DA:108,0 +DA:110,0 +DA:113,0 +DA:114,0 +DA:115,0 +DA:117,1 +DA:176,0 +DA:202,0 +DA:203,0 +DA:272,0 +DA:274,0 +DA:300,10 +DA:307,10 +LF:60 +LH:43 +BRDA:32,0,0,2 +BRDA:44,1,0,0 +BRDA:44,1,1,1 +BRDA:94,2,0,0 +BRDA:94,2,1,1 +BRDA:105,3,0,0 +BRDA:105,3,1,0 +BRDA:105,4,0,0 +BRDA:105,4,1,0 +BRDA:123,5,0,8 +BRDA:123,5,1,2 +BRDA:138,6,0,0 +BRDA:138,6,1,8 +BRDA:140,7,0,0 +BRDA:140,7,1,0 +BRDA:143,8,0,0 +BRDA:143,8,1,0 +BRDA:151,9,0,0 +BRDA:151,9,1,0 +BRDA:256,10,0,2 +BRDA:256,10,1,6 +BRF:21 +BRH:8 +end_of_record +TN: +SF:components/molecules/FeedbackWidget.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,8 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/Filter.js +FN:7,Filter +FN:19,(anonymous_3) +FNF:2 +FNH:2 +FNDA:3,Filter +FNDA:9,(anonymous_3) +DA:1,1 +DA:2,1 +DA:7,4 +DA:20,9 +DA:40,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/Filter.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,12 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/Heading.js +FN:3,Heading +FNF:1 +FNH:1 +FNDA:11,Heading +DA:1,15 +DA:3,12 +DA:4,11 +DA:27,15 +LF:4 +LH:4 +BRDA:12,0,0,11 +BRDA:12,0,1,1 +BRF:2 +BRH:2 +end_of_record +TN: +SF:components/molecules/Heading.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:3,1 +DA:10,3 +DA:11,1 +DA:13,1 +DA:18,1 +LF:6 +LH:6 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/List.js +FN:6,List +FN:10,(anonymous_3) +FNF:2 +FNH:2 +FNDA:2,List +FNDA:8,(anonymous_3) +DA:1,1 +DA:6,3 +DA:7,2 +DA:12,8 +DA:15,8 +DA:16,8 +DA:31,1 +LF:7 +LH:7 +BRDA:15,0,0,6 +BRF:1 +BRH:1 +end_of_record +TN: +SF:components/molecules/List.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,5 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/MainBand.js +FN:4,MainBand +FN:21,(anonymous_2) +FNF:2 +FNH:2 +FNDA:13,MainBand +FNDA:273,(anonymous_2) +DA:1,9 +DA:2,9 +DA:4,13 +DA:5,13 +DA:22,273 +LF:5 +LH:5 +BRDA:26,0,0,13 +BRDA:26,0,1,260 +BRF:2 +BRH:2 +end_of_record +TN: +SF:components/molecules/Menu.js +FN:9,Menu +FN:29,(anonymous_3) +FN:44,(anonymous_4) +FN:63,(anonymous_5) +FNF:4 +FNH:3 +FNDA:4,Menu +FNDA:1,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:12,(anonymous_5) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:9,4 +DA:11,4 +DA:12,4 +DA:13,4 +DA:29,1 +DA:44,0 +DA:64,12 +DA:65,12 +DA:67,12 +DA:94,1 +LF:14 +LH:13 +BRDA:46,0,0,1 +BRDA:46,0,1,3 +BRDA:59,1,0,1 +BRDA:59,1,1,3 +BRDA:72,2,0,0 +BRDA:72,2,1,12 +BRDA:77,3,0,0 +BRDA:77,3,1,12 +BRDA:78,4,0,0 +BRDA:78,4,1,0 +BRF:10 +BRH:6 +end_of_record +TN: +SF:components/molecules/Menu.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,6 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/OptionalListField.js +FN:9,OptionalListField +FN:11,(anonymous_3) +FN:22,(anonymous_4) +FNF:3 +FNH:3 +FNDA:5,OptionalListField +FNDA:1,(anonymous_3) +FNDA:5,(anonymous_4) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:9,5 +DA:10,5 +DA:11,5 +DA:12,1 +DA:13,0 +DA:15,1 +DA:18,1 +DA:19,0 +DA:22,5 +DA:23,5 +DA:24,0 +DA:26,5 +DA:27,5 +DA:29,0 +DA:79,1 +LF:19 +LH:15 +BRDA:9,0,0,4 +BRDA:10,1,0,5 +BRDA:10,1,1,2 +BRDA:12,2,0,0 +BRDA:12,2,1,1 +BRDA:18,3,0,0 +BRDA:23,4,0,0 +BRDA:26,5,0,5 +BRDA:34,6,0,4 +BRDA:60,7,0,4 +BRDA:60,7,1,1 +BRDA:60,8,0,5 +BRDA:60,8,1,2 +BRDA:60,8,2,4 +BRDA:63,9,0,0 +BRDA:63,9,1,4 +BRF:16 +BRH:12 +end_of_record +TN: +SF:components/molecules/OptionalListField.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:6,1 +DA:22,1 +DA:23,1 +DA:48,2 +DA:49,1 +DA:76,2 +DA:77,1 +DA:104,2 +DA:105,1 +DA:133,2 +DA:134,1 +LF:15 +LH:15 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/OptionalTextField.js +FN:12,OptionalTextField +FN:16,(anonymous_3) +FN:76,(anonymous_4) +FN:94,(anonymous_5) +FNF:4 +FNH:2 +FNDA:55,OptionalTextField +FNDA:3,(anonymous_3) +FNDA:0,(anonymous_4) +FNDA:0,(anonymous_5) +DA:1,2 +DA:2,2 +DA:3,2 +DA:4,2 +DA:5,2 +DA:6,2 +DA:7,2 +DA:12,54 +DA:13,55 +DA:14,55 +DA:15,55 +DA:16,55 +DA:17,3 +DA:18,0 +DA:19,0 +DA:21,3 +DA:22,3 +DA:25,3 +DA:26,0 +DA:106,2 +LF:20 +LH:17 +BRDA:12,0,0,54 +BRDA:13,1,0,55 +BRDA:13,1,1,54 +BRDA:17,2,0,0 +BRDA:17,2,1,3 +BRDA:25,3,0,0 +BRDA:31,4,0,55 +BRDA:47,5,0,55 +BRDA:61,6,0,4 +BRDA:61,6,1,51 +BRDA:61,7,0,55 +BRDA:61,7,1,54 +BRDA:61,7,2,52 +BRDA:62,8,0,2 +BRDA:62,8,1,2 +BRDA:76,9,0,0 +BRDA:76,9,1,2 +BRDA:94,10,0,0 +BRDA:94,10,1,2 +BRF:19 +BRH:15 +end_of_record +TN: +SF:components/molecules/OptionalTextField.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:20,1 +DA:21,1 +DA:32,1 +DA:33,1 +DA:45,2 +DA:46,1 +DA:59,2 +DA:60,1 +DA:72,2 +DA:73,1 +LF:13 +LH:13 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/Quote.js +FN:6,Quote +FNF:1 +FNH:1 +FNDA:2,Quote +DA:1,1 +DA:6,3 +DA:21,1 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/Quote.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,5 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/SubFooterBand.js +FN:50,(anonymous_1) +FN:54,SubFooterBand +FN:78,(anonymous_3) +FN:98,(anonymous_4) +FNF:4 +FNH:3 +FNDA:13,(anonymous_1) +FNDA:13,SubFooterBand +FNDA:0,(anonymous_3) +FNDA:65,(anonymous_4) +DA:1,9 +DA:2,9 +DA:4,9 +DA:27,9 +DA:50,9 +DA:51,13 +DA:54,13 +DA:79,0 +DA:99,65 +LF:9 +LH:8 +BRDA:51,0,0,0 +BRDA:51,0,1,13 +BRDA:59,1,0,0 +BRDA:59,1,1,13 +BRDA:60,2,0,0 +BRDA:60,2,1,13 +BRDA:63,3,0,0 +BRDA:77,4,0,0 +BRDA:77,4,1,13 +BRDA:83,5,0,0 +BRDA:83,5,1,0 +BRDA:87,6,0,0 +BRDA:87,6,1,0 +BRDA:103,7,0,13 +BRDA:103,7,1,52 +BRDA:108,8,0,0 +BRDA:108,8,1,65 +BRDA:126,9,0,0 +BRDA:126,9,1,13 +BRDA:131,10,0,0 +BRDA:131,10,1,13 +BRF:21 +BRH:9 +end_of_record +TN: +SF:components/molecules/SurveyCTA.js +FN:3,(anonymous_1) +FNF:1 +FNH:1 +FNDA:3,(anonymous_1) +DA:1,2 +DA:3,5 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/SurveyCTA.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,4 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/TextButtonField.js +FN:7,TextButtonField +FNF:1 +FNH:1 +FNDA:6,TextButtonField +DA:1,1 +DA:2,1 +DA:7,7 +DA:10,6 +DA:11,5 +DA:44,1 +LF:6 +LH:6 +BRDA:10,0,0,5 +BRDA:11,1,0,2 +BRDA:11,1,1,3 +BRDA:18,2,0,0 +BRDA:26,3,0,6 +BRDA:26,3,1,0 +BRF:6 +BRH:4 +end_of_record +TN: +SF:components/molecules/TextButtonField.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,8 +DA:12,3 +DA:13,3 +DA:14,3 +DA:16,1 +DA:24,1 +DA:31,1 +DA:39,1 +LF:11 +LH:11 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/molecules/TopNavBar.js +FN:4,TopNavBar +FN:18,(anonymous_6) +FN:22,(anonymous_7) +FN:24,(anonymous_8) +FNF:4 +FNH:1 +FNDA:15,TopNavBar +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:1,9 +DA:2,9 +DA:4,17 +DA:14,15 +DA:15,15 +DA:18,15 +DA:19,0 +DA:22,15 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +LF:12 +LH:7 +BRDA:19,0,0,0 +BRDA:19,0,1,0 +BRDA:57,1,0,0 +BRDA:57,1,1,15 +BRDA:63,2,0,0 +BRDA:65,3,0,0 +BRDA:65,3,1,0 +BRDA:80,4,0,0 +BRDA:80,4,1,15 +BRDA:110,5,0,0 +BRDA:110,5,1,15 +BRDA:114,6,0,0 +BRDA:114,6,1,0 +BRDA:119,7,0,0 +BRDA:119,7,1,0 +BRDA:126,8,0,0 +BRDA:126,8,1,0 +BRDA:133,9,0,0 +BRDA:133,9,1,0 +BRF:19 +BRH:3 +end_of_record +TN: +SF:components/molecules/TopNavBar.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,6 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/organisms/ExploreProjects.js +FN:5,(anonymous_5) +FN:37,ExploreProjects +FN:41,(anonymous_7) +FNF:3 +FNH:3 +FNDA:14,(anonymous_5) +FNDA:10,ExploreProjects +FNDA:14,(anonymous_7) +DA:1,7 +DA:2,7 +DA:5,7 +DA:6,14 +DA:37,10 +DA:39,10 +DA:41,9 +DA:42,14 +LF:8 +LH:8 +BRDA:14,0,0,9 +BRDA:14,0,1,5 +BRDA:19,1,0,9 +BRDA:19,1,1,5 +BRDA:25,2,0,9 +BRDA:25,2,1,5 +BRDA:26,3,0,9 +BRDA:26,3,1,5 +BRDA:28,4,0,9 +BRDA:28,4,1,5 +BRF:10 +BRH:10 +end_of_record +TN: +SF:components/organisms/ExploreProjects.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,3 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/organisms/ExploreUpdates.js +FN:6,ExploreUpdates +FN:14,(anonymous_3) +FNF:2 +FNH:2 +FNDA:7,ExploreUpdates +FNDA:12,(anonymous_3) +DA:1,8 +DA:2,8 +DA:3,8 +DA:4,8 +DA:6,8 +DA:14,7 +DA:15,12 +LF:7 +LH:7 +BRDA:20,0,0,2 +BRDA:20,0,1,10 +BRDA:21,1,0,2 +BRDA:21,1,1,10 +BRDA:26,2,0,2 +BRDA:26,2,1,10 +BRDA:29,3,0,2 +BRDA:29,3,1,10 +BRF:8 +BRH:8 +end_of_record +TN: +SF:components/organisms/ExploreUpdates.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,1 +DA:13,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/organisms/Feedback.js +FN:6,Feedback +FN:14,handleSubmit +FN:31,onYesClick +FN:36,setFocus +FN:37,(anonymous_6) +FN:127,(anonymous_7) +FN:134,(anonymous_8) +FNF:7 +FNH:1 +FNDA:12,Feedback +FNDA:0,handleSubmit +FNDA:0,onYesClick +FNDA:0,setFocus +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +DA:1,8 +DA:2,8 +DA:3,8 +DA:4,8 +DA:7,12 +DA:8,12 +DA:9,12 +DA:11,12 +DA:12,12 +DA:15,0 +DA:16,0 +DA:17,0 +DA:25,0 +DA:27,0 +DA:32,0 +DA:33,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:127,0 +DA:134,0 +DA:147,12 +LF:22 +LH:10 +BRDA:38,0,0,0 +BRDA:46,1,0,12 +BRDA:62,2,0,12 +BRDA:62,2,1,0 +BRDA:122,3,0,12 +BRDA:122,3,1,12 +BRF:6 +BRH:4 +end_of_record +TN: +SF:components/organisms/Footer.js +FN:31,(anonymous_2) +FNF:1 +FNH:1 +FNDA:13,(anonymous_2) +DA:2,9 +DA:3,9 +DA:4,9 +DA:5,9 +DA:7,9 +DA:31,14 +DA:88,9 +LF:7 +LH:7 +BRDA:41,0,0,13 +BRDA:43,1,0,13 +BRDA:47,2,0,0 +BRDA:47,2,1,13 +BRDA:47,3,0,13 +BRDA:47,3,1,0 +BRF:6 +BRH:4 +end_of_record +TN: +SF:components/organisms/Footer.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,1 +DA:12,1 +LF:5 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/organisms/HelpIcon.js +FN:5,(anonymous_1) +FN:7,(anonymous_2) +FN:8,(anonymous_3) +FNF:3 +FNH:1 +FNDA:9,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,8 +DA:2,8 +DA:3,8 +DA:5,10 +DA:6,9 +DA:7,9 +DA:8,9 +LF:7 +LH:7 +BRDA:30,0,0,9 +BRDA:43,1,0,0 +BRDA:43,1,1,0 +BRDA:67,2,0,0 +BRDA:67,2,1,0 +BRF:5 +BRH:1 +end_of_record +TN: +SF:components/organisms/HelpIcon.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:15,1 +DA:21,1 +DA:27,1 +LF:9 +LH:9 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/organisms/Layout.js +FN:15,(anonymous_2) +FNF:1 +FNH:1 +FNDA:12,(anonymous_2) +DA:1,8 +DA:2,8 +DA:3,8 +DA:4,8 +DA:5,8 +DA:6,8 +DA:7,8 +DA:8,8 +DA:9,8 +DA:10,8 +DA:15,15 +DA:32,12 +DA:33,12 +DA:34,12 +DA:157,8 +LF:15 +LH:15 +BRDA:33,0,0,0 +BRDA:33,0,1,12 +BRDA:35,1,0,12 +BRDA:35,1,1,0 +BRDA:35,2,0,12 +BRDA:35,2,1,12 +BRDA:55,3,0,0 +BRDA:55,3,1,12 +BRDA:77,4,0,12 +BRDA:77,4,1,0 +BRDA:92,5,0,12 +BRDA:92,5,1,0 +BRDA:105,6,0,12 +BRDA:105,6,1,0 +BRDA:126,7,0,2 +BRDA:126,7,1,10 +BRDA:126,8,0,12 +BRDA:126,8,1,2 +BRDA:132,9,0,12 +BRDA:132,9,1,0 +BRF:20 +BRH:13 +end_of_record +TN: +SF:components/organisms/Layout.stories.js +FN:9,(anonymous_5) +FNF:1 +FNH:1 +FNDA:7,(anonymous_5) +DA:1,1 +DA:2,1 +DA:4,1 +DA:9,1 +DA:27,6 +DA:28,4 +DA:30,1 +DA:35,1 +LF:8 +LH:8 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/organisms/PhaseBanner.js +FN:12,(anonymous_7) +FN:24,(anonymous_8) +FNF:2 +FNH:2 +FNDA:3,(anonymous_7) +FNDA:1,(anonymous_8) +DA:1,9 +DA:2,9 +DA:3,9 +DA:5,9 +DA:6,9 +DA:12,9 +DA:20,3 +DA:21,3 +DA:22,3 +DA:24,3 +DA:25,1 +DA:26,0 +DA:28,1 +DA:31,1 +DA:112,9 +DA:135,9 +LF:16 +LH:15 +BRDA:25,0,0,0 +BRDA:25,0,1,1 +BRDA:40,1,0,2 +BRDA:40,1,1,1 +BRDA:49,2,0,2 +BRDA:49,2,1,1 +BRDA:68,3,0,2 +BRDA:68,3,1,1 +BRF:8 +BRH:7 +end_of_record +TN: +SF:components/organisms/PhaseBanner.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,2 +DA:12,2 +DA:14,1 +DA:19,1 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/organisms/ReportAProblem.js +FN:14,ReportAProblem +FN:20,(anonymous_3) +FN:84,(anonymous_4) +FNF:3 +FNH:2 +FNDA:9,ReportAProblem +FNDA:3,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:14,7 +DA:15,9 +DA:16,8 +DA:18,8 +DA:20,8 +DA:22,3 +DA:25,3 +DA:26,3 +DA:27,24 +DA:28,21 +DA:29,1 +DA:35,3 +DA:37,3 +DA:40,3 +DA:41,5 +DA:42,5 +DA:46,3 +DA:47,3 +DA:51,3 +DA:52,0 +DA:62,3 +DA:73,3 +DA:74,21 +DA:78,3 +DA:88,0 +DA:91,3 +DA:92,1 +DA:95,3 +DA:373,1 +LF:38 +LH:36 +BRDA:27,0,0,21 +BRDA:28,1,0,1 +BRDA:51,2,0,0 +BRDA:51,2,1,3 +BRDA:91,3,0,1 +BRDA:105,4,0,1 +BRDA:105,4,1,7 +BRDA:125,5,0,1 +BRDA:350,6,0,2 +BRDA:350,6,1,5 +BRF:10 +BRH:9 +end_of_record +TN: +SF:components/organisms/ReportAProblem.stories.js +FNF:0 +FNH:0 +DA:1,1 +DA:2,1 +DA:4,1 +DA:11,10 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/text_node_renderer/TextRecur.jsx +FN:35,TextRecur +FN:60,(anonymous_3) +FNF:2 +FNH:2 +FNDA:516,TextRecur +FNDA:411,(anonymous_3) +DA:1,12 +DA:4,12 +DA:5,12 +DA:6,12 +DA:7,12 +DA:8,12 +DA:9,12 +DA:10,12 +DA:11,12 +DA:12,12 +DA:23,12 +DA:35,106 +DA:37,516 +DA:40,515 +DA:45,515 +DA:51,0 +DA:61,411 +LF:17 +LH:16 +BRDA:45,0,0,0 +BRDA:46,1,0,515 +BRDA:46,1,1,515 +BRDA:46,1,2,28 +BRDA:46,1,3,6 +BRDA:57,2,0,267 +BRDA:57,2,1,248 +BRDA:57,3,0,515 +BRDA:57,3,1,289 +BRF:9 +BRH:8 +end_of_record +TN: +SF:components/text_node_renderer/TextRender.jsx +FN:9,TextRender +FN:13,(anonymous_3) +FNF:2 +FNH:2 +FNDA:37,TextRender +FNDA:106,(anonymous_3) +DA:1,12 +DA:2,12 +DA:9,35 +DA:14,106 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/text_node_renderer/nodes/HeaderText.jsx +FN:3,HeaderText +FNF:1 +FNH:1 +FNDA:21,HeaderText +DA:1,12 +DA:3,12 +DA:4,21 +LF:3 +LH:3 +BRDA:9,0,0,2 +BRDA:9,0,1,0 +BRDA:15,1,0,4 +BRDA:15,1,1,6 +BRDA:21,2,0,8 +BRDA:21,2,1,1 +BRF:6 +BRH:5 +end_of_record +TN: +SF:components/text_node_renderer/nodes/LineBreak.jsx +FN:1,LineBreak +FNF:1 +FNH:1 +FNDA:22,LineBreak +DA:1,12 +DA:2,22 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/text_node_renderer/nodes/Link.jsx +FN:1,Link +FNF:1 +FNH:1 +FNDA:3,Link +DA:1,12 +LF:1 +LH:1 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/text_node_renderer/nodes/ListItem.jsx +FN:1,ListItem +FNF:1 +FNH:1 +FNDA:137,ListItem +DA:1,12 +LF:1 +LH:1 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/text_node_renderer/nodes/OrderedList.jsx +FN:1,UnorderedList +FNF:1 +FNH:1 +FNDA:2,UnorderedList +DA:1,12 +LF:1 +LH:1 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/text_node_renderer/nodes/Paragraph.jsx +FN:1,Paragraph +FNF:1 +FNH:1 +FNDA:63,Paragraph +DA:1,12 +LF:1 +LH:1 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/text_node_renderer/nodes/Span.jsx +FN:1,Span +FNF:1 +FNH:0 +FNDA:0,Span +DA:1,12 +LF:1 +LH:1 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/text_node_renderer/nodes/Text.jsx +FN:1,Text +FNF:1 +FNH:1 +FNDA:223,Text +DA:1,12 +DA:3,223 +LF:2 +LH:2 +BRF:0 +BRH:0 +end_of_record +TN: +SF:components/text_node_renderer/nodes/UnorderedList.jsx +FN:1,UnorderedList +FNF:1 +FNH:1 +FNDA:45,UnorderedList +DA:1,12 +LF:1 +LH:1 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/notify/postFeedbackToGcNotify.js +FN:1,postFeedbackToGcNotify +FNF:1 +FNH:0 +FNDA:0,postFeedbackToGcNotify +DA:1,1 +DA:2,0 +LF:2 +LH:1 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/notify/submitEmail.js +FN:3,(anonymous_3) +FN:32,(anonymous_4) +FNF:2 +FNH:1 +FNDA:1,(anonymous_3) +FNDA:0,(anonymous_4) +DA:1,2 +DA:3,2 +DA:11,1 +DA:29,1 +DA:32,2 +DA:42,0 +DA:64,0 +LF:7 +LH:5 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/utils/createBreadcrumbs.js +FN:1,(anonymous_1) +FN:2,(anonymous_2) +FNF:2 +FNH:2 +FNDA:6,(anonymous_1) +FNDA:6,(anonymous_2) +DA:1,6 +DA:2,6 +DA:3,6 +LF:3 +LH:3 +BRDA:5,0,0,0 +BRDA:5,0,1,6 +BRDA:7,1,0,0 +BRDA:7,1,1,6 +BRF:4 +BRH:2 +end_of_record +TN: +SF:lib/utils/filterItems.js +FN:1,(anonymous_1) +FN:3,(anonymous_2) +FNF:2 +FNH:2 +FNDA:6,(anonymous_1) +FNDA:6,(anonymous_2) +DA:1,6 +DA:3,6 +DA:4,6 +DA:6,6 +LF:4 +LH:4 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/utils/generateCollapseElements.js +FN:1,(anonymous_1) +FN:10,(anonymous_2) +FN:21,(anonymous_3) +FNF:3 +FNH:0 +FNDA:0,(anonymous_1) +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +DA:1,0 +DA:2,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:15,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:26,0 +DA:31,0 +DA:32,0 +DA:37,0 +DA:38,0 +DA:42,0 +LF:18 +LH:0 +BRDA:5,0,0,0 +BRDA:5,0,1,0 +BRDA:9,1,0,0 +BRDA:9,1,1,0 +BRDA:20,2,0,0 +BRDA:20,2,1,0 +BRDA:31,3,0,0 +BRDA:31,3,1,0 +BRDA:37,4,0,0 +BRF:9 +BRH:0 +end_of_record +TN: +SF:lib/utils/getAllUpdateIds.js +FN:1,getAllUpdateIds +FN:2,(anonymous_2) +FNF:2 +FNH:0 +FNDA:0,getAllUpdateIds +FNDA:0,(anonymous_2) +DA:1,0 +DA:2,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/utils/getDictionaryTerm.js +FN:1,(anonymous_1) +FN:2,(anonymous_2) +FNF:2 +FNH:2 +FNDA:28,(anonymous_1) +FNDA:358,(anonymous_2) +DA:1,28 +DA:2,358 +DA:3,28 +LF:3 +LH:3 +BRDA:3,0,0,2 +BRDA:3,0,1,26 +BRF:2 +BRH:2 +end_of_record +TN: +SF:lib/utils/maskEmail.js +FN:2,maskEmail +FNF:1 +FNH:1 +FNDA:1,maskEmail +DA:2,1 +DA:3,1 +DA:4,1 +DA:6,1 +DA:7,14 +DA:8,1 +DA:9,13 +DA:10,10 +DA:11,10 +DA:13,3 +DA:14,3 +DA:18,1 +LF:12 +LH:12 +BRDA:7,0,0,1 +BRDA:7,0,1,13 +BRDA:9,1,0,10 +BRDA:9,1,1,3 +BRDA:9,2,0,13 +BRDA:9,2,1,12 +BRDA:9,2,2,11 +BRF:7 +BRH:7 +end_of_record +TN: +SF:lib/utils/shuffle.js +FN:1,(anonymous_1) +FNF:1 +FNH:1 +FNDA:1,(anonymous_1) +DA:1,6 +DA:3,1 +DA:4,0 +DA:5,0 +DA:7,1 +LF:5 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/utils/sortUpdatesByDate.js +FN:1,(anonymous_1) +FN:2,(anonymous_2) +FNF:2 +FNH:2 +FNDA:7,(anonymous_1) +FNDA:5,(anonymous_2) +DA:1,7 +DA:2,7 +DA:3,5 +LF:3 +LH:3 +BRF:0 +BRH:0 +end_of_record +TN: +SF:lib/utils/stripFeedback.js +FN:1,stripFeedback +FNF:1 +FNH:1 +FNDA:7,stripFeedback +DA:1,7 +DA:3,7 +DA:9,7 +DA:15,7 +DA:21,7 +DA:25,7 +DA:30,7 +LF:7 +LH:7 +BRF:0 +BRH:0 +end_of_record +TN: +SF:middlewares/initMiddleware.js +FN:3,initMiddleware +FN:4,(anonymous_2) +FN:5,(anonymous_3) +FN:6,(anonymous_4) +FNF:4 +FNH:0 +FNDA:0,initMiddleware +FNDA:0,(anonymous_2) +FNDA:0,(anonymous_3) +FNDA:0,(anonymous_4) +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +LF:7 +LH:0 +BRDA:7,0,0,0 +BRF:1 +BRH:0 +end_of_record +TN: +SF:middlewares/joi.js +FN:11,validate +FN:12,(anonymous_2) +FN:19,(anonymous_3) +FNF:3 +FNH:3 +FNDA:1,validate +FNDA:1,(anonymous_2) +FNDA:2,(anonymous_3) +DA:1,1 +DA:2,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,0 +DA:18,1 +DA:19,1 +DA:20,2 +DA:22,1 +LF:12 +LH:11 +BRDA:11,0,0,0 +BRDA:15,1,0,0 +BRDA:15,1,1,1 +BRF:3 +BRH:1 +end_of_record +TN: +SF:pages/404.js +FN:10,error404 +FN:16,(anonymous_5) +FN:233,(anonymous_6) +FNF:3 +FNH:2 +FNDA:2,error404 +FNDA:1,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:10,1 +DA:11,2 +DA:12,2 +DA:13,2 +DA:14,2 +DA:16,2 +DA:17,1 +DA:18,0 +DA:19,0 +DA:23,1 +DA:24,0 +DA:26,1 +DA:31,2 +DA:32,1 +DA:233,1 +DA:234,0 +DA:236,0 +LF:25 +LH:20 +BRDA:17,0,0,0 +BRDA:18,1,0,0 +BRDA:18,1,1,0 +BRDA:23,2,0,0 +BRDA:23,2,1,1 +BRDA:31,3,0,1 +BRDA:52,4,0,0 +BRDA:52,4,1,1 +BRDA:67,5,0,0 +BRDA:67,5,1,1 +BRDA:118,6,0,0 +BRDA:118,6,1,1 +BRDA:123,7,0,0 +BRDA:123,7,1,1 +BRDA:162,8,0,0 +BRDA:162,8,1,1 +BRDA:214,9,0,0 +BRDA:214,9,1,1 +BRDA:219,10,0,0 +BRDA:219,10,1,1 +BRDA:239,11,0,0 +BRDA:239,11,1,0 +BRF:22 +BRH:9 +end_of_record +TN: +SF:pages/500.js +FN:10,error500 +FN:16,(anonymous_5) +FN:262,(anonymous_6) +FNF:3 +FNH:2 +FNDA:2,error500 +FNDA:1,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:10,1 +DA:11,2 +DA:12,2 +DA:13,2 +DA:14,2 +DA:16,2 +DA:17,1 +DA:18,0 +DA:19,0 +DA:23,1 +DA:24,0 +DA:26,1 +DA:31,2 +DA:32,1 +DA:262,1 +DA:263,0 +DA:265,0 +LF:25 +LH:20 +BRDA:17,0,0,0 +BRDA:18,1,0,0 +BRDA:18,1,1,0 +BRDA:23,2,0,0 +BRDA:23,2,1,1 +BRDA:31,3,0,1 +BRDA:66,4,0,0 +BRDA:66,4,1,1 +BRDA:147,5,0,0 +BRDA:147,5,1,1 +BRDA:152,6,0,0 +BRDA:152,6,1,1 +BRDA:191,7,0,0 +BRDA:191,7,1,1 +BRDA:243,8,0,0 +BRDA:243,8,1,1 +BRDA:248,9,0,0 +BRDA:248,9,1,1 +BRDA:268,10,0,0 +BRDA:268,10,1,0 +BRF:20 +BRH:8 +end_of_record +TN: +SF:pages/_app.js +FN:24,MyApp +FNF:1 +FNH:0 +FNDA:0,MyApp +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:13,0 +DA:18,0 +DA:38,0 +LF:12 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:pages/error.js +FN:10,ErrorPage +FN:25,(anonymous_5) +FN:439,(anonymous_6) +FNF:3 +FNH:0 +FNDA:0,ErrorPage +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:15,0 +DA:17,0 +DA:19,0 +DA:21,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:28,0 +DA:439,0 +DA:440,0 +DA:442,0 +LF:24 +LH:0 +BRDA:15,0,0,0 +BRDA:15,0,1,0 +BRDA:17,1,0,0 +BRDA:17,1,1,0 +BRDA:19,2,0,0 +BRDA:19,2,1,0 +BRDA:21,3,0,0 +BRDA:21,3,1,0 +BRDA:23,4,0,0 +BRDA:23,4,1,0 +BRDA:26,5,0,0 +BRDA:27,6,0,0 +BRDA:27,6,1,0 +BRDA:45,7,0,0 +BRDA:45,7,1,0 +BRDA:67,8,0,0 +BRDA:67,8,1,0 +BRDA:98,9,0,0 +BRDA:98,9,1,0 +BRDA:132,10,0,0 +BRDA:132,10,1,0 +BRDA:156,11,0,0 +BRDA:156,11,1,0 +BRDA:170,12,0,0 +BRDA:170,12,1,0 +BRDA:175,13,0,0 +BRDA:175,13,1,0 +BRDA:193,14,0,0 +BRDA:193,14,1,0 +BRDA:211,15,0,0 +BRDA:245,16,0,0 +BRDA:291,17,0,0 +BRDA:291,17,1,0 +BRDA:311,18,0,0 +BRDA:311,18,1,0 +BRDA:329,19,0,0 +BRDA:363,20,0,0 +BRDA:421,21,0,0 +BRDA:421,21,1,0 +BRDA:426,22,0,0 +BRDA:426,22,1,0 +BRDA:445,23,0,0 +BRDA:445,23,1,0 +BRF:43 +BRH:0 +end_of_record +TN: +SF:pages/home.js +FN:23,Home +FN:32,(anonymous_5) +FN:45,(anonymous_6) +FN:63,(anonymous_7) +FN:74,(anonymous_8) +FN:124,(anonymous_9) +FN:465,(anonymous_10) +FN:469,(anonymous_11) +FN:479,(anonymous_12) +FNF:9 +FNH:5 +FNDA:2,Home +FNDA:1,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:1,(anonymous_8) +FNDA:1,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +DA:2,1 +DA:3,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:9,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:23,1 +DA:25,2 +DA:26,1 +DA:27,1 +DA:28,1 +DA:32,1 +DA:33,1 +DA:45,1 +DA:47,1 +DA:57,1 +DA:58,1 +DA:59,7 +DA:63,1 +DA:64,0 +DA:66,1 +DA:73,1 +DA:75,1 +DA:124,1 +DA:125,1 +DA:126,0 +DA:127,0 +DA:465,1 +DA:467,0 +DA:469,0 +DA:472,0 +DA:477,0 +DA:479,0 +DA:482,0 +DA:487,0 +LF:42 +LH:32 +BRDA:80,0,0,1 +BRDA:80,0,1,0 +BRDA:84,1,0,0 +BRDA:84,1,1,1 +BRDA:89,2,0,0 +BRDA:89,2,1,1 +BRDA:94,3,0,0 +BRDA:94,3,1,1 +BRDA:99,4,0,1 +BRDA:99,4,1,0 +BRDA:104,5,0,1 +BRDA:104,5,1,0 +BRDA:109,6,0,0 +BRDA:109,6,1,1 +BRDA:111,7,0,0 +BRDA:111,7,1,1 +BRDA:114,8,0,0 +BRDA:114,8,1,1 +BRDA:125,9,0,0 +BRDA:126,10,0,0 +BRDA:126,10,1,0 +BRDA:137,11,0,0 +BRDA:137,11,1,1 +BRDA:145,12,0,0 +BRDA:145,12,1,1 +BRDA:150,13,0,0 +BRDA:150,13,1,1 +BRDA:161,14,0,0 +BRDA:161,14,1,1 +BRDA:171,15,0,0 +BRDA:171,15,1,1 +BRDA:176,16,0,0 +BRDA:176,16,1,1 +BRDA:182,17,0,0 +BRDA:182,17,1,1 +BRDA:195,18,0,0 +BRDA:195,18,1,1 +BRDA:217,19,0,0 +BRDA:217,19,1,1 +BRDA:226,20,0,0 +BRDA:226,20,1,1 +BRDA:232,21,0,0 +BRDA:232,21,1,1 +BRDA:244,22,0,0 +BRDA:244,22,1,1 +BRDA:255,23,0,0 +BRDA:255,23,1,1 +BRDA:264,24,0,0 +BRDA:264,24,1,1 +BRDA:271,25,0,0 +BRDA:271,25,1,1 +BRDA:283,26,0,0 +BRDA:283,26,1,1 +BRDA:300,27,0,0 +BRDA:300,27,1,1 +BRDA:305,28,0,0 +BRDA:305,28,1,1 +BRDA:310,29,0,0 +BRDA:310,29,1,1 +BRDA:315,30,0,0 +BRDA:315,30,1,1 +BRDA:320,31,0,0 +BRDA:320,31,1,1 +BRDA:328,32,0,0 +BRDA:328,32,1,1 +BRDA:342,33,0,0 +BRDA:342,33,1,1 +BRDA:349,34,0,0 +BRDA:411,35,0,0 +BRDA:411,35,1,1 +BRDA:419,36,0,0 +BRDA:419,36,1,1 +BRDA:437,37,0,0 +BRDA:437,37,1,1 +BRDA:442,38,0,0 +BRDA:442,38,1,1 +BRDA:447,39,0,0 +BRDA:447,39,1,1 +BRDA:490,40,0,0 +BRDA:490,40,1,0 +BRDA:498,41,0,0 +BRDA:498,41,1,0 +BRF:82 +BRH:37 +end_of_record +TN: +SF:pages/index.js +FN:8,Index +FN:11,(anonymous_5) +FN:190,(anonymous_6) +FNF:3 +FNH:2 +FNDA:1,Index +FNDA:1,(anonymous_5) +FNDA:0,(anonymous_6) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:8,1 +DA:9,1 +DA:11,1 +DA:12,1 +DA:13,0 +DA:14,0 +DA:16,1 +DA:190,1 +LF:14 +LH:12 +BRDA:12,0,0,0 +BRDA:13,1,0,0 +BRDA:13,1,1,0 +BRDA:47,2,0,0 +BRDA:47,2,1,1 +BRDA:192,3,0,0 +BRDA:192,3,1,0 +BRDA:193,4,0,0 +BRDA:193,4,1,0 +BRF:9 +BRH:1 +end_of_record +TN: +SF:pages/notsupported.js +FN:10,notSupported +FN:16,(anonymous_5) +FN:23,onClickEn +FN:28,onClickFr +FN:472,(anonymous_8) +FNF:5 +FNH:2 +FNDA:1,notSupported +FNDA:1,(anonymous_5) +FNDA:0,onClickEn +FNDA:0,onClickFr +FNDA:0,(anonymous_8) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:8,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:16,1 +DA:17,1 +DA:18,0 +DA:19,0 +DA:24,0 +DA:25,0 +DA:29,0 +DA:30,0 +DA:472,1 +DA:473,0 +DA:475,0 +LF:23 +LH:15 +BRDA:17,0,0,0 +BRDA:18,1,0,0 +BRDA:18,1,1,0 +BRDA:72,2,0,0 +BRDA:72,2,1,1 +BRDA:78,3,0,0 +BRDA:78,3,1,1 +BRDA:154,4,0,0 +BRDA:154,4,1,1 +BRDA:159,5,0,0 +BRDA:159,5,1,1 +BRDA:182,6,0,0 +BRDA:182,6,1,1 +BRDA:210,7,0,0 +BRDA:210,7,1,1 +BRDA:215,8,0,0 +BRDA:215,8,1,1 +BRDA:229,9,0,0 +BRDA:229,9,1,1 +BRDA:234,10,0,0 +BRDA:234,10,1,1 +BRDA:248,11,0,0 +BRDA:248,11,1,1 +BRDA:253,12,0,0 +BRDA:253,12,1,1 +BRDA:267,13,0,0 +BRDA:267,13,1,1 +BRDA:272,14,0,0 +BRDA:272,14,1,1 +BRDA:293,15,0,0 +BRDA:293,15,1,1 +BRDA:294,16,0,0 +BRDA:294,16,1,1 +BRDA:369,17,0,0 +BRDA:369,17,1,1 +BRDA:371,18,0,0 +BRDA:371,18,1,1 +BRDA:453,19,0,0 +BRDA:453,19,1,1 +BRDA:458,20,0,0 +BRDA:458,20,1,1 +BRDA:478,21,0,0 +BRDA:478,21,1,0 +BRF:43 +BRH:19 +end_of_record +TN: +SF:pages/projects.js +FN:18,ProjectsPage +FN:33,(anonymous_5) +FN:37,(anonymous_6) +FN:45,(anonymous_7) +FN:62,(anonymous_8) +FN:66,(anonymous_9) +FN:68,(anonymous_10) +FN:78,(anonymous_11) +FN:129,(anonymous_12) +FN:208,(anonymous_13) +FN:212,(anonymous_14) +FN:217,(anonymous_15) +FN:222,(anonymous_16) +FNF:13 +FNH:0 +FNDA:0,ProjectsPage +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:18,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:26,0 +DA:33,0 +DA:35,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:40,0 +DA:42,0 +DA:45,0 +DA:46,0 +DA:53,0 +DA:62,0 +DA:64,0 +DA:66,0 +DA:68,0 +DA:69,0 +DA:77,0 +DA:79,0 +DA:129,0 +DA:130,0 +DA:131,0 +DA:132,0 +DA:208,0 +DA:210,0 +DA:212,0 +DA:215,0 +DA:217,0 +DA:220,0 +DA:222,0 +DA:225,0 +LF:44 +LH:0 +BRDA:38,0,0,0 +BRDA:64,1,0,0 +BRDA:87,2,0,0 +BRDA:87,2,1,0 +BRDA:90,3,0,0 +BRDA:90,3,1,0 +BRDA:97,4,0,0 +BRDA:97,4,1,0 +BRDA:102,5,0,0 +BRDA:102,5,1,0 +BRDA:107,6,0,0 +BRDA:107,6,1,0 +BRDA:112,7,0,0 +BRDA:112,7,1,0 +BRDA:118,8,0,0 +BRDA:118,8,1,0 +BRDA:130,9,0,0 +BRDA:131,10,0,0 +BRDA:131,10,1,0 +BRDA:142,11,0,0 +BRDA:142,11,1,0 +BRDA:166,12,0,0 +BRDA:166,12,1,0 +BRDA:172,13,0,0 +BRDA:172,13,1,0 +BRDA:228,14,0,0 +BRDA:228,14,1,0 +BRDA:236,15,0,0 +BRDA:236,15,1,0 +BRF:29 +BRH:0 +end_of_record +TN: +SF:pages/updates.js +FN:18,UpdatesPage +FN:31,(anonymous_5) +FN:35,(anonymous_6) +FN:43,(anonymous_7) +FN:62,(anonymous_8) +FN:66,(anonymous_9) +FN:68,(anonymous_10) +FN:80,(anonymous_11) +FN:121,(anonymous_12) +FN:136,(anonymous_13) +FN:216,(anonymous_14) +FN:220,(anonymous_15) +FN:225,(anonymous_16) +FN:230,(anonymous_17) +FNF:14 +FNH:0 +FNDA:0,UpdatesPage +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +FNDA:0,(anonymous_11) +FNDA:0,(anonymous_12) +FNDA:0,(anonymous_13) +FNDA:0,(anonymous_14) +FNDA:0,(anonymous_15) +FNDA:0,(anonymous_16) +FNDA:0,(anonymous_17) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:18,0 +DA:19,0 +DA:20,0 +DA:21,0 +DA:22,0 +DA:24,0 +DA:31,0 +DA:33,0 +DA:35,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:40,0 +DA:43,0 +DA:44,0 +DA:53,0 +DA:62,0 +DA:64,0 +DA:66,0 +DA:68,0 +DA:69,0 +DA:77,0 +DA:81,0 +DA:121,0 +DA:123,0 +DA:124,0 +DA:125,0 +DA:128,0 +DA:130,0 +DA:133,0 +DA:135,0 +DA:136,0 +DA:138,0 +DA:143,0 +DA:216,0 +DA:218,0 +DA:220,0 +DA:223,0 +DA:225,0 +DA:228,0 +DA:230,0 +DA:233,0 +LF:52 +LH:0 +BRDA:36,0,0,0 +BRDA:47,1,0,0 +BRDA:47,1,1,0 +BRDA:64,2,0,0 +BRDA:87,3,0,0 +BRDA:87,3,1,0 +BRDA:89,4,0,0 +BRDA:89,4,1,0 +BRDA:96,5,0,0 +BRDA:96,5,1,0 +BRDA:99,6,0,0 +BRDA:99,6,1,0 +BRDA:123,7,0,0 +BRDA:124,8,0,0 +BRDA:124,8,1,0 +BRDA:130,9,0,0 +BRDA:133,10,0,0 +BRDA:133,10,1,0 +BRDA:153,11,0,0 +BRDA:153,11,1,0 +BRDA:176,12,0,0 +BRDA:176,12,1,0 +BRDA:182,13,0,0 +BRDA:182,13,1,0 +BRDA:236,14,0,0 +BRDA:236,14,1,0 +BRDA:244,15,0,0 +BRDA:244,15,1,0 +BRF:28 +BRH:0 +end_of_record +TN: +SF:pages/api/healthcheck.js +FN:2,handler +FNF:1 +FNH:0 +FNDA:0,handler +DA:2,0 +DA:3,0 +LF:2 +LH:0 +BRF:0 +BRH:0 +end_of_record +TN: +SF:pages/api/report-a-problem.js +FN:7,handler +FNF:1 +FNH:1 +FNDA:5,handler +DA:1,1 +DA:8,5 +DA:10,5 +DA:14,2 +DA:16,3 +DA:17,3 +DA:46,2 +DA:47,1 +DA:49,1 +DA:50,1 +DA:53,1 +DA:54,1 +DA:58,0 +DA:59,0 +DA:63,5 +LF:15 +LH:13 +BRDA:8,0,0,5 +BRDA:8,0,1,0 +BRDA:10,1,0,2 +BRDA:10,1,1,3 +BRDA:11,2,0,5 +BRDA:11,2,1,4 +BRDA:20,3,0,3 +BRDA:20,3,1,0 +BRDA:46,4,0,1 +BRDA:46,4,1,1 +BRF:10 +BRH:8 +end_of_record +TN: +SF:pages/api/robots.js +FN:7,handler +FNF:1 +FNH:1 +FNDA:2,handler +DA:7,2 +DA:8,2 +DA:9,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:15,1 +DA:16,1 +DA:18,2 +LF:10 +LH:10 +BRDA:8,0,0,1 +BRDA:8,0,1,1 +BRF:2 +BRH:2 +end_of_record +TN: +SF:pages/api/submit-feedback.js +FN:3,handler +FNF:1 +FNH:1 +FNDA:3,handler +DA:1,1 +DA:3,3 +DA:4,3 +DA:5,3 +DA:6,1 +DA:8,2 +DA:9,2 +DA:10,2 +DA:11,1 +DA:13,1 +DA:16,1 +DA:17,1 +LF:12 +LH:12 +BRDA:5,0,0,1 +BRDA:5,0,1,2 +BRDA:10,1,0,1 +BRDA:10,1,1,1 +BRF:4 +BRH:4 +end_of_record +TN: +SF:pages/projects/benefits-finder/[id].js +FN:17,BenefitFinderArticles +FN:23,(anonymous_6) +FN:107,getStaticPaths +FN:115,(anonymous_8) +FN:127,(anonymous_9) +FN:139,(anonymous_10) +FNF:6 +FNH:0 +FNDA:0,BenefitFinderArticles +FNDA:0,(anonymous_6) +FNDA:0,getStaticPaths +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:17,0 +DA:19,0 +DA:20,0 +DA:23,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:107,0 +DA:109,0 +DA:113,0 +DA:115,0 +DA:117,0 +DA:127,0 +DA:129,0 +DA:133,0 +DA:137,0 +DA:139,0 +DA:140,0 +DA:148,0 +DA:149,0 +DA:155,0 +LF:31 +LH:0 +BRDA:24,0,0,0 +BRDA:25,1,0,0 +BRDA:25,1,1,0 +BRDA:36,2,0,0 +BRDA:36,2,1,0 +BRDA:55,3,0,0 +BRDA:55,3,1,0 +BRDA:64,4,0,0 +BRDA:64,4,1,0 +BRDA:77,5,0,0 +BRDA:77,5,1,0 +BRDA:141,6,0,0 +BRDA:141,6,1,0 +BRDA:148,7,0,0 +BRDA:148,8,0,0 +BRDA:148,8,1,0 +BRDA:161,9,0,0 +BRDA:161,9,1,0 +BRDA:166,10,0,0 +BRDA:166,10,1,0 +BRF:20 +BRH:0 +end_of_record +TN: +SF:pages/projects/benefits-finder/index.js +FN:25,BenefitsFinderOverview +FN:34,(anonymous_5) +FN:43,(anonymous_6) +FN:404,(anonymous_7) +FNF:4 +FNH:3 +FNDA:1,BenefitsFinderOverview +FNDA:21,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,1 +DA:25,1 +DA:27,1 +DA:28,1 +DA:29,1 +DA:35,21 +DA:43,1 +DA:44,1 +DA:45,0 +DA:46,0 +DA:404,1 +DA:406,0 +DA:411,0 +DA:416,0 +DA:421,0 +LF:32 +LH:26 +BRDA:35,0,0,21 +BRDA:35,0,1,20 +BRDA:35,0,2,19 +BRDA:35,0,3,18 +BRDA:44,1,0,0 +BRDA:45,2,0,0 +BRDA:45,2,1,0 +BRDA:56,3,0,0 +BRDA:56,3,1,1 +BRDA:68,4,0,0 +BRDA:68,4,1,1 +BRDA:75,5,0,0 +BRDA:75,5,1,1 +BRDA:87,6,0,0 +BRDA:87,6,1,1 +BRDA:97,7,0,0 +BRDA:97,7,1,1 +BRDA:107,8,0,0 +BRDA:107,8,1,1 +BRDA:112,9,0,0 +BRDA:112,9,1,1 +BRDA:118,10,0,0 +BRDA:118,10,1,1 +BRDA:134,11,0,0 +BRDA:134,11,1,1 +BRDA:154,12,0,0 +BRDA:154,12,1,1 +BRDA:163,13,0,0 +BRDA:163,13,1,1 +BRDA:169,14,0,0 +BRDA:169,14,1,1 +BRDA:181,15,0,0 +BRDA:181,15,1,1 +BRDA:194,16,0,0 +BRDA:194,16,1,1 +BRDA:203,17,0,0 +BRDA:203,17,1,1 +BRDA:210,18,0,0 +BRDA:210,18,1,1 +BRDA:222,19,0,0 +BRDA:222,19,1,1 +BRDA:240,20,0,0 +BRDA:240,20,1,1 +BRDA:253,21,0,0 +BRDA:253,21,1,1 +BRDA:258,22,0,0 +BRDA:258,22,1,1 +BRDA:274,23,0,0 +BRDA:274,23,1,1 +BRDA:286,24,0,0 +BRDA:286,24,1,1 +BRDA:291,25,0,0 +BRDA:291,25,1,1 +BRDA:296,26,0,0 +BRDA:296,26,1,1 +BRDA:305,27,0,0 +BRDA:305,27,1,1 +BRDA:312,28,0,0 +BRDA:312,28,1,1 +BRDA:319,29,0,0 +BRDA:319,29,1,1 +BRDA:324,30,0,0 +BRDA:324,30,1,1 +BRDA:329,31,0,0 +BRDA:329,31,1,1 +BRDA:338,32,0,0 +BRDA:338,32,1,1 +BRDA:354,33,0,1 +BRDA:354,33,1,0 +BRDA:360,34,0,0 +BRDA:360,34,1,1 +BRDA:378,35,0,0 +BRDA:378,35,1,1 +BRDA:424,36,0,0 +BRDA:424,36,1,0 +BRDA:434,37,0,0 +BRDA:434,37,1,0 +BRF:77 +BRH:37 +end_of_record +TN: +SF:pages/projects/benefits-navigator/[id].js +FN:23,BenefitNavigatorArticles +FN:30,(anonymous_6) +FN:173,getStaticPaths +FN:181,(anonymous_8) +FN:194,(anonymous_9) +FN:210,(anonymous_10) +FNF:6 +FNH:0 +FNDA:0,BenefitNavigatorArticles +FNDA:0,(anonymous_6) +FNDA:0,getStaticPaths +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:23,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:173,0 +DA:175,0 +DA:179,0 +DA:181,0 +DA:183,0 +DA:194,0 +DA:196,0 +DA:200,0 +DA:204,0 +DA:208,0 +DA:210,0 +DA:211,0 +DA:219,0 +DA:220,0 +DA:226,0 +LF:38 +LH:0 +BRDA:31,0,0,0 +BRDA:32,1,0,0 +BRDA:32,1,1,0 +BRDA:44,2,0,0 +BRDA:44,2,1,0 +BRDA:66,3,0,0 +BRDA:66,3,1,0 +BRDA:80,4,0,0 +BRDA:80,4,1,0 +BRDA:86,5,0,0 +BRDA:86,5,1,0 +BRDA:118,6,0,0 +BRDA:118,6,1,0 +BRDA:126,7,0,0 +BRDA:126,7,1,0 +BRDA:146,8,0,0 +BRDA:146,8,1,0 +BRDA:212,9,0,0 +BRDA:212,9,1,0 +BRDA:219,10,0,0 +BRDA:219,11,0,0 +BRDA:219,11,1,0 +BRDA:234,12,0,0 +BRDA:234,12,1,0 +BRDA:238,13,0,0 +BRDA:238,13,1,0 +BRF:26 +BRH:0 +end_of_record +TN: +SF:pages/projects/benefits-navigator/index.js +FN:26,BenefitsNavigatorOverview +FN:35,(anonymous_5) +FN:44,(anonymous_6) +FN:673,(anonymous_7) +FNF:4 +FNH:3 +FNDA:1,BenefitsNavigatorOverview +FNDA:21,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,1 +DA:19,1 +DA:26,1 +DA:28,1 +DA:29,1 +DA:30,1 +DA:36,21 +DA:44,1 +DA:45,1 +DA:46,0 +DA:47,0 +DA:673,1 +DA:675,0 +DA:680,0 +DA:685,0 +DA:690,0 +LF:33 +LH:27 +BRDA:36,0,0,21 +BRDA:36,0,1,20 +BRDA:36,0,2,19 +BRDA:36,0,3,18 +BRDA:45,1,0,0 +BRDA:46,2,0,0 +BRDA:46,2,1,0 +BRDA:58,3,0,0 +BRDA:58,3,1,1 +BRDA:70,4,0,0 +BRDA:70,4,1,1 +BRDA:77,5,0,0 +BRDA:77,5,1,1 +BRDA:89,6,0,0 +BRDA:89,6,1,1 +BRDA:99,7,0,0 +BRDA:99,7,1,1 +BRDA:109,8,0,0 +BRDA:109,8,1,1 +BRDA:114,9,0,0 +BRDA:114,9,1,1 +BRDA:120,10,0,0 +BRDA:120,10,1,1 +BRDA:136,11,0,0 +BRDA:136,11,1,1 +BRDA:156,12,0,0 +BRDA:156,12,1,1 +BRDA:165,13,0,0 +BRDA:165,13,1,1 +BRDA:171,14,0,0 +BRDA:171,14,1,1 +BRDA:183,15,0,0 +BRDA:183,15,1,1 +BRDA:196,16,0,0 +BRDA:196,16,1,1 +BRDA:205,17,0,0 +BRDA:205,17,1,1 +BRDA:212,18,0,0 +BRDA:212,18,1,1 +BRDA:224,19,0,0 +BRDA:224,19,1,1 +BRDA:242,20,0,0 +BRDA:242,20,1,1 +BRDA:253,21,0,0 +BRDA:253,21,1,1 +BRDA:260,22,0,0 +BRDA:260,22,1,1 +BRDA:278,23,0,0 +BRDA:278,23,1,1 +BRDA:283,24,0,0 +BRDA:283,24,1,1 +BRDA:299,25,0,0 +BRDA:299,25,1,1 +BRDA:311,26,0,0 +BRDA:311,26,1,1 +BRDA:316,27,0,0 +BRDA:316,27,1,1 +BRDA:321,28,0,0 +BRDA:321,28,1,1 +BRDA:329,29,0,0 +BRDA:329,29,1,1 +BRDA:336,30,0,0 +BRDA:336,30,1,1 +BRDA:343,31,0,0 +BRDA:343,31,1,1 +BRDA:348,32,0,0 +BRDA:348,32,1,1 +BRDA:353,33,0,0 +BRDA:353,33,1,1 +BRDA:367,34,0,0 +BRDA:367,34,1,1 +BRDA:374,35,0,0 +BRDA:374,35,1,1 +BRDA:379,36,0,0 +BRDA:379,36,1,1 +BRDA:388,37,0,0 +BRDA:388,37,1,1 +BRDA:395,38,0,0 +BRDA:395,38,1,1 +BRDA:402,39,0,0 +BRDA:402,39,1,1 +BRDA:414,40,0,0 +BRDA:414,40,1,1 +BRDA:426,41,0,0 +BRDA:426,41,1,1 +BRDA:433,42,0,0 +BRDA:433,42,1,1 +BRDA:456,43,0,0 +BRDA:456,43,1,1 +BRDA:470,44,0,0 +BRDA:470,44,1,1 +BRDA:479,45,0,0 +BRDA:479,45,1,1 +BRDA:494,46,0,0 +BRDA:494,46,1,1 +BRDA:501,47,0,0 +BRDA:501,47,1,1 +BRDA:523,48,0,0 +BRDA:523,48,1,1 +BRDA:536,49,0,0 +BRDA:536,49,1,1 +BRDA:545,50,0,0 +BRDA:545,50,1,1 +BRDA:560,51,0,0 +BRDA:560,51,1,1 +BRDA:567,52,0,0 +BRDA:567,52,1,1 +BRDA:589,53,0,0 +BRDA:589,53,1,1 +BRDA:602,54,0,0 +BRDA:602,54,1,1 +BRDA:611,55,0,0 +BRDA:611,55,1,1 +BRDA:625,56,0,1 +BRDA:625,56,1,0 +BRDA:631,57,0,0 +BRDA:631,57,1,1 +BRDA:649,58,0,0 +BRDA:649,58,1,1 +BRDA:693,59,0,0 +BRDA:693,59,1,0 +BRDA:703,60,0,0 +BRDA:703,60,1,0 +BRF:123 +BRH:60 +end_of_record +TN: +SF:pages/projects/dashboard/[id].js +FN:22,MscaDashboardArticles +FN:29,(anonymous_6) +FN:167,getStaticPaths +FN:175,(anonymous_8) +FN:187,(anonymous_9) +FN:203,(anonymous_10) +FNF:6 +FNH:0 +FNDA:0,MscaDashboardArticles +FNDA:0,(anonymous_6) +FNDA:0,getStaticPaths +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:167,0 +DA:169,0 +DA:173,0 +DA:175,0 +DA:177,0 +DA:187,0 +DA:189,0 +DA:193,0 +DA:197,0 +DA:201,0 +DA:203,0 +DA:204,0 +DA:212,0 +DA:213,0 +DA:219,0 +LF:38 +LH:0 +BRDA:30,0,0,0 +BRDA:31,1,0,0 +BRDA:31,1,1,0 +BRDA:43,2,0,0 +BRDA:43,2,1,0 +BRDA:63,3,0,0 +BRDA:63,3,1,0 +BRDA:76,4,0,0 +BRDA:76,4,1,0 +BRDA:81,5,0,0 +BRDA:81,5,1,0 +BRDA:112,6,0,0 +BRDA:112,6,1,0 +BRDA:120,7,0,0 +BRDA:120,7,1,0 +BRDA:140,8,0,0 +BRDA:140,8,1,0 +BRDA:205,9,0,0 +BRDA:205,9,1,0 +BRDA:212,10,0,0 +BRDA:212,11,0,0 +BRDA:212,11,1,0 +BRDA:227,12,0,0 +BRDA:227,12,1,0 +BRDA:231,13,0,0 +BRDA:231,13,1,0 +BRF:26 +BRH:0 +end_of_record +TN: +SF:pages/projects/dashboard/index.js +FN:25,MscaDashboard +FN:32,(anonymous_5) +FN:40,(anonymous_6) +FN:396,(anonymous_7) +FNF:4 +FNH:3 +FNDA:1,MscaDashboard +FNDA:21,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:10,1 +DA:11,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,1 +DA:25,1 +DA:27,1 +DA:28,1 +DA:33,21 +DA:40,1 +DA:41,1 +DA:42,0 +DA:43,0 +DA:396,1 +DA:398,0 +DA:403,0 +DA:408,0 +DA:413,0 +LF:30 +LH:24 +BRDA:33,0,0,21 +BRDA:33,0,1,20 +BRDA:33,0,2,19 +BRDA:33,0,3,18 +BRDA:41,1,0,0 +BRDA:42,2,0,0 +BRDA:42,2,1,0 +BRDA:54,3,0,0 +BRDA:54,3,1,1 +BRDA:67,4,0,0 +BRDA:67,4,1,1 +BRDA:74,5,0,0 +BRDA:74,5,1,1 +BRDA:86,6,0,0 +BRDA:86,6,1,1 +BRDA:96,7,0,0 +BRDA:96,7,1,1 +BRDA:106,8,0,0 +BRDA:106,8,1,1 +BRDA:111,9,0,0 +BRDA:111,9,1,1 +BRDA:117,10,0,0 +BRDA:117,10,1,1 +BRDA:133,11,0,0 +BRDA:133,11,1,1 +BRDA:153,12,0,0 +BRDA:153,12,1,1 +BRDA:162,13,0,0 +BRDA:162,13,1,1 +BRDA:168,14,0,0 +BRDA:168,14,1,1 +BRDA:180,15,0,0 +BRDA:180,15,1,1 +BRDA:191,16,0,0 +BRDA:191,16,1,1 +BRDA:200,17,0,0 +BRDA:200,17,1,1 +BRDA:207,18,0,0 +BRDA:207,18,1,1 +BRDA:219,19,0,0 +BRDA:219,19,1,1 +BRDA:235,20,0,0 +BRDA:235,20,1,1 +BRDA:248,21,0,0 +BRDA:248,21,1,1 +BRDA:253,22,0,1 +BRDA:253,22,1,1 +BRDA:253,23,0,0 +BRDA:253,23,1,1 +BRDA:269,24,0,0 +BRDA:269,24,1,1 +BRDA:280,25,0,0 +BRDA:280,25,1,1 +BRDA:285,26,0,0 +BRDA:285,26,1,1 +BRDA:290,27,0,0 +BRDA:290,27,1,1 +BRDA:298,28,0,0 +BRDA:298,28,1,1 +BRDA:305,29,0,0 +BRDA:305,29,1,1 +BRDA:312,30,0,0 +BRDA:312,30,1,1 +BRDA:317,31,0,0 +BRDA:317,31,1,1 +BRDA:322,32,0,0 +BRDA:322,32,1,1 +BRDA:344,33,0,1 +BRDA:344,33,1,0 +BRDA:351,34,0,0 +BRDA:351,34,1,1 +BRDA:370,35,0,0 +BRDA:370,35,1,1 +BRDA:416,36,0,0 +BRDA:416,36,1,0 +BRDA:426,37,0,0 +BRDA:426,37,1,0 +BRF:77 +BRH:38 +end_of_record +TN: +SF:pages/projects/digital-standards-playbook/[id].js +FN:22,DigitalStandardsArticles +FN:30,(anonymous_6) +FN:168,getStaticPaths +FN:177,(anonymous_8) +FN:189,(anonymous_9) +FN:205,(anonymous_10) +FNF:6 +FNH:0 +FNDA:0,DigitalStandardsArticles +FNDA:0,(anonymous_6) +FNDA:0,getStaticPaths +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:22,0 +DA:24,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:168,0 +DA:170,0 +DA:174,0 +DA:177,0 +DA:179,0 +DA:189,0 +DA:191,0 +DA:195,0 +DA:199,0 +DA:203,0 +DA:205,0 +DA:206,0 +DA:214,0 +DA:215,0 +DA:221,0 +LF:39 +LH:0 +BRDA:31,0,0,0 +BRDA:32,1,0,0 +BRDA:32,1,1,0 +BRDA:44,2,0,0 +BRDA:44,2,1,0 +BRDA:64,3,0,0 +BRDA:64,3,1,0 +BRDA:77,4,0,0 +BRDA:77,4,1,0 +BRDA:82,5,0,0 +BRDA:82,5,1,0 +BRDA:113,6,0,0 +BRDA:113,6,1,0 +BRDA:121,7,0,0 +BRDA:121,7,1,0 +BRDA:141,8,0,0 +BRDA:141,8,1,0 +BRDA:207,9,0,0 +BRDA:207,9,1,0 +BRDA:214,10,0,0 +BRDA:214,11,0,0 +BRDA:214,11,1,0 +BRDA:229,12,0,0 +BRDA:229,12,1,0 +BRDA:233,13,0,0 +BRDA:233,13,1,0 +BRF:26 +BRH:0 +end_of_record +TN: +SF:pages/projects/digital-standards-playbook/index.js +FN:25,DigitalStandardsPlaybookPage +FN:33,(anonymous_5) +FN:41,(anonymous_6) +FN:478,(anonymous_7) +FNF:4 +FNH:3 +FNDA:1,DigitalStandardsPlaybookPage +FNDA:21,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,1 +DA:25,1 +DA:27,1 +DA:28,1 +DA:29,1 +DA:34,21 +DA:41,1 +DA:42,1 +DA:43,0 +DA:44,0 +DA:478,1 +DA:480,0 +DA:485,0 +DA:490,0 +DA:495,0 +LF:32 +LH:26 +BRDA:34,0,0,21 +BRDA:34,0,1,20 +BRDA:34,0,2,19 +BRDA:34,0,3,18 +BRDA:42,1,0,0 +BRDA:43,2,0,0 +BRDA:43,2,1,0 +BRDA:55,3,0,0 +BRDA:55,3,1,1 +BRDA:58,4,0,1 +BRDA:58,4,1,1 +BRDA:69,5,0,0 +BRDA:69,5,1,1 +BRDA:76,6,0,0 +BRDA:76,6,1,1 +BRDA:88,7,0,0 +BRDA:88,7,1,1 +BRDA:98,8,0,0 +BRDA:98,8,1,1 +BRDA:108,9,0,0 +BRDA:108,9,1,1 +BRDA:113,10,0,0 +BRDA:113,10,1,1 +BRDA:119,11,0,0 +BRDA:119,11,1,1 +BRDA:135,12,0,0 +BRDA:135,12,1,1 +BRDA:155,13,0,0 +BRDA:155,13,1,1 +BRDA:164,14,0,0 +BRDA:164,14,1,1 +BRDA:170,15,0,0 +BRDA:170,15,1,1 +BRDA:182,16,0,0 +BRDA:182,16,1,1 +BRDA:193,17,0,0 +BRDA:193,17,1,1 +BRDA:202,18,0,0 +BRDA:202,18,1,1 +BRDA:209,19,0,0 +BRDA:209,19,1,1 +BRDA:221,20,0,0 +BRDA:221,20,1,1 +BRDA:238,21,0,0 +BRDA:238,21,1,1 +BRDA:251,22,0,0 +BRDA:251,22,1,1 +BRDA:256,23,0,1 +BRDA:256,23,1,1 +BRDA:256,24,0,0 +BRDA:256,24,1,1 +BRDA:272,25,0,0 +BRDA:272,25,1,1 +BRDA:283,26,0,0 +BRDA:283,26,1,1 +BRDA:288,27,0,0 +BRDA:288,27,1,1 +BRDA:293,28,0,0 +BRDA:293,28,1,1 +BRDA:301,29,0,0 +BRDA:301,29,1,1 +BRDA:308,30,0,0 +BRDA:308,30,1,1 +BRDA:315,31,0,0 +BRDA:315,31,1,1 +BRDA:320,32,0,0 +BRDA:320,32,1,1 +BRDA:325,33,0,0 +BRDA:325,33,1,1 +BRDA:341,34,0,0 +BRDA:341,34,1,1 +BRDA:347,35,0,0 +BRDA:347,35,1,1 +BRDA:353,36,0,0 +BRDA:353,36,1,1 +BRDA:360,37,0,0 +BRDA:360,37,1,1 +BRDA:366,38,0,0 +BRDA:366,38,1,1 +BRDA:378,39,0,0 +BRDA:378,39,1,1 +BRDA:383,40,0,0 +BRDA:383,40,1,1 +BRDA:392,41,0,0 +BRDA:392,41,1,1 +BRDA:399,42,0,0 +BRDA:399,42,1,1 +BRDA:406,43,0,0 +BRDA:406,43,1,1 +BRDA:412,44,0,0 +BRDA:412,44,1,1 +BRDA:418,45,0,0 +BRDA:418,45,1,1 +BRDA:428,46,0,1 +BRDA:428,46,1,0 +BRDA:434,47,0,0 +BRDA:434,47,1,1 +BRDA:452,48,0,0 +BRDA:452,48,1,1 +BRDA:498,49,0,0 +BRDA:498,49,1,0 +BRDA:508,50,0,0 +BRDA:508,50,1,0 +BRF:103 +BRH:52 +end_of_record +TN: +SF:pages/projects/making-easier-get-benefits/[id].js +FN:20,IntegratedChannelStrategyArticles +FN:30,(anonymous_6) +FN:156,getStaticPaths +FN:166,(anonymous_8) +FN:175,(anonymous_9) +FN:190,(anonymous_10) +FNF:6 +FNH:0 +FNDA:0,IntegratedChannelStrategyArticles +FNDA:0,(anonymous_6) +FNDA:0,getStaticPaths +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:20,0 +DA:22,0 +DA:25,0 +DA:26,0 +DA:27,0 +DA:30,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:156,0 +DA:158,0 +DA:163,0 +DA:166,0 +DA:168,0 +DA:175,0 +DA:177,0 +DA:180,0 +DA:183,0 +DA:187,0 +DA:190,0 +DA:191,0 +DA:199,0 +DA:200,0 +DA:206,0 +LF:40 +LH:0 +BRDA:31,0,0,0 +BRDA:32,1,0,0 +BRDA:32,1,1,0 +BRDA:43,2,0,0 +BRDA:43,2,1,0 +BRDA:62,3,0,0 +BRDA:62,3,1,0 +BRDA:74,4,0,0 +BRDA:74,4,1,0 +BRDA:79,5,0,0 +BRDA:79,5,1,0 +BRDA:109,6,0,0 +BRDA:109,6,1,0 +BRDA:115,7,0,0 +BRDA:115,7,1,0 +BRDA:133,8,0,0 +BRDA:133,8,1,0 +BRDA:192,9,0,0 +BRDA:192,9,1,0 +BRDA:199,10,0,0 +BRDA:199,11,0,0 +BRDA:199,11,1,0 +BRDA:214,12,0,0 +BRDA:214,12,1,0 +BRDA:217,13,0,0 +BRDA:217,13,1,0 +BRF:26 +BRH:0 +end_of_record +TN: +SF:pages/projects/making-easier-get-benefits/index.js +FN:25,IntegratedChannelStrategyPage +FN:34,(anonymous_5) +FN:43,(anonymous_6) +FN:395,(anonymous_7) +FNF:4 +FNH:3 +FNDA:1,IntegratedChannelStrategyPage +FNDA:21,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:17,1 +DA:18,1 +DA:25,1 +DA:27,1 +DA:28,1 +DA:29,1 +DA:32,1 +DA:35,21 +DA:43,1 +DA:44,1 +DA:45,0 +DA:46,0 +DA:395,1 +DA:397,0 +DA:401,0 +DA:405,0 +DA:410,0 +LF:33 +LH:27 +BRDA:35,0,0,21 +BRDA:35,0,1,20 +BRDA:35,0,2,19 +BRDA:35,0,3,18 +BRDA:44,1,0,0 +BRDA:45,2,0,0 +BRDA:45,2,1,0 +BRDA:56,3,0,0 +BRDA:56,3,1,1 +BRDA:68,4,0,0 +BRDA:68,4,1,1 +BRDA:75,5,0,0 +BRDA:75,5,1,1 +BRDA:87,6,0,0 +BRDA:87,6,1,1 +BRDA:97,7,0,0 +BRDA:97,7,1,1 +BRDA:107,8,0,0 +BRDA:107,8,1,1 +BRDA:112,9,0,0 +BRDA:112,9,1,1 +BRDA:118,10,0,0 +BRDA:118,10,1,1 +BRDA:134,11,0,0 +BRDA:134,11,1,1 +BRDA:154,12,0,0 +BRDA:154,12,1,1 +BRDA:163,13,0,0 +BRDA:163,13,1,1 +BRDA:169,14,0,0 +BRDA:169,14,1,1 +BRDA:181,15,0,0 +BRDA:181,15,1,1 +BRDA:192,16,0,0 +BRDA:192,16,1,1 +BRDA:201,17,0,0 +BRDA:201,17,1,1 +BRDA:208,18,0,0 +BRDA:208,18,1,1 +BRDA:220,19,0,0 +BRDA:220,19,1,1 +BRDA:235,20,0,0 +BRDA:235,20,1,1 +BRDA:247,21,0,0 +BRDA:247,21,1,1 +BRDA:252,22,0,1 +BRDA:252,22,1,0 +BRDA:252,23,0,0 +BRDA:252,23,1,1 +BRDA:267,24,0,0 +BRDA:267,24,1,1 +BRDA:277,25,0,0 +BRDA:277,25,1,1 +BRDA:282,26,0,0 +BRDA:282,26,1,1 +BRDA:287,27,0,0 +BRDA:287,27,1,1 +BRDA:295,28,0,0 +BRDA:295,28,1,1 +BRDA:302,29,0,0 +BRDA:302,29,1,1 +BRDA:309,30,0,0 +BRDA:309,30,1,1 +BRDA:314,31,0,0 +BRDA:314,31,1,1 +BRDA:319,32,0,0 +BRDA:319,32,1,1 +BRDA:334,33,0,0 +BRDA:334,33,1,1 +BRDA:344,34,0,0 +BRDA:344,34,1,1 +BRDA:350,35,0,0 +BRDA:350,35,1,0 +BRDA:368,36,0,0 +BRDA:368,36,1,0 +BRDA:413,37,0,0 +BRDA:413,37,1,0 +BRDA:421,38,0,0 +BRDA:421,38,1,0 +BRF:79 +BRH:36 +end_of_record +TN: +SF:pages/projects/oas-benefits-estimator/[id].js +FN:26,OASBenefitsEstimatorArticles +FN:36,(anonymous_6) +FN:166,getStaticPaths +FN:177,(anonymous_8) +FN:192,(anonymous_9) +FN:207,(anonymous_10) +FNF:6 +FNH:0 +FNDA:0,OASBenefitsEstimatorArticles +FNDA:0,(anonymous_6) +FNDA:0,getStaticPaths +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:2,0 +DA:3,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:19,0 +DA:26,0 +DA:28,0 +DA:31,0 +DA:32,0 +DA:33,0 +DA:36,0 +DA:37,0 +DA:38,0 +DA:39,0 +DA:166,0 +DA:168,0 +DA:173,0 +DA:177,0 +DA:179,0 +DA:192,0 +DA:194,0 +DA:197,0 +DA:200,0 +DA:204,0 +DA:207,0 +DA:208,0 +DA:216,0 +DA:217,0 +DA:223,0 +LF:40 +LH:0 +BRDA:37,0,0,0 +BRDA:38,1,0,0 +BRDA:38,1,1,0 +BRDA:49,2,0,0 +BRDA:49,2,1,0 +BRDA:68,3,0,0 +BRDA:68,3,1,0 +BRDA:80,4,0,0 +BRDA:80,4,1,0 +BRDA:85,5,0,0 +BRDA:85,5,1,0 +BRDA:115,6,0,0 +BRDA:115,6,1,0 +BRDA:121,7,0,0 +BRDA:121,7,1,0 +BRDA:139,8,0,0 +BRDA:139,8,1,0 +BRDA:209,9,0,0 +BRDA:209,9,1,0 +BRDA:216,10,0,0 +BRDA:216,11,0,0 +BRDA:216,11,1,0 +BRDA:231,12,0,0 +BRDA:231,12,1,0 +BRDA:235,13,0,0 +BRDA:235,13,1,0 +BRF:26 +BRH:0 +end_of_record +TN: +SF:pages/projects/oas-benefits-estimator/index.js +FN:24,OasBenefitsEstimator +FN:33,(anonymous_5) +FN:42,(anonymous_6) +FN:457,(anonymous_7) +FNF:4 +FNH:3 +FNDA:1,OasBenefitsEstimator +FNDA:21,(anonymous_5) +FNDA:1,(anonymous_6) +FNDA:0,(anonymous_7) +DA:1,1 +DA:2,1 +DA:3,1 +DA:4,1 +DA:5,1 +DA:6,1 +DA:7,1 +DA:8,1 +DA:9,1 +DA:10,1 +DA:11,1 +DA:12,1 +DA:13,1 +DA:14,1 +DA:15,1 +DA:16,1 +DA:17,1 +DA:24,1 +DA:26,1 +DA:27,1 +DA:28,1 +DA:31,1 +DA:34,21 +DA:42,1 +DA:43,1 +DA:44,0 +DA:45,0 +DA:457,1 +DA:459,0 +DA:463,0 +DA:467,0 +DA:472,0 +LF:32 +LH:26 +BRDA:34,0,0,21 +BRDA:34,0,1,20 +BRDA:34,0,2,19 +BRDA:34,0,3,18 +BRDA:43,1,0,0 +BRDA:44,2,0,0 +BRDA:44,2,1,0 +BRDA:55,3,0,0 +BRDA:55,3,1,1 +BRDA:66,4,0,0 +BRDA:66,4,1,1 +BRDA:73,5,0,0 +BRDA:73,5,1,1 +BRDA:85,6,0,0 +BRDA:85,6,1,1 +BRDA:95,7,0,0 +BRDA:95,7,1,1 +BRDA:105,8,0,0 +BRDA:105,8,1,1 +BRDA:110,9,0,0 +BRDA:110,9,1,1 +BRDA:116,10,0,0 +BRDA:116,10,1,1 +BRDA:132,11,0,0 +BRDA:132,11,1,1 +BRDA:152,12,0,0 +BRDA:152,12,1,1 +BRDA:161,13,0,0 +BRDA:161,13,1,1 +BRDA:167,14,0,0 +BRDA:167,14,1,1 +BRDA:179,15,0,0 +BRDA:179,15,1,1 +BRDA:190,16,0,0 +BRDA:190,16,1,1 +BRDA:199,17,0,0 +BRDA:199,17,1,1 +BRDA:206,18,0,0 +BRDA:206,18,1,1 +BRDA:218,19,0,0 +BRDA:218,19,1,1 +BRDA:234,20,0,0 +BRDA:234,20,1,1 +BRDA:246,21,0,0 +BRDA:246,21,1,1 +BRDA:251,22,0,1 +BRDA:251,22,1,0 +BRDA:251,23,0,0 +BRDA:251,23,1,1 +BRDA:266,24,0,0 +BRDA:266,24,1,1 +BRDA:276,25,0,0 +BRDA:276,25,1,1 +BRDA:281,26,0,0 +BRDA:281,26,1,1 +BRDA:286,27,0,0 +BRDA:286,27,1,1 +BRDA:294,28,0,0 +BRDA:294,28,1,1 +BRDA:301,29,0,0 +BRDA:301,29,1,1 +BRDA:308,30,0,0 +BRDA:308,30,1,1 +BRDA:313,31,0,0 +BRDA:313,31,1,1 +BRDA:318,32,0,0 +BRDA:318,32,1,1 +BRDA:333,33,0,0 +BRDA:333,33,1,1 +BRDA:343,34,0,0 +BRDA:343,34,1,1 +BRDA:348,35,0,0 +BRDA:348,35,1,1 +BRDA:357,36,0,0 +BRDA:357,36,1,1 +BRDA:363,37,0,0 +BRDA:363,37,1,1 +BRDA:368,38,0,0 +BRDA:368,38,1,1 +BRDA:373,39,0,0 +BRDA:373,39,1,1 +BRDA:381,40,0,0 +BRDA:381,40,1,1 +BRDA:390,41,0,0 +BRDA:390,41,1,1 +BRDA:395,42,0,0 +BRDA:395,42,1,1 +BRDA:405,43,0,1 +BRDA:405,43,1,0 +BRDA:411,44,0,0 +BRDA:411,44,1,1 +BRDA:429,45,0,0 +BRDA:429,45,1,1 +BRDA:475,46,0,0 +BRDA:475,46,1,0 +BRDA:483,47,0,0 +BRDA:483,47,1,0 +BRF:97 +BRH:47 +end_of_record +TN: +SF:pages/projects/transforming-ei-indigenous-peoples/[id].js +FN:19,IndigenousEiArticles +FN:28,(anonymous_6) +FN:120,getStaticPaths +FN:131,(anonymous_8) +FN:149,(anonymous_9) +FN:165,(anonymous_10) +FNF:6 +FNH:0 +FNDA:0,IndigenousEiArticles +FNDA:0,(anonymous_6) +FNDA:0,getStaticPaths +FNDA:0,(anonymous_8) +FNDA:0,(anonymous_9) +FNDA:0,(anonymous_10) +DA:1,0 +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:19,0 +DA:22,0 +DA:24,0 +DA:28,0 +DA:29,0 +DA:30,0 +DA:31,0 +DA:120,0 +DA:122,0 +DA:127,0 +DA:131,0 +DA:133,0 +DA:149,0 +DA:151,0 +DA:157,0 +DA:161,0 +DA:165,0 +DA:166,0 +DA:175,0 +DA:176,0 +DA:182,0 +LF:30 +LH:0 +BRDA:29,0,0,0 +BRDA:30,1,0,0 +BRDA:30,1,1,0 +BRDA:43,2,0,0 +BRDA:43,2,1,0 +BRDA:63,3,0,0 +BRDA:63,3,1,0 +BRDA:74,4,0,0 +BRDA:74,4,1,0 +BRDA:87,5,0,0 +BRDA:87,5,1,0 +BRDA:167,6,0,0 +BRDA:167,6,1,0 +BRDA:175,7,0,0 +BRDA:175,8,0,0 +BRDA:175,8,1,0 +BRDA:188,9,0,0 +BRDA:188,9,1,0 +BRDA:194,10,0,0 +BRDA:194,10,1,0 +BRF:20 +BRH:0 +end_of_record +TN: +SF:pages/projects/transforming-ei-indigenous-peoples/index.js +FN:31,EiIndigenousOverview +FN:47,(anonymous_5) +FN:57,(anonymous_6) +FN:420,(anonymous_7) +FNF:4 +FNH:0 +FNDA:0,EiIndigenousOverview +FNDA:0,(anonymous_5) +FNDA:0,(anonymous_6) +FNDA:0,(anonymous_7) +DA:2,0 +DA:3,0 +DA:4,0 +DA:5,0 +DA:6,0 +DA:7,0 +DA:8,0 +DA:9,0 +DA:10,0 +DA:11,0 +DA:12,0 +DA:13,0 +DA:14,0 +DA:15,0 +DA:16,0 +DA:17,0 +DA:18,0 +DA:31,0 +DA:34,0 +DA:38,0 +DA:41,0 +DA:45,0 +DA:48,0 +DA:57,0 +DA:58,0 +DA:59,0 +DA:60,0 +DA:420,0 +DA:422,0 +DA:427,0 +DA:432,0 +DA:437,0 +LF:32 +LH:0 +BRDA:48,0,0,0 +BRDA:48,0,1,0 +BRDA:48,0,2,0 +BRDA:48,0,3,0 +BRDA:58,1,0,0 +BRDA:59,2,0,0 +BRDA:59,2,1,0 +BRDA:71,3,0,0 +BRDA:71,3,1,0 +BRDA:82,4,0,0 +BRDA:82,4,1,0 +BRDA:89,5,0,0 +BRDA:89,5,1,0 +BRDA:101,6,0,0 +BRDA:101,6,1,0 +BRDA:111,7,0,0 +BRDA:111,7,1,0 +BRDA:121,8,0,0 +BRDA:121,8,1,0 +BRDA:126,9,0,0 +BRDA:126,9,1,0 +BRDA:132,10,0,0 +BRDA:132,10,1,0 +BRDA:148,11,0,0 +BRDA:148,11,1,0 +BRDA:168,12,0,0 +BRDA:168,12,1,0 +BRDA:177,13,0,0 +BRDA:177,13,1,0 +BRDA:183,14,0,0 +BRDA:183,14,1,0 +BRDA:195,15,0,0 +BRDA:195,15,1,0 +BRDA:208,16,0,0 +BRDA:208,16,1,0 +BRDA:217,17,0,0 +BRDA:217,17,1,0 +BRDA:224,18,0,0 +BRDA:224,18,1,0 +BRDA:236,19,0,0 +BRDA:236,19,1,0 +BRDA:254,20,0,0 +BRDA:254,20,1,0 +BRDA:267,21,0,0 +BRDA:267,21,1,0 +BRDA:272,22,0,0 +BRDA:272,22,1,0 +BRDA:288,23,0,0 +BRDA:288,23,1,0 +BRDA:299,24,0,0 +BRDA:299,24,1,0 +BRDA:304,25,0,0 +BRDA:304,25,1,0 +BRDA:309,26,0,0 +BRDA:309,26,1,0 +BRDA:317,27,0,0 +BRDA:317,27,1,0 +BRDA:324,28,0,0 +BRDA:324,28,1,0 +BRDA:331,29,0,0 +BRDA:331,29,1,0 +BRDA:336,30,0,0 +BRDA:336,30,1,0 +BRDA:341,31,0,0 +BRDA:341,31,1,0 +BRDA:357,32,0,0 +BRDA:357,32,1,0 +BRDA:366,33,0,0 +BRDA:366,33,1,0 +BRDA:372,34,0,0 +BRDA:372,34,1,0 +BRDA:390,35,0,0 +BRDA:390,35,1,0 +BRDA:440,36,0,0 +BRDA:440,36,1,0 +BRDA:449,37,0,0 +BRDA:449,37,1,0 +BRF:77 +BRH:0 +end_of_record