From 8ac3eaf36df123ff04471103c598ab2a36a8d7e5 Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Wed, 12 May 2021 10:43:21 +0100 Subject: [PATCH 01/11] create nunjuck macro option config files for each component --- .../components/action-link/action-link.json | 34 ++++ .../components/back-link/back-link.json | 34 ++++ .../components/breadcrumbs/breadcrumbs.json | 54 ++++++ .../components/buttons/buttons.json | 64 +++++++ .../design-system/components/card/card.json | 82 +++++++++ .../components/care-cards/care-cards.json | 40 +++++ .../components/checkboxes/checkboxes.json | 127 +++++++++++++ .../contents-list/contents-list.json | 42 +++++ .../components/date-input/date-input.json | 81 +++++++++ .../components/details/details.json | 40 +++++ .../do-and-dont-lists/do-and-dont-lists.json | 54 ++++++ .../error-message/error-message.json | 34 ++++ .../error-summary/error-summary.json | 72 ++++++++ .../components/expander/expander.json | 40 +++++ .../components/fieldset/fieldset.json | 54 ++++++ .../components/footer/footer.json | 42 +++++ .../components/header/header.json | 130 ++++++++++++++ .../components/hint-text/hint-text.json | 34 ++++ .../components/images/images.json | 46 +++++ .../components/inset-text/inset-text.json | 22 +++ .../components/pagination/pagination.json | 40 +++++ .../components/radios/radios.json | 112 ++++++++++++ .../components/select/select.json | 87 +++++++++ .../components/skip-link/skip-link.json | 28 +++ .../components/summary-list/summary-list.json | 103 +++++++++++ .../design-system/components/table/table.json | 128 +++++++++++++ .../design-system/components/tag/tag.json | 28 +++ .../components/text-input/text-input.json | 169 ++++++++++++++++++ .../components/textarea/textarea.json | 73 ++++++++ .../warning-callout/warning-callout.json | 28 +++ 30 files changed, 1922 insertions(+) create mode 100644 app/views/design-system/components/action-link/action-link.json create mode 100644 app/views/design-system/components/back-link/back-link.json create mode 100644 app/views/design-system/components/breadcrumbs/breadcrumbs.json create mode 100644 app/views/design-system/components/buttons/buttons.json create mode 100644 app/views/design-system/components/card/card.json create mode 100644 app/views/design-system/components/care-cards/care-cards.json create mode 100644 app/views/design-system/components/checkboxes/checkboxes.json create mode 100644 app/views/design-system/components/contents-list/contents-list.json create mode 100644 app/views/design-system/components/date-input/date-input.json create mode 100644 app/views/design-system/components/details/details.json create mode 100644 app/views/design-system/components/do-and-dont-lists/do-and-dont-lists.json create mode 100644 app/views/design-system/components/error-message/error-message.json create mode 100644 app/views/design-system/components/error-summary/error-summary.json create mode 100644 app/views/design-system/components/expander/expander.json create mode 100644 app/views/design-system/components/fieldset/fieldset.json create mode 100644 app/views/design-system/components/footer/footer.json create mode 100644 app/views/design-system/components/header/header.json create mode 100644 app/views/design-system/components/hint-text/hint-text.json create mode 100644 app/views/design-system/components/images/images.json create mode 100644 app/views/design-system/components/inset-text/inset-text.json create mode 100644 app/views/design-system/components/pagination/pagination.json create mode 100644 app/views/design-system/components/radios/radios.json create mode 100644 app/views/design-system/components/select/select.json create mode 100644 app/views/design-system/components/skip-link/skip-link.json create mode 100644 app/views/design-system/components/summary-list/summary-list.json create mode 100644 app/views/design-system/components/table/table.json create mode 100644 app/views/design-system/components/tag/tag.json create mode 100644 app/views/design-system/components/text-input/text-input.json create mode 100644 app/views/design-system/components/textarea/textarea.json create mode 100644 app/views/design-system/components/warning-callout/warning-callout.json diff --git a/app/views/design-system/components/action-link/action-link.json b/app/views/design-system/components/action-link/action-link.json new file mode 100644 index 000000000..c0813650c --- /dev/null +++ b/app/views/design-system/components/action-link/action-link.json @@ -0,0 +1,34 @@ +{ + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "Text to use within the action link component." + }, + { + "name": "href", + "type": "string", + "required": true, + "description": "The value of the link href attribute." + }, + { + "name": "openInNewWindow", + "type": "boolean", + "required": false, + "description": "If set to true, then the link will open in a new window" + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the anchor tag." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the anchor tag." + } + ] +} diff --git a/app/views/design-system/components/back-link/back-link.json b/app/views/design-system/components/back-link/back-link.json new file mode 100644 index 000000000..94d2ce369 --- /dev/null +++ b/app/views/design-system/components/back-link/back-link.json @@ -0,0 +1,34 @@ +{ + "params": [ + { + "name": "text", + "type": "string", + "required": false, + "description": "Text to use within the back link component. If `html` is provided, the `text` argument will be ignored. Defaults to \"Back\"." + }, + { + "name": "html", + "type": "string", + "required": false, + "description": "HTML to use within the back link component. If `html` is provided, the `text` argument will be ignored. Defaults to \"Back\"." + }, + { + "name": "href", + "type": "string", + "required": true, + "description": "The value of the link href attribute." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the anchor tag." + } + ] +} diff --git a/app/views/design-system/components/breadcrumbs/breadcrumbs.json b/app/views/design-system/components/breadcrumbs/breadcrumbs.json new file mode 100644 index 000000000..d0f169b61 --- /dev/null +++ b/app/views/design-system/components/breadcrumbs/breadcrumbs.json @@ -0,0 +1,54 @@ +{ + "params": [ + { + "name": "items", + "type": "array", + "required": true, + "description": "Array of breadcrumbs item objects.", + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "Text to use within the breadcrumbs item." + }, + { + "name": "href", + "type": "string", + "required": false, + "description": "Link for the breadcrumbs item." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the individual crumb." + } + ] + }, + { + "name": "text", + "type": "string", + "required": true, + "description": "Text to use for the current page." + }, + { + "name": "href", + "type": "string", + "required": true, + "description": "The value of the current page link href attribute." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the container." + } + ] +} diff --git a/app/views/design-system/components/buttons/buttons.json b/app/views/design-system/components/buttons/buttons.json new file mode 100644 index 000000000..bb205c6f8 --- /dev/null +++ b/app/views/design-system/components/buttons/buttons.json @@ -0,0 +1,64 @@ +{ + "params": [ + { + "name": "element", + "type": "string", + "required": false, + "description": "Whether to use an `input`, `button` or `a` element to create the button. In most cases you will not need to set this as it will be configured automatically if you use `href` or `html`." + }, + { + "name": "text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text for the button or link. If `html` is provided, the `text` argument will be ignored and `element` will be automatically set to `button` unless `href` is also set, or it has already been defined. This argument has no effect if `element` is set to `input`." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML for the button or link. If `html` is provided, the `text` argument will be ignored and `element` will be automatically set to `button` unless `href` is also set, or it has already been defined. This argument has no effect if `element` is set to `input`." + }, + { + "name": "name", + "type": "string", + "required": false, + "description": "Name for the `input` or `button`. This has no effect on `a` elements." + }, + { + "name": "type", + "type": "string", + "required": false, + "description": "Type of `input` or `button` – `button`, `submit` or `reset`. Defaults to `submit`. This has no effect on `a` elements." + }, + { + "name": "value", + "type": "string", + "required": false, + "description": "Value for the `button` tag. This has no effect on `a` or `input` elements." + }, + { + "name": "disabled", + "type": "boolean", + "required": false, + "description": "Whether the button should be disabled. For button and input elements, `disabled` and `aria-disabled` attributes will be set automatically." + }, + { + "name": "href", + "type": "string", + "required": false, + "description": "The URL that the button should link to. If this is set, `element` will be automatically set to `a` if it has not already been defined." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the button component." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the button component." + } + ] +} diff --git a/app/views/design-system/components/card/card.json b/app/views/design-system/components/card/card.json new file mode 100644 index 000000000..eb3fd9d51 --- /dev/null +++ b/app/views/design-system/components/card/card.json @@ -0,0 +1,82 @@ +{ + "params": [ + { + "name": "heading", + "type": "string", + "required": true, + "description": "Text to use within the heading of the card component. If `headingHtml` is provided, the `heading` argument will be ignored." + }, + { + "name": "headingHtml", + "type": "string", + "required": true, + "description": "HTML to use within the heading of the card component. If `headingHtml` is provided, the `heading` argument will be ignored." + }, + { + "name": "headingClasses", + "type": "string", + "required": false, + "description": "Classes to add to the card heading." + }, + { + "name": "headingLevel", + "type": "integer", + "required": false, + "description": "Classes to add to the card heading." + }, + { + "name": "href", + "type": "string", + "required": true, + "description": "The value of the card link href attribute." + }, + { + "name": "clickable", + "type": "boolean", + "required": false, + "description": "If set to true, then the class `nhsuk-card--clickable` will be applied." + }, + { + "name": "feature", + "type": "boolean", + "required": false, + "description": "If set to true, then the class `nhsuk-card__heading--feature` and `nhsuk-card__content--feature` will be applied." + }, + { + "name": "imgURL", + "type": "string", + "required": false, + "description": "The URL of the image in the card." + }, + { + "name": "imgALT", + "type": "string", + "required": false, + "description": "The alternative text of the image in the card." + }, + { + "name": "description", + "type": "string", + "required": false, + "description": "Text description within the card content. If `descriptionHtml` is provided, the `description` argument will be ignored." + }, + { + "name": "descriptionHtml", + "type": "string", + "required": false, + "description": "HTML to use within the card content. If `descriptionHtml` is provided, the `description` argument will be ignored." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the card." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the card." + } + ] +} diff --git a/app/views/design-system/components/care-cards/care-cards.json b/app/views/design-system/components/care-cards/care-cards.json new file mode 100644 index 000000000..c30c0819e --- /dev/null +++ b/app/views/design-system/components/care-cards/care-cards.json @@ -0,0 +1,40 @@ +{ + "params": [ + { + "name": "type", + "type": "string", + "required": true, + "description": "Care card component variant type - non-urgent, urgent or immediate" + }, + { + "name": "heading", + "type": "string", + "required": true, + "description": "Heading to be used within the care card component." + }, + { + "name": "headingLevel", + "type": "integer", + "required": false, + "description": "Optional heading level for the heading. Default: 3" + }, + { + "name": "HTML", + "type": "string", + "required": true, + "description": "Content to be used within the care card component." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the care card." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the care card." + } + ] +} diff --git a/app/views/design-system/components/checkboxes/checkboxes.json b/app/views/design-system/components/checkboxes/checkboxes.json new file mode 100644 index 000000000..3c8437e7c --- /dev/null +++ b/app/views/design-system/components/checkboxes/checkboxes.json @@ -0,0 +1,127 @@ +{ + "params": [ + { + "name": "fieldset", + "type": "object", + "required": false, + "description": "Options for the fieldset component (for example legend)." + }, + { + "name": "hint", + "type": "object", + "required": false, + "description": "Options for the hint component (for example text)." + }, + { + "name": "errorMessage", + "type": "object", + "required": false, + "description": "Options for the error message component." + }, + { + "name": "idPrefix", + "type": "string", + "required": false, + "description": "String to prefix id for each checkbox item if no id is specified on each item. If not passed, fall back to using the name option instead." + }, + { + "name": "name", + "type": "string", + "required": true, + "description": "Name attribute for all checkbox items." + }, + { + "name": "items", + "type": "array", + "required": true, + "description": "Array of checkbox items objects.", + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text to use within each checkbox item label. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML to use within each checkbox item label. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "id", + "type": "string", + "required": false, + "description": "Specific id attribute for the checkbox item. If omitted, then component global `idPrefix` option will be applied." + }, + { + "name": "name", + "type": "string", + "required": false, + "description": "Specific name for the checkbox item. If omitted, then component global `name` string will be applied." + }, + { + "name": "value", + "type": "string", + "required": true, + "description": "Value for the checkbox input." + }, + { + "name": "divider", + "type": "string", + "required": true, + "description": "Optional divider text to separate checkbox items, for example the text \"or\"." + }, + { + "name": "hint", + "type": "object", + "required": false, + "description": "Provide hint to each checkbox item.", + "isComponent": true + }, + { + "name": "checked", + "type": "boolean", + "required": false, + "description": "If true, checkbox will be checked." + }, + { + "name": "conditional", + "type": "boolean", + "required": false, + "description": "If true, content provided will be revealed when the item is checked." + }, + { + "name": "conditional.html", + "type": "string", + "required": false, + "description": "Provide content for the conditional reveal." + }, + { + "name": "disabled", + "type": "boolean", + "required": false, + "description": "If true, checkbox will be disabled." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the checkbox input tag." + } + ] + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the checkboxes container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the anchor tag." + } + ] +} diff --git a/app/views/design-system/components/contents-list/contents-list.json b/app/views/design-system/components/contents-list/contents-list.json new file mode 100644 index 000000000..d2f2a5039 --- /dev/null +++ b/app/views/design-system/components/contents-list/contents-list.json @@ -0,0 +1,42 @@ +{ + "params": [ + { + "name": "items", + "type": "array", + "required": true, + "description": "Array of content list items objects.", + "params": [ + { + "name": "href", + "type": "string", + "required": true, + "description": "href value to use within each content list item label." + }, + { + "name": "text", + "type": "string", + "required": true, + "description": "Text to use within each content list item label." + } + ] + }, + { + "name": "current", + "type": "boolean", + "required": false, + "description": "Set the current active page." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the content list container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to items in the content list." + } + ] +} diff --git a/app/views/design-system/components/date-input/date-input.json b/app/views/design-system/components/date-input/date-input.json new file mode 100644 index 000000000..233473619 --- /dev/null +++ b/app/views/design-system/components/date-input/date-input.json @@ -0,0 +1,81 @@ +{ + "params": [ + { + "name": "id", + "type": "string", + "required": false, + "description": "This is used for the main component and to compose id attribute for each item." + }, + { + "name": "namePrefix", + "type": "string", + "required": false, + "description": "Optional prefix. This is used to prefix each `item.name` using `-`." + }, + { + "name": "items", + "type": "array", + "required": false, + "description": "An array of input objects with name, value and classes.", + "params": [ + { + "name": "id", + "type": "string", + "required": false, + "description": "Item-specific id. If provided, it will be used instead of the generated id." + }, + { + "name": "name", + "type": "string", + "required": true, + "description": "Item-specific name attribute." + }, + { + "name": "label", + "type": "string", + "required": false, + "description": "Item-specific label text. If provided, this will be used instead of `name` for item label text." + }, + { + "name": "value", + "type": "string", + "required": false, + "description": "If provided, it will be used as the initial value of the input." + } + ] + }, + { + "name": "hint", + "type": "object", + "required": false, + "description": "Options for the hint component.", + "isComponent": true + }, + { + "name": "errorMessage", + "type": "object", + "required": false, + "description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.", + "isComponent": true + }, + { + "name": "fieldset", + "type": "object", + "required": false, + "description": "Options for the fieldset component (for example legend).", + "isComponent": true + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the date-input container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the date-input container." + } + ] +} diff --git a/app/views/design-system/components/details/details.json b/app/views/design-system/components/details/details.json new file mode 100644 index 000000000..65fba3825 --- /dev/null +++ b/app/views/design-system/components/details/details.json @@ -0,0 +1,40 @@ +{ + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "Text to be displayed on the details component." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "HTML content to be displayed within the details component." + }, + { + "name": "id", + "type": "string", + "required": false, + "description": "Id to add to the details element." + }, + { + "name": "open", + "type": "boolean", + "required": false, + "description": "If true, details element will be expanded." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the details element." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the details element." + } + ] +} diff --git a/app/views/design-system/components/do-and-dont-lists/do-and-dont-lists.json b/app/views/design-system/components/do-and-dont-lists/do-and-dont-lists.json new file mode 100644 index 000000000..38b9cb645 --- /dev/null +++ b/app/views/design-system/components/do-and-dont-lists/do-and-dont-lists.json @@ -0,0 +1,54 @@ +{ + "params": [ + { + "name": "title", + "type": "string", + "required": true, + "description": "Title to be displayed on the do and don't list component.." + }, + { + "name": "type", + "type": "string", + "required": true, + "description": "Type of do and don't list component, \"cross\", \"tick\"" + }, + { + "name": "items", + "type": "array", + "required": true, + "description": "Array of do and dont items objects.", + "params": [ + { + "name": "item", + "type": "string", + "required": true, + "description": "Text to use within each do and dont item label." + } + ] + }, + { + "name": "hidePrefix", + "type": "boolean", + "required": false, + "description": "If set to true when type is \"cross\", then removes the default \"do not\" text prefix to each item" + }, + { + "name": "headingLevel", + "type": "integer", + "required": false, + "description": "Optional heading level for the title heading. Default: 3" + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the details element." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the details element." + } + ] +} diff --git a/app/views/design-system/components/error-message/error-message.json b/app/views/design-system/components/error-message/error-message.json new file mode 100644 index 000000000..8996e66f8 --- /dev/null +++ b/app/views/design-system/components/error-message/error-message.json @@ -0,0 +1,34 @@ +{ + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text to use within the error message. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML to use within the error message. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "id", + "type": "string", + "required": false, + "description": "Id attribute to add to the error message span tag." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the error message span tag." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the error message span tag" + } + ] +} diff --git a/app/views/design-system/components/error-summary/error-summary.json b/app/views/design-system/components/error-summary/error-summary.json new file mode 100644 index 000000000..742755620 --- /dev/null +++ b/app/views/design-system/components/error-summary/error-summary.json @@ -0,0 +1,72 @@ +{ + "params": [ + { + "name": "titleText", + "type": "string", + "required": true, + "description": "If `titleHtml` is set, this is not required. Text to use for the heading of the error summary block. If `titleHtml` is provided, `titleText` will be ignored." + }, + { + "name": "titleHtml", + "type": "string", + "required": true, + "description": "If `titleText` is set, this is not required. HTML to use for the heading of the error summary block. If `titleHtml` is provided, `titleText` will be ignored." + }, + { + "name": "descriptionText", + "type": "string", + "required": false, + "description": "Text to use for the description of the errors. If you set `descriptionHtml`, the component will ignore `descriptionText`." + }, + { + "name": "descriptionHtml", + "type": "string", + "required": false, + "description": "HTML to use for the description of the errors. If you set this option, the component will ignore `descriptionText`." + }, + { + "name": "errorList", + "type": "array", + "required": true, + "description": "Contains an array of error link items and all their available arguments.", + "params": [ + { + "name": "href", + "type": "string", + "required": false, + "description": "Href attribute for the error link item. If provided item will be an anchor." + }, + { + "name": "text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text for the error link item. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML for the error link item. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the error link anchor." + } + ] + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the error-summary container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the error-summary container." + } + ] +} diff --git a/app/views/design-system/components/expander/expander.json b/app/views/design-system/components/expander/expander.json new file mode 100644 index 000000000..65fba3825 --- /dev/null +++ b/app/views/design-system/components/expander/expander.json @@ -0,0 +1,40 @@ +{ + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "Text to be displayed on the details component." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "HTML content to be displayed within the details component." + }, + { + "name": "id", + "type": "string", + "required": false, + "description": "Id to add to the details element." + }, + { + "name": "open", + "type": "boolean", + "required": false, + "description": "If true, details element will be expanded." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the details element." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the details element." + } + ] +} diff --git a/app/views/design-system/components/fieldset/fieldset.json b/app/views/design-system/components/fieldset/fieldset.json new file mode 100644 index 000000000..a9fea24fd --- /dev/null +++ b/app/views/design-system/components/fieldset/fieldset.json @@ -0,0 +1,54 @@ +{ + "params": [ + { + "name": "describedBy", + "type": "string", + "required": false, + "description": "One or more element IDs to add to the `aria-describedby` attribute, used to provide additional descriptive information for screenreader users." + }, + { + "name": "legend", + "type": "object", + "required": false, + "description": "Options for the legend", + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text to use within the legend. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML to use within the legend. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the legend." + }, + { + "name": "isPageHeading", + "type": "boolean", + "required": false, + "description": "Whether the legend also acts as the heading for the page." + } + ] + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the fieldset container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the fieldset container." + } + ] +} diff --git a/app/views/design-system/components/footer/footer.json b/app/views/design-system/components/footer/footer.json new file mode 100644 index 000000000..fd7f3831c --- /dev/null +++ b/app/views/design-system/components/footer/footer.json @@ -0,0 +1,42 @@ +{ + "params": [ + { + "name": "links", + "type": "array", + "required": false, + "description": "Contains an array of footer link items.", + "params": [ + { + "name": "url", + "type": "string", + "required": false, + "description": "Href attribute for the footer link item." + }, + { + "name": "label", + "type": "string", + "required": true, + "description": "The label of for the footer link item." + } + ] + }, + { + "name": "copyright", + "type": "string", + "required": false, + "description": "Optional text for the copyright notice in the footer." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the footer container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the footer container." + } + ] +} diff --git a/app/views/design-system/components/header/header.json b/app/views/design-system/components/header/header.json new file mode 100644 index 000000000..1f8952187 --- /dev/null +++ b/app/views/design-system/components/header/header.json @@ -0,0 +1,130 @@ +{ + "params": [ + { + "name": "showNav", + "type": "boolean", + "required": true, + "description": "Set to `true` to show the navigation links in the header." + }, + { + "name": "showSearch", + "type": "boolean", + "required": true, + "description": "Set to `true` to show the site search input form." + }, + { + "name": "homeHref", + "type": "string", + "required": "No", + "description": "The `href` of the link for the logo and mobile home link in the navigation links. Defaults to \"/\"" + }, + { + "name": "ariaLabel", + "type": "string", + "required": "No", + "description": "Aria label for the logo href. Defaults to \"NHS homepage\"./" + }, + { + "name": "organisation", + "type": "object", + "required": false, + "description": "Settings for header with organisational logo.", + "params": [ + { + "name": "name", + "type": "string", + "required": false, + "description": "Organisation name value." + }, + { + "name": "descriptor", + "type": "string", + "required": false, + "description": "Organisation descriptor." + }, + { + "name": "logoURL", + "type": "string", + "required": true, + "description": "Organisation logo if using a static asset, such as PNG, is preferred." + } + ] + }, + { + "name": "primaryLinks", + "type": "array", + "required": false, + "description": "Array of navigation links for use in the header.", + "params": [ + { + "name": "url", + "type": "string", + "required": true, + "description": "The href of a navigation item in the header." + }, + { + "name": "label", + "type": "string", + "required": false, + "description": "The label of a navigation item in the header." + } + ] + }, + { + "name": "transactional", + "type": "string", + "required": "No", + "description": "Set to `true` if this is a transactional header (with smaller logo)." + }, + { + "name": "transactionalService", + "type": "object", + "required": false, + "description": "Settings for transactional service header", + "params": [ + { + "name": "name", + "type": "string", + "required": false, + "description": "Transactional service name value." + }, + { + "name": "href", + "type": "string", + "required": false, + "description": "The href of the transactional header name." + }, + { + "name": "longName", + "type": "boolean", + "required": false, + "description": "Set this to `true` if the transactional service name is longer than 22 characters." + } + ] + }, + { + "name": "searchAction", + "type": "string", + "required": "No", + "description": "The search action endpoint. Defaults to \"https://www.nhs.uk/search/\"" + }, + { + "name": "searchInputName", + "type": "string", + "required": "No", + "description": "The name for the search field. Defaults to \"q\"" + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the header container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the header container." + } + ] +} diff --git a/app/views/design-system/components/hint-text/hint-text.json b/app/views/design-system/components/hint-text/hint-text.json new file mode 100644 index 000000000..90838bcc4 --- /dev/null +++ b/app/views/design-system/components/hint-text/hint-text.json @@ -0,0 +1,34 @@ +{ + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text to use within the hint. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML to use within the hint. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "id", + "type": "string", + "required": false, + "description": "Optional id attribute to add to the hint." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the hint." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the hint." + } + ] +} diff --git a/app/views/design-system/components/images/images.json b/app/views/design-system/components/images/images.json new file mode 100644 index 000000000..c9433e539 --- /dev/null +++ b/app/views/design-system/components/images/images.json @@ -0,0 +1,46 @@ +{ + "params": [ + { + "name": "src", + "type": "string", + "required": true, + "description": "The source location of the image." + }, + { + "name": "alt", + "type": "string", + "required": true, + "description": "The alt text of the image." + }, + { + "name": "caption", + "type": "string", + "required": false, + "description": "Optional caption text for the image." + }, + { + "name": "sizes", + "type": "string", + "required": false, + "description": "A list of screen sizes for the browser to load the correct image from the srcset images." + }, + { + "name": "srcset", + "type": "string", + "required": false, + "description": "A list of image source URLs and their respective sizes. Separate each image with a comma." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the button component." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the button component." + } + ] +} diff --git a/app/views/design-system/components/inset-text/inset-text.json b/app/views/design-system/components/inset-text/inset-text.json new file mode 100644 index 000000000..daa9b431d --- /dev/null +++ b/app/views/design-system/components/inset-text/inset-text.json @@ -0,0 +1,22 @@ +{ + "params": [ + { + "name": "html", + "type": "string", + "required": true, + "description": "HTML content to be used within the inset text component." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the inset text." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the inset text." + } + ] +} diff --git a/app/views/design-system/components/pagination/pagination.json b/app/views/design-system/components/pagination/pagination.json new file mode 100644 index 000000000..272249ab5 --- /dev/null +++ b/app/views/design-system/components/pagination/pagination.json @@ -0,0 +1,40 @@ +{ + "params": [ + { + "name": "previousUrl", + "type": "string", + "required": true, + "description": "The value of the previous link href attribute." + }, + { + "name": "previousPage", + "type": "string", + "required": true, + "description": "The text of the previous link." + }, + { + "name": "nextUrl", + "type": "string", + "required": true, + "description": "The value of the next link href attribute." + }, + { + "name": "nextPage", + "type": "string", + "required": true, + "description": "The text of the next link." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the pagination container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the pagination container." + } + ] +} diff --git a/app/views/design-system/components/radios/radios.json b/app/views/design-system/components/radios/radios.json new file mode 100644 index 000000000..2ce20322c --- /dev/null +++ b/app/views/design-system/components/radios/radios.json @@ -0,0 +1,112 @@ +{ + "params": [ + { + "name": "fieldset", + "type": "object", + "required": false, + "description": "Options for the fieldset component (for example legend).", + "isComponent": true + }, + { + "name": "hint", + "type": "object", + "required": false, + "description": "Options for the hint component (for example text).", + "isComponent": true + }, + { + "name": "errorMessage", + "type": "object", + "required": false, + "description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.", + "isComponent": true + }, + { + "name": "idPrefix", + "type": "string", + "required": false, + "description": "String to prefix id for each radio item if no id is specified on each item. If `idPrefix` is not passed, fallback to using the name attribute instead." + }, + { + "name": "name", + "type": "string", + "required": true, + "description": "Name attribute for each radio item." + }, + { + "name": "items", + "type": "array", + "required": true, + "description": "Array of radio items objects.", + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text to use within each radio item label. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML to use within each radio item label. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "id", + "type": "string", + "required": false, + "description": "Specific id attribute for the radio item. If omitted, then `idPrefix` string will be applied." + }, + { + "name": "value", + "type": "string", + "required": true, + "description": "Value for the radio input." + }, + { + "name": "hint", + "type": "object", + "required": false, + "description": "Provide hint to each radio item.", + "isComponent": true + }, + { + "name": "divider", + "type": "string", + "required": false, + "description": "Divider text to separate radio items, for example the text \"or\"." + }, + { + "name": "checked", + "type": "boolean", + "required": false, + "description": "If true, radio will be checked." + }, + { + "name": "conditional", + "type": "string", + "required": false, + "description": "If true, content provided will be revealed when the item is checked." + }, + { + "name": "conditional.html", + "type": "html", + "required": false, + "description": "Provide content for the conditional reveal." + } + ] + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the radio container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the radio input tag." + } + ] +} diff --git a/app/views/design-system/components/select/select.json b/app/views/design-system/components/select/select.json new file mode 100644 index 000000000..d7d61eaa3 --- /dev/null +++ b/app/views/design-system/components/select/select.json @@ -0,0 +1,87 @@ +{ + "params": [ + { + "name": "id", + "type": "string", + "required": true, + "description": "Id for each select box." + }, + { + "name": "name", + "type": "string", + "required": true, + "description": "Name property for the select." + }, + { + "name": "items", + "type": "array", + "required": true, + "description": "Array of option items for the select.", + "params": [ + { + "name": "value", + "type": "string", + "required": false, + "description": "Value for the option item. Defaults to an empty string." + }, + { + "name": "text", + "type": "string", + "required": true, + "description": "Text for the option item." + }, + { + "name": "selected", + "type": "boolean", + "required": false, + "description": "Sets the option as the selected." + }, + { + "name": "disabled", + "type": "boolean", + "required": false, + "description": "Sets the option item as disabled." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the option." + } + ] + }, + { + "name": "label", + "type": "object", + "required": false, + "description": "Label text or HTML by specifying value for either text or html keys.", + "isComponent": true + }, + { + "name": "hint", + "type": "object", + "required": false, + "description": "Options for the hint component.", + "isComponent": true + }, + { + "name": "errorMessage", + "type": "object", + "required": false, + "description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.", + "isComponent": true + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the select." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the select." + } + ] +} diff --git a/app/views/design-system/components/skip-link/skip-link.json b/app/views/design-system/components/skip-link/skip-link.json new file mode 100644 index 000000000..a19e8895a --- /dev/null +++ b/app/views/design-system/components/skip-link/skip-link.json @@ -0,0 +1,28 @@ +{ + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "Text to use within the skip link component." + }, + { + "name": "href", + "type": "string", + "required": false, + "description": "The value of the skip link’s `href` attribute. Defaults to `#content` if you do not provide a value." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the skip link." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the skip link." + } + ] +} diff --git a/app/views/design-system/components/summary-list/summary-list.json b/app/views/design-system/components/summary-list/summary-list.json new file mode 100644 index 000000000..ca4885074 --- /dev/null +++ b/app/views/design-system/components/summary-list/summary-list.json @@ -0,0 +1,103 @@ +{ + "params": [ + { + "name": "rows", + "type": "array", + "required": true, + "description": "Array of row item objects.", + "params": [ + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the row `div`" + }, + { + "name": "key.text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text to use within the each key. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "key.html", + "type": "string", + "required": true + }, + { + "name": "key.classes", + "type": "string", + "required": false, + "description": "Classes to add to the key wrapper" + }, + { + "name": "value.text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text to use within the each value. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "value.html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML to use within the each value. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "value.classes", + "type": "string", + "required": false, + "description": "Classes to add to the value wrapper" + }, + { + "name": "actions.classes", + "type": "string", + "required": false, + "description": "Classes to add to the actions wrapper" + }, + { + "name": "actions.items", + "type": "array", + "required": false, + "description": "Array of action item objects", + "params": [ + { + "name": "href", + "type": "string", + "required": true, + "description": "The value of the link href attribute for an action item" + }, + { + "name": "text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text to use within each action item. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML to use within the each action item. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "visuallyHiddenText", + "type": "string", + "required": false, + "description": "Actions rely on context from the surrounding content so may require additional accessible text, text supplied to this option is appended to the end, use `html` for more complicated scenarios." + } + ] + } + ] + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the container." + } + ] +} diff --git a/app/views/design-system/components/table/table.json b/app/views/design-system/components/table/table.json new file mode 100644 index 000000000..a110877b3 --- /dev/null +++ b/app/views/design-system/components/table/table.json @@ -0,0 +1,128 @@ +{ + "params": [ + { + "name": "rows", + "type": "array", + "required": true, + "description": "Array of table rows and cells.", + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text for cells in table rows. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML for cells in table rows. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "format", + "type": "string", + "required": false, + "description": "Specify format of a cell. Currently we only use \"numeric\"." + }, + { + "name": "colspan", + "type": "integer", + "required": false, + "description": "Specify how many columns a cell extends." + }, + { + "name": "rowspan", + "type": "integer", + "required": false, + "description": "Specify how many rows a cell extends." + } + ] + }, + { + "name": "head", + "type": "array", + "required": false, + "description": "Array of table head cells.", + "params": [ + { + "name": "text", + "type": "string", + "required": false, + "description": "If `html` is set, this is not required. Text for table head cells. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": false, + "description": "If `text` is set, this is not required. HTML for table head cells. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "format", + "type": "string", + "required": false, + "description": "Specify format of a cell. Currently we only use \"numeric\"." + }, + { + "name": "colspan", + "type": "integer", + "required": false, + "description": "Specify how many columns a cell extends." + }, + { + "name": "rowspan", + "type": "integer", + "required": false, + "description": "Specify how many rows a cell extends." + } + ] + }, + { + "name": "heading", + "type": "string", + "required": false, + "description": "Heading/label of the panel if the panel argument is set to true." + }, + { + "name": "headingLevel", + "type": "integer", + "required": false, + "description": "Optional heading level for the heading. Default: 3." + }, + { + "name": "caption", + "type": "string", + "required": false, + "description": "Caption text" + }, + { + "name": "captionClasses", + "type": "string", + "required": false, + "description": "Classes for caption text size. Classes should correspond to the available typography heading classes." + }, + { + "name": "firstCellIsHeader", + "type": "boolean", + "required": false, + "description": "If set to true, first cell in table row will be a TH instead of a TD." + }, + { + "name": "responsive", + "type": "boolean", + "required": false, + "description": "If set to true, responsive table classes will be applied." + }, + { + "name": "tableClasses", + "type": "string", + "required": false, + "description": "Classes to add to the table container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the table container." + } + ] +} diff --git a/app/views/design-system/components/tag/tag.json b/app/views/design-system/components/tag/tag.json new file mode 100644 index 000000000..42a2585af --- /dev/null +++ b/app/views/design-system/components/tag/tag.json @@ -0,0 +1,28 @@ +{ + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text to use within the tag component. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML to use within the tag component. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the tag." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the tag." + } + ] +} diff --git a/app/views/design-system/components/text-input/text-input.json b/app/views/design-system/components/text-input/text-input.json new file mode 100644 index 000000000..5be5bf624 --- /dev/null +++ b/app/views/design-system/components/text-input/text-input.json @@ -0,0 +1,169 @@ +{ + "params": [ + { + "name": "id", + "type": "string", + "required": true, + "description": "The id of the input." + }, + { + "name": "name", + "type": "string", + "required": true, + "description": "The name of the input, which is submitted with the form data." + }, + { + "name": "type", + "type": "string", + "required": false, + "description": "Type of input control to render. Defaults to \"text\"." + }, + { + "name": "inputmode", + "type": "string", + "required": false, + "description": "Optional value for [inputmode](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode)." + }, + { + "name": "value", + "type": "string", + "required": false, + "description": "Optional initial value of the input." + }, + { + "name": "describedBy", + "type": "string", + "required": false, + "description": "One or more element IDs to add to the `aria-describedby` attribute, used to provide additional descriptive information for screenreader users." + }, + { + "name": "label", + "type": "object", + "required": true, + "description": "Options for the label component.", + "isComponent": true + }, + { + "name": "hint", + "type": "object", + "required": false, + "description": "Options for the hint component.", + "isComponent": true + }, + { + "name": "errorMessage", + "type": "object", + "required": false, + "description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.", + "isComponent": true + }, + { + "name": "prefix", + "type": "object", + "required": false, + "description": "Options for the prefix element.", + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "Required. If `html` is set, this is not required. Text to use within the label. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "Required. If `text` is set, this is not required. HTML to use within the label. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the prefix." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the prefix element." + } + ] + }, + { + "name": "suffix", + "type": "object", + "required": false, + "description": "Options for the suffix element.", + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "Required. If `html` is set, this is not required. Text to use within the label. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "Required. If `text` is set, this is not required. HTML to use within the label. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the suffix element." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the suffix element." + } + ] + }, + { + "name": "formGroup", + "type": "object", + "required": false, + "description": "Options for the form-group wrapper", + "params": [ + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the form group (for example to show error state for the whole group)" + } + ] + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the input." + }, + { + "name": "autocomplete", + "type": "string", + "required": false, + "description": "Attribute to [identify input purpose](https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html), for instance \"postal-code\" or \"username\". See [autofill](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill) for full list of attributes that can be used." + }, + { + "name": "pattern", + "type": "string", + "required": false, + "description": "Attribute to [provide a regular expression pattern](https://www.w3.org/TR/html51/sec-forms.html#the-pattern-attribute), used to match allowed character combinations for the input value." + }, + { + "name": "spellcheck", + "type": "boolean", + "required": false, + "description": "Optional field to enable or disable the spellcheck attribute on the input." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the anchor tag." + } + ] +} diff --git a/app/views/design-system/components/textarea/textarea.json b/app/views/design-system/components/textarea/textarea.json new file mode 100644 index 000000000..be451b57d --- /dev/null +++ b/app/views/design-system/components/textarea/textarea.json @@ -0,0 +1,73 @@ +{ + "params": [ + { + "name": "id", + "type": "string", + "required": true, + "description": "The id of the textarea." + }, + { + "name": "name", + "type": "string", + "required": true, + "description": "The name of the textarea, which is submitted with the form data." + }, + { + "name": "rows", + "type": "string", + "required": false, + "description": "Optional number of textarea rows (default is 5 rows)." + }, + { + "name": "value", + "type": "string", + "required": false, + "description": "Optional initial value of the textarea." + }, + { + "name": "describedBy", + "type": "string", + "required": false, + "description": "One or more element IDs to add to the `aria-describedby` attribute, used to provide additional descriptive information for screenreader users." + }, + { + "name": "label", + "type": "object", + "required": true, + "description": "Options for the label component.", + "isComponent": true + }, + { + "name": "hint", + "type": "object", + "required": false, + "description": "Options for the hint component.", + "isComponent": true + }, + { + "name": "errorMessage", + "type": "object", + "required": false, + "description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.", + "isComponent": true + }, + { + "name": "autocomplete", + "type": "string", + "required": false, + "description": "Attribute to [identify input purpose](https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html), for instance \"postal-code\" or \"username\". See [autofill](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill) for full list of attributes that can be used." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the textarea." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the textarea." + } + ] +} diff --git a/app/views/design-system/components/warning-callout/warning-callout.json b/app/views/design-system/components/warning-callout/warning-callout.json new file mode 100644 index 000000000..df7706b71 --- /dev/null +++ b/app/views/design-system/components/warning-callout/warning-callout.json @@ -0,0 +1,28 @@ +{ + "params": [ + { + "name": "heading", + "type": "string", + "required": true, + "description": "Heading to be used within the warning callout." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "Content to be used within the warning callout." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the warning callout." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the warning callout." + } + ] +} From ec58fc96566f9e05d8e2c5b5bde8d470d68cf267 Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Tue, 18 May 2021 11:48:24 +0100 Subject: [PATCH 02/11] add functionality to display json data within code snippet templates --- app.js | 1 + app/styles/app/_code-highlight.scss | 4 ++ .../patterns/a-to-z-page/index.njk | 9 ++- .../ask-users-for-their-nhs-number/index.njk | 15 +++-- .../design-system/patterns/mini-hub/index.njk | 6 +- .../index.njk | 6 +- .../styles/page-template/index.njk | 21 ++++--- app/views/includes/design-example.njk | 59 +++++++++++++++++++ middleware/file-helper.js | 4 ++ 9 files changed, 106 insertions(+), 19 deletions(-) diff --git a/app.js b/app.js index e67ee7bae..9e8806ceb 100755 --- a/app.js +++ b/app.js @@ -67,6 +67,7 @@ const env = nunjucks.configure(appViews, { */ env.addGlobal('getHTMLCode', fileHelper.getHTMLCode); env.addGlobal('getNunjucksCode', fileHelper.getNunjucksCode); +env.addGlobal('getJSONCode', fileHelper.getJSONCode); env.addFilter('highlight', (code, language) => { const languages = language ? [language] : false; return highlightjs.highlightAuto(code.trim(), languages).value; diff --git a/app/styles/app/_code-highlight.scss b/app/styles/app/_code-highlight.scss index a3030bbb8..dc130b2eb 100644 --- a/app/styles/app/_code-highlight.scss +++ b/app/styles/app/_code-highlight.scss @@ -58,3 +58,7 @@ td code { background-color: $color_nhsuk-white; padding: 0; } + +.code-snippet__macro { + width: 100%; +} diff --git a/app/views/design-system/patterns/a-to-z-page/index.njk b/app/views/design-system/patterns/a-to-z-page/index.njk index 2596e0a9f..7c7823e76 100644 --- a/app/views/design-system/patterns/a-to-z-page/index.njk +++ b/app/views/design-system/patterns/a-to-z-page/index.njk @@ -18,7 +18,8 @@ group: "patterns", item: "a-to-z-page", type: "default", - fullpage: true + fullpage: true, + showArguments: false }) }}

