├── .editorconfig ├── .github └── issue_template.md ├── .gitignore ├── .travis.yml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENCE.txt ├── Procfile ├── README.md ├── VERSION.txt ├── app ├── assets │ ├── images │ │ ├── favicon.ico │ │ ├── separator-2x.png │ │ └── separator.png │ ├── javascripts │ │ ├── application.js │ │ ├── auto-store-data.js │ │ ├── bind.js │ │ ├── details.polyfill.js │ │ └── jquery-1.11.3.js │ └── sass │ │ ├── _custom.scss │ │ ├── application-ie8.scss │ │ ├── application.scss │ │ ├── examples.scss │ │ ├── patterns │ │ ├── _check-your-answers.scss │ │ ├── _task-list.scss │ │ └── hmrc-banner │ │ │ ├── _hmrc-banner.scss │ │ │ ├── _lang-select.scss │ │ │ └── _logged-in-status.scss │ │ └── unbranded.scss ├── config.js ├── filters.js ├── routes.js └── views │ ├── govuk-template-blank.html │ ├── govuk-template.html │ ├── includes │ ├── back.html │ ├── breadcrumb_examples.html │ ├── head.html │ └── scripts.html │ ├── originals │ ├── agent-promo-closed.html │ ├── agent.html │ ├── ated-planned.html │ ├── ated-subscription-planned.html │ ├── ated-subscription.html │ ├── ated.html │ ├── ats.html │ ├── awrs-offswitch.html │ ├── awrs.html │ ├── business-customer.html │ ├── cato.html │ ├── charities.html │ ├── childcare-calculator-maintenance.html │ ├── childcare-calculator.html │ ├── company-auth-maintenance.html │ ├── company-auth.html │ ├── company-car.html │ ├── csr-fasttrack.html │ ├── dfs.html │ ├── ei-maintenance.html │ ├── ei.html │ ├── ers-checking.html │ ├── ers.html │ ├── for-maintenance.html │ ├── for.html │ ├── identity-verification.html │ ├── index.html │ ├── inheritance-tax-maintenance.html │ ├── inheritance-tax.html │ ├── marriage-allowance.html │ ├── migration-payments-down.html │ ├── migration-payments-up.html │ ├── nisp.html │ ├── payments.html │ ├── pbik-maintenance.html │ ├── pbik.html │ ├── pertax.html │ ├── sdltc-maintenance.html │ ├── sdltc.html │ ├── tai-planned.html │ ├── tai.html │ ├── tcc-maintenance.html │ ├── tcc.html │ ├── tcr-closed.html │ ├── tcr.html │ ├── tcs.html │ ├── tracking.html │ ├── trusted-helpers-maintenance.html │ ├── trusted-helpers.html │ └── yta.html │ ├── pages │ ├── 404-pages.html │ ├── 404-pages │ │ ├── 404-broken-link-alternative-route.html │ │ ├── 404-broken-link.html │ │ ├── 404-intelligent.html │ │ ├── 404-mistake-support.html │ │ └── 404-mistake.html │ ├── 500-pages.html │ ├── 500-pages │ │ ├── 500-alternative-channel.html │ │ └── 500.html │ ├── blank │ │ └── page-template.html │ ├── page-template.html │ ├── shutter-pages.html │ └── shutter-pages │ │ ├── amls-closed.html │ │ ├── amls-general.html │ │ ├── amls-notyet.html │ │ ├── amls-permanent.html │ │ ├── amls-shutter.html │ │ ├── ei-closed.html │ │ ├── ei-general.html │ │ ├── ei-notyet.html │ │ ├── ei-permanent.html │ │ ├── ei-shutter.html │ │ ├── index.html │ │ ├── tc-closed.html │ │ ├── tc-general.html │ │ ├── tc-notyet.html │ │ ├── tc-permanent.html │ │ └── tc-shutter.html │ └── patterns │ ├── blank │ ├── footer-with-report-a-problem.html │ ├── footer.html │ ├── get-help-with-this-page.html │ ├── header-signed-in.html │ ├── header-signed-out.html │ └── header-with-cookie.html │ ├── footer.html │ ├── get-help-with-this-page.html │ ├── header.html │ └── macro │ ├── banner.html │ ├── footer.html │ └── header.html ├── assets-frontend ├── 401.html ├── 403.html ├── 404.html ├── 500.html ├── images │ ├── P60-form.jpg │ ├── apple-touch-icon-114x114.png │ ├── apple-touch-icon-144x144.png │ ├── apple-touch-icon-57x57.png │ ├── apple-touch-icon-72x72.png │ ├── bank-account-last-4-digits.png │ ├── bullet-icon.png │ ├── bullet-icon.svg │ ├── calendar.png │ ├── calendar.svg │ ├── clear_all_button.png │ ├── clear_all_button_x2.png │ ├── ct-payslip_2.png │ ├── direct-debit-logo-2x.png │ ├── direct-debit-logo.png │ ├── favicon.ico │ ├── gov.uk_logotype_crown.png │ ├── gov.uk_logotype_crown_invert.png │ ├── gov.uk_logotype_crown_invert_trans.png │ ├── govuk-crest-2x.png │ ├── govuk-crest-ie.png │ ├── govuk-crest.png │ ├── govuk-verify-2x.png │ ├── govuk-verify.png │ ├── icon-search-dark-2x.png │ ├── icon-search-dark.png │ ├── icons │ │ ├── accordian-arrow-2x.png │ │ ├── accordian-arrow.png │ │ ├── arrow-sprite.png │ │ ├── crests │ │ │ ├── bis_crest_13px.png │ │ │ ├── bis_crest_13px_x2.png │ │ │ ├── bis_crest_18px.png │ │ │ ├── bis_crest_18px_x2.png │ │ │ ├── bis_crest_27px.png │ │ │ ├── bis_crest_27px_x2.png │ │ │ ├── coastguard_13px.png │ │ │ ├── coastguard_13px_x2.png │ │ │ ├── coastguard_18px.png │ │ │ ├── coastguard_18px_x2.png │ │ │ ├── coastguard_27px.png │ │ │ ├── coastguard_27px_x2.png │ │ │ ├── hmrc_crest_13px.png │ │ │ ├── hmrc_crest_13px_x2.png │ │ │ ├── hmrc_crest_18px.png │ │ │ ├── hmrc_crest_18px_x2.png │ │ │ ├── hmrc_crest_27px.png │ │ │ ├── hmrc_crest_27px_x2.png │ │ │ ├── ho_crest_13px.png │ │ │ ├── ho_crest_13px_x2.png │ │ │ ├── ho_crest_18px.png │ │ │ ├── ho_crest_18px_x2.png │ │ │ ├── ho_crest_27px.png │ │ │ ├── ho_crest_27px_x2.png │ │ │ ├── mod_crest_13px.png │ │ │ ├── mod_crest_13px_x2.png │ │ │ ├── mod_crest_18px.png │ │ │ ├── mod_crest_18px_x2.png │ │ │ ├── mod_crest_27px.png │ │ │ ├── mod_crest_27px_x2.png │ │ │ ├── org_crest_13px.png │ │ │ ├── org_crest_13px_x2.png │ │ │ ├── org_crest_18px.png │ │ │ ├── org_crest_18px_x2.png │ │ │ ├── org_crest_27px.png │ │ │ ├── org_crest_27px_x2.png │ │ │ ├── portcullis_13px.png │ │ │ ├── portcullis_13px_x2.png │ │ │ ├── portcullis_18px.png │ │ │ ├── portcullis_18px_x2.png │ │ │ ├── portcullis_27px.png │ │ │ ├── portcullis_27px_x2.png │ │ │ ├── so_crest_13px.png │ │ │ ├── so_crest_13px_x2.png │ │ │ ├── so_crest_18px.png │ │ │ ├── so_crest_18px_x2.png │ │ │ ├── so_crest_27px.png │ │ │ ├── so_crest_27px_x2.png │ │ │ ├── ukaea_crest_13px.png │ │ │ ├── ukaea_crest_13px_x2.png │ │ │ ├── ukaea_crest_18px.png │ │ │ ├── ukaea_crest_18px_x2.png │ │ │ ├── ukaea_crest_27px.png │ │ │ ├── ukaea_crest_27px_x2.png │ │ │ ├── ukho_13px.png │ │ │ ├── ukho_13px_x2.png │ │ │ ├── ukho_18px.png │ │ │ ├── ukho_18px_x2.png │ │ │ ├── ukho_27px.png │ │ │ ├── ukho_27px_x2.png │ │ │ ├── wales_crest_13px.png │ │ │ ├── wales_crest_13px_x2.png │ │ │ ├── wales_crest_18px.png │ │ │ ├── wales_crest_18px_x2.png │ │ │ ├── wales_crest_27px.png │ │ │ └── wales_crest_27px_x2.png │ │ ├── external-links │ │ │ ├── external-link-24x24.png │ │ │ ├── external-link-black-12x12.png │ │ │ ├── external-link-black-24x24.png │ │ │ └── external-link.png │ │ ├── icon-calendar-2x.png │ │ ├── icon-calendar.png │ │ ├── icon-file-download-2x.png │ │ ├── icon-file-download.png │ │ ├── icon-important-2x.png │ │ ├── icon-important.png │ │ ├── icon-information-2x.png │ │ ├── icon-information.png │ │ ├── icon-locator-2x.png │ │ ├── icon-locator.png │ │ ├── icon-pointer-2x.png │ │ ├── icon-pointer-black-2x.png │ │ ├── icon-pointer-black.png │ │ ├── icon-pointer-indexed.png │ │ ├── icon-pointer.png │ │ ├── icon-search-2x.png │ │ ├── icon-search.png │ │ ├── icon-steps │ │ │ ├── icon-step-1-2x.png │ │ │ ├── icon-step-1.png │ │ │ ├── icon-step-10-2x.png │ │ │ ├── icon-step-10.png │ │ │ ├── icon-step-11-2x.png │ │ │ ├── icon-step-11.png │ │ │ ├── icon-step-12-2x.png │ │ │ ├── icon-step-12.png │ │ │ ├── icon-step-13-2x.png │ │ │ ├── icon-step-13.png │ │ │ ├── icon-step-14-2x.png │ │ │ ├── icon-step-14.png │ │ │ ├── icon-step-2-2x.png │ │ │ ├── icon-step-2.png │ │ │ ├── icon-step-3-2x.png │ │ │ ├── icon-step-3.png │ │ │ ├── icon-step-4-2x.png │ │ │ ├── icon-step-4.png │ │ │ ├── icon-step-5-2x.png │ │ │ ├── icon-step-5.png │ │ │ ├── icon-step-6-2x.png │ │ │ ├── icon-step-6.png │ │ │ ├── icon-step-7-2x.png │ │ │ ├── icon-step-7.png │ │ │ ├── icon-step-8-2x.png │ │ │ ├── icon-step-8.png │ │ │ ├── icon-step-9-2x.png │ │ │ └── icon-step-9.png │ │ ├── player-icon-forward.png │ │ ├── player-icon-pause.png │ │ ├── player-icon-play.png │ │ ├── player-icon-rewind.png │ │ └── player-icon-volume.png │ ├── loading.gif │ ├── marriage_allowance_rings.jpg │ ├── open-government-licence_2x.png │ ├── opengraph-image.png │ ├── p60-form-rti-p60-payment-for-year.jpg │ ├── p60-form-rti-p60-total-tax-ytd.jpg │ ├── rti-payslip.jpg │ ├── sort_asc.png │ ├── sort_asc_disabled.png │ ├── sort_both.png │ ├── sort_desc.png │ ├── sort_desc_disabled.png │ ├── statements-flag3.png │ ├── valid-icon.png │ ├── valid-icon.svg │ ├── worldpaylogo.jpg │ └── worldpaylogo_sm.png ├── javascripts │ ├── application.min.js │ ├── encryption.min.js │ ├── mdtpdf.min.js │ └── vendor │ │ └── modernizr.js └── stylesheets │ ├── application-ie.min.css │ ├── application-ie7.min.css │ └── application.min.css ├── create-release.sh ├── docs ├── README.md ├── assets │ ├── images │ │ └── docs │ │ │ ├── installing-mavericks-popup.png │ │ │ ├── mac-home-folder-projects.png │ │ │ └── prototype-kit-homepage.png │ ├── javascripts │ │ └── docs.js │ └── sass │ │ ├── docs-ie8.scss │ │ └── docs.scss ├── documentation │ ├── creating-routes.md │ ├── install │ │ ├── developer-install-instructions.md │ │ ├── install-the-kit.md │ │ ├── introduction.md │ │ ├── requirements.md │ │ └── run-the-kit.md │ ├── making-pages.md │ ├── principles.md │ ├── publishing-on-heroku.md │ ├── session.md │ ├── setting-up-git.md │ ├── tips-and-tricks.md │ ├── updating-the-kit.md │ ├── using-verify.md │ └── writing-css.md ├── documentation_routes.js ├── linting.md └── views │ ├── about.html │ ├── documentation_template.html │ ├── examples │ ├── blank-govuk.html │ ├── blank-unbranded.html │ ├── branching.html │ ├── check-your-answers-page.html │ ├── confirmation-page.html │ ├── elements │ │ ├── forms.html │ │ ├── grid-layout.html │ │ ├── radio-buttons-checkboxes.html │ │ ├── toggled-content.html │ │ └── typography.html │ ├── over-18.html │ ├── override-service-name.html │ ├── pass-data │ │ ├── index.html │ │ ├── vehicle-check-answers.html │ │ ├── vehicle-features.html │ │ ├── vehicle-registration.html │ │ └── vehicle-type.html │ ├── question-page.html │ ├── start-page.html │ ├── task-list-page.html │ ├── template-content-page.html │ ├── template-data.html │ ├── template-partial-areas.html │ ├── template-question-page-blank.html │ └── under-18.html │ ├── includes │ ├── analytics.html │ ├── breadcrumb_examples.html │ ├── examples_head.html │ ├── head.html │ ├── phase_banner_alpha.html │ ├── phase_banner_beta.html │ ├── propositional_navigation.html │ ├── propositional_navigation_alpha.html │ └── scripts.html │ ├── index.html │ ├── install.html │ ├── install_template.html │ ├── layout.html │ ├── layout_unbranded.html │ └── tutorials-and-examples.html ├── gulp ├── clean.js ├── config.json ├── copy-assets.js ├── copy-modules.js ├── nodemon.js ├── sass.js ├── tasks.js └── watch.js ├── gulpfile.js ├── lib ├── core_filters.js ├── govuk_template_unbranded.html ├── prototype-admin │ └── clear-data.html ├── template.env └── utils.js ├── package.json ├── repository.yaml ├── server.js ├── start.js └── test ├── mocha.opts └── spec └── sanity-checks.js /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | # Unix-style newlines with a newline ending every file 7 | [*] 8 | end_of_line = lf 9 | insert_final_newline = true 10 | indent_style = space 11 | indent_size = 2 12 | 13 | [*.md] 14 | insert_final_newline = false -------------------------------------------------------------------------------- /.github/issue_template.md: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | # [Name of component or pattern] 9 | 10 | # [Name of your service] 11 | 12 | ## Overview 13 | Use this section to: 14 | 15 | * explain, in one line, how the pattern helps users 16 | * provide a screenshot of the pattern 17 | * provide a code snippet (if you have it) 18 | 19 | ## Is it useful and unique? 20 | Explain how the component or pattern meets the GOV.UK Design System criteria. Find out more at https://design-system.service.gov.uk/community/contribution-criteria/#new-proposals 21 | 22 | ## Other components or patterns you've tried 23 | Explain why existing components or patterns do not meet your user need. Provide examples of others you have tried and screenshots that demonstrate why they did not work (if you have them). 24 | 25 | ## Research on this pattern 26 | Summarise any research about the component or pattern and describe any gaps or questions you still need to answer. 27 | 28 | Only include links to things in the public domain. 29 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | .sass-cache 3 | .DS_Store 4 | .start.pid 5 | .port.tmp 6 | public 7 | lib/govuk_template.html 8 | govuk_modules 9 | node_modules/* 10 | .tmuxp.* 11 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 4.0 4 | - 6.0 5 | before_deploy: 6 | - test $TRAVIS_TEST_RESULT = 0 7 | before_install: 8 | - npm install -g mocha 9 | deploy: 10 | - provider: script # (If version.txt is updated) - create a new tag and push to Github, update the latest-release branch 11 | script: ./create-release.sh 12 | on: master 13 | - provider: heroku 14 | api_key: 15 | secure: h/9/Rcd41XVU4VYYeBoKKvG6uShEoDksCGGZ/2dgeY1f3tYnhGzzgL6TIkvhafwDbKk2Y4o6d/MI05K+s7lorf2uTKpr1To2o52hQqmb4YREPWruZtBqoRo5X4nCeN2oEdW+yJRH3jZDNUmwkPzjytqxkcUUUeDPHfz3+xCtSZk= 16 | app: govuk-prototype-kit 17 | on: master 18 | notifications: 19 | email: false 20 | sudo: false 21 | env: 22 | global: 23 | - secure: esj3ut+TwKX25QzU1koJyTVIX+x1V55graI65X8LiYXKcOP040VPJ9lIC0HeRs5UViBM0Ur1F93rGdgW2zYVzu5MLZoH7KjpzMcG30x+FDqLChT0JfNcLLtLm/wIhx/OAAmsBxXlvjPp092BeEKd3Jug8d329TxwwK5G5XxAatg= 24 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribute to the HMRC Design System 2 | 3 | Design your service using [GOV.UK styles, components and patterns](https://www.gov.uk/service-manual/design). If the thing you need is not there, you should use the [HMRC Design System](http://hmrc.github.io/assets-frontend/). If you still cannot meet the needs of your users proven by user research, then you can: 4 | 5 | * adapt an existing component or pattern 6 | * design a new component or pattern 7 | * suggest a new component or pattern 8 | 9 | Styles should not be changed unless there is a good reason proven by user research. Work with GDS to agree any changes or improvements. 10 | 11 | ## How to contribute 12 | 13 | To suggest or share a new or adapted component or pattern, you should [raise an issue](https://github.com/hmrc/design-patterns/issues/new) on the [HMRC Design Patterns repository](https://github.com/hmrc/design-patterns). This is on Github, but it is easy to do. You must have a github.com account. 14 | 15 | First, [search and check if there is an issue](https://github.com/hmrc/design-patterns/issues) for your component or pattern. 16 | 17 | If there is an issue, add your findings. 18 | 19 | If there is not, use the [issue template](https://github.com/hmrc/design-patterns/issues/new) to provide as much information as possible about the component or pattern. 20 | 21 | When you contribute a component or pattern, explain how it meets the GOV.UK Design System criteria of being [useful and unique](https://github.com/alphagov/govuk-design-system/wiki/The-design-system-standard) and include any user research findings. You must do this before it can be included in the HMRC Design System. 22 | 23 | A member of the [HMRC Design System Working Group](https://github.com/orgs/hmrc/teams/design-system-working-group) will respond to your issue. 24 | 25 | -------------------------------------------------------------------------------- /LICENCE.txt: -------------------------------------------------------------------------------- 1 | Copyright (C) 2014 HM Government (Government Digital Service) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 7 | of the Software, and to permit persons to whom the Software is furnished to do 8 | so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: node ./node_modules/gulp/bin/gulp generate-assets && node server.js 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HMRC Design Patterns 2 | 3 | This is a place to propose new patterns and discuss existing ones for HMRC Design Patterns. 4 | 5 | ## New patterns 6 | 7 | [Check our backlog](https://github.com/hmrc/design-patterns/issues) to see if the pattern you need is already being worked on. If it is, add your findings to the issue. If it has not, [create a new issue](https://github.com/hmrc/design-patterns/issues/new). 8 | 9 | All patterns must be [useful and unique](https://design-system.service.gov.uk/community/contribution-criteria/#new-proposals). 10 | 11 | ## Existing patterns 12 | 13 | Comment on the issue to suggest improvements or add findings. 14 | 15 | ## Support 16 | 17 | If you have a question, idea or suggestion you can [email the Platform UI team](mailto:platform-ui@digital.hmrc.gov.uk). 18 | -------------------------------------------------------------------------------- /VERSION.txt: -------------------------------------------------------------------------------- 1 | 6.1.0 2 | -------------------------------------------------------------------------------- /app/assets/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/app/assets/images/favicon.ico -------------------------------------------------------------------------------- /app/assets/images/separator-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/app/assets/images/separator-2x.png -------------------------------------------------------------------------------- /app/assets/images/separator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/app/assets/images/separator.png -------------------------------------------------------------------------------- /app/assets/javascripts/application.js: -------------------------------------------------------------------------------- 1 | /* global $ */ 2 | /* global GOVUK */ 3 | 4 | // Warn about using the kit in production 5 | if ( 6 | window.sessionStorage && window.sessionStorage.getItem('prototypeWarning') !== 'false' && 7 | window.console && window.console.info 8 | ) { 9 | window.console.info('GOV.UK Prototype Kit - do not use for production') 10 | window.sessionStorage.setItem('prototypeWarning', true) 11 | } 12 | 13 | $(document).ready(function () { 14 | // Use GOV.UK shim-links-with-button-role.js to trigger a link styled to look like a button, 15 | // with role="button" when the space key is pressed. 16 | GOVUK.shimLinksWithButtonRole.init() 17 | 18 | // Show and hide toggled content 19 | // Where .multiple-choice uses the data-target attribute 20 | // to toggle hidden content 21 | var showHideContent = new GOVUK.ShowHideContent() 22 | showHideContent.init() 23 | 24 | 25 | function scaleHeight() { 26 | var scaleWrapper = document.querySelectorAll('.scale-wrapper') 27 | var scale = document.querySelectorAll('.scale') 28 | 29 | for (var i = 0; i <= scaleWrapper.length - 1; i++) { 30 | 31 | scaleWrapper[i].style.height = scale[i].offsetHeight / 2 + 'px' 32 | 33 | } 34 | } 35 | 36 | window.addEventListener('resize', function(){ 37 | scaleHeight() 38 | }) 39 | scaleHeight() 40 | 41 | }) 42 | -------------------------------------------------------------------------------- /app/assets/javascripts/auto-store-data.js: -------------------------------------------------------------------------------- 1 | /* global $ */ 2 | $('body').on('submit', 'form', function (e) { 3 | // On form submit, add hidden inputs for checkboxes so the server knows if 4 | // they've been unchecked. This means we can automatically store and update 5 | // all form data on the server, including checkboxes that are checked, then 6 | // later unchecked 7 | 8 | var $checkboxes = $(this).find('input:checkbox') 9 | 10 | var $inputs = [] 11 | var names = {} 12 | 13 | $checkboxes.each(function () { 14 | var $this = $(this) 15 | 16 | if (!names[$this.attr('name')]) { 17 | names[$this.attr('name')] = true 18 | var $input = $('') 19 | $input.attr('name', $this.attr('name')) 20 | $input.attr('value', '_unchecked') 21 | $inputs.push($input) 22 | } 23 | }) 24 | 25 | $(this).prepend($inputs) 26 | }) 27 | -------------------------------------------------------------------------------- /app/assets/javascripts/bind.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | 3 | // Function.prototype.bind 4 | // 5 | // A polyfill for Function.prototype.bind. Which lets you bind a defined 6 | // value to the `this` keyword in a function call. 7 | // 8 | // Bind is natively supported in: 9 | // IE9+ 10 | // Chrome 7+ 11 | // Firefox 4+ 12 | // Safari 5.1.4+ 13 | // iOS 6+ 14 | // Android Browser 4+ 15 | // Chrome for Android 0.16+ 16 | // 17 | // Originally from: 18 | // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind 19 | if (!Function.prototype.bind) { 20 | Function.prototype.bind = function (oThis) { 21 | if (typeof this !== "function") { 22 | // closest thing possible to the ECMAScript 5 23 | // internal IsCallable function 24 | throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable"); 25 | } 26 | 27 | var aArgs = Array.prototype.slice.call(arguments, 1), 28 | fToBind = this, 29 | fNOP = function () {}, 30 | fBound = function () { 31 | return fToBind.apply(this instanceof fNOP && oThis 32 | ? this 33 | : oThis, 34 | aArgs.concat(Array.prototype.slice.call(arguments))); 35 | }; 36 | 37 | fNOP.prototype = this.prototype; 38 | fBound.prototype = new fNOP(); 39 | 40 | return fBound; 41 | }; 42 | } 43 | -------------------------------------------------------------------------------- /app/assets/sass/_custom.scss: -------------------------------------------------------------------------------- 1 | // Sets the size and position of iframes for screens 2 | .wrap { 3 | width: 646px; 4 | // height: 410px; 5 | padding: 0; 6 | overflow: hidden; 7 | 8 | @include box-sizing(border-box); 9 | border: 1px solid red; 10 | padding: 10px; 11 | margin: $gutter-half 0 0 0; 12 | margin-bottom: em(20, 16); 13 | } 14 | 15 | iframe { 16 | width: 1280px; 17 | height: 786px; 18 | border: 0; 19 | 20 | -ms-transform: scale(0.49); 21 | -moz-transform: scale(0.49); 22 | -o-transform: scale(0.49); 23 | -webkit-transform: scale(0.49); 24 | transform: scale(0.49); 25 | 26 | -ms-transform-origin: 0 0; 27 | -moz-transform-origin: 0 0; 28 | -o-transform-origin: 0 0; 29 | -webkit-transform-origin: 0 0; 30 | transform-origin: 0 0; 31 | } 32 | 33 | .scale { 34 | -ms-transform: scale(0.5); 35 | -moz-transform: scale(0.5); 36 | -o-transform: scale(0.5); 37 | -webkit-transform: scale(0.5); 38 | transform: scale(0.5); 39 | 40 | -ms-transform-origin: 0 0; 41 | -moz-transform-origin: 0 0; 42 | -o-transform-origin: 0 0; 43 | -webkit-transform-origin: 0 0; 44 | transform-origin: 0 0; 45 | // all size values after this is x2 because of the scale 46 | width: 200%; 47 | border: 2px solid $border-colour; 48 | padding: 20px; 49 | @include box-sizing(border-box); 50 | } 51 | 52 | .scale-wrapper { 53 | margin-bottom: em(20, 16); 54 | overflow: hidden; 55 | } 56 | 57 | .height-100 { 58 | height: 100px 59 | } 60 | 61 | .height-150 { 62 | height: 150px 63 | } 64 | 65 | .height-200 { 66 | height: 200px 67 | } 68 | 69 | .height-250 { 70 | height: 250px 71 | } 72 | 73 | .height-300 { 74 | height: 300px 75 | } 76 | 77 | .height-400 { 78 | height: 400px 79 | } 80 | 81 | .height-425 { 82 | height: 425px 83 | } 84 | 85 | .height-450 { 86 | height: 450px 87 | } 88 | 89 | .height-500 { 90 | height: 500px 91 | } 92 | -------------------------------------------------------------------------------- /app/assets/sass/application-ie8.scss: -------------------------------------------------------------------------------- 1 | $is-ie: true; 2 | $ie-version: 8; 3 | 4 | @import "application"; 5 | -------------------------------------------------------------------------------- /app/assets/sass/application.scss: -------------------------------------------------------------------------------- 1 | // Path to assets for use with the file-url function 2 | // in the govuk frontend toolkit's url-helpers partial 3 | $path: "/public/images/"; 4 | 5 | // Import GOV.UK elements from /govuk-modules/, this will import the frontend toolkit and some base styles. 6 | // Take a look in /govuk-modules/_govuk-elements.scss to see which files are imported. 7 | @import 'govuk-elements'; 8 | 9 | // Take a look at in app/assets/sass/patterns/ to see which files are imported. 10 | @import 'patterns/check-your-answers'; 11 | @import 'patterns/task-list'; 12 | 13 | // Related items 14 | // (These styles will be moved to GOV.UK elements, duplicating here for now.) 15 | .govuk-related-items { 16 | margin-top: $gutter; 17 | border-top: 10px solid $govuk-blue; 18 | padding-top: 5px; 19 | 20 | .heading-medium { 21 | margin-top: 0.3em; 22 | margin-bottom: 0.5em; 23 | } 24 | 25 | li { 26 | margin-bottom: 10px; 27 | list-style-type: none; 28 | } 29 | } 30 | 31 | // Add extra styles here, or re-organise the Sass files in whichever way makes most sense to you 32 | @import "custom"; 33 | @import "patterns/hmrc-banner/hmrc-banner"; 34 | -------------------------------------------------------------------------------- /app/assets/sass/examples.scss: -------------------------------------------------------------------------------- 1 | @import "_colours"; 2 | 3 | .area { 4 | font-family: 'nta', Sans-serif; 5 | font-size: 16px; 6 | font-weight: 700; 7 | clear: both; 8 | background: $fuschia; 9 | color: white; 10 | border: dashed $white 1px; 11 | padding: 1em; 12 | box-sizing: border-box; 13 | } 14 | 15 | /* area styles specific to certain ones */ 16 | main.area { 17 | min-height: 16em; 18 | } 19 | .header-proposition { 20 | clear: none; 21 | min-height: 6em; 22 | } 23 | -------------------------------------------------------------------------------- /app/assets/sass/patterns/_check-your-answers.scss: -------------------------------------------------------------------------------- 1 | .check-your-answers { 2 | 3 | td { 4 | @include core-19; 5 | vertical-align: top; 6 | } 7 | 8 | .change-answer { 9 | text-align: right; 10 | font-weight: bold; 11 | padding-right: 0; 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /app/assets/sass/patterns/_task-list.scss: -------------------------------------------------------------------------------- 1 | // Task list pattern 2 | 3 | // Override column width for tablet and up 4 | .column-minimum { 5 | @include media(tablet) { 6 | min-width: 600px; 7 | } 8 | } 9 | 10 | // Spacing to the left of the task list 11 | $task-list-indent: 35px; 12 | 13 | .task-list { 14 | margin-top: $gutter; 15 | @include media(tablet) { 16 | margin-top: ($gutter * 2); 17 | } 18 | } 19 | 20 | 21 | .task-list-section { 22 | display: table; 23 | 24 | @include bold-24; 25 | padding-bottom: ($gutter / 6); 26 | } 27 | 28 | .task-list-section-number { 29 | display: table-cell; 30 | padding-right: ($gutter / 6); 31 | 32 | @include media(tablet) { 33 | min-width: $task-list-indent; 34 | padding-right: 0; 35 | } 36 | } 37 | 38 | 39 | .task-list-items { 40 | margin-bottom: $gutter; 41 | @include media(tablet) { 42 | margin-bottom: ($gutter * 2); 43 | } 44 | 45 | @include media(tablet) { 46 | padding-left: $task-list-indent; 47 | } 48 | } 49 | 50 | .task-list-item { 51 | border-bottom: 1px solid $border-colour; 52 | padding-top: $gutter-one-third; 53 | padding-bottom: $gutter-one-third; 54 | @extend %contain-floats; 55 | } 56 | 57 | .task-list-item:first-child { 58 | border-top: 1px solid $border-colour; 59 | } 60 | 61 | 62 | .task-name { 63 | width: $two-thirds; 64 | float: left; 65 | } 66 | 67 | .task-completed { 68 | @include phase-tag; 69 | 70 | float: right; 71 | margin-right: 0; 72 | padding-top: 3px; 73 | } 74 | -------------------------------------------------------------------------------- /app/assets/sass/patterns/hmrc-banner/_hmrc-banner.scss: -------------------------------------------------------------------------------- 1 | @import 'logged-in-status'; 2 | @import 'lang-select'; 3 | 4 | .organisation-logo { 5 | font: 13px/16px Helvetica, Arial; 6 | display: inline-block; 7 | padding: 3px 0 3px 30px; 8 | background: url("../images/icons/crests/hmrc_crest_13px.png") 5px center no-repeat; 9 | border-left: 2px solid #009390; 10 | p { 11 | padding: 0; 12 | margin: 0; 13 | } 14 | 15 | @media all and (-webkit-min-device-pixel-ratio: 2) { 16 | background-image: url("../images/icons/crests/hmrc_crest_13px_x2.png"); 17 | background-size: auto 20px; 18 | } 19 | } 20 | 21 | .organisation-logo--stacked { 22 | @extend .organisation-logo; 23 | padding: 25px 0 0 6px; 24 | background-position: 5px top; 25 | } 26 | 27 | .organisation-logo--medium { 28 | @extend .organisation-logo; 29 | padding: 3px 0 3px 30px; 30 | @media all and (-webkit-min-device-pixel-ratio: 2) { 31 | background-image: url("../images/icons/crests/hmrc_crest_18px_x2.png"); 32 | background-size: auto 20px; 33 | padding: 3px 0 3px 30px; 34 | 35 | } 36 | 37 | @media (min-width: 641px) { 38 | font: 18px/22px Helvetica, Arial; 39 | background: url("../images/icons/crests/hmrc_crest_18px.png") 5px center no-repeat; 40 | padding: 3px 0 3px 38px; 41 | } 42 | 43 | &.organisation-logo--stacked { 44 | @media all and (-webkit-min-device-pixel-ratio: 2) { 45 | padding: 25px 0 0 6px; 46 | } 47 | 48 | @media (min-width: 641px) { 49 | font: 18px/22px Helvetica, Arial; 50 | padding: 30px 0 0 6px; 51 | background-position: 5px top; 52 | } 53 | } 54 | } 55 | 56 | .hmrc-banner { 57 | padding: 10px 0 8px; 58 | border-bottom: 1px solid #bfc1c3; 59 | overflow: hidden; 60 | @media (min-width: 641px) { 61 | display: table; 62 | width: 100%; 63 | } 64 | 65 | .logged-in-status { 66 | float: right; 67 | @media (min-width: 641px) { 68 | display: table-cell; 69 | vertical-align: middle; 70 | text-align: right; 71 | padding: 0; 72 | float: none; 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /app/assets/sass/patterns/hmrc-banner/_lang-select.scss: -------------------------------------------------------------------------------- 1 | .lang-select { 2 | float: right; 3 | border-bottom: 0px; 4 | padding-bottom: 0px; 5 | } 6 | 7 | .lang-select ul { 8 | padding: 0.75em 0 0.55em; 9 | } 10 | 11 | .lang-select li { 12 | display: inline-block; 13 | margin-left: 8px; 14 | } 15 | -------------------------------------------------------------------------------- /app/assets/sass/patterns/hmrc-banner/_logged-in-status.scss: -------------------------------------------------------------------------------- 1 | .logged-in-status { 2 | padding: 10px 0 0 0; 3 | p { 4 | color: #6f777b; 5 | font: 16px/1.25 nta, Arial, sans-serif; 6 | margin: 0; 7 | } 8 | } 9 | @media (min-width: 769px){ 10 | .desktop-hidden { 11 | display: none !important; 12 | } 13 | } 14 | 15 | #proposition-links li:last-child{ 16 | float: right; 17 | } 18 | 19 | .header-logo a { 20 | padding-left: 36px; 21 | padding-top: 4px; 22 | border: none; 23 | } 24 | 25 | .service-info li { 26 | display: inline-block; 27 | } 28 | 29 | .signout-link{ 30 | float: right; 31 | } 32 | 33 | .signout-link a{ 34 | color: white; 35 | font-weight: 700; 36 | text-decoration: none; 37 | font-size: 16px; 38 | padding-right: 15px; 39 | vertical-align: middle; 40 | } 41 | -------------------------------------------------------------------------------- /app/assets/sass/unbranded.scss: -------------------------------------------------------------------------------- 1 | // Path to assets for use with the file-url function 2 | // in the govuk frontend toolkit's url-helpers partial 3 | $path: "/public/images/"; 4 | 5 | // Import GOV.UK elements from /govuk-modules/, this will import the frontend toolkit and some base styles. 6 | // Take a look in /govuk-modules/_govuk-elements.scss to see which files are imported. 7 | @import 'govuk-elements'; 8 | 9 | // If you need to create a page as part of your journey, but without GOV.UK branding 10 | // See localhost:3000/examples/unbranded/ 11 | 12 | // Override the govuk_frontend_toolkit's font stack 13 | // https://github.com/alphagov/govuk_frontend_toolkit/blob/master/stylesheets/_font_stack.scss#L13 14 | $toolkit-font-stack: $helvetica-regular; 15 | 16 | .unbranded { 17 | background: $white; 18 | 19 | // Use the universal selector and !important to *ALWAYS OVERRIDE* GDS Transport 20 | * { 21 | 22 | font-family: $toolkit-font-stack !important; 23 | } 24 | 25 | // Remove GOV.UK footer styles 26 | #footer { 27 | border: 0; 28 | background: $white; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/config.js: -------------------------------------------------------------------------------- 1 | // Use this file to change prototype configuration. 2 | 3 | // Note: prototype config can be overridden using environment variables (eg on heroku) 4 | 5 | module.exports = { 6 | // Service name used in header. Eg: 'Renew your passport' 7 | serviceName: 'Service name goes here', 8 | 9 | // Default port that prototype runs on 10 | port: '3000', 11 | 12 | // Enable or disable password protection on production 13 | useAuth: 'false', 14 | 15 | // Automatically stores form data, and send to all views 16 | useAutoStoreData: 'true', 17 | 18 | // Enable or disable built-in docs and examples. 19 | useDocumentation: 'true', 20 | 21 | // Force HTTP to redirect to HTTPs on production 22 | useHttps: 'true', 23 | 24 | // Cookie warning - update link to service's cookie page. 25 | cookieText: 'GOV.UK uses cookies to make the site simpler. Find out more about cookies', 26 | 27 | // Enable or disable Browser Sync 28 | useBrowserSync: 'true' 29 | 30 | } 31 | -------------------------------------------------------------------------------- /app/filters.js: -------------------------------------------------------------------------------- 1 | module.exports = function (env) { 2 | /** 3 | * Instantiate object used to store the methods registered as a 4 | * 'filter' (of the same name) within nunjucks. You can override 5 | * gov.uk core filters by creating filter methods of the same name. 6 | * @type {Object} 7 | */ 8 | var filters = {} 9 | 10 | /* ------------------------------------------------------------------ 11 | add your methods to the filters obj below this comment block: 12 | @example: 13 | 14 | filters.sayHi = function(name) { 15 | return 'Hi ' + name + '!' 16 | } 17 | 18 | Which in your templates would be used as: 19 | 20 | {{ 'Paul' | sayHi }} => 'Hi Paul' 21 | 22 | Notice the first argument of your filters method is whatever 23 | gets 'piped' via '|' to the filter. 24 | 25 | Filters can take additional arguments, for example: 26 | 27 | filters.sayHi = function(name,tone) { 28 | return (tone == 'formal' ? 'Greetings' : 'Hi') + ' ' + name + '!' 29 | } 30 | 31 | Which would be used like this: 32 | 33 | {{ 'Joel' | sayHi('formal') }} => 'Greetings Joel!' 34 | {{ 'Gemma' | sayHi }} => 'Hi Gemma!' 35 | 36 | For more on filters and how to write them see the Nunjucks 37 | documentation. 38 | 39 | ------------------------------------------------------------------ */ 40 | 41 | /* ------------------------------------------------------------------ 42 | keep the following line to return your filters to the app 43 | ------------------------------------------------------------------ */ 44 | return filters 45 | } 46 | -------------------------------------------------------------------------------- /app/routes.js: -------------------------------------------------------------------------------- 1 | var express = require('express') 2 | var router = express.Router() 3 | 4 | // Route index page 5 | router.get('/', function (req, res) { 6 | res.render('govuk-template.html') 7 | }) 8 | 9 | // add your routes here 10 | 11 | module.exports = router 12 | -------------------------------------------------------------------------------- /app/views/govuk-template-blank.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | {% block page_title %}HMRC Design patterns{% endblock %} | {% block h1 %}{% endblock %} 9 | {% include "includes/head.html" %} 10 | 11 | 12 | 13 | 14 | {% block content %}{% endblock %} 15 | 16 | {% block scripts %} 17 | {% include "includes/scripts.html" %} 18 | {% endblock %} 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/views/includes/back.html: -------------------------------------------------------------------------------- 1 | Back -------------------------------------------------------------------------------- /app/views/includes/breadcrumb_examples.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/views/includes/head.html: -------------------------------------------------------------------------------- 1 | {% block new_head %} 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | {% endblock %} 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/views/includes/scripts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | {% if useAutoStoreData %} 12 | 13 | {% endif %} 14 | -------------------------------------------------------------------------------- /app/views/originals/awrs-offswitch.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Sign in with your Government Gateway account 6 | 7 | 8 | 9 | 10 |
11 | 20 |
21 |
22 |
23 |