The A to Z is made up of:

@@ -52,7 +53,8 @@ {{ designExample({ group: "patterns", item: "a-to-z-page", - type: "navigation" + type: "navigation", + showArguments: false }) }}

Use the A to Z navigation at the top of the page.

@@ -62,7 +64,8 @@ {{ designExample({ group: "patterns", item: "a-to-z-page", - type: "panel" + type: "panel", + showArguments: false }) }}

Use the A to Z list panel below the A to Z navigation to help users to navigate around a large section, for example a range of different health conditions. The example on this page is from the Health A to Z page on the NHS website.

diff --git a/app/views/design-system/patterns/ask-users-for-their-nhs-number/index.njk b/app/views/design-system/patterns/ask-users-for-their-nhs-number/index.njk index 6191deaa7..c0ebe89d4 100644 --- a/app/views/design-system/patterns/ask-users-for-their-nhs-number/index.njk +++ b/app/views/design-system/patterns/ask-users-for-their-nhs-number/index.njk @@ -43,7 +43,8 @@ group: "patterns", item: "ask-users-for-their-nhs-number", type: "default", - fullpage: true + fullpage: true, + showArguments: false }) }}

If you have no other option and must use a single text input:

@@ -61,7 +62,8 @@ group: "patterns", item: "ask-users-for-their-nhs-number", type: "filter", - fullpage: true + fullpage: true, + showArguments: false }) }}

If users do know their NHS number, route them to a page that asks for it.

@@ -70,7 +72,8 @@ group: "patterns", item: "ask-users-for-their-nhs-number", type: "filter-single", - fullpage: true + fullpage: true, + showArguments: false }) }}

If users do not know their NHS number, route them to a page that asks for alternative details, for example, a combination of other personal details like their postcode and date of birth.

@@ -84,7 +87,8 @@ group: "patterns", item: "ask-users-for-their-nhs-number", type: "filter-third", - fullpage: true + fullpage: true, + showArguments: false }) }}

How to build the NHS number pattern

@@ -123,7 +127,8 @@ group: "patterns", item: "ask-users-for-their-nhs-number", type: "error", - fullpage: true + fullpage: true, + showArguments: false }) }}

You should tell users if:

diff --git a/app/views/design-system/patterns/mini-hub/index.njk b/app/views/design-system/patterns/mini-hub/index.njk index 3ccdab255..753b994cb 100644 --- a/app/views/design-system/patterns/mini-hub/index.njk +++ b/app/views/design-system/patterns/mini-hub/index.njk @@ -18,7 +18,8 @@ group: "patterns", item: "mini-hub", type: "example", - fullpage: true + fullpage: true, + showArguments: false }) }}

The mini-hub is made up of:

@@ -51,7 +52,8 @@ group: "patterns", item: "mini-hub", type: "default", - htmlOnly: true + htmlOnly: true, + showArguments: false }) }}

Contents list

diff --git a/app/views/design-system/patterns/reassure-users-that-a-page-is-up-to-date/index.njk b/app/views/design-system/patterns/reassure-users-that-a-page-is-up-to-date/index.njk index ab230c929..2de0853a4 100644 --- a/app/views/design-system/patterns/reassure-users-that-a-page-is-up-to-date/index.njk +++ b/app/views/design-system/patterns/reassure-users-that-a-page-is-up-to-date/index.njk @@ -17,7 +17,8 @@ {{ designExample({ group: "patterns", item: "reassure-users-that-a-page-is-up-to-date", - type: "default" + type: "default", + showArguments: false }) }}

When to use this pattern

@@ -40,7 +41,8 @@ group: "patterns", item: "reassure-users-that-a-page-is-up-to-date", type: "page", - blankpage: true + blankpage: true, + showArguments: false }) }}

Embedded content, such as videos

diff --git a/app/views/design-system/styles/page-template/index.njk b/app/views/design-system/styles/page-template/index.njk index 54a013c15..e944c730e 100644 --- a/app/views/design-system/styles/page-template/index.njk +++ b/app/views/design-system/styles/page-template/index.njk @@ -66,7 +66,8 @@ group: "styles", item: "page-template", type: "default", - blankpage: true + blankpage: true, + showArguments: false }) }}

Customised page template

@@ -81,7 +82,8 @@ group: "styles", item: "page-template", type: "content", - blankpage: true + blankpage: true, + showArguments: false }) }}

Transactional page template

@@ -92,7 +94,8 @@ group: "styles", item: "page-template", type: "transactional", - blankpage: true + blankpage: true, + showArguments: false }) }}

Vertical padding is reduced on transactional services using the .nhsuk-main-wrapper--s modifier class. We also recommended you use a smaller page heading size using the .nhsuk-heading-l modifier class.

@@ -108,7 +111,8 @@ item: "page-template", type: "set-content", nunjucksOnly: true, - showExample: false + showExample: false, + showArguments: false }) }}

To set a 'block' option, use block to pass in a multiline value or HTML markup. For example, to add a block of HTML before the closing element in the page template using the bodyEnd option:

@@ -118,7 +122,8 @@ item: "page-template", type: "block", nunjucksOnly: true, - showExample: false + showExample: false, + showArguments: false }) }}

To change the components that are included in the page template by default, set their equivalent blocks. For example:

@@ -128,7 +133,8 @@ item: "page-template", type: "component", nunjucksOnly: true, - showExample: false + showExample: false, + showArguments: false }) }}

Options

@@ -283,7 +289,8 @@ item: "page-template", type: "annotated", blankpage: true, - showCode: false + showCode: false, + showArguments: false }) }} {% endblock %} diff --git a/app/views/includes/design-example.njk b/app/views/includes/design-example.njk index 5b7e69f3d..ee510b97f 100644 --- a/app/views/includes/design-example.njk +++ b/app/views/includes/design-example.njk @@ -1,10 +1,12 @@ {% macro designExample(params) %} {% set examplePath = "app/views/design-system/" + params.group + "/" + params.item + "/" + params.type + "/index.njk" %} + {% set exampleArguments = "app/views/design-system/" + params.group + "/" + params.item + "/" + params.item + ".json" %} {% set standaloneURL = "/design-example/" + params.group + "/" + params.item + "/" + params.type + "?fullpage=" + params.fullpage + "&blankpage=" + params.blankpage %} {# `showExample` and `showCode` is true, unless explicitly turned off with params #} {% set showExample = params.showExample !== false %} {% set showCode = params.showCode !== false %} + {% set showArguments = params.showArguments !== false %} {% set html %} {{- getHTMLCode(examplePath) | highlight('html') | safe -}} @@ -78,6 +80,63 @@ {% endif %}
+ {% if snippet.name == "Nunjucks" and showArguments %} + {% set nunjucksArguments = getJSONCode(exampleArguments) %} + +
+
+ + + Nunjucks macro options + + +
+

Use options to customise the appearance, content and behaviour of a component when using a macro, for example, changing the text.

+

Some options are required for the macro to work; these are marked as "Required" in the option description.

+

If you're using Nunjucks macros in production with "html" options, or ones ending with "html", you must sanitise the HTML to protect against cross-site scripting exploits.

+ + + + + + + + + + + + + {% for option in nunjucksArguments.params %} + + + + + + + {% endfor %} + +
Nunjucks arguments for {{ exampleTitle }}
+ Name + + Type + + Required + + Description +
+ Name {{ option.name }} + + Type {{ option.type }} + + Required {{ option.required }} + + Description {{ option.description }} +
+ +
+
+
+ {% endif %}
Copy {{ exampleTitle }} code

diff --git a/middleware/file-helper.js b/middleware/file-helper.js
index 5f2cb4a7f..2aa640040 100644
--- a/middleware/file-helper.js
+++ b/middleware/file-helper.js
@@ -60,3 +60,7 @@ exports.getHTMLCode = (path) => {
     unformatted: ['code', 'pre', 'em', 'strong'],
   });
 };
+
+// This helper function takes json data from a file path and returns it as an object
+// to be rendered in a Nunjucks template
+exports.getJSONCode = path => JSON.parse(getFileContents(path));

From b7d82263252065f335604ba1a7a3a6c4724be65a Mon Sep 17 00:00:00 2001
From: AdamChrimes 
Date: Tue, 18 May 2021 13:49:30 +0100
Subject: [PATCH 03/11] use the latest version of highlight.js

https://github.com/highlightjs/highlight.js/issues/2877
---
 package-lock.json | 978 ++++++++++++++++++++++++++++++++++++++++++----
 package.json      |   2 +-
 2 files changed, 900 insertions(+), 80 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index 6a0e9bdd1..a02a6a749 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -23353,6 +23353,35 @@
       "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
       "dev": true
     },
+<<<<<<< HEAD
+=======
+    "autoprefixer": {
+      "version": "7.2.6",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz",
+      "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^2.11.3",
+        "caniuse-lite": "^1.0.30000805",
+        "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "postcss": "^6.0.17",
+        "postcss-value-parser": "^3.2.3"
+      },
+      "dependencies": {
+        "browserslist": {
+          "version": "2.11.3",
+          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz",
+          "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==",
+          "dev": true,
+          "requires": {
+            "caniuse-lite": "^1.0.30000792",
+            "electron-to-chromium": "^1.3.30"
+          }
+        }
+      }
+    },
+>>>>>>> use the latest version of highlight.js
     "aws-sign2": {
       "version": "0.7.0",
       "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
@@ -23545,6 +23574,7 @@
       }
     },
     "babel-runtime": {
+<<<<<<< HEAD
       "version": "6.26.0",
       "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
       "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
@@ -23552,6 +23582,14 @@
       "requires": {
         "core-js": "^2.4.0",
         "regenerator-runtime": "^0.11.0"
+=======
+      "version": "5.8.38",
+      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz",
+      "integrity": "sha1-HAsC62MxL18If/IEUIJ7QlydTBk=",
+      "dev": true,
+      "requires": {
+        "core-js": "^1.0.0"
+>>>>>>> use the latest version of highlight.js
       }
     },
     "backo2": {
@@ -24207,6 +24245,7 @@
         "get-intrinsic": "^1.0.2"
       }
     },
+<<<<<<< HEAD
     "caller-path": {
       "version": "0.1.0",
       "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz",
@@ -24224,6 +24263,8 @@
         }
       }
     },
+=======
+>>>>>>> use the latest version of highlight.js
     "callsites": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
@@ -24360,12 +24401,15 @@
         "safe-buffer": "^5.0.1"
       }
     },
+<<<<<<< HEAD
     "circular-json": {
       "version": "0.3.3",
       "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
       "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
       "dev": true
     },