24 | This service is currently unavailable. 25 |

26 |

27 | Please try again later. 28 |

29 | 32 |
33 |
34 |
35 | -------------------------------------------------------------------------------- /app/views/originals/migration-payments-down.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Service unavailable - GOV.UK 8 | 9 | 10 | 11 | 12 | 13 |
14 | 23 |
24 |
25 |
26 |

Some of HMRC's digital services are currently down for scheduled maintenance.

27 |

We are making improvements and apologise for any inconvenience.

28 |

Please try again later this afternoon or click here to continue to file your self assessment return

29 |

You can still make a payment, but debit and credit card options won't work.

30 |
31 | 35 |
36 |
37 |
38 | 39 | -------------------------------------------------------------------------------- /app/views/originals/migration-payments-up.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Service unavailable - GOV.UK 8 | 9 | 10 | 11 | 12 | 13 |
14 | 23 |
24 |
25 |
26 |

Some of HMRC's digital services are currently down for scheduled maintenance.

27 |

We are making improvements and apologise for any inconvenience.

28 |

Please try again later this afternoon or click here to continue to file your self assessment return

29 |

To make a payment click here.

30 |
31 | 35 |
36 |
37 |
38 | 39 | -------------------------------------------------------------------------------- /app/views/pages/404-pages/404-broken-link-alternative-route.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}This page cannot be found{% endblock %}

14 | 15 |

Everything you have done up until now has been saved.

16 | 17 |

The link you clicked on the previous page is broken. This has been reported to the people who manage this service and will be fixed as soon as possible.

18 | 19 |

If you'd like to continue your transaction offline you can contact us on Telephone: 03000 555 995

20 | 21 |

Opening times: 8:30am to 4:30pm, Monday to Friday

22 | 23 |

Go back to the previous page.

24 | 25 |
26 |
27 |
28 | {% endblock %} 29 | -------------------------------------------------------------------------------- /app/views/pages/404-pages/404-broken-link.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 |

{% block h1 %}This page cannot be found{% endblock %}

13 |

Everything you have done up until now has been saved.

14 |

The link you clicked on the previous page is broken. This has been reported to the people who manage this service and 15 | will be fixed as soon as possible.

16 |

Go back to the previous page.

17 |
18 |
19 |
20 | {% endblock %} 21 | -------------------------------------------------------------------------------- /app/views/pages/404-pages/404-intelligent.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}This page cannot be found{% endblock %}

14 | 15 |

It looks like you are trying to get to a page that doesn't exsist.

16 | 17 |

Please contact HMRC on 03000 555 995 so that we can help you resolve this issue.

18 | 19 |

Opening times: 8:30am to 4:30pm, Monday to Friday

20 | 21 | 22 | 23 |
24 | 25 |
26 |
27 | {% endblock %} 28 | -------------------------------------------------------------------------------- /app/views/pages/404-pages/404-mistake-support.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}This page cannot be found{% endblock %}

14 | 15 |

Please check the address is correct

16 | 17 |

If you typed the address check the spelling is correct.

18 | 19 |

If you copied and pasted the address check that you copied the entire address.

20 | 21 |

If you'd like to continue your transaction offline you can contact us on Telephone: 03000 555 995

22 | 23 |

Opening times: 8:30am to 4:30pm, Monday to Friday

24 | 25 |
26 | 27 |
28 |
29 | {% endblock %} 30 | -------------------------------------------------------------------------------- /app/views/pages/404-pages/404-mistake.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}This page cannot be found{% endblock %}

14 | 15 |

Please check the address is correct

16 | 17 |

If you typed the address check the spelling is correct.

18 | 19 |

If you copied and pasted the address check that you copied the entire address.

20 | 21 |
22 | 23 |
24 |
25 | {% endblock %} 26 | -------------------------------------------------------------------------------- /app/views/pages/500-pages.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block page_title %}HMRC 500 pages{% endblock %} 4 | 5 | {% block header %} 6 | {% import "patterns/macro/header.html" as index %} 7 | {{ index.header(serviceName='HMRC 500 pages', proposition=true) }} 8 | {% endblock %} 9 | 10 | {% block content %} 11 | 12 |
13 |
14 |
15 | 16 | {% include "includes/back.html" %} 17 | 18 |

500 pages

19 | 20 |
21 |

These patterns are work in progress.

22 |

View the todo list for this pattern on GitHub.

23 |
24 | 25 |

500 pages are used to tell users that we [HMRC] have a problem that was not their fault.

26 |

They cover a range of situations when something has gone wrong with the server.

27 |

500 errors should only be displayed to users for a short time. The standard approach within HMRC is to shutter a service, if there is going to be a disruption to users for an extended period of time.

28 |

500 errors should be logged by services and fixed as a matter of priority.

29 |

There are a number of standard pages that fall into the category of 500 pages. We do not need different error pages to cover all of these situations.

30 |

Why users see 500 pages

31 |

For the purposes of HMRC services there are 3 scenarios when we would need to show users a 500 page:

32 | 33 |
    34 |
  • 500 Internal Server Error
  • 35 |
  • 503 Service Unavailable
  • 36 |
  • 504 Gateway Timeout
  • 37 |
38 |

500 page design

39 |

When displaying a 500 page we should:

40 | 41 |
    42 |
  • use the standard template
  • 43 |
  • explain to users whats going on
  • 44 |
  • tell users what they can do, if anything to resolve the issue.
  • 45 |
  • If there is an alternative channel that they can use to continue their transaction this should be made available 46 | to them.
  • 47 |
48 | 49 |

Example 500 page

50 |
51 |
52 | {% include "pages/500-pages/500.html" %} 53 |
54 |
55 |

View in a browser

56 | 57 | 58 |

Example 500 page when there is an alternative channel

59 |
60 |
61 | {% include "pages/500-pages/500-alternative-channel.html" %} 62 |
63 |
64 |

View in a browser

65 | 66 |
67 | 68 |
69 |
70 | 71 | {% endblock %} 72 | 73 | 74 | -------------------------------------------------------------------------------- /app/views/pages/500-pages/500-alternative-channel.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 |

{% block h1 %}We are experiencing technical problems{% endblock %}

13 |

Something has gone wrong with this service. It wasn't your fault.

14 |

If you'd like to continue your transaction offline you can contact us on Telephone: 03000 555 995

15 | 16 |

Opening times: 8:30am to 4:30pm, Monday to Friday

17 |
18 |
19 |
20 | {% endblock %} 21 | -------------------------------------------------------------------------------- /app/views/pages/500-pages/500.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 |

{% block h1 %}We are experiencing technical problems{% endblock %}

13 |

Something has gone wrong with this service. It wasn't your fault.

14 |

Please try again in a few moments.

15 |
16 |
17 |
18 | {% endblock %} 19 | -------------------------------------------------------------------------------- /app/views/pages/blank/page-template.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block h1 %}HMRC page template{% endblock %} 4 | {% block header %}{% endblock %} 5 | {% block content %} 6 | {% import "patterns/macro/header.html" as pattern %} 7 | {{ pattern.header(proposition=true) }} 8 |
9 | {% import "patterns/macro/banner.html" as pattern %} 10 | {{ pattern.banner(hmrc=true, beta=true, signedIn=true) }} 11 |
12 |
13 |

Page heading

14 |

Body content

15 |
16 |
17 |
18 | {% endblock %} 19 | 20 | -------------------------------------------------------------------------------- /app/views/pages/page-template.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(serviceName='HMRC page template', proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 | 10 |
11 |
12 |
13 | 14 | {% include "includes/back.html" %} 15 | 16 |

{% block h1 %}HMRC page template{% endblock %}

17 | 18 |
19 |

These patterns are work in progress.

20 |

View the todo list for this pattern on GitHub.

21 | 22 |
23 | 24 |

The standard HMRC page template is provided to all service by the Template as a Service (TaaS).

25 | 26 |
27 |
28 | {% include "pages/blank/page-template.html" %} 29 |
30 |
31 |

View in a browser

32 | 33 |
34 | 35 |
36 |
37 | 38 | {% endblock %} 39 | 40 | 41 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/amls-closed.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}Service unavailable{% endblock %}

14 | 15 |

You cannot use the online service to manage your anti-money laundering supervision.

16 | 17 |
18 | 19 |
20 |
21 | 22 | {% endblock %} 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/amls-general.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}Service unavailable{% endblock %}

14 | 15 |

You will be able to use the service later.

16 | 17 |
18 | 19 |
20 |
21 | {% endblock %} 22 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/amls-notyet.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}Service unavailable{% endblock %}

14 | 15 |

You will be able to use the service at 9am on Monday 29 May 2017.

16 | 17 |
18 | 19 |
20 |
21 | {% endblock %} 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/amls-permanent.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}Service unavailable{% endblock %}

14 | 15 |

The manage your anti-money laundering supervision service has closed.

16 | 17 |
18 | 19 |
20 |
21 | {% endblock %} 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/amls-shutter.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}Service unavailable{% endblock %}

14 | 15 |

You will be able to use the service at 9am on Monday 29 May 2017.

16 | 17 |
18 | 19 |
20 |
21 | {% endblock %} 22 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/ei-closed.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 | 11 |
12 |
13 | 14 |

{% block h1 %}Service unavailable{% endblock %}

15 | 16 |

You cannot use the online service to submit an employment intermediary report.

17 | 18 |

Contact us if you have any questions.

19 | 20 |

Telephone: 03000 555 995

21 | 22 |

Opening times: 8:30am to 4:30pm, Monday to Friday

23 | 24 |
25 | 26 |
27 |
28 | {% endblock %} 29 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/ei-general.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | {% block content %} 8 |
9 | 10 |
11 |
12 | 13 |

{% block h1 %}Service unavailable{% endblock %}

14 | 15 |

You will be able to use the service later.

16 | 17 |

Contact us if you have any questions.

18 | 19 |

Telephone: 03000 555 995

20 | 21 |

Opening times: 8:30am to 4:30pm, Monday to Friday

22 | 23 |
24 | 25 |
26 |
27 | {% endblock %} 28 | 29 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/ei-notyet.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}Service unavailable{% endblock %}

14 | 15 |

You will be able to use the service at 9am on Monday 29 May 2017.

16 | 17 |

Contact us if you have any questions.

18 | 19 |

Telephone: 03000 555 995

20 | 21 |

Opening times: 8:30am to 4:30pm, Monday to Friday

22 | 23 |
24 | 25 |
26 |
27 | 28 | {% endblock %} 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/ei-permanent.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}Service unavailable{% endblock %}

14 | 15 |

The submit an employment intermediary report has closed.

16 | 17 |

Contact us if you have any questions.

18 | 19 |

Telephone: 03000 555 995