+=======
+>>>>>>> use the latest version of highlight.js
     "class-utils": {
       "version": "0.3.6",
       "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
@@ -24459,12 +24503,30 @@
       "dev": true
     },
     "cli-cursor": {
+<<<<<<< HEAD
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+      "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+      "dev": true,
+      "requires": {
+        "restore-cursor": "^2.0.0"
+=======
+<<<<<<< HEAD
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz",
+      "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
+      "dev": true,
+      "requires": {
+        "restore-cursor": "^1.0.1"
+=======
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
       "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
       "dev": true,
       "requires": {
         "restore-cursor": "^2.0.0"
+>>>>>>> use the latest version of highlight.js
+>>>>>>> use the latest version of highlight.js
       }
     },
     "cli-width": {
@@ -24962,9 +25024,15 @@
       "dev": true
     },
     "core-js": {
+<<<<<<< HEAD
       "version": "2.6.12",
       "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz",
       "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==",
+=======
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz",
+      "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=",
+>>>>>>> use the latest version of highlight.js
       "dev": true
     },
     "core-js-compat": {
@@ -24992,6 +25060,7 @@
       "dev": true
     },
     "cpx": {
+<<<<<<< HEAD
       "version": "1.5.0",
       "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz",
       "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=",
@@ -25007,6 +25076,22 @@
         "resolve": "^1.1.7",
         "safe-buffer": "^5.0.1",
         "shell-quote": "^1.6.1",
+=======
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.2.1.tgz",
+      "integrity": "sha1-MTV1KD9/as679QQVKlMXvvsYFSs=",
+      "dev": true,
+      "requires": {
+        "babel-runtime": "^5.7.0",
+        "chokidar": "^1.0.4",
+        "duplexer": "^0.1.1",
+        "glob": "^5.0.14",
+        "glob2base": "0.0.12",
+        "minimatch": "^2.0.8",
+        "mkdirp": "^0.5.1",
+        "resolve": "^1.1.6",
+        "shell-quote": "^1.4.3",
+>>>>>>> use the latest version of highlight.js
         "subarg": "^1.0.0"
       },
       "dependencies": {
@@ -26236,76 +26321,585 @@
           "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
           "dev": true,
           "requires": {
-            "prelude-ls": "~1.1.2"
+            "prelude-ls": "~1.1.2"
+          }
+        }
+      }
+    },
+    "escope": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
+      "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
+      "dev": true,
+      "requires": {
+        "es6-map": "^0.1.3",
+        "es6-weak-map": "^2.0.1",
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "eslint": {
+      "version": "7.28.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz",
+      "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "7.12.11",
+        "@eslint/eslintrc": "^0.4.2",
+        "ajv": "^6.10.0",
+        "chalk": "^4.0.0",
+        "cross-spawn": "^7.0.2",
+        "debug": "^4.0.1",
+        "doctrine": "^3.0.0",
+        "enquirer": "^2.3.5",
+        "escape-string-regexp": "^4.0.0",
+        "eslint-scope": "^5.1.1",
+        "eslint-utils": "^2.1.0",
+        "eslint-visitor-keys": "^2.0.0",
+        "espree": "^7.3.1",
+        "esquery": "^1.4.0",
+        "esutils": "^2.0.2",
+        "fast-deep-equal": "^3.1.3",
+        "file-entry-cache": "^6.0.1",
+        "functional-red-black-tree": "^1.0.1",
+        "glob-parent": "^5.1.2",
+        "globals": "^13.6.0",
+        "ignore": "^4.0.6",
+        "import-fresh": "^3.0.0",
+        "imurmurhash": "^0.1.4",
+        "is-glob": "^4.0.0",
+        "js-yaml": "^3.13.1",
+        "json-stable-stringify-without-jsonify": "^1.0.1",
+        "levn": "^0.4.1",
+        "lodash.merge": "^4.6.2",
+        "minimatch": "^3.0.4",
+        "natural-compare": "^1.4.0",
+        "optionator": "^0.9.1",
+        "progress": "^2.0.0",
+        "regexpp": "^3.1.0",
+        "semver": "^7.2.1",
+        "strip-ansi": "^6.0.0",
+        "strip-json-comments": "^3.1.0",
+        "table": "^6.0.9",
+        "text-table": "^0.2.0",
+        "v8-compile-cache": "^2.0.3"
+      },
+      "dependencies": {
+        "@babel/code-frame": {
+          "version": "7.12.11",
+          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
+          "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
+          "dev": true,
+          "requires": {
+            "@babel/highlight": "^7.10.4"
+          }
+        },
+        "ansi-styles": {
+          "version": "4.3.0",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+          "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+          "dev": true,
+          "requires": {
+            "color-convert": "^2.0.1"
+          }
+        },
+        "chalk": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz",
+          "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^4.1.0",
+            "supports-color": "^7.1.0"
+          }
+        },
+        "color-convert": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+          "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+          "dev": true,
+          "requires": {
+            "color-name": "~1.1.4"
+          }
+        },
+        "color-name": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+          "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+          "dev": true
+        },
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+          "dev": true
+        },
+        "globals": {
+          "version": "13.9.0",
+          "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz",
+          "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==",
+          "dev": true,
+          "requires": {
+            "type-fest": "^0.20.2"
+          }
+        },
+        "has-flag": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+          "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "6.0.0",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+          "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+          "dev": true,
+          "requires": {
+            "yallist": "^4.0.0"
+          }
+        },
+        "semver": {
+          "version": "7.3.5",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz",
+          "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
+          "dev": true,
+          "requires": {
+            "lru-cache": "^6.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "7.2.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+          "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^4.0.0"
+          }
+        },
+        "type-fest": {
+          "version": "0.20.2",
+          "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
+          "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
+          "dev": true
+        },
+        "yallist": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+          "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+          "dev": true
+        }
+      }
+    },
+    "eslint-config-airbnb-base": {
+      "version": "14.2.1",
+      "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz",
+      "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==",
+      "dev": true,
+      "requires": {
+        "confusing-browser-globals": "^1.0.10",
+        "object.assign": "^4.1.2",
+        "object.entries": "^1.1.2"
+      }
+    },
+    "eslint-config-nhsuk": {
+      "version": "0.17.0",
+      "resolved": "https://registry.npmjs.org/eslint-config-nhsuk/-/eslint-config-nhsuk-0.17.0.tgz",
+      "integrity": "sha512-4ScoK+ukA6kBBnFZW8QXoFjPtUuk5CiUfZu/tLeM4uwPmCwSHjaqBVhKWvJdHmhEIsZOrzbTOw5UXYkjU1SzAg==",
+      "dev": true,
+      "requires": {
+        "eslint": "^5.0.0",
+        "eslint-config-airbnb-base": "^13.0.0",
+        "eslint-plugin-import": "^2.0.0",
+        "eslint-plugin-json": "^1.0.0",
+        "eslint-plugin-mocha": "^5.0.0"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "6.4.2",
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
+          "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
+          "dev": true
+        },
+<<<<<<< HEAD
+=======
+        "ansi-escapes": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+          "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+          "dev": true
+        },
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "cli-cursor": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
+          "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=",
+          "dev": true,
+          "requires": {
+            "restore-cursor": "^2.0.0"
+          }
+        },
+        "cross-spawn": {
+          "version": "6.0.5",
+          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+          "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+          "dev": true,
+          "requires": {
+            "nice-try": "^1.0.4",
+            "path-key": "^2.0.1",
+            "semver": "^5.5.0",
+            "shebang-command": "^1.2.0",
+            "which": "^1.2.9"
+          }
+        },
+        "eslint": {
+          "version": "5.16.0",
+          "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz",
+          "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==",
+          "dev": true,
+          "requires": {
+            "@babel/code-frame": "^7.0.0",
+            "ajv": "^6.9.1",
+            "chalk": "^2.1.0",
+            "cross-spawn": "^6.0.5",
+            "debug": "^4.0.1",
+            "doctrine": "^3.0.0",
+            "eslint-scope": "^4.0.3",
+            "eslint-utils": "^1.3.1",
+            "eslint-visitor-keys": "^1.0.0",
+            "espree": "^5.0.1",
+            "esquery": "^1.0.1",
+            "esutils": "^2.0.2",
+            "file-entry-cache": "^5.0.1",
+            "functional-red-black-tree": "^1.0.1",
+            "glob": "^7.1.2",
+            "globals": "^11.7.0",
+            "ignore": "^4.0.6",
+            "import-fresh": "^3.0.0",
+            "imurmurhash": "^0.1.4",
+            "inquirer": "^6.2.2",
+            "js-yaml": "^3.13.0",
+            "json-stable-stringify-without-jsonify": "^1.0.1",
+            "levn": "^0.3.0",
+            "lodash": "^4.17.11",
+            "minimatch": "^3.0.4",
+            "mkdirp": "^0.5.1",
+            "natural-compare": "^1.4.0",
+            "optionator": "^0.8.2",
+            "path-is-inside": "^1.0.2",
+            "progress": "^2.0.0",
+            "regexpp": "^2.0.1",
+            "semver": "^5.5.1",
+            "strip-ansi": "^4.0.0",
+            "strip-json-comments": "^2.0.1",
+            "table": "^5.2.3",
+            "text-table": "^0.2.0"
+          }
+        },
+        "eslint-config-airbnb-base": {
+          "version": "13.2.0",
+          "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz",
+          "integrity": "sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w==",
+          "dev": true,
+          "requires": {
+            "confusing-browser-globals": "^1.0.5",
+            "object.assign": "^4.1.0",
+            "object.entries": "^1.1.0"
+          }
+        },
+        "eslint-plugin-json": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-1.4.0.tgz",
+          "integrity": "sha512-CECvgRAWtUzuepdlPWd+VA7fhyF9HT183pZnl8wQw5x699Mk/MbME/q8xtULBfooi3LUbj6fToieNmsvUcDxWA==",
+          "dev": true,
+          "requires": {
+            "vscode-json-languageservice": "^3.2.1"
+          }
+        },
+        "eslint-plugin-mocha": {
+          "version": "5.3.0",
+          "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-5.3.0.tgz",
+          "integrity": "sha512-3uwlJVLijjEmBeNyH60nzqgA1gacUWLUmcKV8PIGNvj1kwP/CTgAWQHn2ayyJVwziX+KETkr9opNwT1qD/RZ5A==",
+          "dev": true,
+          "requires": {
+            "ramda": "^0.26.1"
+          }
+        },
+        "eslint-scope": {
+          "version": "4.0.3",
+          "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+          "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+          "dev": true,
+          "requires": {
+            "esrecurse": "^4.1.0",
+            "estraverse": "^4.1.1"
+          }
+        },
+        "eslint-utils": {
+          "version": "1.4.3",
+          "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz",
+          "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==",
+          "dev": true,
+          "requires": {
+            "eslint-visitor-keys": "^1.1.0"
+          }
+        },
+        "eslint-visitor-keys": {
+          "version": "1.3.0",
+          "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
+          "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
+          "dev": true
+        },
+        "espree": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz",
+          "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==",
+          "dev": true,
+          "requires": {
+            "acorn": "^6.0.7",
+            "acorn-jsx": "^5.0.0",
+            "eslint-visitor-keys": "^1.0.0"
+          }
+        },
+        "figures": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+          "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+          "dev": true,
+          "requires": {
+            "escape-string-regexp": "^1.0.5"
+          }
+        },
+        "file-entry-cache": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
+          "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
+          "dev": true,
+          "requires": {
+            "flat-cache": "^2.0.1"
+          }
+        },
+        "flat-cache": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
+          "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
+          "dev": true,
+          "requires": {
+            "flatted": "^2.0.0",
+            "rimraf": "2.6.3",
+            "write": "1.0.3"
+          }
+        },
+        "flatted": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz",
+          "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==",
+          "dev": true
+        },
+        "inquirer": {
+          "version": "6.5.2",
+          "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
+          "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
+          "dev": true,
+          "requires": {
+            "ansi-escapes": "^3.2.0",
+            "chalk": "^2.4.2",
+            "cli-cursor": "^2.1.0",
+            "cli-width": "^2.0.0",
+            "external-editor": "^3.0.3",
+            "figures": "^2.0.0",
+            "lodash": "^4.17.12",
+            "mute-stream": "0.0.7",
+            "run-async": "^2.2.0",
+            "rxjs": "^6.4.0",
+            "string-width": "^2.1.0",
+            "strip-ansi": "^5.1.0",
+            "through": "^2.3.6"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0",
+              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+              "dev": true
+            },
+            "strip-ansi": {
+              "version": "5.2.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+              "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^4.1.0"
+              }
+            }
+          }
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "levn": {
+          "version": "0.3.0",
+          "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+          "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+          "dev": true,
+          "requires": {
+            "prelude-ls": "~1.1.2",
+            "type-check": "~0.3.2"
+          }
+        },
+        "mimic-fn": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+          "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+          "dev": true
+        },
+        "mute-stream": {
+          "version": "0.0.7",
+          "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+          "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+          "dev": true
+        },
+        "onetime": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
+          "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=",
+          "dev": true,
+          "requires": {
+            "mimic-fn": "^1.0.0"
+          }
+        },
+        "optionator": {
+          "version": "0.8.3",
+          "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
+          "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==",
+          "dev": true,
+          "requires": {
+            "deep-is": "~0.1.3",
+            "fast-levenshtein": "~2.0.6",
+            "levn": "~0.3.0",
+            "prelude-ls": "~1.1.2",
+            "type-check": "~0.3.2",
+            "word-wrap": "~1.2.3"
+          }
+        },
+        "path-key": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+          "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+          "dev": true
+        },
+        "prelude-ls": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+          "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+          "dev": true
+        },
+        "ramda": {
+          "version": "0.26.1",
+          "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz",
+          "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==",
+          "dev": true
+        },
+        "regexpp": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
+          "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
+          "dev": true
+        },
+        "restore-cursor": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+          "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+          "dev": true,
+          "requires": {
+            "onetime": "^2.0.0",
+            "signal-exit": "^3.0.2"
+          }
+        },
+        "rimraf": {
+          "version": "2.6.3",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz",
+          "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
+          "dev": true,
+          "requires": {
+<<<<<<< HEAD
+            "glob": "^7.1.3"
+          }
+        },
+        "run-async": {
+          "version": "2.4.1",
+          "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
+          "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
+          "dev": true
+        },
+        "rxjs": {
+          "version": "6.6.7",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        },
+        "semver": {
+          "version": "5.7.1",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+          "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+          "dev": true
+        },
+        "shebang-command": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+          "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+          "dev": true,
+          "requires": {
+            "shebang-regex": "^1.0.0"
+          }
+        },
+        "shebang-regex": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+          "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+          "dev": true
+        },
+        "slice-ansi": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
+          "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^3.2.0",
+            "astral-regex": "^1.0.0",
+            "is-fullwidth-code-point": "^2.0.0"
+          }
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
           }
-        }
-      }
-    },
-    "escope": {
-      "version": "3.6.0",
-      "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz",
-      "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=",
-      "dev": true,
-      "requires": {
-        "es6-map": "^0.1.3",
-        "es6-weak-map": "^2.0.1",
-        "esrecurse": "^4.1.0",
-        "estraverse": "^4.1.1"
-      }
-    },
-    "eslint": {
-      "version": "7.28.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz",
-      "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==",
-      "dev": true,
-      "requires": {
-        "@babel/code-frame": "7.12.11",
-        "@eslint/eslintrc": "^0.4.2",
-        "ajv": "^6.10.0",
-        "chalk": "^4.0.0",
-        "cross-spawn": "^7.0.2",
-        "debug": "^4.0.1",
-        "doctrine": "^3.0.0",
-        "enquirer": "^2.3.5",
-        "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^5.1.1",
-        "eslint-utils": "^2.1.0",
-        "eslint-visitor-keys": "^2.0.0",
-        "espree": "^7.3.1",
-        "esquery": "^1.4.0",
-        "esutils": "^2.0.2",
-        "fast-deep-equal": "^3.1.3",
-        "file-entry-cache": "^6.0.1",
-        "functional-red-black-tree": "^1.0.1",
-        "glob-parent": "^5.1.2",
-        "globals": "^13.6.0",
-        "ignore": "^4.0.6",
-        "import-fresh": "^3.0.0",
-        "imurmurhash": "^0.1.4",
-        "is-glob": "^4.0.0",
-        "js-yaml": "^3.13.1",
-        "json-stable-stringify-without-jsonify": "^1.0.1",
-        "levn": "^0.4.1",
-        "lodash.merge": "^4.6.2",
-        "minimatch": "^3.0.4",
-        "natural-compare": "^1.4.0",
-        "optionator": "^0.9.1",
-        "progress": "^2.0.0",
-        "regexpp": "^3.1.0",
-        "semver": "^7.2.1",
-        "strip-ansi": "^6.0.0",
-        "strip-json-comments": "^3.1.0",
-        "table": "^6.0.9",
-        "text-table": "^0.2.0",
-        "v8-compile-cache": "^2.0.3"
-      },
-      "dependencies": {
-        "@babel/code-frame": {
-          "version": "7.12.11",
-          "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
-          "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
+        },
+        "strip-ansi": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+          "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
           "dev": true,
           "requires": {
+            "ansi-regex": "^3.0.0"
+          }
+        },
+=======
             "@babel/highlight": "^7.10.4"
           }
         },
@@ -26343,16 +26937,10 @@
           "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
           "dev": true
         },
-        "escape-string-regexp": {
-          "version": "4.0.0",
-          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
-          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
-          "dev": true
-        },
         "globals": {
-          "version": "13.9.0",
-          "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz",
-          "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==",
+          "version": "13.8.0",
+          "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz",
+          "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==",
           "dev": true,
           "requires": {
             "type-fest": "^0.20.2"
@@ -26435,6 +27023,7 @@
           "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
           "dev": true
         },
+>>>>>>> use the latest version of highlight.js
         "ansi-regex": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
@@ -26721,6 +27310,7 @@
             "ansi-regex": "^3.0.0"
           }
         },
+>>>>>>> use the latest version of highlight.js
         "strip-json-comments": {
           "version": "2.0.1",
           "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
@@ -26731,6 +27321,43 @@
           "version": "5.4.6",
           "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz",
           "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==",
+<<<<<<< HEAD
+          "dev": true,
+          "requires": {
+            "ajv": "^6.10.2",
+            "lodash": "^4.17.14",
+            "slice-ansi": "^2.1.0",
+            "string-width": "^3.0.0"
+          }
+        },
+        "type-check": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+          "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+          "dev": true,
+          "requires": {
+            "prelude-ls": "~1.1.2"
+          }
+        },
+        "which": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+          "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+          "dev": true,
+          "requires": {
+            "isexe": "^2.0.0"
+          }
+<<<<<<< HEAD
+=======
+        },
+        "write": {
+          "version": "1.0.3",
+          "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+          "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+          "dev": true,
+          "requires": {
+            "mkdirp": "^0.5.1"
+=======
           "dev": true,
           "requires": {
             "ajv": "^6.10.2",
@@ -26755,7 +27382,9 @@
           "dev": true,
           "requires": {
             "isexe": "^2.0.0"
+>>>>>>> use the latest version of highlight.js
           }
+>>>>>>> use the latest version of highlight.js
         }
       }
     },
@@ -27378,12 +28007,31 @@
       "dev": true
     },
     "figures": {
+<<<<<<< HEAD
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
+      "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
+      "dev": true,
+      "requires": {
+        "escape-string-regexp": "^1.0.5"
+=======
+<<<<<<< HEAD
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
+      "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
+      "dev": true,
+      "requires": {
+        "escape-string-regexp": "^1.0.5",
+        "object-assign": "^4.1.0"
+=======
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
       "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
       "dev": true,
       "requires": {
         "escape-string-regexp": "^1.0.5"
+>>>>>>> use the latest version of highlight.js
+>>>>>>> use the latest version of highlight.js
       }
     },
     "file-entry-cache": {
@@ -28487,9 +29135,9 @@
       "integrity": "sha512-HVqALKZlR95ROkrnesdhbbZJFi/rIVSoNq6f3jA/9u6MIbTsPh3xZwihjeI5+DO/2sOV6HMHooXcEOuwskHpTg=="
     },
     "highlight.js": {
-      "version": "9.18.5",
-      "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz",
-      "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA=="
+      "version": "10.7.2",
+      "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz",
+      "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg=="
     },
     "hmac-drbg": {
       "version": "1.0.1",
@@ -28782,6 +29430,32 @@
       "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
     },
     "inquirer": {
+<<<<<<< HEAD
+      "version": "6.5.2",
+      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
+      "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
+=======
+<<<<<<< HEAD
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz",
+      "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=",
+>>>>>>> use the latest version of highlight.js
+      "dev": true,
+      "requires": {
+        "ansi-escapes": "^3.2.0",
+        "chalk": "^2.4.2",
+        "cli-cursor": "^2.1.0",
+        "cli-width": "^2.0.0",
+<<<<<<< HEAD
+=======
+        "figures": "^1.3.5",
+        "lodash": "^4.3.0",
+        "readline2": "^1.0.1",
+        "run-async": "^0.1.0",
+        "rx-lite": "^3.1.2",
+        "string-width": "^1.0.1",
+        "strip-ansi": "^3.0.0",
+=======
       "version": "6.5.2",
       "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
       "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
@@ -28791,6 +29465,7 @@
         "chalk": "^2.4.2",
         "cli-cursor": "^2.1.0",
         "cli-width": "^2.0.0",
+>>>>>>> use the latest version of highlight.js
         "external-editor": "^3.0.3",
         "figures": "^2.0.0",
         "lodash": "^4.17.12",
@@ -28799,13 +29474,24 @@
         "rxjs": "^6.4.0",
         "string-width": "^2.1.0",
         "strip-ansi": "^5.1.0",
+<<<<<<< HEAD
+=======
+>>>>>>> use the latest version of highlight.js
+>>>>>>> use the latest version of highlight.js
         "through": "^2.3.6"
       },
       "dependencies": {
         "ansi-escapes": {
+<<<<<<< HEAD
           "version": "3.2.0",
           "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
           "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+=======
+<<<<<<< HEAD
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
+          "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
+>>>>>>> use the latest version of highlight.js
           "dev": true
         },
         "ansi-regex": {
@@ -28870,6 +29556,71 @@
           "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
           "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
           "dev": true
+=======
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
+          "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
+          "dev": true
+        },
+        "ansi-regex": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+          "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+          "dev": true
+        },
+        "is-fullwidth-code-point": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+          "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+          "dev": true
+        },
+        "rxjs": {
+          "version": "6.6.7",
+          "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
+          "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+          "dev": true,
+          "requires": {
+            "tslib": "^1.9.0"
+          }
+        },
+        "string-width": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+          "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+          "dev": true,
+          "requires": {
+            "is-fullwidth-code-point": "^2.0.0",
+            "strip-ansi": "^4.0.0"
+          },
+          "dependencies": {
+            "strip-ansi": {
+              "version": "4.0.0",
+              "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+              "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+              "dev": true,
+              "requires": {
+                "ansi-regex": "^3.0.0"
+              }
+            }
+          }
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "dev": true,
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          },
+          "dependencies": {
+            "ansi-regex": {
+              "version": "4.1.0",
+              "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+              "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+              "dev": true
+            }
+          }
+>>>>>>> use the latest version of highlight.js
         }
       }
     },
@@ -31414,9 +32165,21 @@
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
     },
     "mute-stream": {
+<<<<<<< HEAD
+      "version": "0.0.7",
+      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
+      "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+=======
+<<<<<<< HEAD
+      "version": "0.0.5",
+      "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz",
+      "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=",
+=======
       "version": "0.0.7",
       "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz",
       "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=",
+>>>>>>> use the latest version of highlight.js
+>>>>>>> use the latest version of highlight.js
       "dev": true
     },
     "nan": {
@@ -33278,6 +34041,30 @@
       }
     },
     "restore-cursor": {
+<<<<<<< HEAD
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
+      "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
+=======
+<<<<<<< HEAD
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz",
+      "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
+>>>>>>> use the latest version of highlight.js
+      "dev": true,
+      "requires": {
+        "onetime": "^2.0.0",
+        "signal-exit": "^3.0.2"
+      },
+      "dependencies": {
+        "mimic-fn": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
+          "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
+          "dev": true
+<<<<<<< HEAD
+=======
+=======
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
       "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=",
@@ -33292,6 +34079,7 @@
           "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
           "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
           "dev": true
+>>>>>>> use the latest version of highlight.js
         },
         "onetime": {
           "version": "2.0.1",
@@ -33301,6 +34089,10 @@
           "requires": {
             "mimic-fn": "^1.0.0"
           }
+<<<<<<< HEAD
+=======
+>>>>>>> use the latest version of highlight.js
+>>>>>>> use the latest version of highlight.js
         }
       }
     },
@@ -33336,10 +34128,26 @@
       "dev": true
     },
     "run-async": {
+<<<<<<< HEAD
+=======
+<<<<<<< HEAD
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz",
+      "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0"
+      }
+=======
+>>>>>>> use the latest version of highlight.js
       "version": "2.4.1",
       "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
       "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
       "dev": true