20 | 21 |

Opening times: 8:30am to 4:30pm, Monday to Friday

22 | 23 |
24 | 25 |
26 |
27 | 28 | {% endblock %} 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/ei-shutter.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}Service unavailable{% endblock %}

14 | 15 |

You will be able to use the service at 9am on Monday 29 May 2017.

16 | 17 |

Contact us if you have any questions.

18 | 19 |

Telephone: 03000 555 995

20 | 21 |

Opening times: 8:30am to 4:30pm, Monday to Friday

22 | 23 |
24 | 25 |
26 |
27 | {% endblock %} 28 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/index.html: -------------------------------------------------------------------------------- 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 | {% endblock %} 48 | 49 | 50 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/tc-closed.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}Service unavailable{% endblock %}

14 | 15 |

You cannot use the online service to renew your tax credits.

16 | 17 |

Contact the Tax Credit Office to renew your tax credits by phone or letter.

18 | 19 |

You can use the tax credits service to:

20 | 21 |
    22 |
  • find out more about your payments
  • 23 |
  • see who is on your claim
  • 24 |
  • make changes to your claim
  • 25 |
  • check the status of your renewal
  • 26 |
27 | 28 |
29 | 30 |
31 |
32 | {% endblock %} 33 | 34 | 35 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/tc-general.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 | 11 |
12 |
13 | 14 |

{% block h1 %}Service unavailable{% endblock %}

15 | 16 |

You will be able to use the service later.

17 | 18 |

Contact the Tax Credit Office if you need to make changes to your claim or speak to someone about your tax credits.

19 |
20 | 21 |
22 |
23 | 24 | {% endblock %} 25 | 26 | 27 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/tc-notyet.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}Service unavailable{% endblock %}

14 | 15 |

You will be able to renew your tax credits on or after Friday 21 April 2017. You can renew when you get your renewal pack through the post.

16 | 17 |

You can use the tax credits service to:

18 | 19 |
    20 |
  • find out more about your payments
  • 21 |
  • see who is on your claim
  • 22 |
  • make changes to your claim
  • 23 |
  • check the status of your renewal
  • 24 |
25 | 26 |
27 | 28 |
29 |
30 | {% endblock %} 31 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/tc-permanent.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 | 11 |
12 |
13 | 14 |

{% block h1 %}Service unavailable{% endblock %}

15 | 16 |

Tax credits has been replaced by Universal Credit.

17 | 18 |

Contact the Tax Credit Office if you need to speak to someone about your tax credits.

19 | 20 |

You can:

21 | 22 | 27 | 28 |
29 | 30 |
31 |
32 | 33 | {% endblock %} 34 | 35 | 36 | -------------------------------------------------------------------------------- /app/views/pages/shutter-pages/tc-shutter.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block header %} 4 | {% import "patterns/macro/header.html" as index %} 5 | {{ index.header(proposition=true) }} 6 | {% endblock %} 7 | 8 | {% block content %} 9 |
10 |
11 |
12 | 13 |

{% block h1 %}Service unavailable{% endblock %}

14 | 15 |

You will be able to use the service at 9am on Monday 29 May 2017.

16 | 17 |

Contact the Tax Credit Office if you 18 | need to make changes to your claim or speak to someone about your tax credits.

19 |
20 | 21 |
22 |
23 | {% endblock %} 24 | -------------------------------------------------------------------------------- /app/views/patterns/blank/footer.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template-blank.html" %} 2 | {% block h1 %}Footer{% endblock %} 3 | {% block content %} 4 | {% import "../macro/footer.html" as pattern %} 5 | {{ pattern.footer(supportLinks=true) }} 6 | {% endblock %} 7 | -------------------------------------------------------------------------------- /app/views/patterns/blank/header-signed-in.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template-blank.html" %} 2 | {% block h1 %}Header signed in{% endblock %} 3 | {% block content %} 4 | {% import "patterns/macro/header.html" as pattern %} 5 | {{ pattern.header(proposition=true, signedIn=true, navigation=true) }} 6 |
7 | {% import "patterns/macro/banner.html" as pattern %} 8 | {{ pattern.banner(hmrc=true, beta=true, signedIn=true) }} 9 |
10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /app/views/patterns/blank/header-signed-out.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template-blank.html" %} 2 | {% block h1 %}Header signed out{% endblock %} 3 | {% block content %} 4 | {% import "../macro/header.html" as pattern %} 5 | {{ pattern.header(proposition=true) }} 6 |
7 | {% import "../macro/banner.html" as pattern %} 8 | {{ pattern.banner(hmrc=true, beta=true) }} 9 |
10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /app/views/patterns/blank/header-with-cookie.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template-blank.html" %} 2 | {% block h1 %}Header with cookie{% endblock %} 3 | {% block content %} 4 | {% import "../macro/header.html" as pattern %} 5 | {{ pattern.header(proposition=true, cookie=true) }} 6 |
7 | {% import "../macro/banner.html" as pattern %} 8 | {{ pattern.banner(alpha=true) }} 9 |
10 | {% endblock %} 11 | -------------------------------------------------------------------------------- /app/views/patterns/footer.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block content %} 4 | 5 |
6 |
7 |
8 | 9 | {% include "includes/back.html" %} 10 | 11 |

{% block h1 %}HMRC Footer{% endblock %}

12 | 13 |
14 |

These patterns are work in progress.

15 |

View the todo list for this pattern on GitHub.

16 |
17 | 18 |

The Footer used on all HMRC services should be the standard GOV.UK footer, with the addition of HMRC specific links. 19 |

20 | 21 |

Footer design

22 | 23 |

The standard footer should be used on all services.

24 | 25 |

The report a problem link 'Is there anything wrong with this page?' is intended to be used by users to tell HMRC if 26 | there is something technically wrong with the page. However the design of this component is misleading and attracts 27 | contact from users who have a problem using the service.

28 | 29 |

The following utility links should be included:

30 | 31 |
    32 |
  • cookies
  • 33 |
  • privacy policy
  • 34 |
  • terms and conditions
  • 35 |
  • help using GOV.UK
  • 36 |
37 | 38 |

Cookies

39 |

Point to HMRC's cookie page https://www.tax.service.gov.uk/help/cookies. 40 |

41 | 42 |

Privacy policy

43 |

Point to HMRC's privacy policy https://www.tax.service.gov.uk/help/privacy. 44 |

45 | 46 |

Terms and conditions

47 |

Point to HMRC's terms and conditions https://www.tax.service.gov.uk/help/terms-and-conditions. 48 |

49 | 50 |

Help using GOV.UK

51 |

Point to HMRC's help using GOV.UK https://www.gov.uk/help.

52 | 53 |

Examples

54 | 55 |

Footer with utility links

56 |
57 |
58 | {% include "patterns/blank/footer.html" %} 59 |
60 |
61 |

View in a new window

62 |

Should be used on all pages that do not requre a report a problem link.

63 | 64 |
65 | 66 |

Footer with report a problem

67 |
68 |
69 | {% include "patterns/blank/footer-with-report-a-problem.html" %} 70 |
71 |
72 |

View in a new window

73 | 74 |

Should be used when we want to encorage users to tell us if there is a technical problem with a page.

75 | 76 |
77 |
78 |
79 | 80 | {% endblock %} 81 | -------------------------------------------------------------------------------- /app/views/patterns/get-help-with-this-page.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block content %} 4 | 5 |
6 |
7 |
8 | {% include "includes/back.html" %} 9 |

{% block h1 %}Get help with this page{% endblock %}

10 |
11 |
12 | {% include "patterns/blank/get-help-with-this-page.html" %} 13 |
14 |
15 |

View in a new window

16 |
17 |
18 |
19 | 20 | {% endblock %} 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/views/patterns/macro/banner.html: -------------------------------------------------------------------------------- 1 | {% macro banner(beta, alpha, hmrc, signedIn) %} 2 | {% if beta %} 3 |
4 |

5 | BETA 6 | This is a new service – your feedback will help us to improve it. 7 |

8 |
9 | {% endif %} 10 | {% if alpha %} 11 |
12 |

13 | ALPHA 14 | This is a new service – your feedback will help us to improve it. 15 |

16 |
17 | {% endif %} 18 | {% if hmrc %} 19 | 29 |
30 | 34 |
35 | {% endif %} 36 | {% endmacro %} 37 | -------------------------------------------------------------------------------- /app/views/patterns/macro/footer.html: -------------------------------------------------------------------------------- 1 | {% macro footer( 2 | supportLinks 3 | ) %} 4 | 31 | {% endmacro %} 32 | -------------------------------------------------------------------------------- /app/views/patterns/macro/header.html: -------------------------------------------------------------------------------- 1 | {% macro header( 2 | serviceName='Service name', 3 | proposition, 4 | navigation, 5 | signedIn, 6 | cookie 7 | ) %} 8 | 9 | {% if cookie %} 10 | 13 | {% endif %} 14 | 42 |
43 | {% endmacro %} 44 | -------------------------------------------------------------------------------- /assets-frontend/images/P60-form.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/P60-form.jpg -------------------------------------------------------------------------------- /assets-frontend/images/apple-touch-icon-114x114.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/apple-touch-icon-114x114.png -------------------------------------------------------------------------------- /assets-frontend/images/apple-touch-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/apple-touch-icon-144x144.png -------------------------------------------------------------------------------- /assets-frontend/images/apple-touch-icon-57x57.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/apple-touch-icon-57x57.png -------------------------------------------------------------------------------- /assets-frontend/images/apple-touch-icon-72x72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/apple-touch-icon-72x72.png -------------------------------------------------------------------------------- /assets-frontend/images/bank-account-last-4-digits.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/bank-account-last-4-digits.png -------------------------------------------------------------------------------- /assets-frontend/images/bullet-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/bullet-icon.png -------------------------------------------------------------------------------- /assets-frontend/images/bullet-icon.svg: -------------------------------------------------------------------------------- 1 | Slice 2 -------------------------------------------------------------------------------- /assets-frontend/images/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/calendar.png -------------------------------------------------------------------------------- /assets-frontend/images/calendar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets-frontend/images/clear_all_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/clear_all_button.png -------------------------------------------------------------------------------- /assets-frontend/images/clear_all_button_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/clear_all_button_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/ct-payslip_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/ct-payslip_2.png -------------------------------------------------------------------------------- /assets-frontend/images/direct-debit-logo-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/direct-debit-logo-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/direct-debit-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/direct-debit-logo.png -------------------------------------------------------------------------------- /assets-frontend/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/favicon.ico -------------------------------------------------------------------------------- /assets-frontend/images/gov.uk_logotype_crown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/gov.uk_logotype_crown.png -------------------------------------------------------------------------------- /assets-frontend/images/gov.uk_logotype_crown_invert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/gov.uk_logotype_crown_invert.png -------------------------------------------------------------------------------- /assets-frontend/images/gov.uk_logotype_crown_invert_trans.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/gov.uk_logotype_crown_invert_trans.png -------------------------------------------------------------------------------- /assets-frontend/images/govuk-crest-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/govuk-crest-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/govuk-crest-ie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/govuk-crest-ie.png -------------------------------------------------------------------------------- /assets-frontend/images/govuk-crest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/govuk-crest.png -------------------------------------------------------------------------------- /assets-frontend/images/govuk-verify-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/govuk-verify-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/govuk-verify.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/govuk-verify.png -------------------------------------------------------------------------------- /assets-frontend/images/icon-search-dark-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icon-search-dark-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icon-search-dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icon-search-dark.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/accordian-arrow-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/accordian-arrow-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/accordian-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/accordian-arrow.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/arrow-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/arrow-sprite.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/bis_crest_13px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/bis_crest_13px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/bis_crest_13px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/bis_crest_13px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/bis_crest_18px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/bis_crest_18px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/bis_crest_18px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/bis_crest_18px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/bis_crest_27px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/bis_crest_27px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/bis_crest_27px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/bis_crest_27px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/coastguard_13px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/coastguard_13px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/coastguard_13px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/coastguard_13px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/coastguard_18px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/coastguard_18px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/coastguard_18px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/coastguard_18px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/coastguard_27px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/coastguard_27px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/coastguard_27px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/coastguard_27px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/hmrc_crest_13px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/hmrc_crest_13px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/hmrc_crest_13px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/hmrc_crest_13px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/hmrc_crest_18px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/hmrc_crest_18px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/hmrc_crest_18px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/hmrc_crest_18px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/hmrc_crest_27px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/hmrc_crest_27px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/hmrc_crest_27px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/hmrc_crest_27px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ho_crest_13px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ho_crest_13px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ho_crest_13px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ho_crest_13px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ho_crest_18px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ho_crest_18px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ho_crest_18px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ho_crest_18px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ho_crest_27px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ho_crest_27px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ho_crest_27px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ho_crest_27px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/mod_crest_13px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/mod_crest_13px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/mod_crest_13px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/mod_crest_13px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/mod_crest_18px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/mod_crest_18px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/mod_crest_18px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/mod_crest_18px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/mod_crest_27px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/mod_crest_27px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/mod_crest_27px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/mod_crest_27px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/org_crest_13px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/org_crest_13px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/org_crest_13px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/org_crest_13px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/org_crest_18px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/org_crest_18px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/org_crest_18px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/org_crest_18px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/org_crest_27px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/org_crest_27px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/org_crest_27px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/org_crest_27px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/portcullis_13px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/portcullis_13px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/portcullis_13px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/portcullis_13px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/portcullis_18px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/portcullis_18px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/portcullis_18px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/portcullis_18px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/portcullis_27px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/portcullis_27px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/portcullis_27px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/portcullis_27px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/so_crest_13px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/so_crest_13px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/so_crest_13px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/so_crest_13px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/so_crest_18px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/so_crest_18px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/so_crest_18px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/so_crest_18px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/so_crest_27px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/so_crest_27px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/so_crest_27px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/so_crest_27px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ukaea_crest_13px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ukaea_crest_13px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ukaea_crest_13px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ukaea_crest_13px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ukaea_crest_18px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ukaea_crest_18px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ukaea_crest_18px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ukaea_crest_18px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ukaea_crest_27px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ukaea_crest_27px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ukaea_crest_27px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ukaea_crest_27px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ukho_13px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ukho_13px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ukho_13px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ukho_13px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ukho_18px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ukho_18px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ukho_18px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ukho_18px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ukho_27px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ukho_27px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/ukho_27px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/ukho_27px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/wales_crest_13px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/wales_crest_13px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/wales_crest_13px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/wales_crest_13px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/wales_crest_18px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/wales_crest_18px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/wales_crest_18px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/wales_crest_18px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/wales_crest_27px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/wales_crest_27px.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/crests/wales_crest_27px_x2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/crests/wales_crest_27px_x2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/external-links/external-link-24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/external-links/external-link-24x24.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/external-links/external-link-black-12x12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/external-links/external-link-black-12x12.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/external-links/external-link-black-24x24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/external-links/external-link-black-24x24.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/external-links/external-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/external-links/external-link.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-calendar-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-calendar-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-calendar.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-file-download-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-file-download-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-file-download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-file-download.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-important-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-important-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-important.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-important.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-information-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-information-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-information.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-information.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-locator-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-locator-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-locator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-locator.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-pointer-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-pointer-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-pointer-black-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-pointer-black-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-pointer-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-pointer-black.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-pointer-indexed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-pointer-indexed.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-pointer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-pointer.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-search-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-search-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-search.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-1-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-1-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-1.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-10-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-10-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-10.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-11-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-11-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-11.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-12-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-12-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-12.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-13-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-13-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-13.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-14-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-14-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-14.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-2-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-2-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-2.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-3-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-3-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-3.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-4-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-4-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-4.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-5-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-5-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-5.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-6-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-6-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-6.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-7-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-7-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-7.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-8-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-8-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-8.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-9-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-9-2x.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/icon-steps/icon-step-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/icon-steps/icon-step-9.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/player-icon-forward.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/player-icon-forward.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/player-icon-pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/player-icon-pause.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/player-icon-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/player-icon-play.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/player-icon-rewind.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/player-icon-rewind.png -------------------------------------------------------------------------------- /assets-frontend/images/icons/player-icon-volume.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/icons/player-icon-volume.png -------------------------------------------------------------------------------- /assets-frontend/images/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/loading.gif -------------------------------------------------------------------------------- /assets-frontend/images/marriage_allowance_rings.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/marriage_allowance_rings.jpg -------------------------------------------------------------------------------- /assets-frontend/images/open-government-licence_2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/open-government-licence_2x.png -------------------------------------------------------------------------------- /assets-frontend/images/opengraph-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/opengraph-image.png -------------------------------------------------------------------------------- /assets-frontend/images/p60-form-rti-p60-payment-for-year.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/p60-form-rti-p60-payment-for-year.jpg -------------------------------------------------------------------------------- /assets-frontend/images/p60-form-rti-p60-total-tax-ytd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/p60-form-rti-p60-total-tax-ytd.jpg -------------------------------------------------------------------------------- /assets-frontend/images/rti-payslip.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/rti-payslip.jpg -------------------------------------------------------------------------------- /assets-frontend/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/sort_asc.png -------------------------------------------------------------------------------- /assets-frontend/images/sort_asc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/sort_asc_disabled.png -------------------------------------------------------------------------------- /assets-frontend/images/sort_both.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/sort_both.png -------------------------------------------------------------------------------- /assets-frontend/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/sort_desc.png -------------------------------------------------------------------------------- /assets-frontend/images/sort_desc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/sort_desc_disabled.png -------------------------------------------------------------------------------- /assets-frontend/images/statements-flag3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/statements-flag3.png -------------------------------------------------------------------------------- /assets-frontend/images/valid-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/valid-icon.png -------------------------------------------------------------------------------- /assets-frontend/images/valid-icon.svg: -------------------------------------------------------------------------------- 1 | valid_icon -------------------------------------------------------------------------------- /assets-frontend/images/worldpaylogo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/worldpaylogo.jpg -------------------------------------------------------------------------------- /assets-frontend/images/worldpaylogo_sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/assets-frontend/images/worldpaylogo_sm.png -------------------------------------------------------------------------------- /create-release.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | set -e 3 | 4 | REPO_PATH='alphagov/govuk_prototype_kit' 5 | 6 | echo "Add config for alphagov/$REPO_PATH" 7 | 8 | git config --global user.name "Travis CI" 9 | git config --global user.email "travis@travis-ci.org" 10 | git remote add origin_ssh git@github.com:$REPO_PATH.git 11 | 12 | # This openssl command was generated automatically by `travis encrypt-file`, see `.travis/README.md` for more details 13 | openssl aes-256-cbc -K $encrypted_a0ab9bc5246b_key -iv $encrypted_a0ab9bc5246b_iv -in .travis/govuk_prototype_kit.enc -out ~/.ssh/id_rsa -d 14 | chmod 600 ~/.ssh/id_rsa 15 | 16 | echo "Check to see if the version file has been updated" 17 | 18 | # Get the version from the version file 19 | VERSION_TAG="v`cat VERSION.txt`" 20 | 21 | # Create a new tag - if the version file has been updated and a tag for that 22 | # version doesn't already exist 23 | 24 | # Check to make sure the tag doesn't already exist 25 | if ! git rev-parse $VERSION_TAG >/dev/null 2>&1; then 26 | echo "Creating new tag: $VERSION_TAG" 27 | 28 | # Create a new tag and push to Github 29 | git tag $VERSION_TAG 30 | git push origin_ssh $VERSION_TAG 31 | 32 | # This tag will trigger the builds for the deploy providers marked "# For tagged commits" in .travis.yml 33 | 34 | # Alias branch for the most recently released tag, for easier diffing 35 | # Force push local `master` branch to the `latest-release` branch on Github 36 | git push --force origin_ssh master:latest-release 37 | echo "Pushed latest-release branch to GitHub" 38 | 39 | else 40 | echo "Not creating a new tag, or updating the latest-release branch as the tag already exists..." 41 | fi 42 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | # Documentation 2 | 3 | [Documentation and examples](https://govuk-prototype-kit.herokuapp.com/docs) 4 | 5 | Documentation is also available when running the app locally at http:localhost:3000/docs 6 | 7 | -------------------------------------------------------------------------------- /docs/assets/images/docs/installing-mavericks-popup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/docs/assets/images/docs/installing-mavericks-popup.png -------------------------------------------------------------------------------- /docs/assets/images/docs/mac-home-folder-projects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/docs/assets/images/docs/mac-home-folder-projects.png -------------------------------------------------------------------------------- /docs/assets/images/docs/prototype-kit-homepage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hmrc/design-patterns/4d9538843c1ff79b232d3e2fd651265c96a82daa/docs/assets/images/docs/prototype-kit-homepage.png -------------------------------------------------------------------------------- /docs/assets/javascripts/docs.js: -------------------------------------------------------------------------------- 1 | /* global $ */ 2 | /* global GOVUK */ 3 | 4 | // Warn about using the kit in production 5 | if ( 6 | window.sessionStorage && window.sessionStorage.getItem('prototypeWarning') !== 'false' && 7 | window.console && window.console.info 8 | ) { 9 | window.console.info('GOV.UK Prototype Kit - do not use for production') 10 | window.sessionStorage.setItem('prototypeWarning', true) 11 | } 12 | 13 | $(document).ready(function () { 14 | // Use GOV.UK shim-links-with-button-role.js to trigger a link styled to look like a button, 15 | // with role="button" when the space key is pressed. 16 | GOVUK.shimLinksWithButtonRole.init() 17 | 18 | // Show and hide toggled content 19 | // Where .multiple-choice uses the data-target attribute 20 | // to toggle hidden content 21 | var showHideContent = new GOVUK.ShowHideContent() 22 | showHideContent.init() 23 | }) 24 | -------------------------------------------------------------------------------- /docs/assets/sass/docs-ie8.scss: -------------------------------------------------------------------------------- 1 | $is-ie: true; 2 | $ie-version: 8; 3 | 4 | @import "docs"; 5 | -------------------------------------------------------------------------------- /docs/assets/sass/docs.scss: -------------------------------------------------------------------------------- 1 | @import "govuk-elements"; 2 | 3 | .markdown { 4 | h1 { 5 | @extend .heading-xlarge; 6 | } 7 | 8 | h2 { 9 | @extend .heading-large; 10 | } 11 | 12 | h3 { 13 | @extend .heading-medium; 14 | } 15 | 16 | h4 { 17 | @extend .heading-small; 18 | } 19 | 20 | code { 21 | background: $grey-4; 22 | padding: 3px; 23 | font-size: 1em; 24 | } 25 | 26 | pre > code { 27 | @extend .code; 28 | display: block; 29 | @extend .panel; 30 | @extend .panel-border-wide; 31 | margin-bottom: 15px; 32 | } 33 | 34 | img { 35 | max-width: 100%; 36 | } 37 | 38 | ul { 39 | @extend .list; 40 | @extend .list-bullet; 41 | } 42 | 43 | blockquote { 44 | @extend .panel; 45 | @extend .panel-border-wide; 46 | } 47 | 48 | strong { 49 | font-weight: 700; 50 | } 51 | } 52 | 53 | -------------------------------------------------------------------------------- /docs/documentation/creating-routes.md: -------------------------------------------------------------------------------- 1 | # Creating routes 2 | 3 | You may want to make prototypes that are more complex than simple HTML files. For example, you may want to respond to input from a form, and show different pages based on answers given by the user. 4 | 5 | To do this you will need to create 'routes' - rules for the server to respond to certain URLs. 6 | 7 | For example, with a route of `/sample` the URL is: 8 | 9 | http://localhost:3000/sample 10 | 11 | All routes for the application are kept in the `routes.js` file. They follow this format: 12 | 13 | verb(route, callback(request, response) { 14 | response.render(template, data); 15 | }); 16 | 17 | Let's break this down into bits: 18 | 19 | * **verb** : the type of request ('get' or 'post') 20 | * **route** : the route section of the URL as explained above 21 | * **callback** : a function that contains the code executed when that route is requested 22 | * **request** : the 1st parameter sent to the callback, an object representing the HTTP request made 23 | * **response** : the 2nd parameter sent to the callback, an object representing the HTTP response that will be sent 24 | * **response.render** : method of the response object used to create a page to send back to the browser that made the request 25 | * **template** : the 1st parameter sent to response.render, the name of the template file used to render the page, minus its `.html` extension 26 | * **data** : [optional] the 2nd parameter sent to response.render, an object containing variables to send into the template 27 | 28 | So as an example, a request for the URL `http://localhost:3000/examples/template-data` has this route: 29 | 30 | router.get('/examples/template-data', function(req, res) { 31 | res.render('examples/template-data', { 'name' : 'Foo' }); 32 | }); 33 | 34 | We are saying that for a `get` request for the `/template-data` route we should run the code: 35 | 36 | res.render('examples/template-data', { 'name' : 'Foo' }); 37 | 38 | This is the `render` method of the `res` parameter being run with two parameters: 39 | 40 | - the template called `template-data` 41 | - the data object `{ 'name' : 'Foo' }` 42 | 43 | Template files are found this way: `/views/` + `template` parameter + `.html`. The `sample` template therefore points to the `/views/examples/template-data.html` file. 44 | 45 | In the same way, the template `/examples/hello_world` would point to the `/examples/hello_world.html` file. 46 | 47 | [Read the Express documentation for routes](http://expressjs.com/4x/api.html#app.VERB) -------------------------------------------------------------------------------- /docs/documentation/install/developer-install-instructions.md: -------------------------------------------------------------------------------- 1 | # Instructions for developers 2 | 3 | It's built on the [Express](http://expressjs.com/) framework, and uses these GOV.UK resources: 4 | 5 | - [GOV.UK template](https://github.com/alphagov/govuk_template) 6 | - [GOV.UK front end toolkit](https://github.com/alphagov/govuk_frontend_toolkit) 7 | - [GOV.UK elements](https://github.com/alphagov/govuk_elements) 8 | 9 | ## Requirements 10 | 11 | node.js - version 6.x.x 12 | 13 | ## Install dependencies 14 | 15 | ``` 16 | npm install 17 | ``` 18 | 19 | ## Run the kit 20 | ``` 21 | npm start 22 | ``` 23 | 24 | Go to [localhost:3000](http://localhost:3000) in your browser. 25 | -------------------------------------------------------------------------------- /docs/documentation/install/install-the-kit.md: -------------------------------------------------------------------------------- 1 | # Install the kit 2 | 3 | ## Download the kit as a zip 4 | 5 | The simplest way to get the kit is to [download it as a zip](/prototype-admin/download-latest). You'll use a new copy of the kit for each new prototype you make. That way your prototypes don’t interfere with each other. 6 | 7 | ### Decide where you want to keep your prototypes 8 | 9 | We recommend keeping all your prototypes in one folder called `projects`. 10 | 11 | #### Mac users 12 | 13 | Create a folder called `projects` in your home folder. You can open your home folder by opening a new finder window, and selecting `go > home` from the top menu. 14 | 15 | ![Screenshot of a 'projects' folder in the mac home folder](/public/images/docs/mac-home-folder-projects.png) 16 | 17 | #### Windows users 18 | 19 | Create a folder called `projects` in your `Documents` or `My Documents` folder. 20 | 21 | ### Unzip the kit 22 | 23 | Unzip the kit you downloaded - you should end up with a folder called `govuk_prototype_kit-3.0.0` 24 | 25 | ### Rename the kit 26 | 27 | Rename the folder to something descriptive for your prototype. For this guide, we’ll use `juggling-licence-prototype`. 28 | 29 | ### Move the kit in to projects folder 30 | 31 | Move the kit in to your newly created `projects` folder. 32 | 33 | ## Terminal basics 34 | 35 | The terminal (terminal on mac and linux, git bash on windows) lets you type in commands and run programs on your computer. You can also use it to browse your file system - to open folders, etc. 36 | 37 | Learning a few basic terminal commands can make using the kit much easier. 38 | 39 | * [Tutorial on using terminal (mac)](http://mac.appstorm.net/how-to/utilities-how-to/how-to-use-terminal-the-basics/) 40 | * [Tutorial on using git bash (windows)](https://openhatch.org/missions/windows-setup/open-git-bash-prompt) 41 | 42 | ### Navigating to your prototype 43 | 44 | You need to be able to navigate to your prototype from the terminal. Most commands for the kit need to be run from the prototype folder. 45 | 46 | #### Mac users: 47 | ``` 48 | cd ~/projects/juggling-licence-prototype 49 | ``` 50 | 51 | #### Windows users: 52 | 53 | Navigating will depend on whether you have a `Documents` or a `My Documents` folder. 54 | 55 | Documents: 56 | ``` 57 | cd ~/Documents/projects/juggling-licence-prototype 58 | ``` 59 | My Documents: 60 | ``` 61 | cd ~/My\ Documents/projects/juggling-licence-prototype 62 | ``` 63 | 64 | #### Returning to this folder 65 | 66 | It’s important that you be able to navigate to your prototype in the terminal - most commands will need to be run from the prototype folder. 67 | 68 | To check you’re in the right folder, you can run `ls` (list items): 69 | ``` 70 | ls 71 | ``` 72 | You should see a list of files inside the prototype, starting with `CHANGELOG.md, CONTRIBUTING.md, gulpfile.js etc` 73 | 74 | > If you don’t see these files, check that you installed the kit into the right location and named it correctly. 75 | 76 | ## Install the kit 77 | 78 | ### Open a terminal window 79 | 80 | If you don’t already have one open, open a terminal window and navigate to your prototype folder. 81 | 82 | ### Install modules 83 | 84 | You need to download extra code used by the kit before it can run. You can get this by running: 85 | ``` 86 | npm install 87 | ``` 88 | The install may take up to a minute. Whilst installing it may `WARN` about some items - this is ok. As long as there are no `ERROR`s you can continue. 89 | 90 | 91 | Next (run the kit) 92 | -------------------------------------------------------------------------------- /docs/documentation/install/introduction.md: -------------------------------------------------------------------------------- 1 | # Installation guide for new users 2 | 3 | This guide will walk you through installing and getting started with the kit. You don’t need any technical knowledge to follow along. If you get stuck, post a message on Slack, or if you have a developer on your team, they should be able to help. 4 | 5 | Installation takes up to 30 minutes depending on how much you need to install. 6 | 7 | If you’re comfortable using git and the terminal, you may prefer the [developer friendly instructions](developer-install-instructions). 8 | 9 | > This guide is a work in progress. Please help [contribute](https://github.com/alphagov/govuk_prototype_kit/blob/master/CONTRIBUTING.md) to make it even better. 10 | 11 | ## Introduction 12 | 13 | The prototype kit provides a simple way to make interactive prototypes that look and feel like pages on GOV.UK. These prototypes can be used to design and lay out pages, and to use in user research. 14 | 15 | 16 | 17 | You’ll use a copy of the kit for each different prototype you want to make - they’re self contained. Once installed, the kit uses about 100mb. 18 | 19 | Next (requirements) 20 | -------------------------------------------------------------------------------- /docs/documentation/install/run-the-kit.md: -------------------------------------------------------------------------------- 1 | # Run the kit 2 | 3 | You’ll use the terminal to start and stop the kit. 4 | 5 | ## Open the prototype folder in terminal 6 | 7 | In terminal, navigate to your prototype folder. 8 | 9 | ## Running the kit 10 | 11 | In terminal: 12 | ``` 13 | npm start 14 | ``` 15 | 16 | After the kit has started, you should see a message telling you that the kit is running: 17 | ``` 18 | Listening on port 3000 url: http://localhost:3000 19 | ``` 20 | 21 | ## Check it works 22 | 23 | In your web browser, visit http://localhost:3000 (opens in a new tab) 24 | 25 | You should see the prototype welcome page. 26 | 27 | ![Screenshot of the prototype kit homepage](/public/images/docs/prototype-kit-homepage.png) 28 | 29 | ## Quitting the kit 30 | 31 | It’s fine to leave the kit running for days or while your computer is asleep. 32 | 33 | ### To quit the kit 34 | 35 | In terminal press the `ctrl` and `c` keys together. 36 | 37 | ## Installation complete 38 | 39 | The kit is now installed. Congratulations! 40 | 41 | 42 | -------------------------------------------------------------------------------- /docs/documentation/making-pages.md: -------------------------------------------------------------------------------- 1 | # Making pages 2 | 3 | Save all HTML pages (called templates below) to the `app/views` folder otherwise they won't be recognised by the application. 4 | 5 | All template files should have the `.html` extension. 6 | 7 | Any template will be automatically served. For example if you add a template called `help.html` and then go to `localhost:3000/help` in your browser, you will see that page. 8 | 9 | Folders also work, so you can make the template `views/account/profile.html`, and then view the page by going to `localhost:3000/account/profile`. 10 | 11 | For more complex prototypes, you will need to use Nunjucks. 12 | 13 | ## Nunjucks 14 | 15 | All templates used in your app should be written in [Nunjucks](https://mozilla.github.io/nunjucks/templating.html) syntax. 16 | 17 | For example, the following route could be added to `routes.js`: 18 | 19 | router.get('/hello-world', function (req, res) { 20 | res.render('hello_world', {'message' : 'Hello world'}); 21 | }); 22 | 23 | Our `views/hello_world.html` file would be: 24 | 25 | 26 | Hello world page 27 | 28 |

{{ message }}.

29 | 30 | 31 | 32 | The resulting HTML page will be: 33 | 34 | 35 | Hello world page 36 | 37 |

Hello world.