+<<<<<<< HEAD
+=======
+>>>>>>> use the latest version of highlight.js
+>>>>>>> use the latest version of highlight.js
     },
     "run-queue": {
       "version": "1.0.3",
@@ -37626,9 +38434,21 @@
       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
     },
     "write": {
+<<<<<<< HEAD
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
+      "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+=======
+<<<<<<< HEAD
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz",
+      "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=",
+=======
       "version": "1.0.3",
       "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
       "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
+>>>>>>> use the latest version of highlight.js
+>>>>>>> use the latest version of highlight.js
       "dev": true,
       "requires": {
         "mkdirp": "^0.5.1"
diff --git a/package.json b/package.json
index 79b825907..74dd046a8 100755
--- a/package.json
+++ b/package.json
@@ -41,7 +41,7 @@
     "compression": "^1.7.4",
     "express": "^4.17.1",
     "helmet": "^4.4.1",
-    "highlight.js": "^9.18.3",
+    "highlight.js": "^10.7.2",
     "js-beautify": "^1.13.5",
     "lunr": "^2.3.9",
     "nunjucks": "^3.2.3"

From 583c5cc0d8e442c4da82a3d85b886f96595ea099 Mon Sep 17 00:00:00 2001
From: AdamChrimes 
Date: Tue, 18 May 2021 14:36:32 +0100
Subject: [PATCH 04/11] fix formatting and file name of the json nunjuck option
 files

---
 .../{action-link.json => macro-options.json}  |   0
 .../{back-link.json => macro-options.json}    |   0
 .../{breadcrumbs.json => macro-options.json}  |   0
 .../{buttons.json => macro-options.json}      |   0
 .../card/{card.json => macro-options.json}    |   0
 .../{care-cards.json => macro-options.json}   |   0
 .../components/checkboxes/checkboxes.json     | 127 -------------
 .../components/checkboxes/macro-options.json  | 127 +++++++++++++
 .../contents-list/contents-list.json          |  42 -----
 .../contents-list/macro-options.json          |  42 +++++
 .../components/date-input/date-input.json     |  81 ---------
 .../components/date-input/macro-options.json  |  81 +++++++++
 .../components/details/details.json           |  40 -----
 .../components/details/macro-options.json     |  40 +++++
 .../do-and-dont-lists/do-and-dont-lists.json  |  54 ------
 .../do-and-dont-lists/macro-options.json      |  54 ++++++
 .../error-message/error-message.json          |  34 ----
 .../error-message/macro-options.json          |  34 ++++
 .../error-summary/error-summary.json          |  72 --------
 .../error-summary/macro-options.json          |  72 ++++++++
 .../components/expander/expander.json         |  40 -----
 .../components/expander/macro-options.json    |  40 +++++
 .../components/fieldset/fieldset.json         |  54 ------
 .../components/fieldset/macro-options.json    |  54 ++++++
 .../{footer.json => macro-options.json}       |  34 ++--
 .../components/header/header.json             | 130 --------------
 .../components/header/macro-options.json      | 130 ++++++++++++++
 .../components/hint-text/hint-text.json       |  34 ----
 .../components/hint-text/macro-options.json   |  34 ++++
 .../components/images/images.json             |  46 -----
 .../components/images/macro-options.json      |  46 +++++
 .../{inset-text.json => macro-options.json}   |  12 +-
 .../components/pagination/macro-options.json  |  40 +++++
 .../components/pagination/pagination.json     |  40 -----
 .../components/radios/macro-options.json      | 112 ++++++++++++
 .../components/radios/radios.json             | 112 ------------
 .../components/select/macro-options.json      |  87 +++++++++
 .../components/select/select.json             |  87 ---------
 .../components/skip-link/default/index.njk    |   2 +-
 .../components/skip-link/macro-options.json   |  28 +++
 .../components/skip-link/skip-link.json       |  28 ---
 .../summary-list/macro-options.json           | 103 +++++++++++
 .../components/summary-list/summary-list.json | 103 -----------
 .../components/table/macro-options.json       | 128 +++++++++++++
 .../design-system/components/table/table.json | 128 -------------
 .../components/tag/macro-options.json         |  28 +++
 .../design-system/components/tag/tag.json     |  28 ---
 .../components/text-input/macro-options.json  | 169 ++++++++++++++++++
 .../components/text-input/text-input.json     | 169 ------------------
 .../components/textarea/macro-options.json    |  73 ++++++++
 .../components/textarea/textarea.json         |  73 --------
 ...arning-callout.json => macro-options.json} |  22 +--
 app/views/includes/design-example.njk         |   2 +-
 53 files changed, 1558 insertions(+), 1558 deletions(-)
 rename app/views/design-system/components/action-link/{action-link.json => macro-options.json} (100%)
 rename app/views/design-system/components/back-link/{back-link.json => macro-options.json} (100%)
 rename app/views/design-system/components/breadcrumbs/{breadcrumbs.json => macro-options.json} (100%)
 rename app/views/design-system/components/buttons/{buttons.json => macro-options.json} (100%)
 rename app/views/design-system/components/card/{card.json => macro-options.json} (100%)
 rename app/views/design-system/components/care-cards/{care-cards.json => macro-options.json} (100%)
 delete mode 100644 app/views/design-system/components/checkboxes/checkboxes.json
 create mode 100644 app/views/design-system/components/checkboxes/macro-options.json
 delete mode 100644 app/views/design-system/components/contents-list/contents-list.json
 create mode 100644 app/views/design-system/components/contents-list/macro-options.json
 delete mode 100644 app/views/design-system/components/date-input/date-input.json
 create mode 100644 app/views/design-system/components/date-input/macro-options.json
 delete mode 100644 app/views/design-system/components/details/details.json
 create mode 100644 app/views/design-system/components/details/macro-options.json
 delete mode 100644 app/views/design-system/components/do-and-dont-lists/do-and-dont-lists.json
 create mode 100644 app/views/design-system/components/do-and-dont-lists/macro-options.json
 delete mode 100644 app/views/design-system/components/error-message/error-message.json
 create mode 100644 app/views/design-system/components/error-message/macro-options.json
 delete mode 100644 app/views/design-system/components/error-summary/error-summary.json
 create mode 100644 app/views/design-system/components/error-summary/macro-options.json
 delete mode 100644 app/views/design-system/components/expander/expander.json
 create mode 100644 app/views/design-system/components/expander/macro-options.json
 delete mode 100644 app/views/design-system/components/fieldset/fieldset.json
 create mode 100644 app/views/design-system/components/fieldset/macro-options.json
 rename app/views/design-system/components/footer/{footer.json => macro-options.json} (51%)
 delete mode 100644 app/views/design-system/components/header/header.json
 create mode 100644 app/views/design-system/components/header/macro-options.json
 delete mode 100644 app/views/design-system/components/hint-text/hint-text.json
 create mode 100644 app/views/design-system/components/hint-text/macro-options.json
 delete mode 100644 app/views/design-system/components/images/images.json
 create mode 100644 app/views/design-system/components/images/macro-options.json
 rename app/views/design-system/components/inset-text/{inset-text.json => macro-options.json} (66%)
 create mode 100644 app/views/design-system/components/pagination/macro-options.json
 delete mode 100644 app/views/design-system/components/pagination/pagination.json
 create mode 100644 app/views/design-system/components/radios/macro-options.json
 delete mode 100644 app/views/design-system/components/radios/radios.json
 create mode 100644 app/views/design-system/components/select/macro-options.json
 delete mode 100644 app/views/design-system/components/select/select.json
 create mode 100644 app/views/design-system/components/skip-link/macro-options.json
 delete mode 100644 app/views/design-system/components/skip-link/skip-link.json
 create mode 100644 app/views/design-system/components/summary-list/macro-options.json
 delete mode 100644 app/views/design-system/components/summary-list/summary-list.json
 create mode 100644 app/views/design-system/components/table/macro-options.json
 delete mode 100644 app/views/design-system/components/table/table.json
 create mode 100644 app/views/design-system/components/tag/macro-options.json
 delete mode 100644 app/views/design-system/components/tag/tag.json
 create mode 100644 app/views/design-system/components/text-input/macro-options.json
 delete mode 100644 app/views/design-system/components/text-input/text-input.json
 create mode 100644 app/views/design-system/components/textarea/macro-options.json
 delete mode 100644 app/views/design-system/components/textarea/textarea.json
 rename app/views/design-system/components/warning-callout/{warning-callout.json => macro-options.json} (53%)

diff --git a/app/views/design-system/components/action-link/action-link.json b/app/views/design-system/components/action-link/macro-options.json
similarity index 100%
rename from app/views/design-system/components/action-link/action-link.json
rename to app/views/design-system/components/action-link/macro-options.json
diff --git a/app/views/design-system/components/back-link/back-link.json b/app/views/design-system/components/back-link/macro-options.json
similarity index 100%
rename from app/views/design-system/components/back-link/back-link.json
rename to app/views/design-system/components/back-link/macro-options.json
diff --git a/app/views/design-system/components/breadcrumbs/breadcrumbs.json b/app/views/design-system/components/breadcrumbs/macro-options.json
similarity index 100%
rename from app/views/design-system/components/breadcrumbs/breadcrumbs.json
rename to app/views/design-system/components/breadcrumbs/macro-options.json
diff --git a/app/views/design-system/components/buttons/buttons.json b/app/views/design-system/components/buttons/macro-options.json
similarity index 100%
rename from app/views/design-system/components/buttons/buttons.json
rename to app/views/design-system/components/buttons/macro-options.json
diff --git a/app/views/design-system/components/card/card.json b/app/views/design-system/components/card/macro-options.json
similarity index 100%
rename from app/views/design-system/components/card/card.json
rename to app/views/design-system/components/card/macro-options.json
diff --git a/app/views/design-system/components/care-cards/care-cards.json b/app/views/design-system/components/care-cards/macro-options.json
similarity index 100%
rename from app/views/design-system/components/care-cards/care-cards.json
rename to app/views/design-system/components/care-cards/macro-options.json
diff --git a/app/views/design-system/components/checkboxes/checkboxes.json b/app/views/design-system/components/checkboxes/checkboxes.json
deleted file mode 100644
index 3c8437e7c..000000000
--- a/app/views/design-system/components/checkboxes/checkboxes.json
+++ /dev/null
@@ -1,127 +0,0 @@
-{
-	"params": [
-		{
-			"name": "fieldset",
-			"type": "object",
-			"required": false,
-			"description": "Options for the fieldset component (for example legend)."
-		},
-		{
-			"name": "hint",
-			"type": "object",
-			"required": false,
-			"description": "Options for the hint component (for example text)."
-		},
-		{
-			"name": "errorMessage",
-			"type": "object",
-			"required": false,
-			"description": "Options for the error message component."
-		},
-		{
-			"name": "idPrefix",
-			"type": "string",
-			"required": false,
-			"description": "String to prefix id for each checkbox item if no id is specified on each item. If not passed, fall back to using the name option instead."
-		},
-		{
-			"name": "name",
-			"type": "string",
-			"required": true,
-			"description": "Name attribute for all checkbox items."
-		},
-		{
-			"name": "items",
-			"type": "array",
-			"required": true,
-			"description": "Array of checkbox items objects.",
-			"params": [
-				{
-					"name": "text",
-					"type": "string",
-					"required": true,
-					"description": "If `html` is set, this is not required. Text to use within each checkbox item label. If `html` is provided, the `text` argument will be ignored."
-				},
-				{
-					"name": "html",
-					"type": "string",
-					"required": true,
-					"description": "If `text` is set, this is not required. HTML to use within each checkbox item label. If `html` is provided, the `text` argument will be ignored."
-				},
-				{
-					"name": "id",
-					"type": "string",
-					"required": false,
-					"description": "Specific id attribute for the checkbox item. If omitted, then component global `idPrefix` option will be applied."
-				},
-				{
-					"name": "name",
-					"type": "string",
-					"required": false,
-					"description": "Specific name for the checkbox item. If omitted, then component global `name` string will be applied."
-				},
-				{
-					"name": "value",
-					"type": "string",
-					"required": true,
-					"description": "Value for the checkbox input."
-				},
-        {
-					"name": "divider",
-					"type": "string",
-					"required": true,
-					"description": "Optional divider text to separate checkbox items, for example the text \"or\"."
-				},
-				{
-					"name": "hint",
-					"type": "object",
-					"required": false,
-					"description": "Provide hint to each checkbox item.",
-					"isComponent": true
-				},
-				{
-					"name": "checked",
-					"type": "boolean",
-					"required": false,
-					"description": "If true, checkbox will be checked."
-				},
-				{
-					"name": "conditional",
-					"type": "boolean",
-					"required": false,
-					"description": "If true, content provided will be revealed when the item is checked."
-				},
-				{
-					"name": "conditional.html",
-					"type": "string",
-					"required": false,
-					"description": "Provide content for the conditional reveal."
-				},
-				{
-					"name": "disabled",
-					"type": "boolean",
-					"required": false,
-					"description": "If true, checkbox will be disabled."
-				},
-				{
-					"name": "attributes",
-					"type": "object",
-					"required": false,
-					"description": "HTML attributes (for example data attributes) to add to the checkbox input tag."
-				}
-			]
-		},
-		{
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the checkboxes container."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the anchor tag."
-		}
-	]
-}
diff --git a/app/views/design-system/components/checkboxes/macro-options.json b/app/views/design-system/components/checkboxes/macro-options.json
new file mode 100644
index 000000000..d7da32a1e
--- /dev/null
+++ b/app/views/design-system/components/checkboxes/macro-options.json
@@ -0,0 +1,127 @@
+{
+  "params": [
+    {
+      "name": "fieldset",
+      "type": "object",
+      "required": false,
+      "description": "Options for the fieldset component (for example legend)."
+    },
+    {
+      "name": "hint",
+      "type": "object",
+      "required": false,
+      "description": "Options for the hint component (for example text)."
+    },
+    {
+      "name": "errorMessage",
+      "type": "object",
+      "required": false,
+      "description": "Options for the error message component."
+    },
+    {
+      "name": "idPrefix",
+      "type": "string",
+      "required": false,
+      "description": "String to prefix id for each checkbox item if no id is specified on each item. If not passed, fall back to using the name option instead."
+    },
+    {
+      "name": "name",
+      "type": "string",
+      "required": true,
+      "description": "Name attribute for all checkbox items."
+    },
+    {
+      "name": "items",
+      "type": "array",
+      "required": true,
+      "description": "Array of checkbox items objects.",
+      "params": [
+        {
+          "name": "text",
+          "type": "string",
+          "required": true,
+          "description": "If `html` is set, this is not required. Text to use within each checkbox item label. If `html` is provided, the `text` argument will be ignored."
+        },
+        {
+          "name": "html",
+          "type": "string",
+          "required": true,
+          "description": "If `text` is set, this is not required. HTML to use within each checkbox item label. If `html` is provided, the `text` argument will be ignored."
+        },
+        {
+          "name": "id",
+          "type": "string",
+          "required": false,
+          "description": "Specific id attribute for the checkbox item. If omitted, then component global `idPrefix` option will be applied."
+        },
+        {
+          "name": "name",
+          "type": "string",
+          "required": false,
+          "description": "Specific name for the checkbox item. If omitted, then component global `name` string will be applied."
+        },
+        {
+          "name": "value",
+          "type": "string",
+          "required": true,
+          "description": "Value for the checkbox input."
+        },
+        {
+          "name": "divider",
+          "type": "string",
+          "required": true,
+          "description": "Optional divider text to separate checkbox items, for example the text \"or\"."
+        },
+        {
+          "name": "hint",
+          "type": "object",
+          "required": false,
+          "description": "Provide hint to each checkbox item.",
+          "isComponent": true
+        },
+        {
+          "name": "checked",
+          "type": "boolean",
+          "required": false,
+          "description": "If true, checkbox will be checked."
+        },
+        {
+          "name": "conditional",
+          "type": "boolean",
+          "required": false,
+          "description": "If true, content provided will be revealed when the item is checked."
+        },
+        {
+          "name": "conditional.html",
+          "type": "string",
+          "required": false,
+          "description": "Provide content for the conditional reveal."
+        },
+        {
+          "name": "disabled",
+          "type": "boolean",
+          "required": false,
+          "description": "If true, checkbox will be disabled."
+        },
+        {
+          "name": "attributes",
+          "type": "object",
+          "required": false,
+          "description": "HTML attributes (for example data attributes) to add to the checkbox input tag."
+        }
+      ]
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the checkboxes container."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the anchor tag."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/contents-list/contents-list.json b/app/views/design-system/components/contents-list/contents-list.json
deleted file mode 100644
index d2f2a5039..000000000
--- a/app/views/design-system/components/contents-list/contents-list.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
-  "params": [
-		{
-			"name": "items",
-			"type": "array",
-			"required": true,
-			"description": "Array of content list items objects.",
-			"params": [
-        {
-					"name": "href",
-					"type": "string",
-					"required": true,
-					"description": "href value to use within each content list item label."
-				},
-				{
-					"name": "text",
-					"type": "string",
-					"required": true,
-					"description": "Text to use within each content list item label."
-				}
-			]
-		},
-    {
-      "name": "current",
-      "type": "boolean",
-      "required": false,
-      "description": "Set the current active page."
-    },
-    {
-      "name": "classes",
-      "type": "string",
-      "required": false,
-      "description": "Classes to add to the content list container."
-    },
-    {
-      "name": "attributes",
-      "type": "object",
-      "required": false,
-      "description": "HTML attributes (for example data attributes) to items in the content list."
-    }
-  ]
-}
diff --git a/app/views/design-system/components/contents-list/macro-options.json b/app/views/design-system/components/contents-list/macro-options.json
new file mode 100644
index 000000000..789e87c68
--- /dev/null
+++ b/app/views/design-system/components/contents-list/macro-options.json
@@ -0,0 +1,42 @@
+{
+  "params": [
+    {
+      "name": "items",
+      "type": "array",
+      "required": true,
+      "description": "Array of content list items objects.",
+      "params": [
+        {
+          "name": "href",
+          "type": "string",
+          "required": true,
+          "description": "href value to use within each content list item label."
+        },
+        {
+          "name": "text",
+          "type": "string",
+          "required": true,
+          "description": "Text to use within each content list item label."
+        }
+      ]
+    },
+    {
+      "name": "current",
+      "type": "boolean",
+      "required": false,
+      "description": "Set the current active page."
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the content list container."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to items in the content list."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/date-input/date-input.json b/app/views/design-system/components/date-input/date-input.json
deleted file mode 100644
index 233473619..000000000
--- a/app/views/design-system/components/date-input/date-input.json
+++ /dev/null
@@ -1,81 +0,0 @@
-{
-	"params": [
-		{
-			"name": "id",
-			"type": "string",
-			"required": false,
-			"description": "This is used for the main component and to compose id attribute for each item."
-		},
-		{
-			"name": "namePrefix",
-			"type": "string",
-			"required": false,
-			"description": "Optional prefix. This is used to prefix each `item.name` using `-`."
-		},
-		{
-			"name": "items",
-			"type": "array",
-			"required": false,
-			"description": "An array of input objects with name, value and classes.",
-			"params": [
-				{
-					"name": "id",
-					"type": "string",
-					"required": false,
-					"description": "Item-specific id. If provided, it will be used instead of the generated id."
-				},
-				{
-					"name": "name",
-					"type": "string",
-					"required": true,
-					"description": "Item-specific name attribute."
-				},
-				{
-					"name": "label",
-					"type": "string",
-					"required": false,
-					"description": "Item-specific label text. If provided, this will be used instead of `name` for item label text."
-				},
-				{
-					"name": "value",
-					"type": "string",
-					"required": false,
-					"description": "If provided, it will be used as the initial value of the input."
-				}
-			]
-		},
-		{
-			"name": "hint",
-			"type": "object",
-			"required": false,
-			"description": "Options for the hint component.",
-			"isComponent": true
-		},
-		{
-			"name": "errorMessage",
-			"type": "object",
-			"required": false,
-			"description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.",
-			"isComponent": true
-		},
-		{
-			"name": "fieldset",
-			"type": "object",
-			"required": false,
-			"description": "Options for the fieldset component (for example legend).",
-			"isComponent": true
-		},
-		{
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the date-input container."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the date-input container."
-		}
-	]
-}
diff --git a/app/views/design-system/components/date-input/macro-options.json b/app/views/design-system/components/date-input/macro-options.json
new file mode 100644
index 000000000..aeba2d3b0
--- /dev/null
+++ b/app/views/design-system/components/date-input/macro-options.json
@@ -0,0 +1,81 @@
+{
+  "params": [
+    {
+      "name": "id",
+      "type": "string",
+      "required": false,
+      "description": "This is used for the main component and to compose id attribute for each item."
+    },
+    {
+      "name": "namePrefix",
+      "type": "string",
+      "required": false,
+      "description": "Optional prefix. This is used to prefix each `item.name` using `-`."
+    },
+    {
+      "name": "items",
+      "type": "array",
+      "required": false,
+      "description": "An array of input objects with name, value and classes.",
+      "params": [
+        {
+          "name": "id",
+          "type": "string",
+          "required": false,
+          "description": "Item-specific id. If provided, it will be used instead of the generated id."
+        },
+        {
+          "name": "name",
+          "type": "string",
+          "required": true,
+          "description": "Item-specific name attribute."
+        },
+        {
+          "name": "label",
+          "type": "string",
+          "required": false,
+          "description": "Item-specific label text. If provided, this will be used instead of `name` for item label text."
+        },
+        {
+          "name": "value",
+          "type": "string",
+          "required": false,
+          "description": "If provided, it will be used as the initial value of the input."
+        }
+      ]
+    },
+    {
+      "name": "hint",
+      "type": "object",
+      "required": false,
+      "description": "Options for the hint component.",
+      "isComponent": true
+    },
+    {
+      "name": "errorMessage",
+      "type": "object",
+      "required": false,
+      "description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.",
+      "isComponent": true
+    },
+    {
+      "name": "fieldset",
+      "type": "object",
+      "required": false,
+      "description": "Options for the fieldset component (for example legend).",
+      "isComponent": true
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the date-input container."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the date-input container."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/details/details.json b/app/views/design-system/components/details/details.json
deleted file mode 100644
index 65fba3825..000000000
--- a/app/views/design-system/components/details/details.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-	"params": [
-		{
-			"name": "text",
-			"type": "string",
-			"required": true,
-			"description": "Text to be displayed on the details component."
-		},
-		{
-			"name": "html",
-			"type": "string",
-			"required": true,
-			"description": "HTML content to be displayed within the details component."
-		},
-		{
-			"name": "id",
-			"type": "string",
-			"required": false,
-			"description": "Id to add to the details element."
-		},
-		{
-			"name": "open",
-			"type": "boolean",
-			"required": false,
-			"description": "If true, details element will be expanded."
-		},
-		{
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the details element."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the details element."
-		}
-	]
-}
diff --git a/app/views/design-system/components/details/macro-options.json b/app/views/design-system/components/details/macro-options.json
new file mode 100644
index 000000000..9971e650a
--- /dev/null
+++ b/app/views/design-system/components/details/macro-options.json
@@ -0,0 +1,40 @@
+{
+  "params": [
+    {
+      "name": "text",
+      "type": "string",
+      "required": true,
+      "description": "Text to be displayed on the details component."
+    },
+    {
+      "name": "html",
+      "type": "string",
+      "required": true,
+      "description": "HTML content to be displayed within the details component."
+    },
+    {
+      "name": "id",
+      "type": "string",
+      "required": false,
+      "description": "Id to add to the details element."
+    },
+    {
+      "name": "open",
+      "type": "boolean",
+      "required": false,
+      "description": "If true, details element will be expanded."
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the details element."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the details element."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/do-and-dont-lists/do-and-dont-lists.json b/app/views/design-system/components/do-and-dont-lists/do-and-dont-lists.json
deleted file mode 100644
index 38b9cb645..000000000
--- a/app/views/design-system/components/do-and-dont-lists/do-and-dont-lists.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
-	"params": [
-		{
-			"name": "title",
-			"type": "string",
-			"required": true,
-			"description": "Title to be displayed on the do and don't list component.."
-		},
-		{
-			"name": "type",
-			"type": "string",
-			"required": true,
-			"description": "Type of do and don't list component, \"cross\", \"tick\""
-		},
-		{
-			"name": "items",
-			"type": "array",
-			"required": true,
-			"description": "Array of do and dont items objects.",
-			"params": [
-				{
-					"name": "item",
-					"type": "string",
-					"required": true,
-					"description": "Text to use within each do and dont item label."
-				}
-			]
-		},
-    {
-			"name": "hidePrefix",
-			"type": "boolean",
-			"required": false,
-			"description": "If set to true when type is \"cross\", then removes the default \"do not\" text prefix to each item"
-		},
-    {
-			"name": "headingLevel",
-			"type": "integer",
-			"required": false,
-			"description": "Optional heading level for the title heading. Default: 3"
-		},
-		{
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the details element."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the details element."
-		}
-	]
-}
diff --git a/app/views/design-system/components/do-and-dont-lists/macro-options.json b/app/views/design-system/components/do-and-dont-lists/macro-options.json
new file mode 100644
index 000000000..892e0a946
--- /dev/null
+++ b/app/views/design-system/components/do-and-dont-lists/macro-options.json
@@ -0,0 +1,54 @@
+{
+  "params": [
+    {
+      "name": "title",
+      "type": "string",
+      "required": true,
+      "description": "Title to be displayed on the do and don't list component.."
+    },
+    {
+      "name": "type",
+      "type": "string",
+      "required": true,
+      "description": "Type of do and don't list component, \"cross\", \"tick\""
+    },
+    {
+      "name": "items",
+      "type": "array",
+      "required": true,
+      "description": "Array of do and dont items objects.",
+      "params": [
+        {
+          "name": "item",
+          "type": "string",
+          "required": true,
+          "description": "Text to use within each do and dont item label."
+        }
+      ]
+    },
+    {
+      "name": "hidePrefix",
+      "type": "boolean",
+      "required": false,
+      "description": "If set to true when type is \"cross\", then removes the default \"do not\" text prefix to each item"
+    },
+    {
+      "name": "headingLevel",
+      "type": "integer",
+      "required": false,
+      "description": "Optional heading level for the title heading. Default: 3"
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the details element."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the details element."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/error-message/error-message.json b/app/views/design-system/components/error-message/error-message.json
deleted file mode 100644
index 8996e66f8..000000000
--- a/app/views/design-system/components/error-message/error-message.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-	"params": [
-		{
-			"name": "text",
-			"type": "string",
-			"required": true,
-			"description": "If `html` is set, this is not required. Text to use within the error message. If `html` is provided, the `text` argument will be ignored."
-		},
-		{
-			"name": "html",
-			"type": "string",
-			"required": true,
-			"description": "If `text` is set, this is not required. HTML to use within the error message. If `html` is provided, the `text` argument will be ignored."
-		},
-		{
-			"name": "id",
-			"type": "string",
-			"required": false,
-			"description": "Id attribute to add to the error message span tag."
-		},
-		{
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the error message span tag."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the error message span tag"
-		}
-	]
-}
diff --git a/app/views/design-system/components/error-message/macro-options.json b/app/views/design-system/components/error-message/macro-options.json
new file mode 100644
index 000000000..4b02a8da1
--- /dev/null
+++ b/app/views/design-system/components/error-message/macro-options.json
@@ -0,0 +1,34 @@
+{
+  "params": [
+    {
+      "name": "text",
+      "type": "string",
+      "required": true,
+      "description": "If `html` is set, this is not required. Text to use within the error message. If `html` is provided, the `text` argument will be ignored."
+    },
+    {
+      "name": "html",
+      "type": "string",
+      "required": true,
+      "description": "If `text` is set, this is not required. HTML to use within the error message. If `html` is provided, the `text` argument will be ignored."
+    },
+    {
+      "name": "id",
+      "type": "string",
+      "required": false,
+      "description": "Id attribute to add to the error message span tag."
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the error message span tag."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the error message span tag"
+    }
+  ]
+}
diff --git a/app/views/design-system/components/error-summary/error-summary.json b/app/views/design-system/components/error-summary/error-summary.json
deleted file mode 100644
index 742755620..000000000
--- a/app/views/design-system/components/error-summary/error-summary.json
+++ /dev/null
@@ -1,72 +0,0 @@
-{
-	"params": [
-		{
-			"name": "titleText",
-			"type": "string",
-			"required": true,
-			"description": "If `titleHtml` is set, this is not required. Text to use for the heading of the error summary block. If `titleHtml` is provided, `titleText` will be ignored."
-		},
-		{
-			"name": "titleHtml",
-			"type": "string",
-			"required": true,
-			"description": "If `titleText` is set, this is not required. HTML to use for the heading of the error summary block. If `titleHtml` is provided, `titleText` will be ignored."
-		},
-		{
-			"name": "descriptionText",
-			"type": "string",
-			"required": false,
-			"description": "Text to use for the description of the errors. If you set `descriptionHtml`, the component will ignore `descriptionText`."
-		},
-		{
-			"name": "descriptionHtml",
-			"type": "string",
-			"required": false,
-			"description": "HTML to use for the description of the errors. If you set this option, the component will ignore `descriptionText`."
-		},
-		{
-			"name": "errorList",
-			"type": "array",
-			"required": true,
-			"description": "Contains an array of error link items and all their available arguments.",
-			"params": [
-				{
-					"name": "href",
-					"type": "string",
-					"required": false,
-					"description": "Href attribute for the error link item. If provided item will be an anchor."
-				},
-				{
-					"name": "text",
-					"type": "string",
-					"required": true,
-					"description": "If `html` is set, this is not required. Text for the error link item. If `html` is provided, the `text` argument will be ignored."
-				},
-				{
-					"name": "html",
-					"type": "string",
-					"required": true,
-					"description": "If `text` is set, this is not required. HTML for the error link item. If `html` is provided, the `text` argument will be ignored."
-				},
-				{
-					"name": "attributes",
-					"type": "object",
-					"required": false,
-					"description": "HTML attributes (for example data attributes) to add to the error link anchor."
-				}
-			]
-		},
-		{
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the error-summary container."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the error-summary container."
-		}
-	]
-}
diff --git a/app/views/design-system/components/error-summary/macro-options.json b/app/views/design-system/components/error-summary/macro-options.json
new file mode 100644
index 000000000..b3e51af2a
--- /dev/null
+++ b/app/views/design-system/components/error-summary/macro-options.json
@@ -0,0 +1,72 @@
+{
+  "params": [
+    {
+      "name": "titleText",
+      "type": "string",
+      "required": true,
+      "description": "If `titleHtml` is set, this is not required. Text to use for the heading of the error summary block. If `titleHtml` is provided, `titleText` will be ignored."
+    },
+    {
+      "name": "titleHtml",
+      "type": "string",
+      "required": true,
+      "description": "If `titleText` is set, this is not required. HTML to use for the heading of the error summary block. If `titleHtml` is provided, `titleText` will be ignored."
+    },
+    {
+      "name": "descriptionText",
+      "type": "string",
+      "required": false,
+      "description": "Text to use for the description of the errors. If you set `descriptionHtml`, the component will ignore `descriptionText`."
+    },
+    {
+      "name": "descriptionHtml",
+      "type": "string",
+      "required": false,
+      "description": "HTML to use for the description of the errors. If you set this option, the component will ignore `descriptionText`."
+    },
+    {
+      "name": "errorList",
+      "type": "array",
+      "required": true,
+      "description": "Contains an array of error link items and all their available arguments.",
+      "params": [
+        {
+          "name": "href",
+          "type": "string",
+          "required": false,
+          "description": "Href attribute for the error link item. If provided item will be an anchor."
+        },
+        {
+          "name": "text",
+          "type": "string",
+          "required": true,
+          "description": "If `html` is set, this is not required. Text for the error link item. If `html` is provided, the `text` argument will be ignored."
+        },
+        {
+          "name": "html",
+          "type": "string",
+          "required": true,
+          "description": "If `text` is set, this is not required. HTML for the error link item. If `html` is provided, the `text` argument will be ignored."
+        },
+        {
+          "name": "attributes",
+          "type": "object",
+          "required": false,
+          "description": "HTML attributes (for example data attributes) to add to the error link anchor."
+        }
+      ]
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the error-summary container."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the error-summary container."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/expander/expander.json b/app/views/design-system/components/expander/expander.json
deleted file mode 100644
index 65fba3825..000000000
--- a/app/views/design-system/components/expander/expander.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-	"params": [
-		{
-			"name": "text",
-			"type": "string",
-			"required": true,
-			"description": "Text to be displayed on the details component."
-		},
-		{
-			"name": "html",
-			"type": "string",
-			"required": true,
-			"description": "HTML content to be displayed within the details component."
-		},
-		{
-			"name": "id",
-			"type": "string",
-			"required": false,
-			"description": "Id to add to the details element."
-		},
-		{
-			"name": "open",
-			"type": "boolean",
-			"required": false,
-			"description": "If true, details element will be expanded."
-		},
-		{
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the details element."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the details element."
-		}
-	]
-}
diff --git a/app/views/design-system/components/expander/macro-options.json b/app/views/design-system/components/expander/macro-options.json
new file mode 100644
index 000000000..9971e650a
--- /dev/null
+++ b/app/views/design-system/components/expander/macro-options.json
@@ -0,0 +1,40 @@
+{
+  "params": [
+    {
+      "name": "text",
+      "type": "string",
+      "required": true,
+      "description": "Text to be displayed on the details component."
+    },
+    {
+      "name": "html",
+      "type": "string",
+      "required": true,
+      "description": "HTML content to be displayed within the details component."
+    },
+    {
+      "name": "id",
+      "type": "string",
+      "required": false,
+      "description": "Id to add to the details element."
+    },
+    {
+      "name": "open",
+      "type": "boolean",
+      "required": false,
+      "description": "If true, details element will be expanded."
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the details element."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the details element."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/fieldset/fieldset.json b/app/views/design-system/components/fieldset/fieldset.json
deleted file mode 100644
index a9fea24fd..000000000
--- a/app/views/design-system/components/fieldset/fieldset.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
-	"params": [
-		{
-			"name": "describedBy",
-			"type": "string",
-			"required": false,
-			"description": "One or more element IDs to add to the `aria-describedby` attribute, used to provide additional descriptive information for screenreader users."
-		},
-		{
-			"name": "legend",
-			"type": "object",
-			"required": false,
-			"description": "Options for the legend",
-			"params": [
-				{
-					"name": "text",
-					"type": "string",
-					"required": true,
-					"description": "If `html` is set, this is not required. Text to use within the legend. If `html` is provided, the `text` argument will be ignored."
-				},
-				{
-					"name": "html",
-					"type": "string",
-					"required": true,
-					"description": "If `text` is set, this is not required. HTML to use within the legend. If `html` is provided, the `text` argument will be ignored."
-				},
-				{
-					"name": "classes",
-					"type": "string",
-					"required": false,
-					"description": "Classes to add to the legend."
-				},
-				{
-					"name": "isPageHeading",
-					"type": "boolean",
-					"required": false,
-					"description": "Whether the legend also acts as the heading for the page."
-				}
-			]
-		},
-		{
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the fieldset container."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the fieldset container."
-		}
-	]
-}
diff --git a/app/views/design-system/components/fieldset/macro-options.json b/app/views/design-system/components/fieldset/macro-options.json
new file mode 100644
index 000000000..98e70aea5
--- /dev/null
+++ b/app/views/design-system/components/fieldset/macro-options.json
@@ -0,0 +1,54 @@
+{
+  "params": [
+    {
+      "name": "describedBy",
+      "type": "string",
+      "required": false,
+      "description": "One or more element IDs to add to the `aria-describedby` attribute, used to provide additional descriptive information for screenreader users."
+    },
+    {
+      "name": "legend",
+      "type": "object",
+      "required": false,
+      "description": "Options for the legend",
+      "params": [
+        {
+          "name": "text",
+          "type": "string",
+          "required": true,
+          "description": "If `html` is set, this is not required. Text to use within the legend. If `html` is provided, the `text` argument will be ignored."
+        },
+        {
+          "name": "html",
+          "type": "string",
+          "required": true,
+          "description": "If `text` is set, this is not required. HTML to use within the legend. If `html` is provided, the `text` argument will be ignored."
+        },
+        {
+          "name": "classes",
+          "type": "string",
+          "required": false,
+          "description": "Classes to add to the legend."
+        },
+        {
+          "name": "isPageHeading",
+          "type": "boolean",
+          "required": false,
+          "description": "Whether the legend also acts as the heading for the page."
+        }
+      ]
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the fieldset container."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the fieldset container."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/footer/footer.json b/app/views/design-system/components/footer/macro-options.json
similarity index 51%
rename from app/views/design-system/components/footer/footer.json
rename to app/views/design-system/components/footer/macro-options.json
index fd7f3831c..05e41e640 100644
--- a/app/views/design-system/components/footer/footer.json
+++ b/app/views/design-system/components/footer/macro-options.json
@@ -1,5 +1,5 @@
 {
-	"params": [
+  "params": [
     {
       "name": "links",
       "type": "array",
@@ -21,22 +21,22 @@
       ]
     },
     {
-			"name": "copyright",
-			"type": "string",
-			"required": false,
-			"description": "Optional text for the copyright notice in the footer."
-		},
+      "name": "copyright",
+      "type": "string",
+      "required": false,
+      "description": "Optional text for the copyright notice in the footer."
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the footer container."
+    },
     {
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the footer container."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the footer container."
-		}
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the footer container."
+    }
   ]
 }
diff --git a/app/views/design-system/components/header/header.json b/app/views/design-system/components/header/header.json
deleted file mode 100644
index 1f8952187..000000000
--- a/app/views/design-system/components/header/header.json
+++ /dev/null
@@ -1,130 +0,0 @@
-{
-  "params": [
-    {
-      "name": "showNav",
-      "type": "boolean",
-      "required": true,
-      "description": "Set to `true` to show the navigation links in the header."
-    },
-    {
-      "name": "showSearch",
-      "type": "boolean",
-      "required": true,
-      "description": "Set to `true` to show the site search input form."
-    },
-    {
-      "name": "homeHref",
-      "type": "string",
-      "required": "No",
-      "description": "The `href` of the link for the logo and mobile home link in the navigation links. Defaults to \"/\""
-    },
-    {
-      "name": "ariaLabel",
-      "type": "string",
-      "required": "No",
-      "description": "Aria label for the logo href. Defaults to \"NHS homepage\"./"
-    },
-    {
-			"name": "organisation",
-			"type": "object",
-			"required": false,
-			"description": "Settings for header with organisational logo.",
-			"params": [
-				{
-					"name": "name",
-					"type": "string",
-					"required": false,
-					"description": "Organisation name value."
-				},
-        {
-					"name": "descriptor",
-					"type": "string",
-					"required": false,
-					"description": "Organisation descriptor."
-				},
-        {
-					"name": "logoURL",
-					"type": "string",
-					"required": true,
-					"description": "Organisation logo if using a static asset, such as PNG, is preferred."
-				}
-			]
-		},
-    {
-			"name": "primaryLinks",
-			"type": "array",
-			"required": false,
-			"description": "Array of navigation links for use in the header.",
-			"params": [
-				{
-					"name": "url",
-					"type": "string",
-					"required": true,
-					"description": "The href of a navigation item in the header."
-				},
-        {
-					"name": "label",
-					"type": "string",
-					"required": false,
-					"description": "The label of a navigation item in the header."
-				}
-			]
-		},
-    {
-      "name": "transactional",
-      "type": "string",
-      "required": "No",
-      "description": "Set to `true` if this is a transactional header (with smaller logo)."
-    },
-    {
-			"name": "transactionalService",
-			"type": "object",
-			"required": false,
-			"description": "Settings for transactional service header",
-			"params": [
-				{
-					"name": "name",
-					"type": "string",
-					"required": false,
-					"description": "Transactional service name value."
-				},
-        {
-					"name": "href",
-					"type": "string",
-					"required": false,
-					"description": "The href of the transactional header name."
-				},
-        {
-					"name": "longName",
-					"type": "boolean",
-					"required": false,
-					"description": "Set this to `true` if the transactional service name is longer than 22 characters."
-				}
-			]
-		},
-    {
-      "name": "searchAction",
-      "type": "string",
-      "required": "No",
-      "description": "The search action endpoint. Defaults to \"https://www.nhs.uk/search/\""
-    },
-    {
-      "name": "searchInputName",
-      "type": "string",
-      "required": "No",
-      "description": "The name for the search field. Defaults to \"q\""
-    },
-    {
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the header container."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the header container."
-		}
-  ]
-}
diff --git a/app/views/design-system/components/header/macro-options.json b/app/views/design-system/components/header/macro-options.json
new file mode 100644
index 000000000..bc7f6d263
--- /dev/null
+++ b/app/views/design-system/components/header/macro-options.json
@@ -0,0 +1,130 @@
+{
+  "params": [
+    {
+      "name": "showNav",
+      "type": "boolean",
+      "required": true,
+      "description": "Set to `true` to show the navigation links in the header."
+    },
+    {
+      "name": "showSearch",
+      "type": "boolean",
+      "required": true,
+      "description": "Set to `true` to show the site search input form."
+    },
+    {
+      "name": "homeHref",
+      "type": "string",
+      "required": "No",
+      "description": "The `href` of the link for the logo and mobile home link in the navigation links. Defaults to \"/\""
+    },
+    {
+      "name": "ariaLabel",
+      "type": "string",
+      "required": "No",
+      "description": "Aria label for the logo href. Defaults to \"NHS homepage\"./"
+    },
+    {
+      "name": "organisation",
+      "type": "object",
+      "required": false,
+      "description": "Settings for header with organisational logo.",
+      "params": [
+        {
+          "name": "name",
+          "type": "string",
+          "required": false,
+          "description": "Organisation name value."
+        },
+        {
+          "name": "descriptor",
+          "type": "string",
+          "required": false,
+          "description": "Organisation descriptor."
+        },
+        {
+          "name": "logoURL",
+          "type": "string",
+          "required": true,
+          "description": "Organisation logo if using a static asset, such as PNG, is preferred."
+        }
+      ]
+    },
+    {
+      "name": "primaryLinks",
+      "type": "array",
+      "required": false,
+      "description": "Array of navigation links for use in the header.",
+      "params": [
+        {
+          "name": "url",
+          "type": "string",
+          "required": true,
+          "description": "The href of a navigation item in the header."
+        },
+        {
+          "name": "label",
+          "type": "string",
+          "required": false,
+          "description": "The label of a navigation item in the header."
+        }
+      ]
+    },
+    {
+      "name": "transactional",
+      "type": "string",
+      "required": "No",
+      "description": "Set to `true` if this is a transactional header (with smaller logo)."
+    },
+    {
+      "name": "transactionalService",
+      "type": "object",
+      "required": false,
+      "description": "Settings for transactional service header",
+      "params": [
+        {
+          "name": "name",
+          "type": "string",
+          "required": false,
+          "description": "Transactional service name value."
+        },
+        {
+          "name": "href",
+          "type": "string",
+          "required": false,
+          "description": "The href of the transactional header name."
+        },
+        {
+          "name": "longName",
+          "type": "boolean",
+          "required": false,
+          "description": "Set this to `true` if the transactional service name is longer than 22 characters."
+        }
+      ]
+    },
+    {
+      "name": "searchAction",
+      "type": "string",
+      "required": "No",
+      "description": "The search action endpoint. Defaults to \"https://www.nhs.uk/search/\""
+    },
+    {
+      "name": "searchInputName",
+      "type": "string",
+      "required": "No",
+      "description": "The name for the search field. Defaults to \"q\""
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the header container."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the header container."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/hint-text/hint-text.json b/app/views/design-system/components/hint-text/hint-text.json
deleted file mode 100644
index 90838bcc4..000000000
--- a/app/views/design-system/components/hint-text/hint-text.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
-	"params": [
-		{
-			"name": "text",
-			"type": "string",
-			"required": true,
-			"description": "If `html` is set, this is not required. Text to use within the hint. If `html` is provided, the `text` argument will be ignored."
-		},
-		{
-			"name": "html",
-			"type": "string",
-			"required": true,
-			"description": "If `text` is set, this is not required. HTML to use within the hint. If `html` is provided, the `text` argument will be ignored."
-		},
-		{
-			"name": "id",
-			"type": "string",
-			"required": false,
-			"description": "Optional id attribute to add to the hint."
-		},
-		{
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the hint."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the hint."
-		}
-	]
-}
diff --git a/app/views/design-system/components/hint-text/macro-options.json b/app/views/design-system/components/hint-text/macro-options.json
new file mode 100644
index 000000000..78543cbd7
--- /dev/null
+++ b/app/views/design-system/components/hint-text/macro-options.json
@@ -0,0 +1,34 @@
+{
+  "params": [
+    {
+      "name": "text",
+      "type": "string",
+      "required": true,
+      "description": "If `html` is set, this is not required. Text to use within the hint. If `html` is provided, the `text` argument will be ignored."
+    },
+    {
+      "name": "html",
+      "type": "string",
+      "required": true,
+      "description": "If `text` is set, this is not required. HTML to use within the hint. If `html` is provided, the `text` argument will be ignored."
+    },
+    {
+      "name": "id",
+      "type": "string",
+      "required": false,
+      "description": "Optional id attribute to add to the hint."
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the hint."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the hint."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/images/images.json b/app/views/design-system/components/images/images.json
deleted file mode 100644
index c9433e539..000000000
--- a/app/views/design-system/components/images/images.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
-	"params": [
-		{
-			"name": "src",
-			"type": "string",
-			"required": true,
-			"description": "The source location of the image."
-		},
-		{
-			"name": "alt",
-			"type": "string",
-			"required": true,
-			"description": "The alt text of the image."
-		},
-    {
-			"name": "caption",
-			"type": "string",
-			"required": false,
-			"description": "Optional caption text for the image."
-		},
-    {
-			"name": "sizes",
-			"type": "string",
-			"required": false,
-			"description": "A list of screen sizes for the browser to load the correct image from the srcset images."
-		},
-    {
-			"name": "srcset",
-			"type": "string",
-			"required": false,
-			"description": "A list of image source URLs and their respective sizes. Separate each image with a comma."
-		},
-		{
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the button component."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the button component."
-		}
-	]
-}
diff --git a/app/views/design-system/components/images/macro-options.json b/app/views/design-system/components/images/macro-options.json
new file mode 100644
index 000000000..c443697d4
--- /dev/null
+++ b/app/views/design-system/components/images/macro-options.json
@@ -0,0 +1,46 @@
+{
+  "params": [
+    {
+      "name": "src",
+      "type": "string",
+      "required": true,
+      "description": "The source location of the image."
+    },
+    {
+      "name": "alt",
+      "type": "string",
+      "required": true,
+      "description": "The alt text of the image."
+    },
+    {
+      "name": "caption",
+      "type": "string",
+      "required": false,
+      "description": "Optional caption text for the image."
+    },
+    {
+      "name": "sizes",
+      "type": "string",
+      "required": false,
+      "description": "A list of screen sizes for the browser to load the correct image from the srcset images."
+    },
+    {
+      "name": "srcset",
+      "type": "string",
+      "required": false,
+      "description": "A list of image source URLs and their respective sizes. Separate each image with a comma."
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the button component."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the button component."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/inset-text/inset-text.json b/app/views/design-system/components/inset-text/macro-options.json
similarity index 66%
rename from app/views/design-system/components/inset-text/inset-text.json
rename to app/views/design-system/components/inset-text/macro-options.json
index daa9b431d..ff1b63b93 100644
--- a/app/views/design-system/components/inset-text/inset-text.json
+++ b/app/views/design-system/components/inset-text/macro-options.json
@@ -1,11 +1,11 @@
 {
-	"params": [
+  "params": [
     {
-			"name": "html",
-			"type": "string",
-			"required": true,
-			"description": "HTML content to be used within the inset text component."
-		},
+      "name": "html",
+      "type": "string",
+      "required": true,
+      "description": "HTML content to be used within the inset text component."
+    },
     {
       "name": "classes",
       "type": "string",
diff --git a/app/views/design-system/components/pagination/macro-options.json b/app/views/design-system/components/pagination/macro-options.json
new file mode 100644
index 000000000..22c3ba779
--- /dev/null
+++ b/app/views/design-system/components/pagination/macro-options.json
@@ -0,0 +1,40 @@
+{
+  "params": [
+    {
+      "name": "previousUrl",
+      "type": "string",
+      "required": true,
+      "description": "The value of the previous link href attribute."
+    },
+    {
+      "name": "previousPage",
+      "type": "string",
+      "required": true,
+      "description": "The text of the previous link."
+    },
+    {
+      "name": "nextUrl",
+      "type": "string",
+      "required": true,
+      "description": "The value of the next link href attribute."
+    },
+    {
+      "name": "nextPage",
+      "type": "string",
+      "required": true,
+      "description": "The text of the next link."
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the pagination container."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the pagination container."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/pagination/pagination.json b/app/views/design-system/components/pagination/pagination.json
deleted file mode 100644
index 272249ab5..000000000
--- a/app/views/design-system/components/pagination/pagination.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-	"params": [
-    {
-			"name": "previousUrl",
-			"type": "string",
-			"required": true,
-			"description": "The value of the previous link href attribute."
-		},
-    {
-			"name": "previousPage",
-			"type": "string",
-			"required": true,
-			"description": "The text of the previous link."
-		},
-    {
-			"name": "nextUrl",
-			"type": "string",
-			"required": true,
-			"description": "The value of the next link href attribute."
-		},
-    {
-			"name": "nextPage",
-			"type": "string",
-			"required": true,
-			"description": "The text of the next link."
-		},
-    {
-      "name": "classes",
-      "type": "string",
-      "required": false,
-      "description": "Classes to add to the pagination container."
-    },
-    {
-      "name": "attributes",
-      "type": "object",
-      "required": false,
-      "description": "HTML attributes (for example data attributes) to add to the pagination container."
-    }
-  ]
-}
diff --git a/app/views/design-system/components/radios/macro-options.json b/app/views/design-system/components/radios/macro-options.json
new file mode 100644
index 000000000..d8c864328
--- /dev/null
+++ b/app/views/design-system/components/radios/macro-options.json
@@ -0,0 +1,112 @@
+{
+  "params": [
+    {
+      "name": "fieldset",
+      "type": "object",
+      "required": false,
+      "description": "Options for the fieldset component (for example legend).",
+      "isComponent": true
+    },
+    {
+      "name": "hint",
+      "type": "object",
+      "required": false,
+      "description": "Options for the hint component (for example text).",
+      "isComponent": true
+    },
+    {
+      "name": "errorMessage",
+      "type": "object",
+      "required": false,
+      "description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.",
+      "isComponent": true
+    },
+    {
+      "name": "idPrefix",
+      "type": "string",
+      "required": false,
+      "description": "String to prefix id for each radio item if no id is specified on each item. If `idPrefix` is not passed, fallback to using the name attribute instead."
+    },
+    {
+      "name": "name",
+      "type": "string",
+      "required": true,
+      "description": "Name attribute for each radio item."
+    },
+    {
+      "name": "items",
+      "type": "array",
+      "required": true,
+      "description": "Array of radio items objects.",
+      "params": [
+        {
+          "name": "text",
+          "type": "string",
+          "required": true,
+          "description": "If `html` is set, this is not required. Text to use within each radio item label. If `html` is provided, the `text` argument will be ignored."
+        },
+        {
+          "name": "html",
+          "type": "string",
+          "required": true,
+          "description": "If `text` is set, this is not required. HTML to use within each radio item label. If `html` is provided, the `text` argument will be ignored."
+        },
+        {
+          "name": "id",
+          "type": "string",
+          "required": false,
+          "description": "Specific id attribute for the radio item. If omitted, then `idPrefix` string will be applied."
+        },
+        {
+          "name": "value",
+          "type": "string",
+          "required": true,
+          "description": "Value for the radio input."
+        },
+        {
+          "name": "hint",
+          "type": "object",
+          "required": false,
+          "description": "Provide hint to each radio item.",
+          "isComponent": true
+        },
+        {
+          "name": "divider",
+          "type": "string",
+          "required": false,
+          "description": "Divider text to separate radio items, for example the text \"or\"."
+        },
+        {
+          "name": "checked",
+          "type": "boolean",
+          "required": false,
+          "description": "If true, radio will be checked."
+        },
+        {
+          "name": "conditional",
+          "type": "string",
+          "required": false,
+          "description": "If true, content provided will be revealed when the item is checked."
+        },
+        {
+          "name": "conditional.html",
+          "type": "html",
+          "required": false,
+          "description": "Provide content for the conditional reveal."
+        }
+      ]
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the radio container."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the radio input tag."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/radios/radios.json b/app/views/design-system/components/radios/radios.json
deleted file mode 100644
index 2ce20322c..000000000
--- a/app/views/design-system/components/radios/radios.json
+++ /dev/null
@@ -1,112 +0,0 @@
-{
-	"params": [
-		{
-			"name": "fieldset",
-			"type": "object",
-			"required": false,
-			"description": "Options for the fieldset component (for example legend).",
-			"isComponent": true
-		},
-		{
-			"name": "hint",
-			"type": "object",
-			"required": false,
-			"description": "Options for the hint component (for example text).",
-			"isComponent": true
-		},
-		{
-			"name": "errorMessage",
-			"type": "object",
-			"required": false,
-			"description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.",
-			"isComponent": true
-		},
-		{
-			"name": "idPrefix",
-			"type": "string",
-			"required": false,
-			"description": "String to prefix id for each radio item if no id is specified on each item. If `idPrefix` is not passed, fallback to using the name attribute instead."
-		},
-		{
-			"name": "name",
-			"type": "string",
-			"required": true,
-			"description": "Name attribute for each radio item."
-		},
-		{
-			"name": "items",
-			"type": "array",
-			"required": true,
-			"description": "Array of radio items objects.",
-			"params": [
-				{
-					"name": "text",
-					"type": "string",
-					"required": true,
-					"description": "If `html` is set, this is not required. Text to use within each radio item label. If `html` is provided, the `text` argument will be ignored."
-				},
-				{
-					"name": "html",
-					"type": "string",
-					"required": true,
-					"description": "If `text` is set, this is not required. HTML to use within each radio item label. If `html` is provided, the `text` argument will be ignored."
-				},
-				{
-					"name": "id",
-					"type": "string",
-					"required": false,
-					"description": "Specific id attribute for the radio item. If omitted, then `idPrefix` string will be applied."
-				},
-				{
-					"name": "value",
-					"type": "string",
-					"required": true,
-					"description": "Value for the radio input."
-				},
-				{
-					"name": "hint",
-					"type": "object",
-					"required": false,
-					"description": "Provide hint to each radio item.",
-					"isComponent": true
-				},
-				{
-					"name": "divider",
-					"type": "string",
-					"required": false,
-					"description": "Divider text to separate radio items, for example the text \"or\"."
-				},
-				{
-					"name": "checked",
-					"type": "boolean",
-					"required": false,
-					"description": "If true, radio will be checked."
-				},
-				{
-					"name": "conditional",
-					"type": "string",
-					"required": false,
-					"description": "If true, content provided will be revealed when the item is checked."
-				},
-				{
-					"name": "conditional.html",
-					"type": "html",
-					"required": false,
-					"description": "Provide content for the conditional reveal."
-				}
-			]
-		},
-		{
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the radio container."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the radio input tag."
-		}
-	]
-}
diff --git a/app/views/design-system/components/select/macro-options.json b/app/views/design-system/components/select/macro-options.json
new file mode 100644
index 000000000..d9e7717ca
--- /dev/null
+++ b/app/views/design-system/components/select/macro-options.json
@@ -0,0 +1,87 @@
+{
+  "params": [
+    {
+      "name": "id",
+      "type": "string",
+      "required": true,
+      "description": "Id for each select box."
+    },
+    {
+      "name": "name",
+      "type": "string",
+      "required": true,
+      "description": "Name property for the select."
+    },
+    {
+      "name": "items",
+      "type": "array",
+      "required": true,
+      "description": "Array of option items for the select.",
+      "params": [
+        {
+          "name": "value",
+          "type": "string",
+          "required": false,
+          "description": "Value for the option item. Defaults to an empty string."
+        },
+        {
+          "name": "text",
+          "type": "string",
+          "required": true,
+          "description": "Text for the option item."
+        },
+        {
+          "name": "selected",
+          "type": "boolean",
+          "required": false,
+          "description": "Sets the option as the selected."
+        },
+        {
+          "name": "disabled",
+          "type": "boolean",
+          "required": false,
+          "description": "Sets the option item as disabled."
+        },
+        {
+          "name": "attributes",
+          "type": "object",
+          "required": false,
+          "description": "HTML attributes (for example data attributes) to add to the option."
+        }
+      ]
+    },
+    {
+      "name": "label",
+      "type": "object",
+      "required": false,
+      "description": "Label text or HTML by specifying value for either text or html keys.",
+      "isComponent": true
+    },
+    {
+      "name": "hint",
+      "type": "object",
+      "required": false,
+      "description": "Options for the hint component.",
+      "isComponent": true
+    },
+    {
+      "name": "errorMessage",
+      "type": "object",
+      "required": false,
+      "description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.",
+      "isComponent": true
+    },
+    {
+      "name": "classes",
+      "type": "string",
+      "required": false,
+      "description": "Classes to add to the select."
+    },
+    {
+      "name": "attributes",
+      "type": "object",
+      "required": false,
+      "description": "HTML attributes (for example data attributes) to add to the select."
+    }
+  ]
+}
diff --git a/app/views/design-system/components/select/select.json b/app/views/design-system/components/select/select.json
deleted file mode 100644
index d7d61eaa3..000000000
--- a/app/views/design-system/components/select/select.json
+++ /dev/null
@@ -1,87 +0,0 @@
-{
-	"params": [
-		{
-			"name": "id",
-			"type": "string",
-			"required": true,
-			"description": "Id for each select box."
-		},
-		{
-			"name": "name",
-			"type": "string",
-			"required": true,
-			"description": "Name property for the select."
-		},
-		{
-			"name": "items",
-			"type": "array",
-			"required": true,
-			"description": "Array of option items for the select.",
-			"params": [
-				{
-					"name": "value",
-					"type": "string",
-					"required": false,
-					"description": "Value for the option item. Defaults to an empty string."
-				},
-				{
-					"name": "text",
-					"type": "string",
-					"required": true,
-					"description": "Text for the option item."
-				},
-				{
-					"name": "selected",
-					"type": "boolean",
-					"required": false,
-					"description": "Sets the option as the selected."
-				},
-				{
-					"name": "disabled",
-					"type": "boolean",
-					"required": false,
-					"description": "Sets the option item as disabled."
-				},
-				{
-					"name": "attributes",
-					"type": "object",
-					"required": false,
-					"description": "HTML attributes (for example data attributes) to add to the option."
-				}
-			]
-		},
-		{
-			"name": "label",
-			"type": "object",
-			"required": false,
-			"description": "Label text or HTML by specifying value for either text or html keys.",
-			"isComponent": true
-		},
-		{
-			"name": "hint",
-			"type": "object",
-			"required": false,
-			"description": "Options for the hint component.",
-			"isComponent": true
-		},
-		{
-			"name": "errorMessage",
-			"type": "object",
-			"required": false,
-			"description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.",
-			"isComponent": true
-		},
-		{
-			"name": "classes",
-			"type": "string",
-			"required": false,
-			"description": "Classes to add to the select."
-		},
-		{
-			"name": "attributes",
-			"type": "object",
-			"required": false,
-			"description": "HTML attributes (for example data attributes) to add to the select."
-		}
-	]
-}
diff --git a/app/views/design-system/components/skip-link/default/index.njk b/app/views/design-system/components/skip-link/default/index.njk
index 03c74c40d..b5079dcea 100644
--- a/app/views/design-system/components/skip-link/default/index.njk
+++ b/app/views/design-system/components/skip-link/default/index.njk
@@ -1,4 +1,4 @@
-

To view the skip link, tab to this example, or click inside this example and press tab.

+

To view the skip link, tab to this example, or click inside this example and press tab.

{% from 'skip-link/macro.njk' import skipLink %} diff --git a/app/views/design-system/components/skip-link/macro-options.json b/app/views/design-system/components/skip-link/macro-options.json new file mode 100644 index 000000000..c5dc085b5 --- /dev/null +++ b/app/views/design-system/components/skip-link/macro-options.json @@ -0,0 +1,28 @@ +{ + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "Text to use within the skip link component." + }, + { + "name": "href", + "type": "string", + "required": false, + "description": "The value of the skip link’s `href` attribute. Defaults to `#content` if you do not provide a value." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the skip link." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the skip link." + } + ] +} diff --git a/app/views/design-system/components/skip-link/skip-link.json b/app/views/design-system/components/skip-link/skip-link.json deleted file mode 100644 index a19e8895a..000000000 --- a/app/views/design-system/components/skip-link/skip-link.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "params": [ - { - "name": "text", - "type": "string", - "required": true, - "description": "Text to use within the skip link component." - }, - { - "name": "href", - "type": "string", - "required": false, - "description": "The value of the skip link’s `href` attribute. Defaults to `#content` if you do not provide a value." - }, - { - "name": "classes", - "type": "string", - "required": false, - "description": "Classes to add to the skip link." - }, - { - "name": "attributes", - "type": "object", - "required": false, - "description": "HTML attributes (for example data attributes) to add to the skip link." - } - ] -} diff --git a/app/views/design-system/components/summary-list/macro-options.json b/app/views/design-system/components/summary-list/macro-options.json new file mode 100644 index 000000000..98259c57a --- /dev/null +++ b/app/views/design-system/components/summary-list/macro-options.json @@ -0,0 +1,103 @@ +{ + "params": [ + { + "name": "rows", + "type": "array", + "required": true, + "description": "Array of row item objects.", + "params": [ + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the row `div`" + }, + { + "name": "key.text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text to use within the each key. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "key.html", + "type": "string", + "required": true + }, + { + "name": "key.classes", + "type": "string", + "required": false, + "description": "Classes to add to the key wrapper" + }, + { + "name": "value.text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text to use within the each value. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "value.html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML to use within the each value. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "value.classes", + "type": "string", + "required": false, + "description": "Classes to add to the value wrapper" + }, + { + "name": "actions.classes", + "type": "string", + "required": false, + "description": "Classes to add to the actions wrapper" + }, + { + "name": "actions.items", + "type": "array", + "required": false, + "description": "Array of action item objects", + "params": [ + { + "name": "href", + "type": "string", + "required": true, + "description": "The value of the link href attribute for an action item" + }, + { + "name": "text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text to use within each action item. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML to use within the each action item. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "visuallyHiddenText", + "type": "string", + "required": false, + "description": "Actions rely on context from the surrounding content so may require additional accessible text, text supplied to this option is appended to the end, use `html` for more complicated scenarios." + } + ] + } + ] + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the container." + } + ] +} diff --git a/app/views/design-system/components/summary-list/summary-list.json b/app/views/design-system/components/summary-list/summary-list.json deleted file mode 100644 index ca4885074..000000000 --- a/app/views/design-system/components/summary-list/summary-list.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "params": [ - { - "name": "rows", - "type": "array", - "required": true, - "description": "Array of row item objects.", - "params": [ - { - "name": "classes", - "type": "string", - "required": false, - "description": "Classes to add to the row `div`" - }, - { - "name": "key.text", - "type": "string", - "required": true, - "description": "If `html` is set, this is not required. Text to use within the each key. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "key.html", - "type": "string", - "required": true - }, - { - "name": "key.classes", - "type": "string", - "required": false, - "description": "Classes to add to the key wrapper" - }, - { - "name": "value.text", - "type": "string", - "required": true, - "description": "If `html` is set, this is not required. Text to use within the each value. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "value.html", - "type": "string", - "required": true, - "description": "If `text` is set, this is not required. HTML to use within the each value. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "value.classes", - "type": "string", - "required": false, - "description": "Classes to add to the value wrapper" - }, - { - "name": "actions.classes", - "type": "string", - "required": false, - "description": "Classes to add to the actions wrapper" - }, - { - "name": "actions.items", - "type": "array", - "required": false, - "description": "Array of action item objects", - "params": [ - { - "name": "href", - "type": "string", - "required": true, - "description": "The value of the link href attribute for an action item" - }, - { - "name": "text", - "type": "string", - "required": true, - "description": "If `html` is set, this is not required. Text to use within each action item. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "html", - "type": "string", - "required": true, - "description": "If `text` is set, this is not required. HTML to use within the each action item. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "visuallyHiddenText", - "type": "string", - "required": false, - "description": "Actions rely on context from the surrounding content so may require additional accessible text, text supplied to this option is appended to the end, use `html` for more complicated scenarios." - } - ] - } - ] - }, - { - "name": "classes", - "type": "string", - "required": false, - "description": "Classes to add to the container." - }, - { - "name": "attributes", - "type": "object", - "required": false, - "description": "HTML attributes (for example data attributes) to add to the container." - } - ] -} diff --git a/app/views/design-system/components/table/macro-options.json b/app/views/design-system/components/table/macro-options.json new file mode 100644 index 000000000..1ec5057d0 --- /dev/null +++ b/app/views/design-system/components/table/macro-options.json @@ -0,0 +1,128 @@ +{ + "params": [ + { + "name": "rows", + "type": "array", + "required": true, + "description": "Array of table rows and cells.", + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text for cells in table rows. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML for cells in table rows. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "format", + "type": "string", + "required": false, + "description": "Specify format of a cell. Currently we only use \"numeric\"." + }, + { + "name": "colspan", + "type": "integer", + "required": false, + "description": "Specify how many columns a cell extends." + }, + { + "name": "rowspan", + "type": "integer", + "required": false, + "description": "Specify how many rows a cell extends." + } + ] + }, + { + "name": "head", + "type": "array", + "required": false, + "description": "Array of table head cells.", + "params": [ + { + "name": "text", + "type": "string", + "required": false, + "description": "If `html` is set, this is not required. Text for table head cells. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": false, + "description": "If `text` is set, this is not required. HTML for table head cells. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "format", + "type": "string", + "required": false, + "description": "Specify format of a cell. Currently we only use \"numeric\"." + }, + { + "name": "colspan", + "type": "integer", + "required": false, + "description": "Specify how many columns a cell extends." + }, + { + "name": "rowspan", + "type": "integer", + "required": false, + "description": "Specify how many rows a cell extends." + } + ] + }, + { + "name": "heading", + "type": "string", + "required": false, + "description": "Heading/label of the panel if the panel argument is set to true." + }, + { + "name": "headingLevel", + "type": "integer", + "required": false, + "description": "Optional heading level for the heading. Default: 3." + }, + { + "name": "caption", + "type": "string", + "required": false, + "description": "Caption text" + }, + { + "name": "captionClasses", + "type": "string", + "required": false, + "description": "Classes for caption text size. Classes should correspond to the available typography heading classes." + }, + { + "name": "firstCellIsHeader", + "type": "boolean", + "required": false, + "description": "If set to true, first cell in table row will be a TH instead of a TD." + }, + { + "name": "responsive", + "type": "boolean", + "required": false, + "description": "If set to true, responsive table classes will be applied." + }, + { + "name": "tableClasses", + "type": "string", + "required": false, + "description": "Classes to add to the table container." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the table container." + } + ] +} diff --git a/app/views/design-system/components/table/table.json b/app/views/design-system/components/table/table.json deleted file mode 100644 index a110877b3..000000000 --- a/app/views/design-system/components/table/table.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "params": [ - { - "name": "rows", - "type": "array", - "required": true, - "description": "Array of table rows and cells.", - "params": [ - { - "name": "text", - "type": "string", - "required": true, - "description": "If `html` is set, this is not required. Text for cells in table rows. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "html", - "type": "string", - "required": true, - "description": "If `text` is set, this is not required. HTML for cells in table rows. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "format", - "type": "string", - "required": false, - "description": "Specify format of a cell. Currently we only use \"numeric\"." - }, - { - "name": "colspan", - "type": "integer", - "required": false, - "description": "Specify how many columns a cell extends." - }, - { - "name": "rowspan", - "type": "integer", - "required": false, - "description": "Specify how many rows a cell extends." - } - ] - }, - { - "name": "head", - "type": "array", - "required": false, - "description": "Array of table head cells.", - "params": [ - { - "name": "text", - "type": "string", - "required": false, - "description": "If `html` is set, this is not required. Text for table head cells. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "html", - "type": "string", - "required": false, - "description": "If `text` is set, this is not required. HTML for table head cells. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "format", - "type": "string", - "required": false, - "description": "Specify format of a cell. Currently we only use \"numeric\"." - }, - { - "name": "colspan", - "type": "integer", - "required": false, - "description": "Specify how many columns a cell extends." - }, - { - "name": "rowspan", - "type": "integer", - "required": false, - "description": "Specify how many rows a cell extends." - } - ] - }, - { - "name": "heading", - "type": "string", - "required": false, - "description": "Heading/label of the panel if the panel argument is set to true." - }, - { - "name": "headingLevel", - "type": "integer", - "required": false, - "description": "Optional heading level for the heading. Default: 3." - }, - { - "name": "caption", - "type": "string", - "required": false, - "description": "Caption text" - }, - { - "name": "captionClasses", - "type": "string", - "required": false, - "description": "Classes for caption text size. Classes should correspond to the available typography heading classes." - }, - { - "name": "firstCellIsHeader", - "type": "boolean", - "required": false, - "description": "If set to true, first cell in table row will be a TH instead of a TD." - }, - { - "name": "responsive", - "type": "boolean", - "required": false, - "description": "If set to true, responsive table classes will be applied." - }, - { - "name": "tableClasses", - "type": "string", - "required": false, - "description": "Classes to add to the table container." - }, - { - "name": "attributes", - "type": "object", - "required": false, - "description": "HTML attributes (for example data attributes) to add to the table container." - } - ] -} diff --git a/app/views/design-system/components/tag/macro-options.json b/app/views/design-system/components/tag/macro-options.json new file mode 100644 index 000000000..d581081ab --- /dev/null +++ b/app/views/design-system/components/tag/macro-options.json @@ -0,0 +1,28 @@ +{ + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "If `html` is set, this is not required. Text to use within the tag component. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "If `text` is set, this is not required. HTML to use within the tag component. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the tag." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the tag." + } + ] +} diff --git a/app/views/design-system/components/tag/tag.json b/app/views/design-system/components/tag/tag.json deleted file mode 100644 index 42a2585af..000000000 --- a/app/views/design-system/components/tag/tag.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "params": [ - { - "name": "text", - "type": "string", - "required": true, - "description": "If `html` is set, this is not required. Text to use within the tag component. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "html", - "type": "string", - "required": true, - "description": "If `text` is set, this is not required. HTML to use within the tag component. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "classes", - "type": "string", - "required": false, - "description": "Classes to add to the tag." - }, - { - "name": "attributes", - "type": "object", - "required": false, - "description": "HTML attributes (for example data attributes) to add to the tag." - } - ] -} diff --git a/app/views/design-system/components/text-input/macro-options.json b/app/views/design-system/components/text-input/macro-options.json new file mode 100644 index 000000000..6496586bc --- /dev/null +++ b/app/views/design-system/components/text-input/macro-options.json @@ -0,0 +1,169 @@ +{ + "params": [ + { + "name": "id", + "type": "string", + "required": true, + "description": "The id of the input." + }, + { + "name": "name", + "type": "string", + "required": true, + "description": "The name of the input, which is submitted with the form data." + }, + { + "name": "type", + "type": "string", + "required": false, + "description": "Type of input control to render. Defaults to \"text\"." + }, + { + "name": "inputmode", + "type": "string", + "required": false, + "description": "Optional value for [inputmode](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode)." + }, + { + "name": "value", + "type": "string", + "required": false, + "description": "Optional initial value of the input." + }, + { + "name": "describedBy", + "type": "string", + "required": false, + "description": "One or more element IDs to add to the `aria-describedby` attribute, used to provide additional descriptive information for screenreader users." + }, + { + "name": "label", + "type": "object", + "required": true, + "description": "Options for the label component.", + "isComponent": true + }, + { + "name": "hint", + "type": "object", + "required": false, + "description": "Options for the hint component.", + "isComponent": true + }, + { + "name": "errorMessage", + "type": "object", + "required": false, + "description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.", + "isComponent": true + }, + { + "name": "prefix", + "type": "object", + "required": false, + "description": "Options for the prefix element.", + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "Required. If `html` is set, this is not required. Text to use within the label. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "Required. If `text` is set, this is not required. HTML to use within the label. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the prefix." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the prefix element." + } + ] + }, + { + "name": "suffix", + "type": "object", + "required": false, + "description": "Options for the suffix element.", + "params": [ + { + "name": "text", + "type": "string", + "required": true, + "description": "Required. If `html` is set, this is not required. Text to use within the label. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "html", + "type": "string", + "required": true, + "description": "Required. If `text` is set, this is not required. HTML to use within the label. If `html` is provided, the `text` argument will be ignored." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the suffix element." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the suffix element." + } + ] + }, + { + "name": "formGroup", + "type": "object", + "required": false, + "description": "Options for the form-group wrapper", + "params": [ + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the form group (for example to show error state for the whole group)" + } + ] + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the input." + }, + { + "name": "autocomplete", + "type": "string", + "required": false, + "description": "Attribute to [identify input purpose](https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html), for instance \"postal-code\" or \"username\". See [autofill](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill) for full list of attributes that can be used." + }, + { + "name": "pattern", + "type": "string", + "required": false, + "description": "Attribute to [provide a regular expression pattern](https://www.w3.org/TR/html51/sec-forms.html#the-pattern-attribute), used to match allowed character combinations for the input value." + }, + { + "name": "spellcheck", + "type": "boolean", + "required": false, + "description": "Optional field to enable or disable the spellcheck attribute on the input." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the anchor tag." + } + ] +} diff --git a/app/views/design-system/components/text-input/text-input.json b/app/views/design-system/components/text-input/text-input.json deleted file mode 100644 index 5be5bf624..000000000 --- a/app/views/design-system/components/text-input/text-input.json +++ /dev/null @@ -1,169 +0,0 @@ -{ - "params": [ - { - "name": "id", - "type": "string", - "required": true, - "description": "The id of the input." - }, - { - "name": "name", - "type": "string", - "required": true, - "description": "The name of the input, which is submitted with the form data." - }, - { - "name": "type", - "type": "string", - "required": false, - "description": "Type of input control to render. Defaults to \"text\"." - }, - { - "name": "inputmode", - "type": "string", - "required": false, - "description": "Optional value for [inputmode](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode)." - }, - { - "name": "value", - "type": "string", - "required": false, - "description": "Optional initial value of the input." - }, - { - "name": "describedBy", - "type": "string", - "required": false, - "description": "One or more element IDs to add to the `aria-describedby` attribute, used to provide additional descriptive information for screenreader users." - }, - { - "name": "label", - "type": "object", - "required": true, - "description": "Options for the label component.", - "isComponent": true - }, - { - "name": "hint", - "type": "object", - "required": false, - "description": "Options for the hint component.", - "isComponent": true - }, - { - "name": "errorMessage", - "type": "object", - "required": false, - "description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.", - "isComponent": true - }, - { - "name": "prefix", - "type": "object", - "required": false, - "description": "Options for the prefix element.", - "params": [ - { - "name": "text", - "type": "string", - "required": true, - "description": "Required. If `html` is set, this is not required. Text to use within the label. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "html", - "type": "string", - "required": true, - "description": "Required. If `text` is set, this is not required. HTML to use within the label. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "classes", - "type": "string", - "required": false, - "description": "Classes to add to the prefix." - }, - { - "name": "attributes", - "type": "object", - "required": false, - "description": "HTML attributes (for example data attributes) to add to the prefix element." - } - ] - }, - { - "name": "suffix", - "type": "object", - "required": false, - "description": "Options for the suffix element.", - "params": [ - { - "name": "text", - "type": "string", - "required": true, - "description": "Required. If `html` is set, this is not required. Text to use within the label. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "html", - "type": "string", - "required": true, - "description": "Required. If `text` is set, this is not required. HTML to use within the label. If `html` is provided, the `text` argument will be ignored." - }, - { - "name": "classes", - "type": "string", - "required": false, - "description": "Classes to add to the suffix element." - }, - { - "name": "attributes", - "type": "object", - "required": false, - "description": "HTML attributes (for example data attributes) to add to the suffix element." - } - ] - }, - { - "name": "formGroup", - "type": "object", - "required": false, - "description": "Options for the form-group wrapper", - "params": [ - { - "name": "classes", - "type": "string", - "required": false, - "description": "Classes to add to the form group (for example to show error state for the whole group)" - } - ] - }, - { - "name": "classes", - "type": "string", - "required": false, - "description": "Classes to add to the input." - }, - { - "name": "autocomplete", - "type": "string", - "required": false, - "description": "Attribute to [identify input purpose](https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html), for instance \"postal-code\" or \"username\". See [autofill](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill) for full list of attributes that can be used." - }, - { - "name": "pattern", - "type": "string", - "required": false, - "description": "Attribute to [provide a regular expression pattern](https://www.w3.org/TR/html51/sec-forms.html#the-pattern-attribute), used to match allowed character combinations for the input value." - }, - { - "name": "spellcheck", - "type": "boolean", - "required": false, - "description": "Optional field to enable or disable the spellcheck attribute on the input." - }, - { - "name": "attributes", - "type": "object", - "required": false, - "description": "HTML attributes (for example data attributes) to add to the anchor tag." - } - ] -} diff --git a/app/views/design-system/components/textarea/macro-options.json b/app/views/design-system/components/textarea/macro-options.json new file mode 100644 index 000000000..6b74cceb1 --- /dev/null +++ b/app/views/design-system/components/textarea/macro-options.json @@ -0,0 +1,73 @@ +{ + "params": [ + { + "name": "id", + "type": "string", + "required": true, + "description": "The id of the textarea." + }, + { + "name": "name", + "type": "string", + "required": true, + "description": "The name of the textarea, which is submitted with the form data." + }, + { + "name": "rows", + "type": "string", + "required": false, + "description": "Optional number of textarea rows (default is 5 rows)." + }, + { + "name": "value", + "type": "string", + "required": false, + "description": "Optional initial value of the textarea." + }, + { + "name": "describedBy", + "type": "string", + "required": false, + "description": "One or more element IDs to add to the `aria-describedby` attribute, used to provide additional descriptive information for screenreader users." + }, + { + "name": "label", + "type": "object", + "required": true, + "description": "Options for the label component.", + "isComponent": true + }, + { + "name": "hint", + "type": "object", + "required": false, + "description": "Options for the hint component.", + "isComponent": true + }, + { + "name": "errorMessage", + "type": "object", + "required": false, + "description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.", + "isComponent": true + }, + { + "name": "autocomplete", + "type": "string", + "required": false, + "description": "Attribute to [identify input purpose](https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html), for instance \"postal-code\" or \"username\". See [autofill](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill) for full list of attributes that can be used." + }, + { + "name": "classes", + "type": "string", + "required": false, + "description": "Classes to add to the textarea." + }, + { + "name": "attributes", + "type": "object", + "required": false, + "description": "HTML attributes (for example data attributes) to add to the textarea." + } + ] +} diff --git a/app/views/design-system/components/textarea/textarea.json b/app/views/design-system/components/textarea/textarea.json deleted file mode 100644 index be451b57d..000000000 --- a/app/views/design-system/components/textarea/textarea.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "params": [ - { - "name": "id", - "type": "string", - "required": true, - "description": "The id of the textarea." - }, - { - "name": "name", - "type": "string", - "required": true, - "description": "The name of the textarea, which is submitted with the form data." - }, - { - "name": "rows", - "type": "string", - "required": false, - "description": "Optional number of textarea rows (default is 5 rows)." - }, - { - "name": "value", - "type": "string", - "required": false, - "description": "Optional initial value of the textarea." - }, - { - "name": "describedBy", - "type": "string", - "required": false, - "description": "One or more element IDs to add to the `aria-describedby` attribute, used to provide additional descriptive information for screenreader users." - }, - { - "name": "label", - "type": "object", - "required": true, - "description": "Options for the label component.", - "isComponent": true - }, - { - "name": "hint", - "type": "object", - "required": false, - "description": "Options for the hint component.", - "isComponent": true - }, - { - "name": "errorMessage", - "type": "object", - "required": false, - "description": "Options for the error message component. The error message component will not display if you use a falsy value for `errorMessage`, for example `false` or `null`.", - "isComponent": true - }, - { - "name": "autocomplete", - "type": "string", - "required": false, - "description": "Attribute to [identify input purpose](https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html), for instance \"postal-code\" or \"username\". See [autofill](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill) for full list of attributes that can be used." - }, - { - "name": "classes", - "type": "string", - "required": false, - "description": "Classes to add to the textarea." - }, - { - "name": "attributes", - "type": "object", - "required": false, - "description": "HTML attributes (for example data attributes) to add to the textarea." - } - ] -} diff --git a/app/views/design-system/components/warning-callout/warning-callout.json b/app/views/design-system/components/warning-callout/macro-options.json similarity index 53% rename from app/views/design-system/components/warning-callout/warning-callout.json rename to app/views/design-system/components/warning-callout/macro-options.json index df7706b71..fba4a78d6 100644 --- a/app/views/design-system/components/warning-callout/warning-callout.json +++ b/app/views/design-system/components/warning-callout/macro-options.json @@ -1,17 +1,17 @@ { - "params": [ + "params": [ { - "name": "heading", - "type": "string", - "required": true, - "description": "Heading to be used within the warning callout." - }, + "name": "heading", + "type": "string", + "required": true, + "description": "Heading to be used within the warning callout." + }, { - "name": "html", - "type": "string", - "required": true, - "description": "Content to be used within the warning callout." - }, + "name": "html", + "type": "string", + "required": true, + "description": "Content to be used within the warning callout." + }, { "name": "classes", "type": "string", diff --git a/app/views/includes/design-example.njk b/app/views/includes/design-example.njk index ee510b97f..417b99356 100644 --- a/app/views/includes/design-example.njk +++ b/app/views/includes/design-example.njk @@ -1,6 +1,6 @@ {% macro designExample(params) %} {% set examplePath = "app/views/design-system/" + params.group + "/" + params.item + "/" + params.type + "/index.njk" %} - {% set exampleArguments = "app/views/design-system/" + params.group + "/" + params.item + "/" + params.item + ".json" %} + {% set exampleArguments = "app/views/design-system/" + params.group + "/" + params.item + "/" + "macro-options.json" %} {% set standaloneURL = "/design-example/" + params.group + "/" + params.item + "/" + params.type + "?fullpage=" + params.fullpage + "&blankpage=" + params.blankpage %} {# `showExample` and `showCode` is true, unless explicitly turned off with params #} From b1372c2b464f6c95d882964f703dbbbfa00111fb Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Tue, 18 May 2021 18:17:09 +0100 Subject: [PATCH 05/11] display object and array values in the nunjuck arguments table --- app/views/includes/design-example.njk | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/app/views/includes/design-example.njk b/app/views/includes/design-example.njk index 417b99356..e970aac41 100644 --- a/app/views/includes/design-example.njk +++ b/app/views/includes/design-example.njk @@ -96,7 +96,7 @@

If you're using Nunjucks macros in production with "html" options, or ones ending with "html", you must sanitise the HTML to protect against cross-site scripting exploits.

- + + {% if option.params %} + {% for subOption in option.params %} + + + + + + + {% endfor %} + {% endif %} {% endfor %}
Nunjucks arguments for {{ exampleTitle }}Nunjucks arguments for {{ exampleTitle }}
@@ -129,6 +129,24 @@ Description {{ option.description }}
+ Name {{ option.name}}{% if option.type == "array" %}[]{% else %}{}{% endif %}.{{ subOption.name }} + + Type {{ subOption.type }} + + Required {{ subOption.required }} + + Description {{ subOption.description }} +
From c3970c191770a7b68cdc39ec6c41b79d60f9a94d Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Tue, 18 May 2021 18:28:45 +0100 Subject: [PATCH 06/11] remove markdown links from json macro options --- .../design-system/components/header/macro-options.json | 4 ++-- .../design-system/components/text-input/macro-options.json | 6 +++--- .../design-system/components/textarea/macro-options.json | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/views/design-system/components/header/macro-options.json b/app/views/design-system/components/header/macro-options.json index bc7f6d263..932c8b27a 100644 --- a/app/views/design-system/components/header/macro-options.json +++ b/app/views/design-system/components/header/macro-options.json @@ -22,7 +22,7 @@ "name": "ariaLabel", "type": "string", "required": "No", - "description": "Aria label for the logo href. Defaults to \"NHS homepage\"./" + "description": "Aria label for the logo href. Defaults to \"NHS homepage\"." }, { "name": "organisation", @@ -106,7 +106,7 @@ "name": "searchAction", "type": "string", "required": "No", - "description": "The search action endpoint. Defaults to \"https://www.nhs.uk/search/\"" + "description": "Custom search action endpoint." }, { "name": "searchInputName", diff --git a/app/views/design-system/components/text-input/macro-options.json b/app/views/design-system/components/text-input/macro-options.json index 6496586bc..a25ec2449 100644 --- a/app/views/design-system/components/text-input/macro-options.json +++ b/app/views/design-system/components/text-input/macro-options.json @@ -22,7 +22,7 @@ "name": "inputmode", "type": "string", "required": false, - "description": "Optional value for [inputmode](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode)." + "description": "Optional value for inputmode." }, { "name": "value", @@ -145,13 +145,13 @@ "name": "autocomplete", "type": "string", "required": false, - "description": "Attribute to [identify input purpose](https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html), for instance \"postal-code\" or \"username\". See [autofill](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill) for full list of attributes that can be used." + "description": "autocomplete attribute to identify input purpose, for instance \"postal-code\" or \"username\"." }, { "name": "pattern", "type": "string", "required": false, - "description": "Attribute to [provide a regular expression pattern](https://www.w3.org/TR/html51/sec-forms.html#the-pattern-attribute), used to match allowed character combinations for the input value." + "description": "pattern attribute to provide a regular expression pattern, used to match allowed character combinations for the input value." }, { "name": "spellcheck", diff --git a/app/views/design-system/components/textarea/macro-options.json b/app/views/design-system/components/textarea/macro-options.json index 6b74cceb1..f166b79fe 100644 --- a/app/views/design-system/components/textarea/macro-options.json +++ b/app/views/design-system/components/textarea/macro-options.json @@ -55,7 +55,7 @@ "name": "autocomplete", "type": "string", "required": false, - "description": "Attribute to [identify input purpose](https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html), for instance \"postal-code\" or \"username\". See [autofill](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill) for full list of attributes that can be used." + "description": "autocomplete attribute to identify input purpose, for instance \"postal-code\" or \"username\"." }, { "name": "classes", From ec74bf7bab30c00296ea75bdbe2fb3b06bd02ea8 Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Tue, 18 May 2021 18:37:45 +0100 Subject: [PATCH 07/11] update package dependencies to latest versions --- package-lock.json | 183 +++++++++++++++++++++++++++------------------- package.json | 2 +- 2 files changed, 110 insertions(+), 75 deletions(-) diff --git a/package-lock.json b/package-lock.json index a02a6a749..1aff85169 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23353,35 +23353,6 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, -<<<<<<< HEAD -======= - "autoprefixer": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.2.6.tgz", - "integrity": "sha512-Iq8TRIB+/9eQ8rbGhcP7ct5cYb/3qjNYAR2SnzLCEcwF6rvVOax8+9+fccgXk4bEhQGjOZd5TLhsksmAdsbGqQ==", - "dev": true, - "requires": { - "browserslist": "^2.11.3", - "caniuse-lite": "^1.0.30000805", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^6.0.17", - "postcss-value-parser": "^3.2.3" - }, - "dependencies": { - "browserslist": { - "version": "2.11.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.11.3.tgz", - "integrity": "sha512-yWu5cXT7Av6mVwzWc8lMsJMHWn4xyjSuGYi4IozbVTLUOEYPSagUB8kiMDUHA1fS3zjr8nkxkn9jdvug4BBRmA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30000792", - "electron-to-chromium": "^1.3.30" - } - } - } - }, ->>>>>>> use the latest version of highlight.js "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -23574,7 +23545,6 @@ } }, "babel-runtime": { -<<<<<<< HEAD "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", @@ -23582,14 +23552,6 @@ "requires": { "core-js": "^2.4.0", "regenerator-runtime": "^0.11.0" -======= - "version": "5.8.38", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.38.tgz", - "integrity": "sha1-HAsC62MxL18If/IEUIJ7QlydTBk=", - "dev": true, - "requires": { - "core-js": "^1.0.0" ->>>>>>> use the latest version of highlight.js } }, "backo2": { @@ -24245,7 +24207,6 @@ "get-intrinsic": "^1.0.2" } }, -<<<<<<< HEAD "caller-path": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", @@ -24263,8 +24224,6 @@ } } }, -======= ->>>>>>> use the latest version of highlight.js "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -24401,15 +24360,12 @@ "safe-buffer": "^5.0.1" } }, -<<<<<<< HEAD "circular-json": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, -======= ->>>>>>> use the latest version of highlight.js "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -24503,6 +24459,7 @@ "dev": true }, "cli-cursor": { +<<<<<<< HEAD <<<<<<< HEAD "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -24519,14 +24476,19 @@ "requires": { "restore-cursor": "^1.0.1" ======= +======= +>>>>>>> update package dependencies to latest versions "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { "restore-cursor": "^2.0.0" +<<<<<<< HEAD >>>>>>> use the latest version of highlight.js >>>>>>> use the latest version of highlight.js +======= +>>>>>>> update package dependencies to latest versions } }, "cli-width": { @@ -25024,15 +24986,9 @@ "dev": true }, "core-js": { -<<<<<<< HEAD "version": "2.6.12", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", -======= - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", - "integrity": "sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=", ->>>>>>> use the latest version of highlight.js "dev": true }, "core-js-compat": { @@ -25060,7 +25016,6 @@ "dev": true }, "cpx": { -<<<<<<< HEAD "version": "1.5.0", "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.5.0.tgz", "integrity": "sha1-GFvgGFEdhycN7czCkxceN2VauI8=", @@ -25076,22 +25031,6 @@ "resolve": "^1.1.7", "safe-buffer": "^5.0.1", "shell-quote": "^1.6.1", -======= - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/cpx/-/cpx-1.2.1.tgz", - "integrity": "sha1-MTV1KD9/as679QQVKlMXvvsYFSs=", - "dev": true, - "requires": { - "babel-runtime": "^5.7.0", - "chokidar": "^1.0.4", - "duplexer": "^0.1.1", - "glob": "^5.0.14", - "glob2base": "0.0.12", - "minimatch": "^2.0.8", - "mkdirp": "^0.5.1", - "resolve": "^1.1.6", - "shell-quote": "^1.4.3", ->>>>>>> use the latest version of highlight.js "subarg": "^1.0.0" }, "dependencies": { @@ -26339,6 +26278,7 @@ } }, "eslint": { +<<<<<<< HEAD "version": "7.28.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz", "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==", @@ -26346,23 +26286,41 @@ "requires": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.2", +======= + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.25.0.tgz", + "integrity": "sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw==", + "dev": true, + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.0", +>>>>>>> update package dependencies to latest versions "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", +<<<<<<< HEAD "escape-string-regexp": "^4.0.0", +======= +>>>>>>> update package dependencies to latest versions "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", +<<<<<<< HEAD "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.1.2", +======= + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", +>>>>>>> update package dependencies to latest versions "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -26371,7 +26329,11 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", +<<<<<<< HEAD "lodash.merge": "^4.6.2", +======= + "lodash": "^4.17.21", +>>>>>>> update package dependencies to latest versions "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -26380,7 +26342,11 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", +<<<<<<< HEAD "table": "^6.0.9", +======= + "table": "^6.0.4", +>>>>>>> update package dependencies to latest versions "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -26389,6 +26355,7 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", +<<<<<<< HEAD "dev": true, "requires": { "@babel/highlight": "^7.10.4" @@ -26894,12 +26861,10 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", +======= +>>>>>>> update package dependencies to latest versions "dev": true, "requires": { - "ansi-regex": "^3.0.0" - } - }, -======= "@babel/highlight": "^7.10.4" } }, @@ -27310,7 +27275,6 @@ "ansi-regex": "^3.0.0" } }, ->>>>>>> use the latest version of highlight.js "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", @@ -27321,6 +27285,7 @@ "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", +<<<<<<< HEAD <<<<<<< HEAD "dev": true, "requires": { @@ -27358,6 +27323,8 @@ "requires": { "mkdirp": "^0.5.1" ======= +======= +>>>>>>> update package dependencies to latest versions "dev": true, "requires": { "ajv": "^6.10.2", @@ -27382,7 +27349,6 @@ "dev": true, "requires": { "isexe": "^2.0.0" ->>>>>>> use the latest version of highlight.js } >>>>>>> use the latest version of highlight.js } @@ -28007,6 +27973,7 @@ "dev": true }, "figures": { +<<<<<<< HEAD <<<<<<< HEAD "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", @@ -28024,14 +27991,19 @@ "escape-string-regexp": "^1.0.5", "object-assign": "^4.1.0" ======= +======= +>>>>>>> update package dependencies to latest versions "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" +<<<<<<< HEAD >>>>>>> use the latest version of highlight.js >>>>>>> use the latest version of highlight.js +======= +>>>>>>> update package dependencies to latest versions } }, "file-entry-cache": { @@ -29430,6 +29402,7 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "inquirer": { +<<<<<<< HEAD <<<<<<< HEAD "version": "6.5.2", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", @@ -29456,6 +29429,8 @@ "string-width": "^1.0.1", "strip-ansi": "^3.0.0", ======= +======= +>>>>>>> update package dependencies to latest versions "version": "6.5.2", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", @@ -29475,13 +29450,17 @@ "string-width": "^2.1.0", "strip-ansi": "^5.1.0", <<<<<<< HEAD +<<<<<<< HEAD ======= >>>>>>> use the latest version of highlight.js >>>>>>> use the latest version of highlight.js +======= +>>>>>>> update package dependencies to latest versions "through": "^2.3.6" }, "dependencies": { "ansi-escapes": { +<<<<<<< HEAD <<<<<<< HEAD "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", @@ -29557,6 +29536,8 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true ======= +======= +>>>>>>> update package dependencies to latest versions "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", @@ -29620,7 +29601,6 @@ "dev": true } } ->>>>>>> use the latest version of highlight.js } } }, @@ -32165,6 +32145,7 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "mute-stream": { +<<<<<<< HEAD <<<<<<< HEAD "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -32180,6 +32161,11 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", >>>>>>> use the latest version of highlight.js >>>>>>> use the latest version of highlight.js +======= + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", +>>>>>>> update package dependencies to latest versions "dev": true }, "nan": { @@ -34041,6 +34027,7 @@ } }, "restore-cursor": { +<<<<<<< HEAD <<<<<<< HEAD "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -34065,6 +34052,8 @@ <<<<<<< HEAD ======= ======= +======= +>>>>>>> update package dependencies to latest versions "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", @@ -34090,9 +34079,12 @@ "mimic-fn": "^1.0.0" } <<<<<<< HEAD +<<<<<<< HEAD ======= >>>>>>> use the latest version of highlight.js >>>>>>> use the latest version of highlight.js +======= +>>>>>>> update package dependencies to latest versions } } }, @@ -34129,6 +34121,7 @@ }, "run-async": { <<<<<<< HEAD +<<<<<<< HEAD ======= <<<<<<< HEAD "version": "0.1.0", @@ -34140,14 +34133,19 @@ } ======= >>>>>>> use the latest version of highlight.js +======= +>>>>>>> update package dependencies to latest versions "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true <<<<<<< HEAD +<<<<<<< HEAD ======= >>>>>>> use the latest version of highlight.js >>>>>>> use the latest version of highlight.js +======= +>>>>>>> update package dependencies to latest versions }, "run-queue": { "version": "1.0.3", @@ -34799,6 +34797,12 @@ "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", "dev": true }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -34966,6 +34970,31 @@ "string-width": "^1.0.1", "strip-ansi": "^3.0.0", "through": "^2.3.6" +<<<<<<< HEAD +======= + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } +>>>>>>> update package dependencies to latest versions } }, "is-fullwidth-code-point": { @@ -38434,6 +38463,7 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { +<<<<<<< HEAD <<<<<<< HEAD "version": "1.0.3", "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", @@ -38449,6 +38479,11 @@ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", >>>>>>> use the latest version of highlight.js >>>>>>> use the latest version of highlight.js +======= + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", +>>>>>>> update package dependencies to latest versions "dev": true, "requires": { "mkdirp": "^0.5.1" diff --git a/package.json b/package.json index 74dd046a8..9aafab84e 100755 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "@babel/preset-env": "^7.13.10", "babel-loader": "^8.2.2", "concurrently": "^5.3.0", - "cpx": "^1.2.1", + "cpx": "^1.5.0", "eslint": "^7.23.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-config-nhsuk": "^0.17.0", From 079184d0254528074079dfadaa1e8b840d62a6a4 Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Wed, 19 May 2021 10:08:41 +0100 Subject: [PATCH 08/11] populate CHANGELOG for nunjucks macro options and bump version --- CHANGELOG.md | 12 ++++++++++-- package-lock.json | 9 +++++++++ package.json | 8 ++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fcf5b0a15..67445ad72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # NHS digital service manual Changelog +## 5.0.0 - Unreleased + +:new: **New features** + +- Display Nunjucks macro options with the Nunjucks code examples + +:wrench: **Fixes** + +- Update dependencies to the latest versions + ## 4.2.0 - 10 June 2021 :new: **New content** @@ -21,8 +31,6 @@ - Update content style guide example and research insight callout boxes - Fix typo in video and other multimedia content accessibility guidance -- Update dependencies to the latest versions - ## 4.1.2 - 15 May 2021 :wrench: **Fixes** diff --git a/package-lock.json b/package-lock.json index 1aff85169..d3f505972 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,16 @@ { "name": "nhsuk-service-manual", +<<<<<<< HEAD "version": "4.2.0", +======= +<<<<<<< HEAD + "version": "4.1.3", +>>>>>>> populate CHANGELOG for nunjucks macro options and bump version "lockfileVersion": 2, +======= + "version": "5.0.0", + "lockfileVersion": 1, +>>>>>>> populate CHANGELOG for nunjucks macro options and bump version "requires": true, "packages": { "": { diff --git a/package.json b/package.json index 9aafab84e..900f632c6 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,14 @@ { "name": "nhsuk-service-manual", +<<<<<<< HEAD "version": "4.2.0", +======= +<<<<<<< HEAD + "version": "4.1.3", +======= + "version": "5.0.0", +>>>>>>> populate CHANGELOG for nunjucks macro options and bump version +>>>>>>> populate CHANGELOG for nunjucks macro options and bump version "description": "NHS digital service manual", "main": "app.js", "directories": { From d1de86ab712143f32e4907bac441dc115edb485c Mon Sep 17 00:00:00 2001 From: davidhunter08 Date: Wed, 19 May 2021 11:05:45 +0100 Subject: [PATCH 09/11] update code snippet style --- app/scripts/design-example.js | 2 +- app/styles/design-example/_code-snippet.scss | 10 +++++++--- app/styles/design-example/_design-example.scss | 12 ++++++++++++ app/views/includes/design-example.njk | 10 ++++++---- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app/scripts/design-example.js b/app/scripts/design-example.js index 4ffcffd5f..4c8b88467 100644 --- a/app/scripts/design-example.js +++ b/app/scripts/design-example.js @@ -75,7 +75,7 @@ class DesignExample { document.execCommand('copy'); document.body.removeChild(el); e.target.innerText = 'Copied'; - setTimeout(() => e.target.innerText = 'Copy', 2500); + setTimeout(() => e.target.innerText = 'Copy code', 2500); } showEl(el) { diff --git a/app/styles/design-example/_code-snippet.scss b/app/styles/design-example/_code-snippet.scss index 5a4d61c65..516102962 100644 --- a/app/styles/design-example/_code-snippet.scss +++ b/app/styles/design-example/_code-snippet.scss @@ -11,9 +11,13 @@ &--copy { border-bottom-color: $nhsuk-button-color; - box-shadow: 0 $button-shadow-size 0 $nhsuk-button-color; + box-shadow: 0 2px 0 $nhsuk-button-color; margin-bottom: 16px; - position: static; + padding: 2px 8px; + position: absolute; + right: 16px; + text-transform: none; + top: 16px; &:hover { background-color: $color_nhsuk-grey-5; @@ -32,7 +36,7 @@ color: $color_nhsuk-blue; cursor: pointer; font-size: 16px; - margin-top: 8px; + margin-top: 16px; position: static; right: 16px; text-decoration: underline; diff --git a/app/styles/design-example/_design-example.scss b/app/styles/design-example/_design-example.scss index b978ab09b..8a758d872 100644 --- a/app/styles/design-example/_design-example.scss +++ b/app/styles/design-example/_design-example.scss @@ -57,3 +57,15 @@ p + .design-example { .app-code-snippet__macro { width: 100%; } + +.app-tabs__container pre { + background-color: $color_nhsuk-grey-5; +} + +.app-code-snippet__container { + background-color: $color_nhsuk-grey-5; + padding: nhsuk-spacing(3); + padding-top: nhsuk-spacing(8); + position: relative; + width: 100%; +} diff --git a/app/views/includes/design-example.njk b/app/views/includes/design-example.njk index e970aac41..3e5ddbb6a 100644 --- a/app/views/includes/design-example.njk +++ b/app/views/includes/design-example.njk @@ -156,10 +156,12 @@
{% endif %}
- Copy {{ exampleTitle }} code -

-                {{- snippet.code | safe -}}
-              
+
+ Copy {{ exampleTitle }} code +

+                  {{- snippet.code | safe -}}
+                
+
{% if snippets | length > 1 %} Close {{ exampleTitle }} code From abe62d0f7901a0cdc7e26aed190b84807f38025d Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Wed, 9 Jun 2021 10:20:55 +0100 Subject: [PATCH 10/11] update dependencies to latest versions --- CHANGELOG.md | 5 + package-lock.json | 899 ++-------------------------------------------- package.json | 4 + 3 files changed, 31 insertions(+), 877 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67445ad72..f1b6372b1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - Update dependencies to the latest versions +<<<<<<< HEAD ## 4.2.0 - 10 June 2021 :new: **New content** @@ -25,12 +26,16 @@ - Fix broken health literacy link on the service standard pages [Issue 1136](https://github.com/nhsuk/nhsuk-service-manual/issues/1136) +======= +>>>>>>> update dependencies to latest versions ## 4.1.3 - 8 June 2021 :wrench: **Fixes** - Update content style guide example and research insight callout boxes - Fix typo in video and other multimedia content accessibility guidance +- Update dependencies to the latest versions + ## 4.1.2 - 15 May 2021 :wrench: **Fixes** diff --git a/package-lock.json b/package-lock.json index d3f505972..5536bf238 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,6 @@ { "name": "nhsuk-service-manual", +<<<<<<< HEAD <<<<<<< HEAD "version": "4.2.0", ======= @@ -8,13 +9,14 @@ >>>>>>> populate CHANGELOG for nunjucks macro options and bump version "lockfileVersion": 2, ======= +======= +>>>>>>> update dependencies to latest versions "version": "5.0.0", - "lockfileVersion": 1, ->>>>>>> populate CHANGELOG for nunjucks macro options and bump version + "lockfileVersion": 2, "requires": true, "packages": { "": { - "version": "4.1.3", + "version": "5.0.0", "hasInstallScript": true, "license": "MIT", "dependencies": { @@ -26,7 +28,7 @@ "compression": "^1.7.4", "express": "^4.17.1", "helmet": "^4.4.1", - "highlight.js": "^9.18.3", + "highlight.js": "^10.7.2", "js-beautify": "^1.13.5", "lunr": "^2.3.9", "nunjucks": "^3.2.3" @@ -36,7 +38,7 @@ "@babel/preset-env": "^7.13.10", "babel-loader": "^8.2.2", "concurrently": "^5.3.0", - "cpx": "^1.2.1", + "cpx": "^1.5.0", "eslint": "^7.23.0", "eslint-config-airbnb-base": "^14.2.1", "eslint-config-nhsuk": "^0.17.0", @@ -9304,11 +9306,9 @@ } }, "node_modules/highlight.js": { - "version": "9.18.5", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.5.tgz", - "integrity": "sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA==", - "deprecated": "Support has ended for 9.x series. Upgrade to @latest", - "hasInstallScript": true, + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", "engines": { "node": "*" } @@ -24468,36 +24468,12 @@ "dev": true }, "cli-cursor": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", "dev": true, "requires": { "restore-cursor": "^2.0.0" -======= -<<<<<<< HEAD - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", - "dev": true, - "requires": { - "restore-cursor": "^1.0.1" -======= -======= ->>>>>>> update package dependencies to latest versions - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" -<<<<<<< HEAD ->>>>>>> use the latest version of highlight.js ->>>>>>> use the latest version of highlight.js -======= ->>>>>>> update package dependencies to latest versions } }, "cli-width": { @@ -26287,7 +26263,6 @@ } }, "eslint": { -<<<<<<< HEAD "version": "7.28.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.28.0.tgz", "integrity": "sha512-UMfH0VSjP0G4p3EWirscJEQ/cHqnT/iuH6oNZOB94nBjWbMnhGEPxsZm1eyIW0C/9jLI0Fow4W5DXLjEI7mn1g==", @@ -26295,41 +26270,23 @@ "requires": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.2", -======= - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.25.0.tgz", - "integrity": "sha512-TVpSovpvCNpLURIScDRB6g5CYu/ZFq9GfX2hLNIV4dSBKxIWojeDODvYl3t0k0VtMxYeR8OXPCFE5+oHMlGfhw==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.0", ->>>>>>> update package dependencies to latest versions "ajv": "^6.10.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", "enquirer": "^2.3.5", -<<<<<<< HEAD "escape-string-regexp": "^4.0.0", -======= ->>>>>>> update package dependencies to latest versions "eslint-scope": "^5.1.1", "eslint-utils": "^2.1.0", "eslint-visitor-keys": "^2.0.0", "espree": "^7.3.1", "esquery": "^1.4.0", "esutils": "^2.0.2", -<<<<<<< HEAD "fast-deep-equal": "^3.1.3", "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^5.1.2", -======= - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.0.0", ->>>>>>> update package dependencies to latest versions "globals": "^13.6.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", @@ -26338,11 +26295,7 @@ "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", -<<<<<<< HEAD "lodash.merge": "^4.6.2", -======= - "lodash": "^4.17.21", ->>>>>>> update package dependencies to latest versions "minimatch": "^3.0.4", "natural-compare": "^1.4.0", "optionator": "^0.9.1", @@ -26351,11 +26304,7 @@ "semver": "^7.2.1", "strip-ansi": "^6.0.0", "strip-json-comments": "^3.1.0", -<<<<<<< HEAD "table": "^6.0.9", -======= - "table": "^6.0.4", ->>>>>>> update package dependencies to latest versions "text-table": "^0.2.0", "v8-compile-cache": "^2.0.3" }, @@ -26364,514 +26313,6 @@ "version": "7.12.11", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", -<<<<<<< HEAD - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "globals": { - "version": "13.9.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", - "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - } - } - }, - "eslint-config-airbnb-base": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz", - "integrity": "sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA==", - "dev": true, - "requires": { - "confusing-browser-globals": "^1.0.10", - "object.assign": "^4.1.2", - "object.entries": "^1.1.2" - } - }, - "eslint-config-nhsuk": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/eslint-config-nhsuk/-/eslint-config-nhsuk-0.17.0.tgz", - "integrity": "sha512-4ScoK+ukA6kBBnFZW8QXoFjPtUuk5CiUfZu/tLeM4uwPmCwSHjaqBVhKWvJdHmhEIsZOrzbTOw5UXYkjU1SzAg==", - "dev": true, - "requires": { - "eslint": "^5.0.0", - "eslint-config-airbnb-base": "^13.0.0", - "eslint-plugin-import": "^2.0.0", - "eslint-plugin-json": "^1.0.0", - "eslint-plugin-mocha": "^5.0.0" - }, - "dependencies": { - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, -<<<<<<< HEAD -======= - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", - "esutils": "^2.0.2", - "file-entry-cache": "^5.0.1", - "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", - "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", - "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", - "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", - "table": "^5.2.3", - "text-table": "^0.2.0" - } - }, - "eslint-config-airbnb-base": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz", - "integrity": "sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w==", - "dev": true, - "requires": { - "confusing-browser-globals": "^1.0.5", - "object.assign": "^4.1.0", - "object.entries": "^1.1.0" - } - }, - "eslint-plugin-json": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-1.4.0.tgz", - "integrity": "sha512-CECvgRAWtUzuepdlPWd+VA7fhyF9HT183pZnl8wQw5x699Mk/MbME/q8xtULBfooi3LUbj6fToieNmsvUcDxWA==", - "dev": true, - "requires": { - "vscode-json-languageservice": "^3.2.1" - } - }, - "eslint-plugin-mocha": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-5.3.0.tgz", - "integrity": "sha512-3uwlJVLijjEmBeNyH60nzqgA1gacUWLUmcKV8PIGNvj1kwP/CTgAWQHn2ayyJVwziX+KETkr9opNwT1qD/RZ5A==", - "dev": true, - "requires": { - "ramda": "^0.26.1" - } - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", - "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - } - }, - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - }, - "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", - "dev": true, - "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" - } - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "file-entry-cache": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", - "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", - "dev": true, - "requires": { - "flat-cache": "^2.0.1" - } - }, - "flat-cache": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", - "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", - "dev": true, - "requires": { - "flatted": "^2.0.0", - "rimraf": "2.6.3", - "write": "1.0.3" - } - }, - "flatted": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", - "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", - "dev": true - }, - "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "ramda": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", - "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", - "dev": true - }, - "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", - "dev": true - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "dev": true, - "requires": { -<<<<<<< HEAD - "glob": "^7.1.3" - } - }, - "run-async": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", - "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", - "dev": true - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "slice-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", - "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "astral-regex": "^1.0.0", - "is-fullwidth-code-point": "^2.0.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", -======= ->>>>>>> update package dependencies to latest versions "dev": true, "requires": { "@babel/highlight": "^7.10.4" @@ -26911,10 +26352,16 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, "globals": { - "version": "13.8.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.8.0.tgz", - "integrity": "sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q==", + "version": "13.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.9.0.tgz", + "integrity": "sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==", "dev": true, "requires": { "type-fest": "^0.20.2" @@ -26997,7 +26444,6 @@ "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true }, ->>>>>>> use the latest version of highlight.js "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", @@ -27294,8 +26740,6 @@ "version": "5.4.6", "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", -<<<<<<< HEAD -<<<<<<< HEAD "dev": true, "requires": { "ajv": "^6.10.2", @@ -27321,45 +26765,6 @@ "requires": { "isexe": "^2.0.0" } -<<<<<<< HEAD -======= - }, - "write": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", - "dev": true, - "requires": { - "mkdirp": "^0.5.1" -======= -======= ->>>>>>> update package dependencies to latest versions - "dev": true, - "requires": { - "ajv": "^6.10.2", - "lodash": "^4.17.14", - "slice-ansi": "^2.1.0", - "string-width": "^3.0.0" - } - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } ->>>>>>> use the latest version of highlight.js } } }, @@ -27982,37 +27387,12 @@ "dev": true }, "figures": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", "dev": true, "requires": { "escape-string-regexp": "^1.0.5" -======= -<<<<<<< HEAD - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" -======= -======= ->>>>>>> update package dependencies to latest versions - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" -<<<<<<< HEAD ->>>>>>> use the latest version of highlight.js ->>>>>>> use the latest version of highlight.js -======= ->>>>>>> update package dependencies to latest versions } }, "file-entry-cache": { @@ -29116,9 +28496,9 @@ "integrity": "sha512-HVqALKZlR95ROkrnesdhbbZJFi/rIVSoNq6f3jA/9u6MIbTsPh3xZwihjeI5+DO/2sOV6HMHooXcEOuwskHpTg==" }, "highlight.js": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.2.tgz", - "integrity": "sha512-oFLl873u4usRM9K63j4ME9u3etNF0PLiJhSQ8rdfuL51Wn3zkD6drf9ZW0dOzjnZI22YYG24z30JcmfCZjMgYg==" + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", + "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==" }, "hmac-drbg": { "version": "1.0.1", @@ -29411,45 +28791,15 @@ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "inquirer": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "6.5.2", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", -======= -<<<<<<< HEAD - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", - "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", ->>>>>>> use the latest version of highlight.js "dev": true, "requires": { "ansi-escapes": "^3.2.0", "chalk": "^2.4.2", "cli-cursor": "^2.1.0", "cli-width": "^2.0.0", -<<<<<<< HEAD -======= - "figures": "^1.3.5", - "lodash": "^4.3.0", - "readline2": "^1.0.1", - "run-async": "^0.1.0", - "rx-lite": "^3.1.2", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.0", -======= -======= ->>>>>>> update package dependencies to latest versions - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", ->>>>>>> use the latest version of highlight.js "external-editor": "^3.0.3", "figures": "^2.0.0", "lodash": "^4.17.12", @@ -29458,28 +28808,13 @@ "rxjs": "^6.4.0", "string-width": "^2.1.0", "strip-ansi": "^5.1.0", -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> use the latest version of highlight.js ->>>>>>> use the latest version of highlight.js -======= ->>>>>>> update package dependencies to latest versions "through": "^2.3.6" }, "dependencies": { "ansi-escapes": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", -======= -<<<<<<< HEAD - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", ->>>>>>> use the latest version of highlight.js "dev": true }, "ansi-regex": { @@ -29544,72 +28879,6 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true -======= -======= ->>>>>>> update package dependencies to latest versions - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, - "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - } - } } } }, @@ -32154,27 +31423,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "mute-stream": { -<<<<<<< HEAD -<<<<<<< HEAD "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", -======= -<<<<<<< HEAD - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", - "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", -======= - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", ->>>>>>> use the latest version of highlight.js ->>>>>>> use the latest version of highlight.js -======= - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", ->>>>>>> update package dependencies to latest versions "dev": true }, "nan": { @@ -34036,33 +33287,6 @@ } }, "restore-cursor": { -<<<<<<< HEAD -<<<<<<< HEAD - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", -======= -<<<<<<< HEAD - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", ->>>>>>> use the latest version of highlight.js - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "dependencies": { - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true -<<<<<<< HEAD -======= -======= -======= ->>>>>>> update package dependencies to latest versions "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", @@ -34077,7 +33301,6 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "dev": true ->>>>>>> use the latest version of highlight.js }, "onetime": { "version": "2.0.1", @@ -34087,13 +33310,6 @@ "requires": { "mimic-fn": "^1.0.0" } -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> use the latest version of highlight.js ->>>>>>> use the latest version of highlight.js -======= ->>>>>>> update package dependencies to latest versions } } }, @@ -34129,32 +33345,10 @@ "dev": true }, "run-async": { -<<<<<<< HEAD -<<<<<<< HEAD -======= -<<<<<<< HEAD - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", - "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", - "dev": true, - "requires": { - "once": "^1.3.0" - } -======= ->>>>>>> use the latest version of highlight.js -======= ->>>>>>> update package dependencies to latest versions "version": "2.4.1", "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "dev": true -<<<<<<< HEAD -<<<<<<< HEAD -======= ->>>>>>> use the latest version of highlight.js ->>>>>>> use the latest version of highlight.js -======= ->>>>>>> update package dependencies to latest versions }, "run-queue": { "version": "1.0.3", @@ -34806,12 +34000,6 @@ "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", "dev": true }, - "ansi-escapes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", - "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", - "dev": true - }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", @@ -34979,31 +34167,6 @@ "string-width": "^1.0.1", "strip-ansi": "^3.0.0", "through": "^2.3.6" -<<<<<<< HEAD -======= - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } ->>>>>>> update package dependencies to latest versions } }, "is-fullwidth-code-point": { @@ -38472,27 +37635,9 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { -<<<<<<< HEAD -<<<<<<< HEAD - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", -======= -<<<<<<< HEAD - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", - "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", -======= - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", - "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", ->>>>>>> use the latest version of highlight.js ->>>>>>> use the latest version of highlight.js -======= "version": "1.0.3", "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", ->>>>>>> update package dependencies to latest versions "dev": true, "requires": { "mkdirp": "^0.5.1" diff --git a/package.json b/package.json index 900f632c6..dc9bd4332 100755 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "name": "nhsuk-service-manual", +<<<<<<< HEAD <<<<<<< HEAD "version": "4.2.0", ======= @@ -9,6 +10,9 @@ "version": "5.0.0", >>>>>>> populate CHANGELOG for nunjucks macro options and bump version >>>>>>> populate CHANGELOG for nunjucks macro options and bump version +======= + "version": "5.0.0", +>>>>>>> update dependencies to latest versions "description": "NHS digital service manual", "main": "app.js", "directories": { From 5b188d3c0f18c116146db2720cc2be84247b33fa Mon Sep 17 00:00:00 2001 From: AdamChrimes Date: Wed, 9 Jun 2021 11:35:10 +0100 Subject: [PATCH 11/11] improvements and fixing to Nunjucks arguments descriptions --- CHANGELOG.md | 5 +---- .../components/action-link/macro-options.json | 2 +- .../components/breadcrumbs/macro-options.json | 2 +- .../components/card/macro-options.json | 8 ++++---- .../components/details/macro-options.json | 12 ------------ .../do-and-dont-lists/macro-options.json | 14 +++++++------- .../components/error-message/macro-options.json | 2 +- .../components/header/macro-options.json | 2 +- .../components/hint-text/macro-options.json | 2 +- .../components/images/macro-options.json | 4 ++-- .../components/skip-link/macro-options.json | 6 +++--- .../components/summary-list/macro-options.json | 16 ++++++++-------- .../components/table/macro-options.json | 2 +- .../components/text-input/macro-options.json | 2 +- .../warning-callout/macro-options.json | 8 +++++++- package-lock.json | 11 ----------- package.json | 12 ------------ 17 files changed, 39 insertions(+), 71 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1b6372b1..a2fb524f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # NHS digital service manual Changelog -## 5.0.0 - Unreleased +## 5.0.0 - 14 June 2021 :new: **New features** @@ -10,7 +10,6 @@ - Update dependencies to the latest versions -<<<<<<< HEAD ## 4.2.0 - 10 June 2021 :new: **New content** @@ -26,8 +25,6 @@ - Fix broken health literacy link on the service standard pages [Issue 1136](https://github.com/nhsuk/nhsuk-service-manual/issues/1136) -======= ->>>>>>> update dependencies to latest versions ## 4.1.3 - 8 June 2021 :wrench: **Fixes** diff --git a/app/views/design-system/components/action-link/macro-options.json b/app/views/design-system/components/action-link/macro-options.json index c0813650c..717bb088e 100644 --- a/app/views/design-system/components/action-link/macro-options.json +++ b/app/views/design-system/components/action-link/macro-options.json @@ -16,7 +16,7 @@ "name": "openInNewWindow", "type": "boolean", "required": false, - "description": "If set to true, then the link will open in a new window" + "description": "If set to true, then the link will open in a new window." }, { "name": "classes", diff --git a/app/views/design-system/components/breadcrumbs/macro-options.json b/app/views/design-system/components/breadcrumbs/macro-options.json index d0f169b61..693b63827 100644 --- a/app/views/design-system/components/breadcrumbs/macro-options.json +++ b/app/views/design-system/components/breadcrumbs/macro-options.json @@ -16,7 +16,7 @@ "name": "href", "type": "string", "required": false, - "description": "Link for the breadcrumbs item." + "description": "The value of the breadcrumb item link href attribute." }, { "name": "attributes", diff --git a/app/views/design-system/components/card/macro-options.json b/app/views/design-system/components/card/macro-options.json index eb3fd9d51..916d3ee5b 100644 --- a/app/views/design-system/components/card/macro-options.json +++ b/app/views/design-system/components/card/macro-options.json @@ -22,25 +22,25 @@ "name": "headingLevel", "type": "integer", "required": false, - "description": "Classes to add to the card heading." + "description": "Optional heading level for the card heading. Default: 2" }, { "name": "href", "type": "string", - "required": true, + "required": false, "description": "The value of the card link href attribute." }, { "name": "clickable", "type": "boolean", "required": false, - "description": "If set to true, then the class `nhsuk-card--clickable` will be applied." + "description": "If set to true, then the whole Card will become a clickable Card variant." }, { "name": "feature", "type": "boolean", "required": false, - "description": "If set to true, then the class `nhsuk-card__heading--feature` and `nhsuk-card__content--feature` will be applied." + "description": "If set to true, then the Card will become a feature Card variant." }, { "name": "imgURL", diff --git a/app/views/design-system/components/details/macro-options.json b/app/views/design-system/components/details/macro-options.json index 9971e650a..e302a38a1 100644 --- a/app/views/design-system/components/details/macro-options.json +++ b/app/views/design-system/components/details/macro-options.json @@ -12,18 +12,6 @@ "required": true, "description": "HTML content to be displayed within the details component." }, - { - "name": "id", - "type": "string", - "required": false, - "description": "Id to add to the details element." - }, - { - "name": "open", - "type": "boolean", - "required": false, - "description": "If true, details element will be expanded." - }, { "name": "classes", "type": "string", diff --git a/app/views/design-system/components/do-and-dont-lists/macro-options.json b/app/views/design-system/components/do-and-dont-lists/macro-options.json index 892e0a946..2b4111108 100644 --- a/app/views/design-system/components/do-and-dont-lists/macro-options.json +++ b/app/views/design-system/components/do-and-dont-lists/macro-options.json @@ -4,25 +4,25 @@ "name": "title", "type": "string", "required": true, - "description": "Title to be displayed on the do and don't list component.." + "description": "Title to be displayed on the do and don't list component." }, { "name": "type", "type": "string", "required": true, - "description": "Type of do and don't list component, \"cross\", \"tick\"" + "description": "Type of do and don't list component, \"cross\", \"tick\"." }, { "name": "items", "type": "array", "required": true, - "description": "Array of do and dont items objects.", + "description": "Array of do and don't items objects.", "params": [ { "name": "item", "type": "string", "required": true, - "description": "Text to use within each do and dont item label." + "description": "Text to use within each do and don't item label." } ] }, @@ -30,7 +30,7 @@ "name": "hidePrefix", "type": "boolean", "required": false, - "description": "If set to true when type is \"cross\", then removes the default \"do not\" text prefix to each item" + "description": "If set to true when type is \"cross\", then removes the default \"do not\" text prefix to each item." }, { "name": "headingLevel", @@ -42,13 +42,13 @@ "name": "classes", "type": "string", "required": false, - "description": "Classes to add to the details element." + "description": "Classes to add to the do and don't list container." }, { "name": "attributes", "type": "object", "required": false, - "description": "HTML attributes (for example data attributes) to add to the details element." + "description": "HTML attributes (for example data attributes) to add to the do and don't list container." } ] } diff --git a/app/views/design-system/components/error-message/macro-options.json b/app/views/design-system/components/error-message/macro-options.json index 4b02a8da1..5162756e0 100644 --- a/app/views/design-system/components/error-message/macro-options.json +++ b/app/views/design-system/components/error-message/macro-options.json @@ -28,7 +28,7 @@ "name": "attributes", "type": "object", "required": false, - "description": "HTML attributes (for example data attributes) to add to the error message span tag" + "description": "HTML attributes (for example data attributes) to add to the error message span tag." } ] } diff --git a/app/views/design-system/components/header/macro-options.json b/app/views/design-system/components/header/macro-options.json index 932c8b27a..5e63cc1f3 100644 --- a/app/views/design-system/components/header/macro-options.json +++ b/app/views/design-system/components/header/macro-options.json @@ -80,7 +80,7 @@ "name": "transactionalService", "type": "object", "required": false, - "description": "Settings for transactional service header", + "description": "Settings for transactional service header.", "params": [ { "name": "name", diff --git a/app/views/design-system/components/hint-text/macro-options.json b/app/views/design-system/components/hint-text/macro-options.json index 78543cbd7..3a9cd15bb 100644 --- a/app/views/design-system/components/hint-text/macro-options.json +++ b/app/views/design-system/components/hint-text/macro-options.json @@ -16,7 +16,7 @@ "name": "id", "type": "string", "required": false, - "description": "Optional id attribute to add to the hint." + "description": "Id attribute to add to the hint." }, { "name": "classes", diff --git a/app/views/design-system/components/images/macro-options.json b/app/views/design-system/components/images/macro-options.json index c443697d4..3156de293 100644 --- a/app/views/design-system/components/images/macro-options.json +++ b/app/views/design-system/components/images/macro-options.json @@ -34,13 +34,13 @@ "name": "classes", "type": "string", "required": false, - "description": "Classes to add to the button component." + "description": "Classes to add to the image container." }, { "name": "attributes", "type": "object", "required": false, - "description": "HTML attributes (for example data attributes) to add to the button component." + "description": "HTML attributes (for example data attributes) to add to the image container." } ] } diff --git a/app/views/design-system/components/skip-link/macro-options.json b/app/views/design-system/components/skip-link/macro-options.json index c5dc085b5..08375a33a 100644 --- a/app/views/design-system/components/skip-link/macro-options.json +++ b/app/views/design-system/components/skip-link/macro-options.json @@ -3,14 +3,14 @@ { "name": "text", "type": "string", - "required": true, - "description": "Text to use within the skip link component." + "required": false, + "description": "Text to use within the skip link component. Defaults to `Skip to main content` if you do not provide a value." }, { "name": "href", "type": "string", "required": false, - "description": "The value of the skip link’s `href` attribute. Defaults to `#content` if you do not provide a value." + "description": "The value of the skip link’s `href` attribute. Defaults to `#maincontent` if you do not provide a value." }, { "name": "classes", diff --git a/app/views/design-system/components/summary-list/macro-options.json b/app/views/design-system/components/summary-list/macro-options.json index 98259c57a..42bd71bae 100644 --- a/app/views/design-system/components/summary-list/macro-options.json +++ b/app/views/design-system/components/summary-list/macro-options.json @@ -10,7 +10,7 @@ "name": "classes", "type": "string", "required": false, - "description": "Classes to add to the row `div`" + "description": "Classes to add to the row `div`." }, { "name": "key.text", @@ -27,7 +27,7 @@ "name": "key.classes", "type": "string", "required": false, - "description": "Classes to add to the key wrapper" + "description": "Classes to add to the key wrapper." }, { "name": "value.text", @@ -45,25 +45,25 @@ "name": "value.classes", "type": "string", "required": false, - "description": "Classes to add to the value wrapper" + "description": "Classes to add to the value wrapper." }, { "name": "actions.classes", "type": "string", "required": false, - "description": "Classes to add to the actions wrapper" + "description": "Classes to add to the actions wrapper." }, { "name": "actions.items", "type": "array", "required": false, - "description": "Array of action item objects", + "description": "Array of action item objects.", "params": [ { "name": "href", "type": "string", "required": true, - "description": "The value of the link href attribute for an action item" + "description": "The value of the link href attribute for an action item." }, { "name": "text", @@ -91,13 +91,13 @@ "name": "classes", "type": "string", "required": false, - "description": "Classes to add to the container." + "description": "Classes to add to the summary list container." }, { "name": "attributes", "type": "object", "required": false, - "description": "HTML attributes (for example data attributes) to add to the container." + "description": "HTML attributes (for example data attributes) to add to the summary list container." } ] } diff --git a/app/views/design-system/components/table/macro-options.json b/app/views/design-system/components/table/macro-options.json index 1ec5057d0..5f826ae8d 100644 --- a/app/views/design-system/components/table/macro-options.json +++ b/app/views/design-system/components/table/macro-options.json @@ -92,7 +92,7 @@ "name": "caption", "type": "string", "required": false, - "description": "Caption text" + "description": "Caption text." }, { "name": "captionClasses", diff --git a/app/views/design-system/components/text-input/macro-options.json b/app/views/design-system/components/text-input/macro-options.json index a25ec2449..6cb44930c 100644 --- a/app/views/design-system/components/text-input/macro-options.json +++ b/app/views/design-system/components/text-input/macro-options.json @@ -163,7 +163,7 @@ "name": "attributes", "type": "object", "required": false, - "description": "HTML attributes (for example data attributes) to add to the anchor tag." + "description": "HTML attributes (for example data attributes) to add to the input." } ] } diff --git a/app/views/design-system/components/warning-callout/macro-options.json b/app/views/design-system/components/warning-callout/macro-options.json index fba4a78d6..21e1ab17f 100644 --- a/app/views/design-system/components/warning-callout/macro-options.json +++ b/app/views/design-system/components/warning-callout/macro-options.json @@ -4,7 +4,13 @@ "name": "heading", "type": "string", "required": true, - "description": "Heading to be used within the warning callout." + "description": "Heading to be used on the warning callout." + }, + { + "name": "headingLevel", + "type": "integer", + "required": false, + "description": "Optional heading level for the heading. Default: 3" }, { "name": "html", diff --git a/package-lock.json b/package-lock.json index 5536bf238..84a3e2ffb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,5 @@ { "name": "nhsuk-service-manual", -<<<<<<< HEAD -<<<<<<< HEAD - "version": "4.2.0", -======= -<<<<<<< HEAD - "version": "4.1.3", ->>>>>>> populate CHANGELOG for nunjucks macro options and bump version - "lockfileVersion": 2, -======= -======= ->>>>>>> update dependencies to latest versions "version": "5.0.0", "lockfileVersion": 2, "requires": true, diff --git a/package.json b/package.json index dc9bd4332..05a2ec892 100755 --- a/package.json +++ b/package.json @@ -1,18 +1,6 @@ { "name": "nhsuk-service-manual", -<<<<<<< HEAD -<<<<<<< HEAD - "version": "4.2.0", -======= -<<<<<<< HEAD - "version": "4.1.3", -======= "version": "5.0.0", ->>>>>>> populate CHANGELOG for nunjucks macro options and bump version ->>>>>>> populate CHANGELOG for nunjucks macro options and bump version -======= - "version": "5.0.0", ->>>>>>> update dependencies to latest versions "description": "NHS digital service manual", "main": "app.js", "directories": {