38 | 39 | 40 | 41 | You can read more in the [Nunjucks documentation](https://mozilla.github.io/nunjucks/templating.html). 42 | -------------------------------------------------------------------------------- /docs/documentation/principles.md: -------------------------------------------------------------------------------- 1 | # Principles 2 | 3 | The prototype kit: 4 | 5 | - is designed for prototyping, not for production code 6 | - requires minimal skills to get started: HTML, CSS 7 | - should be fully documented in a way that is accessible to the target audience 8 | - makes use of existing GOV.UK tools and templates; the [GOV.UK template](https://github.com/alphagov/govuk_template), [GOV.UK front end toolkit](https://github.com/alphagov/govuk_frontend_toolkit) and [GOV.UK elements](https://github.com/alphagov/govuk_elements) 9 | - allows for server-side code 10 | - can be extended - for example using NPM to install a module, access datastores, etc 11 | - makes it easy to share prototypes with others online 12 | -------------------------------------------------------------------------------- /docs/documentation/publishing-on-heroku.md: -------------------------------------------------------------------------------- 1 | # Publishing on the web (Heroku) 2 | 3 | We recommend using [Heroku](http://www.heroku.com) to get your prototype online. It’s simple and fast to deploy new versions as you work. 4 | 5 | Once your prototype is on Heroku, other people will be able to access and try your prototype from their own computers or mobile devices. 6 | 7 | > **DO NOT** enter real user data in to prototypes hosted on Heroku. If your prototype stores or collects user data, talk to a security professional about appropriate security steps you must take. 8 | 9 | A prototype deployed on Heroku is called an `app` - it will have a url like: 10 | `your-prototype.herokuapp.com`. 11 | 12 | You can have multiple apps running on Heroku - projects often have several so they can try different ideas out at once. 13 | 14 | ## 1) Set up Git 15 | You need to [set up Git](setting-up-git) on your prototype before you can use Heroku. 16 | 17 | ## 2) Sign up to Heroku 18 | 19 | If you’re new to Heroku, [sign up for a free account](https://signup.heroku.com/). When asked what language you use, select `node.js`. 20 | 21 | ## 3) Install the Heroku toolbelt 22 | 23 | Install the [Heroku toolbelt](https://toolbelt.heroku.com/). 24 | 25 | > On Windows, after downloading the toolbelt you'll need to run `heroku login` using the `cmd` app, as it does not work in Git Bash. Once you've logged in, you can return to using Git Bash. 26 | 27 | The toolbelt lets you use Heroku through the terminal. You will need to restart the terminal after installing the toolbelt. 28 | 29 | ## 4) Choose a name for your app 30 | Think of a name for your app. You need to choose a name that's unique. The name is used in the url for your prototype. For example the name: 31 | 32 | `govuk-payments-prototype` 33 | 34 | will create an app at: 35 | 36 | `govuk-payments-prototype.herokuapp.com`. 37 | 38 | ## 5) Create a Heroku app 39 | 40 | In the terminal, go to the folder of your prototype and run: 41 | 42 | ``` 43 | heroku apps:create [name of your app] --region eu 44 | ``` 45 | Replace `[name of your app]` with your app name from step 4. 46 | 47 | ## 6) Set a username and password 48 | 49 | Prototypes made with the kit require a username and password when published online. This stops members of the public coming across your prototype by accident. 50 | 51 | ### To set username and password: 52 | 53 | ``` 54 | heroku config:set USERNAME=username_here 55 | heroku config:set PASSWORD=password_here 56 | ``` 57 | 58 | ## 7) Deploy your work 59 | 60 | Make sure any changes you've made to your prototype have been committed to git. 61 | 62 | From your prototype folder: 63 | ``` 64 | git push heroku master 65 | ``` 66 | This will push your work to Heroku. Deploying may take a minute or so. 67 | 68 | ## 8) View your prototype on the web 69 | 70 | After your work is deployed, you will be able to view it on the web by visiting `[name].herokuapp.com`. 71 | You can run `heroku open` to open your prototype in a browser. 72 | 73 | > Heroku puts apps to sleep that haven’t been accessed in a while - so if you’ve not visited your prototype for a while it may take a few seconds to open. 74 | -------------------------------------------------------------------------------- /docs/documentation/session.md: -------------------------------------------------------------------------------- 1 | # Storing data in session 2 | 3 | **Advanced topic** 4 | 5 | If you need to store data for each user, the best way to do it is using session data. 6 | 7 | This means that if more than one person is using your prototype, their data will not get mixed up. 8 | 9 | The easiest way to clear session data is to use 'Incognito mode' for each user, and close that window when you're done. 10 | 11 | ## How to use 12 | 13 | In a route function, refer to `req.session`. 14 | 15 | For example you might have `req.session.over18` or `req.session.firstName`. 16 | 17 | You can see a full example here: 18 | 19 | [https://github.com/expressjs/session#example](https://github.com/expressjs/session#example) 20 | 21 | You can read more about Express Session here: 22 | 23 | [https://github.com/expressjs/session](https://github.com/expressjs/session) -------------------------------------------------------------------------------- /docs/documentation/tips-and-tricks.md: -------------------------------------------------------------------------------- 1 | # Tips and tricks 2 | 3 | A few useful things to help you get started. 4 | 5 | ## Update the Service name 6 | 7 | You can change the service name by editing the file '/app/config.js'. 8 | 9 | module.exports = { 10 | 11 | // Service name used in header. Eg: 'Renew your passport' 12 | serviceName: "Service name goes here", 13 | 14 | }; 15 | 16 | ## Show navigation in the header 17 | 18 | Remove the comments surrounding the unordered list with an ID of proposition links. 19 | 20 | 29 | 30 | An example of this can be seen in the [question-page.html](../app/views/examples/question-page.html) template. 31 | 32 | ## Add a phase banner 33 | 34 | Include either the alpha or beta phase banner from the `app/views/includes/` folder. 35 | 36 | ### How to include an Alpha banner 37 | 38 | {% include "includes/phase_banner_alpha.html" %} 39 | 40 | ### How to include a Beta banner 41 | 42 | {% include "patterns/header/includes/phase_banner_beta.html" %} 43 | 44 | 45 | -------------------------------------------------------------------------------- /docs/documentation/using-verify.md: -------------------------------------------------------------------------------- 1 | ## Using GOV.UK Verify 2 | 3 | [GOV.UK Verify](https://www.gov.uk/government/publications/introducing-govuk-verify/introducing-govuk-verify) is the new way for users to prove who they are whilst using an online service. You can [find out more about using it here](https://www.gov.uk/service-manual/identity-assurance). 4 | 5 | If you'd like to test the use of Verify in your prototype, there is a GOV.UK Verify stable prototype you can use. 6 | 7 | To use it, you'll need to contact govukverify_engagement@digital.cabinet-office.gov.uk and request access. 8 | -------------------------------------------------------------------------------- /docs/documentation/writing-css.md: -------------------------------------------------------------------------------- 1 | # Writing CSS 2 | 3 | CSS used in the prototype kit is written in the SCSS syntax of [Sass](http://sass-lang.com/documentation/file.SASS_REFERENCE.html#syntax). 4 | 5 | ## Sass 6 | 7 | Sass is an extension of CSS that gives a load of extra features useful in producing CSS for the mass of different devices and browsers. 8 | 9 | SCSS was chosen because you can paste CSS into it without breaking it which is useful for prototyping. Using SCSS means you can also use the [govuk_frontend_toolkit](https://github.com/alphagov/govuk_frontend_toolkit) Sass libraries which include styles for colours, typography, cross-browser fixes and other things which are used across GOV.UK. 10 | 11 | ## Writing code 12 | 13 | You write your Sass in [app/assets/sass](../app/assets/sass) and the prototype kit will compile it into the CSS used in your page (found in /public/stylesheets). The app watches your files so this will happen automatically. 14 | 15 | There is already a CSS file included to use called [application.scss](../app/assets/sass/application.scss) which compiles into [application.css](../public/stylesheets/application.css). Note that Sass files are identified by the `.scss` extension. 16 | 17 | Every time a change happens in [application.scss](../app/assets/sass/application.scss) it will produce a new version of [application.css](../public/stylesheets/application.css). Make sure to write your css in [application.scss](../app/assets/sass/application.scss) as anything you put in [application.css](../public/stylesheets/application.css) will get overridden. 18 | 19 | Try starting the app and adding some styles to `application.scss`. If you open `application.css` you should now see the compiled version of those styles. 20 | 21 | ## Using the govuk_frontend_toolkit 22 | 23 | You can use the Sass libraries in the [govuk_frontend_toolkit](https://github.com/alphagov/govuk_frontend_toolkit) by importing the files from there directly into `application.scss`. 24 | 25 | If you look at [application.scss](../app/assets/sass/application.scss) you should see some are already being used. 26 | 27 | @import '_typography'; 28 | 29 | .... 30 | 31 | h1 { 32 | @include bold-48; 33 | 34 | The line `@import '_typography';` makes all the code in [_typography.scss](https://github.com/alphagov/govuk_frontend_toolkit/blob/master/stylesheets/_typography.scss) available. The `h1` can therefore be styled in the 48pt bold form of the font by using `@include bold-48;` to call the `bold-48` mixin. 35 | 36 | ## Imports 37 | 38 | Imports are done from either the toolkit's [stylesheets](https://github.com/alphagov/govuk_frontend_toolkit/tree/master/stylesheets/) folder or the [app/assets/sass](../app/assets/sass) folder application.scss sits in. The latter means you can create your own partial files to import. 39 | 40 | Note that the convention is to start the name of any partial with an underscore, like those in the toolkit. 41 | -------------------------------------------------------------------------------- /docs/documentation_routes.js: -------------------------------------------------------------------------------- 1 | var express = require('express') 2 | var fs = require('fs') 3 | var marked = require('marked') 4 | var path = require('path') 5 | var router = express.Router() 6 | var utils = require('../lib/utils.js') 7 | 8 | // Page routes 9 | 10 | // Docs index 11 | router.get('/', function (req, res) { 12 | res.render('index') 13 | }) 14 | 15 | router.get('/install', function (req, res) { 16 | var url = utils.getLatestRelease() 17 | res.render('install', { 'releaseURL': url }) 18 | }) 19 | 20 | // Pages in install folder are markdown 21 | router.get('/install/:page', function (req, res) { 22 | // If the link already has .md on the end (for GitHub docs) 23 | // remove this when we render the page 24 | if (req.params.page.slice(-3).toLowerCase() === '.md') { 25 | req.params.page = req.params.page.slice(0, -3) 26 | } 27 | redirectMarkdown(req.params.page, res) 28 | var doc = fs.readFileSync(path.join(__dirname, '/documentation/install/', req.params.page + '.md'), 'utf8') 29 | var html = marked(doc) 30 | res.render('install_template', {'document': html}) 31 | }) 32 | 33 | // Examples - exampes post here 34 | router.post('/tutorials-and-examples', function (req, res) { 35 | res.redirect('tutorials-and-examples') 36 | }) 37 | 38 | // Example routes 39 | 40 | // Passing data into a page 41 | 42 | router.get('/examples/template-data', function (req, res) { 43 | res.render('examples/template-data', { 'name': 'Foo' }) 44 | }) 45 | 46 | // Branching 47 | 48 | router.get('/examples/over-18', function (req, res) { 49 | // get the answer from the query string (eg. ?over18=false) 50 | var over18 = req.query.over18 51 | 52 | if (over18 === 'false') { 53 | // redirect to the relevant page 54 | res.redirect('/docs/examples/under-18') 55 | } else { 56 | // if over18 is any other value (or is missing) render the page requested 57 | res.render('examples/over-18') 58 | } 59 | }) 60 | 61 | module.exports = router 62 | 63 | // Strip off markdown extensions if present and redirect 64 | var redirectMarkdown = function (requestedPage, res) { 65 | if (requestedPage.slice(-3).toLowerCase() === '.md') { 66 | res.redirect(requestedPage.slice(0, -3)) 67 | } 68 | if (requestedPage.slice(-9).toLowerCase() === '.markdown') { 69 | res.redirect(requestedPage.slice(0, -9)) 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /docs/linting.md: -------------------------------------------------------------------------------- 1 | # Linting 2 | 3 | The prototype kit uses [standardjs](http://standardjs.com/), an opinionated JavaScript linter. All JavaScript files follow its conventions, and it runs on CI to ensure that new pull requests are in line with them. 4 | 5 | ## Running standard manually 6 | 7 | To check the whole codebase, run: 8 | 9 | ```bash 10 | npm run lint 11 | ``` 12 | 13 | ## Running standard in your editor 14 | 15 | Easier than running standard manually is to install it as a plugin in your editor. This way, it will run automatically while you work, catching errors as they happen on a per-file basis. 16 | 17 | ### Sublime Text 18 | 19 | Using [Package Control](https://packagecontrol.io/), install [SublimeLinter](http://www.sublimelinter.com/en/latest/) and [SublimeLinter-contrib-standard](https://packagecontrol.io/packages/SublimeLinter-contrib-standard). 20 | 21 | For automatic formatting on save, install [StandardFormat](https://packagecontrol.io/packages/StandardFormat). 22 | 23 | ### Atom 24 | 25 | Install [linter-js-standard](https://atom.io/packages/linter-js-standard). 26 | 27 | For automatic formatting, install [standard-formatter](https://atom.io/packages/standard-formatter). For snippets, install [standardjs-snippets](https://atom.io/packages/standardjs-snippets). 28 | 29 | ### Other editors 30 | 31 | There are [official guides for most of the popular editors](http://standardjs.com/index.html#text-editor-plugins). 32 | 33 | ## Do I need to respect this? 34 | 35 | If you want to submit a pull request to the prototype kit, your code will need to pass the linter. 36 | 37 | If you're just using the prototype kit in a separate project, then no, you aren't forced to use standard, or any other linter for that matter. Just write code as you would normally. 38 | 39 | ## Why lint? 40 | 41 | Automated linting ensures project-wide consistency and limits (ideally eliminates) bikeshedding discussions involving spacing, naming conventions, quotes, and others during the pull request review process. It frees the reviewer to focus on the actual substance rather than stylistic issues. 42 | 43 | More importantly, linting will catch some low hanging programmer errors, such as calling an undefined function or assigning a value and then never reading it. These allow the programmer to catch some bugs before having to test the code. 44 | 45 | ## Why standard? 46 | 47 | Linting rules can be a contentious subject, and a lot of them are down to personal preference. The core idea of standard is to be opinionated and limit the amount of initial bikeshedding discussions around which linting rules to pick, because in the end, it's not as important which rules you pick as it is to just be consistent about it. This is why we chose standard: because we want to be consistent about how we write code, but don't want to spend unnecessary time picking different rules (which all have valid points). 48 | 49 | The standard docs have a [complete list of rules and some reasoning behind them](http://standardjs.com/rules.html). 50 | 51 | Standard is also [widely used (warning: large file)](https://github.com/feross/standard-packages/blob/master/all.json) (which means community familiarity) and has a [good ecosystem of plugins](http://standardjs.com/awesome.html). 52 | 53 | If we decide to move away from it, standard is effectively just a preconfigured bundle of eslint, so it can easily be replaced by switching to a generic `.eslintrc` setup. 54 | -------------------------------------------------------------------------------- /docs/views/about.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | About - GOV.UK Prototype kit 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 |
11 |
12 | 17 |

About

18 | 19 |

20 | The prototype kit provides a simple way to make interactive prototypes that look like pages on GOV.UK. These prototypes can be used to show ideas to people you work with, and to do user research 21 |

22 | 23 |

Community

24 | 25 |

We have two Slack channels for the Prototype kit. You'll need a government email address to join.

26 | 30 | 31 | 32 |

Principles

33 | 34 |

The prototype kit:

35 |
    36 |
  • is designed for prototyping, not for production code
  • 37 |
  • requires minimal skills to get started: HTML, CSS
  • 38 |
  • should be fully documented in a way that is accessible to the target audience
  • 39 |
  • 40 | makes use of existing GOV.UK tools and templates; the GOV.UK template, GOV.UK front end toolkit and GOV.UK elements 41 |
  • 42 |
  • allows for server-side code
  • 43 |
  • can be extended - for example using NPM to install a module, access datastores, etc
  • 44 |
  • makes it easy to share prototypes with others online
  • 45 | 46 |
47 | 48 | 49 |

Privacy

50 | 51 | 52 |

You must protect user privacy at all times, even when using prototypes. Prototypes made with the kit look like GOV.UK, but do not have the same security provisions. Always make sure you are handling user data appropriately.

53 | 54 | 55 | 56 |

The kit is not a production framework

57 | 58 |

Things made with the kit may look like GOV.UK, but do not have production code and likely aren't fully accessible. Don't use the kit as a base for a production service.

59 | 60 |
61 | 62 | 63 |
64 | 65 | 66 |
67 | 68 | {% endblock %} -------------------------------------------------------------------------------- /docs/views/documentation_template.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block pageTitle %} 4 | Documentation - GOV.UK Prototype kit 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 | 16 | 17 |
18 | 19 |
20 | 21 | {{document | safe}} 22 | 23 |
24 | 25 |
26 | 27 |
28 | 29 | {% endblock %} -------------------------------------------------------------------------------- /docs/views/examples/blank-govuk.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Blank page 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 |
11 | 12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /docs/views/examples/blank-unbranded.html: -------------------------------------------------------------------------------- 1 | {% extends "layout_unbranded.html" %} 2 | 3 | {% block page_title %} 4 | Example without branding 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 | 11 |

12 | Example without GOV.UK branding 13 |

14 |

15 | This page doesn't use New Transport or display the GOV.UK header and footer. 16 |

17 | 18 |
19 | 20 | {% endblock %} 21 | -------------------------------------------------------------------------------- /docs/views/examples/branching.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Example - Branching 5 | {% endblock %} 6 | 7 | {% block content %} 8 |
9 | 10 | {% include "includes/breadcrumb_examples.html" %} 11 | 12 |
13 |
14 | 15 |
16 | 17 |

18 | Branching 19 |

20 | 21 |

22 | You may want to show a user different pages, depending on how they've answered a question. 23 |

24 | 25 |

26 | You can see the code for this example here: 27 |

28 | 29 |
30 | /docs/documentation_routes.js 31 | /docs/views/examples/branching.html 32 |
33 | 34 |

35 | Are you 18 or over? 36 |

37 | 38 |
39 |
40 | 41 | Are you 18 or over? 42 | 43 |
44 | 45 | 46 |
47 | 48 |
49 | 50 | 51 |
52 | 53 |
54 |
55 | 56 |
57 | 58 |
59 | 60 |
61 | 62 |
63 |
64 |
65 | {% endblock %} 66 | -------------------------------------------------------------------------------- /docs/views/examples/confirmation-page.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Confirmation page example 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 | 11 |
12 |
13 | 14 |
15 |

Application complete

16 |

17 | Your reference number is
18 | HDJ2123F 19 |

20 |
21 |

We have sent you a confirmation email.

22 | 23 |

What happens next

24 |

We've sent your application to Hackney Electoral Register Office.

25 |

They will contact you either to confirm your registration, or to ask for more information.

26 |

What did you think of this service? (takes 30 seconds)

27 | 28 | 29 |
30 |
31 | 32 |
33 | 34 | {% endblock %} 35 | -------------------------------------------------------------------------------- /docs/views/examples/elements/forms.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Example - Forms 5 | {% endblock %} 6 | 7 | {% block content %} 8 |
9 | 10 | {% include "includes/breadcrumb_examples.html" %} 11 | 12 |
13 | 14 |

15 | Your details 16 |

17 | 18 | 19 |
20 | 21 |

As shown on your birth certificate or passport

22 | 23 |
24 | 25 | 26 |
27 | 35 | 36 |
37 | 38 | 39 |
40 |
41 | Date of birth 42 | 43 |
44 | 45 |

For example, 31 3 1980

46 | 47 |
48 | 49 | 50 |
51 | 52 |
53 | 54 | 55 |
56 | 57 |
58 | 59 | 60 |
61 |
62 | 63 |
64 |
65 | 66 |
67 |
68 | Help with date of birth 69 |
70 |

71 | If you don’t know your exact date of birth, use the one you put on official documents (for example, your passport or driving licence). 72 |

73 |

74 | If you can’t provide your date of birth you’ll have to send copies of identity documents through the post. 75 |

76 |
77 |
78 |
79 | 80 |
81 | 82 |
83 | 84 |
85 | 86 |
87 | {% endblock %} 88 | -------------------------------------------------------------------------------- /docs/views/examples/elements/typography.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Example - Typography 5 | {% endblock %} 6 | 7 | {% block content %} 8 |
9 | 10 | {% include "includes/breadcrumb_examples.html" %} 11 | 12 |

13 | Typography 14 |

15 | 16 |
17 | 18 |

19 | A 27px section heading 20 | A 48px heading 21 |

22 | 23 |

24 | This is an intro paragraph at 24px. Maecenas faucibus mollis interdum. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. Integer posuere erat a ante venenatis dapibus posuere velit aliquet. Curabitur blandit tempus porttitor. Vestibulum id ligula porta felis euismod semper. 25 |

26 | 27 |

A 36px heading

28 | 29 |

30 | This is a body copy paragraph at 19px. Donec id elit non mi porta gravida at eget metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Donec sed odio dui. Aenean lacinia bibendum nulla sed consectetur. Aenean lacinia bibendum nulla sed consectetur. Sed posuere consectetur est at lobortis. 31 |

32 | 33 |

A 24px heading

34 | 35 |

36 | Etiam porta sem malesuada magna mollis euismod. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Sed posuere consectetur est at lobortis. Maecenas faucibus mollis interdum. Vestibulum id ligula porta felis euismod semper. Donec id elit non mi porta gravida at eget metus. 37 |

38 | 39 |

A 19px heading

40 | 41 |

Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Donec sed odio dui. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit. Nullam quis risus eget urna mollis ornare vel eu leo.

42 | 43 | 49 | 50 |
    51 |
  1. Here is a numbered list.
  2. 52 |
  3. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.
  4. 53 |
  5. Vestibulum id ligula porta felis euismod semper.
  6. 54 |
  7. Integer posuere erat a ante venenatis dapibus posuere velit aliquet.
  8. 55 |
56 | 57 | 63 | 64 |
65 | 66 |
67 | {% endblock %} 68 | -------------------------------------------------------------------------------- /docs/views/examples/over-18.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Example - Branching - Over 18 5 | {% endblock %} 6 | 7 | {% block content %} 8 |
9 | 10 | {% include "includes/breadcrumb_examples.html" %} 11 | 12 |
13 |
14 | 15 |

16 | Over 18 17 |

18 | 19 |

20 | Congratulations, you are over 18. 21 |

22 | 23 |

24 | Back to the branching example 25 |

26 | 27 |
28 |
29 |
30 | {% endblock %} 31 | -------------------------------------------------------------------------------- /docs/views/examples/override-service-name.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | GOV.UK prototype kit - override service name 5 | {% endblock %} 6 | 7 | {% block service_name %} 8 | Report a smokey vehicle 9 | {% endblock %} 10 | 11 | {% block content %} 12 | 13 |
14 | 15 | {% include "includes/breadcrumb_examples.html" %} 16 | 17 |
18 |
19 | 20 |

21 | Override service name 22 |

{{releaseVersion | log }} 23 |

24 | This is an example of overriding the normal service name on one page. 25 |

26 | 27 |

28 | Use this code: 29 |

30 | 31 |
32 | {% raw %} 33 | {% block service_name %} 34 | Report a smokey vehicle 35 | {% endblock %} 36 | {% endraw %} 37 |
38 | 39 |
40 |
41 |
42 | 43 | {% endblock %} 44 | -------------------------------------------------------------------------------- /docs/views/examples/pass-data/vehicle-check-answers.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Check your answers 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 | 11 |
12 |
13 |

14 | Check your answers before sending your application 15 |

16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 28 | 30 | 31 | 32 | 33 | 34 | 35 | 38 | 41 | 46 | 47 | 48 | 51 | 54 | 59 | 60 | 61 | 64 | 73 | 78 | 79 | 80 |
24 |

25 | Vehicle details 26 |

27 |
29 |
36 | Registration number 37 | 39 | {{data['vehicle-registration']}} 40 | 42 | 43 | Change registration number 44 | 45 |
49 | Vehicle type 50 | 52 | {{data['vehicle-type']}} 53 | 55 | 56 | Change vehicle type 57 | 58 |
62 | Vehicle features 63 | 65 |
    66 | {% for feature in data['vehicle-features'] %} 67 |
  • {{ feature }}
  • 68 | {% else %} 69 |
  • No features selected
  • 70 | {% endfor %} 71 |
72 |
74 | 75 | Change vehicle features 76 | 77 |
81 |
82 | 83 | 90 | 91 |
92 | 93 |
94 | 95 |
96 | 97 | {% endblock %} 98 | -------------------------------------------------------------------------------- /docs/views/examples/pass-data/vehicle-features.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Example - Passing data 5 | {% endblock %} 6 | 7 | {% block content %} 8 |
9 | 10 | {% include "includes/breadcrumb_examples.html" %} 11 | 12 |
13 |
14 | 15 |
16 | 17 |

18 | Which of these applies to your vehicle? 19 |

20 | 21 |
22 |
23 | 24 | 25 | Which of these applies to your vehicle? 26 | 27 | 28 |

29 | Select all that apply 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 | {% endblock %} 60 | -------------------------------------------------------------------------------- /docs/views/examples/pass-data/vehicle-registration.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Example - Passing data 5 | {% endblock %} 6 | 7 | {% block content %} 8 |
9 | 10 | {% include "includes/breadcrumb_examples.html" %} 11 | 12 |
13 |
14 | 15 |
16 | 17 |

18 | What is your vehicle registration number? 19 |

20 | 21 |
22 |
23 | 24 | 25 | What is your vehicle registration number? 26 | 27 | 28 | 29 | 30 | 31 |
32 |
33 | 34 |
35 | 36 |
37 | 38 |
39 | 40 |
41 |
42 |
43 | {% endblock %} 44 | -------------------------------------------------------------------------------- /docs/views/examples/pass-data/vehicle-type.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Example - Passing data 5 | {% endblock %} 6 | 7 | {% block content %} 8 |
9 | 10 | {% include "includes/breadcrumb_examples.html" %} 11 | 12 |
13 |
14 | 15 |
16 | 17 |

18 | What type of vehicle do you have? 19 |

20 | 21 |
22 |
23 | 24 | 25 | What type of vehicle do you have? 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 | {% endblock %} 56 | -------------------------------------------------------------------------------- /docs/views/examples/question-page.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Question page 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 |
11 |
12 | 13 | Back 14 | 15 |

16 | What is your date of birth? 17 |

18 | 19 |
20 | 21 |
22 | Date of birth 23 |
24 | 25 |

For example, 31 3 1980

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 | {% endblock %} 56 | -------------------------------------------------------------------------------- /docs/views/examples/start-page.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Start page example 5 | {% endblock %} 6 | 7 | {% block proposition_header %} 8 | 9 | {% endblock %} 10 | 11 | {% block header_class %} 12 | 13 | {% endblock %} 14 | 15 | {% block content %} 16 | 17 |
18 | 19 | 26 | 27 |
28 |
29 | 30 |

31 | {% if serviceName %} {{ serviceName }} {% endif %} 32 |

33 | 34 |

Use this service to:

35 | 36 |
    37 |
  • do something
  • 38 |
  • update your name, address or other details
  • 39 |
  • you need to do this in order to do something else
  • 40 |
41 | 42 |

Registering takes around 5 minutes.

43 | 44 |

45 | Start now 46 |

47 | 48 |

Before you start

49 | 50 |

You can also register by post.

51 | 52 |

The online service is also available in Welsh (Cymraeg).

53 | 54 |

You can’t register for this service if you’re in the UK illegally.

55 | 56 |
57 |
58 | 59 | 69 | 70 |
71 |
72 | 73 |
74 | 75 | {% endblock %} 76 | -------------------------------------------------------------------------------- /docs/views/examples/task-list-page.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Task list 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 |
11 |
12 | 13 |

14 | Service name goes here 15 |

16 | 17 |
    18 |
  1. 19 |

    20 | 1. Check before you start 21 |

    22 | 36 |
  2. 37 |
  3. 38 |

    39 | 2. Prepare application 40 |

    41 | 71 |
  4. 72 |
  5. 73 |

    74 | 3. Apply 75 |

    76 | 83 |
  6. 84 |
85 | 86 |
87 |
88 |
89 | 90 | {% endblock %} 91 | -------------------------------------------------------------------------------- /docs/views/examples/template-content-page.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Question page 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 |
11 |
12 | 13 | Back 14 | 15 |

16 | Heading goes here 17 |

18 | 19 |

This is a paragraph of text. It explains in more detail what has happened and wraps across several lines.

20 | 21 |

This paragraph has a link to find out more about this subject.

22 | 23 |
24 |
25 |
26 | 27 | {% endblock %} 28 | -------------------------------------------------------------------------------- /docs/views/examples/template-data.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Example of using variables in pages 5 | {% endblock %} 6 | 7 | {% block content %} 8 |
9 | 10 | {% include "includes/breadcrumb_examples.html" %} 11 | 12 |
13 |
14 | 15 |

16 | Passing data into pages 17 |

18 | 19 |

20 | The example route defined in /docs/documentation_routes.js is passing the string '{{ name }}' to this page, via the variable called 'name'. 21 |

22 | 23 |

24 | Have a look at the source for this page in your text editor to see how it works: /docs/views/examples/template-data.html 25 |

26 | 27 |
28 |
29 | 30 |
31 | {% endblock %} 32 | -------------------------------------------------------------------------------- /docs/views/examples/template-partial-areas.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block head %} 4 | {% include "includes/examples_head.html" %} 5 | {% endblock %} 6 | 7 | {% block homepage_url %} 8 | https://www.gov.uk 9 | {% endblock %} 10 | 11 | {% block global_header_text %} 12 | GOV.UK 13 | {% endblock %} 14 | 15 | {% block header_class %}with-proposition{% endblock %} 16 | 17 | {% block proposition_header %} 18 |
Propositional navigation area
19 | {% endblock %} 20 | 21 | {% block inside_header %} 22 |
Inside header area
23 | {% endblock %} 24 | 25 | {% block after_header %} 26 |
After header area
27 | {% endblock %} 28 | 29 | {% block cookie_message %} 30 |
Cookie message
31 | {% endblock %} 32 | 33 | {% block content %} 34 |
Content area
35 | {% endblock %} 36 | 37 | {% block body_end %} 38 |
Body end area
39 | {% endblock %} 40 | 41 | {% block footer_top %} 42 |
Footer top area
43 | {% endblock %} 44 | 45 | {% block footer_support_links %} 46 |
Footer support links area
47 | {% endblock %} 48 | -------------------------------------------------------------------------------- /docs/views/examples/template-question-page-blank.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Question page 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 |
11 |
12 | 13 | Back 14 | 15 |

Heading or question goes here 16 |

17 | 18 |
19 | 20 |

[Insert question content here]

21 | 22 |

[See GOV.UK Elements for examples]

23 | 24 |
25 | 26 |
27 | 28 |
29 | 30 |
31 |
32 |
33 | 34 | {% endblock %} 35 | -------------------------------------------------------------------------------- /docs/views/examples/under-18.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Example - Branching - Under 18 5 | {% endblock %} 6 | 7 | {% block content %} 8 |
9 | 10 | {% include "includes/breadcrumb_examples.html" %} 11 | 12 |
13 |
14 | 15 |

16 | Under 18 17 |

18 | 19 |

20 | Congratulations, you are under 18. 21 |

22 | 23 |

24 | Back to the branching example 25 |

26 | 27 |
28 |
29 |
30 | {% endblock %} 31 | -------------------------------------------------------------------------------- /docs/views/includes/analytics.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/views/includes/breadcrumb_examples.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/views/includes/examples_head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /docs/views/includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | {% if promoMode == 'true' and analyticsId %} 7 | {% include "includes/analytics.html" %} 8 | {% endif %} 9 | -------------------------------------------------------------------------------- /docs/views/includes/phase_banner_alpha.html: -------------------------------------------------------------------------------- 1 |
2 |

3 | ALPHA 4 | This is a new service – your feedback will help us to improve it. 5 |

6 |
7 | -------------------------------------------------------------------------------- /docs/views/includes/phase_banner_beta.html: -------------------------------------------------------------------------------- 1 |
2 |

3 | BETA 4 | This is a new service – your feedback will help us to improve it. 5 |

6 |
7 | -------------------------------------------------------------------------------- /docs/views/includes/propositional_navigation.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | Menu 4 | 13 |
14 |
15 | -------------------------------------------------------------------------------- /docs/views/includes/propositional_navigation_alpha.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | Menu 4 | 11 |
12 |
13 | -------------------------------------------------------------------------------- /docs/views/includes/scripts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | {% if useAutoStoreData %} 10 | 11 | {% endif %} 12 | -------------------------------------------------------------------------------- /docs/views/index.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | GOV.UK prototype kit 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 |
11 |
12 | 13 |

GOV.UK prototype kit

14 | 15 |

16 | Rapidly create HTML prototypes of GOV.UK services. 17 |

18 | {{releaseVersion | log }} 19 |
20 | 21 | 22 |
23 | 24 |
25 | 26 |
27 | 28 |

Install

29 |

30 | Download and installation instructions. 31 |

32 | 33 |
34 |
35 | 36 |

Tutorials and examples

37 |

38 | Tutorials, examples and templates. 39 |

40 | 41 |
42 |
43 | 44 |

About

45 |

46 | About the kit, principles, privacy. 47 |

48 | 49 |
50 | 51 |
52 |
53 | 54 |
55 | 56 |

GitHub

57 |

58 | Source code, contributing, bugs. 59 |

60 | 61 |
62 | 63 | 64 |
65 |
66 | 67 | {% endblock %} 68 | -------------------------------------------------------------------------------- /docs/views/install.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Getting started - GOV.UK Prototype kit 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 |
11 |
12 | 13 | 18 | 19 |

Installing the kit

20 | 21 |

22 | Get up and running with the kit in 30 minutes. 23 |

24 | 25 |

1. Download the kit

26 | Download (zip) 27 |

2. Install the kit

28 | 29 |

Choose from:

30 | 34 | 35 |
36 | 37 | 38 |
39 | 40 | 41 |
42 | 43 | {% endblock %} -------------------------------------------------------------------------------- /docs/views/install_template.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block pageTitle %} 4 | Install - GOV.UK Prototype kit 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 | 16 | 17 |
18 | 19 |
20 | 21 | {{document | safe}} 22 | 23 |
24 | 25 |
26 | 27 |
28 | 29 | {% endblock %} -------------------------------------------------------------------------------- /docs/views/layout.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk-template.html" %} 2 | 3 | {% block head %} 4 | {% include "includes/head.html" %} 5 | {% endblock %} 6 | 7 | {% block cookie_message %} 8 |

{{cookieText | safe }}

9 | {% endblock %} 10 | 11 | {% block proposition_header %} 12 | 13 |
14 |
15 | Menu 16 | 31 |
32 |
33 | 34 | {% endblock %} 35 | 36 | {% block header_class %} 37 | with-proposition 38 | {% endblock %} 39 | 40 | {% block footer_support_links %} 41 | {% if useAutoStoreData %} 42 | 47 | {% endif %} 48 | {% endblock %} 49 | 50 | {% block body_end %} 51 | {% include "includes/scripts.html" %} 52 | 53 | {% endblock %} 54 | -------------------------------------------------------------------------------- /docs/views/layout_unbranded.html: -------------------------------------------------------------------------------- 1 | {% extends "govuk_template_unbranded.html" %} 2 | 3 | {% block head %} 4 | 5 | {% endblock %} 6 | 7 | {% block body_end %} 8 | {% include "includes/scripts.html" %} 9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /gulp/clean.js: -------------------------------------------------------------------------------- 1 | /* 2 | clean.js 3 | =========== 4 | removes folders: 5 | - public 6 | - govuk_modules 7 | */ 8 | var config = require('./config.json') 9 | 10 | var gulp = require('gulp') 11 | var clean = require('gulp-clean') 12 | 13 | gulp.task('clean', function () { 14 | return gulp.src([config.paths.public + '/*', 15 | config.paths.govukModules + '/*', 16 | '.port.tmp'], {read: false}) 17 | .pipe(clean()) 18 | }) 19 | -------------------------------------------------------------------------------- /gulp/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "paths": { 3 | "public": "public/", 4 | "assets" : "app/assets/", 5 | "docsAssets" : "docs/assets/", 6 | "govukModules": "govuk_modules/", 7 | "nodeModules": "node_modules/", 8 | "lib": "lib/" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /gulp/copy-assets.js: -------------------------------------------------------------------------------- 1 | /* 2 | copy.js 3 | =========== 4 | copies images and javascript folders to public 5 | */ 6 | 7 | var gulp = require('gulp') 8 | var config = require('./config.json') 9 | 10 | gulp.task('copy-assets', function () { 11 | return gulp.src(['!' + config.paths.assets + 'sass{,/**/*}', 12 | config.paths.assets + '/**']) 13 | .pipe(gulp.dest(config.paths.public)) 14 | }) 15 | 16 | gulp.task('copy-documentation-assets', function () { 17 | return gulp.src(['!' + config.paths.docsAssets + 'sass{,/**/*}', 18 | config.paths.docsAssets + '/**']) 19 | .pipe(gulp.dest(config.paths.public)) 20 | }) 21 | -------------------------------------------------------------------------------- /gulp/copy-modules.js: -------------------------------------------------------------------------------- 1 | /* 2 | copy-gov-modules.js 3 | =========== 4 | copies files for node_modules into govuk_modules 5 | */ 6 | 7 | var gulp = require('gulp') 8 | var config = require('./config.json') 9 | 10 | gulp.task('copy-toolkit', function () { 11 | return gulp.src(['node_modules/govuk_frontend_toolkit/**']) 12 | .pipe(gulp.dest(config.paths.govukModules + '/govuk_frontend_toolkit/')) 13 | }) 14 | 15 | gulp.task('copy-template', function () { 16 | return gulp.src(['node_modules/govuk_template_jinja/views/layouts/**']) 17 | .pipe(gulp.dest(config.paths.govukModules + '/govuk_template/layouts/')) 18 | .pipe(gulp.dest(config.paths.lib)) 19 | }) 20 | 21 | gulp.task('copy-template-assets', function () { 22 | return gulp.src(['node_modules/govuk_template_jinja/assets/**']) 23 | .pipe(gulp.dest(config.paths.govukModules + '/govuk_template/assets/')) 24 | }) 25 | 26 | gulp.task('copy-elements-sass', function () { 27 | return gulp.src(['node_modules/govuk-elements-sass/public/sass/**']) 28 | .pipe(gulp.dest(config.paths.govukModules + '/govuk-elements-sass/')) 29 | }) 30 | -------------------------------------------------------------------------------- /gulp/nodemon.js: -------------------------------------------------------------------------------- 1 | /* 2 | nodemon.js 3 | =========== 4 | uses nodemon to run a server, watches for javascript and json changes 5 | */ 6 | 7 | var fs = require('fs') 8 | var path = require('path') 9 | var gulp = require('gulp') 10 | var nodemon = require('gulp-nodemon') 11 | var config = require('./config.json') 12 | 13 | gulp.task('server', function () { 14 | nodemon({ 15 | script: 'server.js', 16 | ext: 'js, json', 17 | ignore: [config.paths.public + '*', 18 | config.paths.assets + '*', 19 | config.paths.nodeModules + '*'] 20 | }).on('quit', function () { 21 | // remove .port.tmp if it exists 22 | try { 23 | fs.unlinkSync(path.join(__dirname, '/../.port.tmp')) 24 | } catch (e) {} 25 | 26 | process.exit(0) 27 | }) 28 | }) 29 | -------------------------------------------------------------------------------- /gulp/sass.js: -------------------------------------------------------------------------------- 1 | /* 2 | sass.js 3 | =========== 4 | compiles sass from assets folder with the govuk_modules 5 | also includes sourcemaps 6 | */ 7 | 8 | var gulp = require('gulp') 9 | var sass = require('gulp-sass') 10 | var sourcemaps = require('gulp-sourcemaps') 11 | 12 | var config = require('./config.json') 13 | 14 | gulp.task('sass', function () { 15 | return gulp.src(config.paths.assets + '/sass/*.scss') 16 | .pipe(sourcemaps.init()) 17 | .pipe(sass({outputStyle: 'expanded', 18 | includePaths: ['govuk_modules/govuk_frontend_toolkit/stylesheets', 19 | 'govuk_modules/govuk_template/assets/stylesheets', 20 | 'govuk_modules/govuk-elements-sass/']}).on('error', sass.logError)) 21 | .pipe(sourcemaps.write()) 22 | .pipe(gulp.dest(config.paths.public + '/stylesheets/')) 23 | }) 24 | 25 | gulp.task('sass-documentation', function () { 26 | return gulp.src(config.paths.docsAssets + '/sass/*.scss') 27 | .pipe(sourcemaps.init()) 28 | .pipe(sass({outputStyle: 'expanded', 29 | includePaths: ['govuk_modules/govuk_frontend_toolkit/stylesheets', 30 | 'govuk_modules/govuk_template/assets/stylesheets', 31 | 'govuk_modules/govuk-elements-sass/']}).on('error', sass.logError)) 32 | .pipe(sourcemaps.write()) 33 | .pipe(gulp.dest(config.paths.public + '/stylesheets/')) 34 | }) 35 | -------------------------------------------------------------------------------- /gulp/tasks.js: -------------------------------------------------------------------------------- 1 | /* 2 | tasks.js 3 | =========== 4 | defaults wraps generate-assets, watch and server 5 | */ 6 | 7 | var gulp = require('gulp') 8 | var mocha = require('gulp-mocha') 9 | var runSequence = require('run-sequence') 10 | 11 | gulp.task('default', function (done) { 12 | runSequence('generate-assets', 13 | 'watch', 14 | 'server', done) 15 | }) 16 | 17 | gulp.task('generate-assets', function (done) { 18 | runSequence('clean', 19 | 'copy-govuk-modules', 20 | 'sass', 21 | 'sass-documentation', 22 | 'copy-assets', 23 | 'copy-documentation-assets', done) 24 | }) 25 | 26 | gulp.task('copy-govuk-modules', [ 27 | 'copy-toolkit', 28 | 'copy-template-assets', 29 | 'copy-elements-sass', 30 | 'copy-template' 31 | ]) 32 | 33 | gulp.task('watch', function (done) { 34 | runSequence('watch-sass', 35 | 'watch-assets', done) 36 | }) 37 | 38 | gulp.task('test', function () { 39 | runSequence('generate-assets', 40 | 'mocha') 41 | }) 42 | 43 | gulp.task('mocha', function () { 44 | return gulp.src(['test/**/*.js'], { read: false }) 45 | .pipe(mocha({ reporter: 'spec' })) 46 | .once('error', () => { 47 | process.exit(1) 48 | }) 49 | .once('end', () => { 50 | process.exit() 51 | }) 52 | }) 53 | -------------------------------------------------------------------------------- /gulp/watch.js: -------------------------------------------------------------------------------- 1 | /* 2 | watch.js 3 | =========== 4 | watches sass/js/images 5 | */ 6 | 7 | var gulp = require('gulp') 8 | var config = require('./config.json') 9 | 10 | gulp.task('watch-sass', function () { 11 | return gulp.watch(config.paths.assets + 'sass/**', {cwd: './'}, ['sass']) 12 | }) 13 | 14 | gulp.task('watch-assets', function () { 15 | return gulp.watch([config.paths.assets + 'images/**', 16 | config.paths.assets + 'javascripts/**'], {cwd: './'}, ['copy-assets']) 17 | }) 18 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | /* 2 | gulpfile.js 3 | =========== 4 | Rather than manage one giant configuration file responsible 5 | for creating multiple tasks, each task has been broken out into 6 | its own file in `/gulp`. Any files in that directory 7 | get automatically required below. 8 | To add a new task, simply add a new task file that directory. 9 | `/gulp/tasks.js` specifies the default set of 10 | tasks to run when you run `gulp`. 11 | */ 12 | 13 | var requireDir = require('require-dir') 14 | 15 | // Require all tasks in gulp/tasks, including subfolders 16 | requireDir('./gulp', {recurse: true}) 17 | -------------------------------------------------------------------------------- /lib/core_filters.js: -------------------------------------------------------------------------------- 1 | module.exports = function (env) { 2 | // if you need accss to the internal nunjucks filter you can just env 3 | // see the example below for 'safe' which is used in 'filters.log' 4 | var nunjucksSafe = env.getFilter('safe') 5 | 6 | /** 7 | * object used store the methods registered as a 'filter' (of the same name) within nunjucks 8 | * filters.foo("input") here, becomes {{ "input" | foo }} within nunjucks templates 9 | * @type {Object} 10 | */ 11 | var filters = {} 12 | 13 | /** 14 | * logs an object in the template to the console on the client. 15 | * @param {Any} a any type 16 | * @return {String} a script tag with a console.log call. 17 | * @example {{ "hello world" | log }} 18 | * @example {{ "hello world" | log | safe }} [for environments with autoescaping turned on] 19 | */ 20 | filters.log = function log (a) { 21 | return nunjucksSafe('') 22 | } 23 | 24 | return filters 25 | } 26 | -------------------------------------------------------------------------------- /lib/prototype-admin/clear-data.html: -------------------------------------------------------------------------------- 1 | {% extends "layout.html" %} 2 | 3 | {% block page_title %} 4 | Clear data 5 | {% endblock %} 6 | 7 | {% block content %} 8 | 9 |
10 | 11 |

12 | Data cleared 13 |

14 | 15 |

16 | The session data has been cleared. 17 |

18 | 19 |

20 | 21 | Prototype home page 22 | 23 |

24 | 25 |
26 | 27 | {% endblock %} 28 | -------------------------------------------------------------------------------- /lib/template.env: -------------------------------------------------------------------------------- 1 | # ========================================= 2 | # WARNING: Don't commit this file to git 3 | # ========================================= 4 | # 5 | # Use this file for storing private data - things like API keys and admin credentials 6 | # 7 | # Storing data: 8 | # 9 | # EXAMPLE_API_KEY=123456789 10 | # JSON={"foo": "bar"} 11 | # 12 | # More examples here: https://www.npmjs.com/package/dotenv 13 | # 14 | # Use the data in your app: 15 | # 16 | # var key = process.env.EXAMPLE_API_KEY 17 | 18 | # ========================================= 19 | # INSERT YOUR DATA HERE: 20 | 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "express-prototype", 3 | "description": "GOVUK prototyping app in Express", 4 | "version": "6.1.0", 5 | "private": true, 6 | "engines": { 7 | "node": ">=6.0 <7.0" 8 | }, 9 | "scripts": { 10 | "start": "node start.js", 11 | "lint": "standard", 12 | "test": "gulp test && npm run lint" 13 | }, 14 | "dependencies": { 15 | "basic-auth": "^1.0.3", 16 | "basic-auth-connect": "^1.0.0", 17 | "body-parser": "^1.14.1", 18 | "browser-sync": "^2.11.1", 19 | "cross-spawn": "^5.0.0", 20 | "dotenv": "^4.0.0", 21 | "express": "4.13.3", 22 | "express-session": "^1.13.0", 23 | "express-writer": "0.0.4", 24 | "govuk-elements-sass": "3.0.1", 25 | "govuk_frontend_toolkit": "5.1.2", 26 | "govuk_template_jinja": "0.19.2", 27 | "gulp": "^3.9.1", 28 | "gulp-clean": "^0.3.2", 29 | "gulp-mocha": "^3.0.1", 30 | "gulp-nodemon": "^2.1.0", 31 | "gulp-sass": "3.1.0", 32 | "gulp-sourcemaps": "^1.6.0", 33 | "gulp-util": "^3.0.7", 34 | "marked": "^0.3.6", 35 | "minimist": "0.0.8", 36 | "notifications-node-client": "^3.0.0", 37 | "nunjucks": "^2.5.2", 38 | "portscanner": "^1.0.0", 39 | "prompt": "^0.2.14", 40 | "readdir": "0.0.6", 41 | "require-dir": "^0.3.0", 42 | "run-sequence": "^1.2.2", 43 | "serve-favicon": "2.3.0", 44 | "standard": "^8.6.0", 45 | "supertest": "^2.0.0", 46 | "sync-request": "^3.0.1" 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /repository.yaml: -------------------------------------------------------------------------------- 1 | repoVisibility: public_0C3F0CE3E6E6448FAD341E7BFA50FCD333E06A20CFF05FCACE61154DDBBADF71 2 | description: Documenting HMRC design patterns 3 | -------------------------------------------------------------------------------- /start.js: -------------------------------------------------------------------------------- 1 | // Check for `node_modules` folder and warn if missing 2 | 3 | var path = require('path') 4 | var fs = require('fs') 5 | 6 | // Check if node_modules folder exists 7 | const nodeModulesExists = fs.existsSync(path.join(__dirname, '/node_modules')) 8 | if (!nodeModulesExists) { 9 | console.error('ERROR: Node module folder missing. Try running `npm install`') 10 | process.exit(0) 11 | } 12 | 13 | // Create template .env file if it doesn't exist 14 | const envExists = fs.existsSync(path.join(__dirname, '/.env')) 15 | if (!envExists) { 16 | console.log('Creating template .env file') 17 | fs.createReadStream(path.join(__dirname, '/lib/template.env')) 18 | .pipe(fs.createWriteStream(path.join(__dirname, '/.env'))) 19 | } 20 | 21 | // run gulp 22 | 23 | var spawn = require('cross-spawn') 24 | 25 | process.env['FORCE_COLOR'] = 1 26 | var gulp = spawn('gulp') 27 | gulp.stdout.pipe(process.stdout) 28 | gulp.stderr.pipe(process.stderr) 29 | process.stdin.pipe(gulp.stdin) 30 | 31 | gulp.on('exit', function (code) { 32 | console.log('gulp exited with code ' + code.toString()) 33 | }) 34 | -------------------------------------------------------------------------------- /test/mocha.opts: -------------------------------------------------------------------------------- 1 | --recursive 2 | -------------------------------------------------------------------------------- /test/spec/sanity-checks.js: -------------------------------------------------------------------------------- 1 | /* eslint-env mocha */ 2 | var request = require('supertest') 3 | var app = require('../../server.js') 4 | var path = require('path') 5 | var fs = require('fs') 6 | var assert = require('assert') 7 | 8 | /** 9 | * Basic sanity checks on the dev server 10 | */ 11 | describe('The prototype kit', function () { 12 | it('should generate assets into the /public folder', function () { 13 | assert.doesNotThrow(function () { 14 | fs.accessSync(path.resolve(__dirname, '../../public/javascripts/application.js')) 15 | fs.accessSync(path.resolve(__dirname, '../../public/images/favicon.ico')) 16 | fs.accessSync(path.resolve(__dirname, '../../public/stylesheets/application.css')) 17 | }) 18 | }) 19 | 20 | it('should send with a well formed response for the index page', function (done) { 21 | request(app) 22 | .get('/') 23 | .expect('Content-Type', /text\/html/) 24 | .expect(200) 25 | .end(function (err, res) { 26 | if (err) { 27 | done(err) 28 | } else { 29 | done() 30 | } 31 | }) 32 | }) 33 | 34 | it('should send with a well formed response for the docs page', function (done) { 35 | request(app) 36 | .get('/docs') 37 | .expect('Content-Type', /text\/html/) 38 | .expect(200) 39 | .end(function (err, res) { 40 | if (err) { 41 | done(err) 42 | } else { 43 | done() 44 | } 45 | }) 46 | }) 47 | }) 48 | --------------------------------------------------------------------------------