diff --git a/.Rbuildignore b/.Rbuildignore index 5e3177e..07c0d96 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -2,3 +2,7 @@ ^\.Rproj\.user$ ^cran-comments\.md$ ^css_changes\.md$ +^_pkgdown\.yml$ +^docs$ +^pkgdown$ +^\.github$ diff --git a/.github/.gitignore b/.github/.gitignore new file mode 100644 index 0000000..2d19fc7 --- /dev/null +++ b/.github/.gitignore @@ -0,0 +1 @@ +*.html diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml new file mode 100644 index 0000000..e494350 --- /dev/null +++ b/.github/workflows/R-CMD-check.yaml @@ -0,0 +1,52 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, master] + pull_request: + branches: [main, master, development, update-to-gds-v5.4] + +name: R-CMD-check + +permissions: read-all + +jobs: + R-CMD-check: + runs-on: ${{ matrix.config.os }} + + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + + strategy: + fail-fast: false + matrix: + config: + - {os: macos-latest, r: 'release'} + - {os: windows-latest, r: 'release'} + - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} + - {os: ubuntu-latest, r: 'release'} + - {os: ubuntu-latest, r: 'oldrel-1'} + + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + R_KEEP_PKG_SOURCE: yes + + steps: + - uses: actions/checkout@v4 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + r-version: ${{ matrix.config.r }} + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::rcmdcheck + needs: check + + - uses: r-lib/actions/check-r-package@v2 + with: + upload-snapshots: true + build_args: 'c("--no-manual","--compact-vignettes=gs+qpdf")' diff --git a/.github/workflows/pkgdown.yaml b/.github/workflows/pkgdown.yaml new file mode 100644 index 0000000..c9f0165 --- /dev/null +++ b/.github/workflows/pkgdown.yaml @@ -0,0 +1,50 @@ +# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help +on: + push: + branches: [main, master] + pull_request: + branches: [main, master] + release: + types: [published] + workflow_dispatch: + +name: pkgdown + +permissions: read-all + +jobs: + pkgdown: + runs-on: ubuntu-latest + # Only restrict concurrency for non-PR jobs + concurrency: + group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }} + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + + - uses: r-lib/actions/setup-pandoc@v2 + + - uses: r-lib/actions/setup-r@v2 + with: + use-public-rspm: true + + - uses: r-lib/actions/setup-r-dependencies@v2 + with: + extra-packages: any::pkgdown, local::. + needs: website + + - name: Build site + run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) + shell: Rscript {0} + + - name: Deploy to GitHub pages 🚀 + if: github.event_name != 'pull_request' + uses: JamesIves/github-pages-deploy-action@v4.5.0 + with: + clean: false + branch: gh-pages + folder: docs diff --git a/.gitignore b/.gitignore index 728e389..215a704 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ .Rhistory .RData .DS_Store +docs diff --git a/DESCRIPTION b/DESCRIPTION index e49cb96..873f6aa 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,24 +1,32 @@ Package: shinyGovstyle Title: Custom Gov Style Inputs for Shiny -Version: 0.0.8 -Authors@R: person( - given = "Ross", - family = "Wyatt", - email = "ross.wyatt@justice.gov.uk", - role = c("aut", "cre")) -Description: Collection of 'shiny' application styling that are the based on - the GOV.UK Design System. See - for details. -Depends: R (>= 3.1.0) +Version: 0.1.0 +Authors@R: c( + person("Ross", "Wyatt", , "ross.wyatt@justice.gov.uk", role = c("aut", "cre")), + person("Cameron", "Race", , "cameron.race@education.gov.uk", role = "ctb"), + person("Sarah", "Wong", role = "ctb"), + person("Richard", "Bielby", , "richard.bielby@education.gov.uk", role = "ctb"), + person("Charlotte", "Foster", , "charlotte.foster@education.gov.uk", role = "ctb"), + person("Jeni", "Martin", role = "ctb") + ) +Description: Collection of 'shiny' application styling that are the based + on the GOV.UK Design System. See + for details. License: GPL-3 -Encoding: UTF-8 -RoxygenNote: 7.1.2 URL: https://github.com/moj-analytical-services/shinyGovstyle -BugReports: https://github.com/moj-analytical-services/shinyGovstyle/issues +BugReports: + https://github.com/moj-analytical-services/shinyGovstyle/issues +Depends: + R (>= 3.1.0) Imports: - shiny (>= 0.14), htmltools, + jsonlite, + magrittr, + purrr, + shiny (>= 0.14), shinyjs, - jsonlite + stringr Suggests: testthat +Encoding: UTF-8 +RoxygenNote: 7.3.2 diff --git a/NAMESPACE b/NAMESPACE index 9e251b5..6cb57a7 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,10 +1,12 @@ # Generated by roxygen2: do not edit by hand +export("%>%") export(accordion) export(backlink_Input) export(banner) export(button_Input) export(checkbox_Input) +export(contents_link) export(cookieBanner) export(date_Input) export(details) @@ -41,5 +43,6 @@ export(word_count) importFrom(htmltools,attachDependencies) importFrom(htmltools,findDependencies) importFrom(htmltools,htmlDependency) +importFrom(magrittr,"%>%") importFrom(shiny,addResourcePath) importFrom(utils,packageVersion) diff --git a/NEWS.md b/NEWS.md index 6c98f17..e914fd8 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,13 @@ +# shinyGovstyle 0.1.0 + +* Update the css to v5.4.0 and made fixes associated with that. +* No longer requires rem remover step to update for future changes +* One of the major changes in the css is a change in look and functionality for the accordion. Show/hide all works as expected now. +* Another major change to how the radio buttons look and feel, in line with the v5.4.0 design examples. +* Added additional functions to the `run_example` for ease of testing +* Added the contents_links() function as a helper for getting the styling and behaviour for left navigation + + # shinyGovstyle 0.0.8 * Update the css to v4.0.0 and made fixes associated with that. diff --git a/R/accordion.R b/R/accordion.R index 5a78c31..857bab7 100644 --- a/R/accordion.R +++ b/R/accordion.R @@ -54,6 +54,7 @@ accordion <- function(inputId, titles, descriptions){ class = "govuk-accordion__show-all", `aria-expanded` = "false", shiny::tags$span( + id="show-all-chevron", class=paste( "govuk-accordion-nav__chevron", "govuk-accordion-nav__chevron--down"), diff --git a/R/attachDependency.R b/R/attachDependency.R index 56bf132..d9b00ea 100644 --- a/R/attachDependency.R +++ b/R/attachDependency.R @@ -63,6 +63,18 @@ attachDependency <- function(tag, widget = NULL) { ) } + else if (widget == "contents_link") { + dep <- list( + dep, + htmltools::htmlDependency( + name = "contents_link", + version = version, + src = c(href="shinyGovstyle/js"), + script = "contents_link.js" + ) + ) + } + } htmltools::attachDependencies(tag, dep, append = TRUE) diff --git a/R/backlink_Input.R b/R/backlink_Input.R index b75fc5c..5b08295 100644 --- a/R/backlink_Input.R +++ b/R/backlink_Input.R @@ -2,6 +2,7 @@ #' #' This function adds a back link to the page #' @param inputId The input slot that will be used to access the value. +#' @param label The link text for the backlink, default is "Back" #' @return a backlink html shiny object #' @keywords backlink #' @export @@ -42,13 +43,12 @@ #' shinyApp(ui = ui, server = server) #' } -backlink_Input <- function(inputId) { +backlink_Input <- function(inputId, label = "Back") { value <- shiny::restoreInput(id = inputId, default = NULL) - govBacklink <- shiny::tags$button("Back", - id = inputId, - class = paste0("govuk-back-link", - " action-button"), + govBacklink <- shiny::actionLink(label = label, + inputId = inputId, + class = paste0("govuk-back-link"), `data-val` = value) attachDependency(govBacklink) diff --git a/R/banner.R b/R/banner.R index 7405b91..9480a87 100644 --- a/R/banner.R +++ b/R/banner.R @@ -17,7 +17,7 @@ #' secondary_text = "User Examples", #' logo="shinyGovstyle/images/moj_logo.png"), #' shinyGovstyle::banner( -#' inputId = "banner", type = "beta", 'This is a new service') +#' inputId = "banner", type = "Beta", 'This is a new service') #' ) #' #' server <- function(input, output, session) {} diff --git a/R/clean_heading_text.R b/R/clean_heading_text.R new file mode 100644 index 0000000..7db93da --- /dev/null +++ b/R/clean_heading_text.R @@ -0,0 +1,13 @@ +#' Clean heading text function +#' This internal function is used in subcontents_links and heading_text to create an automated link between the two +#' @param text string +#' @return a string +#' @keywords internal +clean_heading_text <- function(text){ + + text %>% + stringr::str_replace_all(" ", "_") %>% + stringr::str_to_lower() %>% + stringr::str_remove_all( "[^_[a-z]]") + +} diff --git a/R/contents_links.R b/R/contents_links.R new file mode 100644 index 0000000..c28b4ac --- /dev/null +++ b/R/contents_links.R @@ -0,0 +1,285 @@ +#' Subcontents links function +#' This function is used internally within contents_link to create links to headings within pages. +#' @param subcontents_text_list vector of link text for subcontents +#' @param subcontents_id_list vector of link ids for subcontents. pass NAs for automatic matching to id in shinygovstyle::heading_text +#' @return a ol html shiny object +#' @keywords internal +#' @examples +#' if (interactive()) { +#' ui <- shiny::fluidPage( +#' shinyGovstyle::header( +#' main_text = "Example", +#' secondary_text = "User Examples", +#' logo = "shinyGovstyle/images/moj_logo.png" +#' ), +#' shiny::column( +#' width = 3, +#' id = "nav", +#' shiny::tags$div( +#' shiny::tags$h2("Contents"), +#' subcontents_links( +#' c("radio_button_Input (inline)", "button_Input"), +#' c(NA, NA) +#' ), +#' subcontents_links( +#' c("date_Input", "button_Input"), +#' c(NA, "button_input_text_types") +#' ) +#' ) +#' ) +#' ) +#' +#' server <- function(input, output, session) { +#' } +#' shiny::shinyApp(ui = ui, server = server) +#' } +subcontents_links <- function(subcontents_text_list, + subcontents_id_list) { + if (!missing(subcontents_id_list)) { + # check if custom link_id_list is of equal length to links list + if (length(subcontents_text_list) != length(subcontents_id_list)) { + message( + "`subcontents_id_list` must be equal length to `subcontents_text_list`" + ) + } + } + + # create sidelink + create_sidelink <- function(link_text, link_id) { + # match id created in shinygovstyle::heading_text if custom id not specifcied + if (is.na(link_id)) { + link_id <- clean_heading_text(link_text) + } + + shiny::tags$li( + "\u2014 ", + shiny::tags$a(class = "govuk-link--no-visited-state", link_text, href = stringr::str_c("\u0023", link_id)) + ) + } + + + # create
  • tags + list_tags <- purrr::map2(subcontents_text_list, subcontents_id_list, create_sidelink) + + + # return
      output + shiny::tags$ol(class = "govuk-subcontents", list_tags) +} + + +#' Contents link function +#' +#' This function creates an action link to nav between tabs and optionally link to subcontents headers. +#' @param link_text vector of link text for contents +#' @param input_id contents button id +#' @param subcontents_text_list vector of link text for subcontents +#' @param subcontents_id_list vector of link ids for subcontents. if missing automatically matches to id in shinygovstyle::heading_text +#' @return an action button html shiny object +#' @export +#' @examples +#' if (interactive()) { +#' ui <- shiny::fluidPage( +#' title="ShinyGovstyle", +#' cookieBanner("Run Example"), +#' header("MOJ", "ShinyGovstyle Example", +#' logo="shinyGovstyle/images/moj_logo-1.png", logo_width = 66), +#' banner( +#' "banner", +#' "Beta", +#' 'This is a new service \u002D your +#' feedback will help us to improve it.'), +#' +#' #Need this to make the error and word count work +#' shinyjs::useShinyjs(), +#' +#' #Add a message to show users how to see this code +#' shiny::tags$br(), +#' shiny::markdown( +#' "Run ```View(run_example)``` in console to see the code for this app"), +#' +#' +#' gov_row( +#' # Nav columns +#' shiny::column( +#' +#' width = 3, +#' id = "nav", # DO NOT REMOVE ID +#' +#' # Contents box +#' shiny::tags$div( +#' id = "govuk-contents-box", #DO NOT REMOVE ID +#' class = "govuk-contents-box", #DO NOT REMOVE CLASS +#' +#' shiny::tags$h2("Contents"), +#' +#' # Text types tab +#' contents_link( +#' "Text Types", +#' "text_types_button", +#' subcontents_text_list = c("date_Input", +#' "text_Input", +#' "text_area_Input", +#' "button_Input"), +#' subcontents_id_list = c(NA, NA, NA, "button_input_text_types") +#' ), +#' +#' # Tables tabs and accordions tab +#' contents_link( +#' "Tables, tabs and accordions", +#' "tables_tabs_and_accordions_button", +#' subcontents_text_list = c("govTable", "govTabs", "accordions", "button_Input"), +#' subcontents_id_list = c(NA, NA, NA, "button_input_tables_tabs_accordions") +#' ), +#' +#' +#' contents_link( +#' "Cookies", +#' "cookies_button"), +#' +#' ) +#' ), +#' +#' +#' shiny::column( width = 9, +#' +#' id = "main_col", # DO NOT REMOVE ID +#' +#' #Set up a nav panel so everything not on single page +#' shiny::tabsetPanel( +#' type = "hidden", +#' id = "tab-container", # DO NOT REMOVE ID +#' +#' shiny::tabPanel( +#' "Text Types", +#' value = "text_types", +#' gov_layout( +#' size = "two-thirds", +#' backlink_Input("back1"), +#' heading_text("Page 2", size = "l"), +#' label_hint("label2", "These are some examples of the types of user +#' text inputs that you can use"), +#' heading_text("date_Input", size = "s"), +#' date_Input( +#' inputId = "date1", +#' label = "What is your date of birth?", +#' hint_label = "For example, 31 3 1980"), +#' heading_text("text_Input", size = "s"), +#' text_Input(inputId = "txt1", label = "Event name"), +#' heading_text("text_area_Input", size = "s"), +#' text_area_Input( +#' inputId = "text_area1", +#' label = "Can you provide more detail?", +#' hint_label = "Do not include personal or financial information, +#' like your National Insurance number or credit card details."), +#' text_area_Input( +#' inputId = "text_area2", +#' label = "How are you today?", +#' hint_label = "Leave blank to trigger error", +#' error = T, +#' error_message = "Please do not leave blank", +#' word_limit = 300), +#' heading_text( +#' "button_Input", size = "s", +#' id = "button_input_text_types"), +#' button_Input("btn2", "Go to next page"), +#' button_Input("btn3", "Check for errors", type = "warning") +#' ) +#' ), +#' +#' shiny::tabPanel( +#' "Tables, tabs and accordions", +#' value = "tables_tabs_and_accordions", +#' gov_layout( +#' size = "two-thirds", +#' backlink_Input("back2"), +#' heading_text("Page 3", size = "l"), +#' label_hint("label3", "These are some examples of using tabs and +#' tables"), +#' heading_text("govTable", size = "s"), +#' heading_text("govTabs", size = "s"), +#' heading_text("accordions", size = "s"), +#' shinyGovstyle:: accordion( +#' "acc1", +#' c("Writing well for the web", +#' "Writing well for specialists", +#' "Know your audience", +#' "How people read" +#' ), +#' c("This is the content for Writing well for the web.", +#' "This is the content for Writing well for specialists.", +#' "This is the content for Know your audience.", +#' "This is the content for How people read." +#' )), +#' +#' heading_text( +#' "button_Input", size = "s", +#' id = "button_input_tables_tabs_accordions"), +#' button_Input("btn4", "Go to next page"), +#' ) +#' ), +#' +#' +#' #####################Create cookie panel################################ +#' shiny::tabPanel( +#' "Cookies", +#' value = "panel-cookies", +#' gov_layout( +#' size = "two-thirds", +#' heading_text("Cookie page", size = "l"), +#' label_hint("label-cookies", "This an example cookie page that could be +#' expanded") +#' ) +#' ))) +#' +#' +#' ), #end of gov row +#' +#' footer(TRUE) +#' +#' +#' ) #end of fluid page +#' +#' server <- function(input, output, session) { +#' +#' +#' # Tab nav +#' shiny::observeEvent(input$back2, { +#' shiny::updateTabsetPanel(session, "tab-container", selected = "text_types") +#' }) +#' +#' shiny::observeEvent(input$tables_tabs_and_accordions_button, { +#' shiny::updateTabsetPanel(session, "tab-container", selected = "tables_tabs_and_accordions") +#' }) +#' +#' shiny::observeEvent(input$cookies_button, { +#' shiny::updateTabsetPanel(session, "tab-container", selected = "panel-cookies") +#' }) +#' +#' } +#' +#' shiny::shinyApp(ui = ui, server = server) +#' } +contents_link <- function(link_text, + input_id, + subcontents_text_list, + subcontents_id_list) { + if (missing(subcontents_id_list) & !missing(subcontents_text_list)) { + subcontents_id_list <- rep(NA, length(subcontents_text_list)) + } + + contents_div <- shiny::tags$div( + class = "govuk-contents", + shiny::actionLink( + class = "govuk-contents__link govuk-link--no-visited-state", + inputId = input_id, + label = link_text + ), + + # add subcontents links if required + if (!missing(subcontents_text_list)) { + subcontents_links(subcontents_text_list, subcontents_id_list) + } + ) + + attachDependency(contents_div, "contents_link") +} diff --git a/R/cookieBanner.R b/R/cookieBanner.R index c888059..c01e3a0 100644 --- a/R/cookieBanner.R +++ b/R/cookieBanner.R @@ -43,7 +43,7 @@ #' }) #' #' observeEvent(input$cookieLink, { -#' #Need to link here to where further info is located. You can you +#' #Need to link here to where further info is located. You can use #' #updateTabsetPanel to have a cookie page for instance #' }) #' @@ -53,14 +53,10 @@ cookieBanner <- function(service_name) { - value <- shiny::restoreInput(id = "cookieLink", default = NULL) - govCookieLink <- shiny::tags$button( - "View cookies", - id = "cookieLink", - class = paste0("govuk-link", " action-button"), - `data-val` = value) - - attachDependency(govCookieLink) + govCookieLink <- shiny::actionLink( + inputId = "cookieLink", + label = "View cookies", + class = "govuk-link") cookieBanner_Input <- shiny::tags$div( diff --git a/R/govTabs.R b/R/govTabs.R index 046bec7..6a4954f 100644 --- a/R/govTabs.R +++ b/R/govTabs.R @@ -64,7 +64,7 @@ govTabs <- function(inputId, df, group_col) { #Put the lime with coconut and create the final thing - main_tab_div <- shiny::tags$div(class = "js-enabled", + main_tab_div <- shiny::tags$div(class = "govuk-frontend-supported", shiny::tags$h2(class = "govuk-tabs__title", "Contents"), tab_headers, main_temp_hold) diff --git a/R/header.R b/R/header.R index 82cb431..4757f30 100644 --- a/R/header.R +++ b/R/header.R @@ -70,7 +70,7 @@ header <- function(main_text, secondary_text, logo = NULL, shiny::tags$div(class = "govuk-header__content", shiny::tags$a( href = secondary_link, secondary_text, - class = "govuk-header__link govuk-header__link--service-name" + class = "govuk-header__link govuk-header__service-name" ) ) ) diff --git a/R/heading_text.R b/R/heading_text.R index bb6994d..beb8afb 100644 --- a/R/heading_text.R +++ b/R/heading_text.R @@ -3,6 +3,7 @@ #' This function create a heading text #' @param text_input Text to display #' @param size Text size using xl, l, m, s. Defaults to xl. +#' @param id Custom header id #' @return a heading text html shiny object #' @keywords heading #' @export @@ -23,8 +24,14 @@ #' shinyApp(ui = ui, server = server) #' } -heading_text <- function(text_input, size = "xl"){ +heading_text <- function(text_input, size = "xl", id){ + + if(missing(id)){ + id <- clean_heading_text(text_input) + } + govHeading <- shiny::tags$h1(shiny::HTML(text_input), - class=paste0("govuk-heading-", size)) + class=paste0("govuk-heading-", size), + id = id) attachDependency(govHeading) } diff --git a/R/run_example.R b/R/run_example.R index 21c2ddc..6af5f19 100644 --- a/R/run_example.R +++ b/R/run_example.R @@ -9,6 +9,19 @@ #' run_example() #'} run_example <- function(){ + Months <- c("January", "February", "March") + Bikes <- c(85, 75, 165) + Cars <- c(95, 55, 125) + example_data <- data.frame(Months, Bikes, Cars) + tabs <- c(rep("Past Day", 3), + rep("Past Week", 3), + rep("Past Month", 3), + rep("Past Year", 3)) + Case_manager <- rep(c("David Francis", "Paul Farmer", "Rita Patel"),4) + Cases_open <- c(3, 1, 2, 24, 16, 24, 98, 122, 126, 1380, 1129, 1539) + Cases_closed <- c(0, 0, 0, 18, 20, 27, 95, 131, 142, 1472, 1083, 1265) + data <- data.frame(tabs, Case_manager, Cases_open, Cases_closed) + shiny::shinyApp( ui = shiny::fluidPage( title="ShinyGovstyle", @@ -17,7 +30,7 @@ run_example <- function(){ logo="shinyGovstyle/images/moj_logo-1.png", logo_width = 66), banner( "banner", - "beta", + "Beta", 'This is a new service \u002D your feedback will help us to improve it.'), @@ -29,28 +42,112 @@ run_example <- function(){ shiny::markdown( "Run ```View(run_example)``` in console to see the code for this app"), + + gov_row( + # Nav columns + shiny::column( + + width = 3, + id = "nav", # DO NOT REMOVE ID + + # Contents box + shiny::tags$div( + id = "govuk-contents-box", #DO NOT REMOVE ID + class = "govuk-contents-box", #DO NOT REMOVE CLASS + + shiny::tags$h2("Contents"), + + # Select Types tab + contents_link( + "Select Types", + "select_types_button", + subcontents_text_list = + c( + "radio_button_Input (inline)", + "radio_button_Input (stacked)", + "checkbox_Input", + "select_Input", + "file_Input", + "button_Input" + + ) + + ), + + + + # Text types tab + contents_link( + "Text Types", + "text_types_button", + subcontents_text_list = c("date_Input", "text_Input", "text_area_Input", "button_Input"), + subcontents_id_list = c(NA, NA, NA, "button_input_text_types") + ), + + # Tables tabs and accordions tab + contents_link( + "Tables, tabs and accordions", + "tables_tabs_and_accordions_button", + subcontents_text_list = c("govTable", "govTabs", "accordions", "button_Input"), + subcontents_id_list = c(NA, NA, NA, "button_input_tables_tabs_accordions") + ), + + # Feedback types tab + contents_link( + "Feedback types", + "feedback_types_button", + subcontents_text_list = c( + "tag_Input", + "details", + "insert_text", + "warning_text", + "panel_output", + "noti_banner", + "gov_summary" + ) + ), + + + contents_link( + "Cookies", + "cookies_button"), + + ) + ), + + + +shiny::column( width = 9, + + id = "main_col", # DO NOT REMOVE ID + #Set up a nav panel so everything not on single page - shiny::navlistPanel( - "", - id="nav", - widths = c(2, 10), - well = FALSE, + shiny::tabsetPanel( + type = "hidden", + id = "tab-container", # DO NOT REMOVE ID #####################Create first panel################################ - shiny::tabPanel( + shiny::tabPanel( "Select Types", - value = "panel1", + value = "select_types", gov_layout( size = "two-thirds", - heading_text("Page 1", size = "l"), + + heading_text("Select Types", size = "l"), label_hint("label1", "These are some examples of the types of user select type inputs that you can use"), - heading_text("radio_button_Input", size = "s"), + heading_text("radio_button_Input (inline)", size = "s"), radio_button_Input( inputId = "name_changed", label = "Have you changed your name?", choices = c("Yes", "No"), inline = TRUE, hint_label = "This includes changing your last name or spelling your name differently."), + heading_text("radio_button_Input (stacked)", size = "s"), + radio_button_Input( + inputId = "name_changed", label = "Have you changed your name?", + choices = c("Yes", "No"), inline = FALSE, + hint_label = "This includes changing your last name or spelling + your name differently."), heading_text("checkbox_Input", size = "s"), checkbox_Input( inputId = "checkID", @@ -78,9 +175,9 @@ run_example <- function(){ #####################Create second panel################################ - shiny::tabPanel( + shiny::tabPanel( "Text Types", - value = "panel2", + value = "text_types", gov_layout( size = "two-thirds", backlink_Input("back1"), @@ -107,27 +204,73 @@ run_example <- function(){ error = T, error_message = "Please do not leave blank", word_limit = 300), - heading_text("button_Input", size = "s"), + heading_text("button_Input", size = "s", id = "button_input_text_types"), button_Input("btn2", "Go to next page"), button_Input("btn3", "Check for errors", type = "warning") ) ), #####################Create third panel################################ - shiny::tabPanel( - "Feedback Types", - value = "panel3", + shiny::tabPanel( + "Tables, tabs and accordions", + value = "tables_tabs_and_accordions", gov_layout( size = "two-thirds", - backlink_Input("back2"), + backlink_Input("back2"), heading_text("Page 3", size = "l"), - label_hint("label3", "These are some examples of the types of user + label_hint("label3", "These are some examples of using tabs and + tables"), + heading_text("govTable", size = "s"), + shinyGovstyle::govTable( + "tab1", example_data, "Test", "l", num_col = c(2,3), + width_overwrite = c("one-half", "one-quarter", "one-quarter")), + heading_text("govTabs", size = "s"), + shinyGovstyle::govTabs("tabsID", data, "tabs"), + heading_text("accordions", size = "s"), + shinyGovstyle:: accordion( + "acc1", + c("Writing well for the web", + "Writing well for specialists", + "Know your audience", + "How people read" + ), + c("This is the content for Writing well for the web.", + "This is the content for Writing well for specialists.", + "This is the content for Know your audience.", + "This is the content for How people read." + )), + + heading_text("button_Input", size = "s", id = "button_input_tables_tabs_accordions"), + button_Input("btn4", "Go to next page"), + ) + ), + + #####################Create feedback panel################################ + shiny::tabPanel( + "Feedback Types", + value = "feedback_types", + gov_layout( + size = "two-thirds", + backlink_Input("back3"), + heading_text("Feedback page", size = "l"), + label_hint("label-feedback", "These are some examples of the types of user feedback inputs that you can use"), heading_text("tag_Input", size = "s"), - tag_Input("tag1", "NAVY"), - tag_Input("tag2", "RED", "red"), - tag_Input("tag3", "BLUE", "blue"), - tag_Input("tag4", "YELLOW", "yellow"), + + shinyGovstyle::tag_Input("tag1", "Default"), + shinyGovstyle::tag_Input("tag2", "Grey", "grey"), + shinyGovstyle::tag_Input("tag3", "Green", "green"), + shinyGovstyle::tag_Input("tag4", "Turquoise", "turquoise"), + shinyGovstyle::tag_Input("tag5", "Blue", "blue"), + shinyGovstyle::tag_Input("tag6", "Light-blue", "light-blue"), + shinyGovstyle::tag_Input("tag7", "Purple", "purple"), + shinyGovstyle::tag_Input("tag8", "Pink", "pink"), + shinyGovstyle::tag_Input("tag9", "Red", "red"), + shinyGovstyle::tag_Input("tag10", "Orange", "orange"), + shinyGovstyle::tag_Input("tag11", "Yellow", "yellow"), + + + shiny::tags$br(), shiny::tags$br(), heading_text("details", size = "s"), details( @@ -158,49 +301,96 @@ run_example <- function(){ title_txt = "Important", body_txt = "You have 7 days left to send your application.", type = "standard" - ) + ), + heading_text("gov_summary", size = "s"), + shinyGovstyle::gov_summary( + "sumID", + c("Name", "Date of birth", "Contact information", "Contact details"), + c( + "Sarah Philips", + "5 January 1978", + "72 Guild Street
      London
      SE23 6FH", + "07700 900457
      sarah.phillips@example.com" + ), + action = FALSE + ), + + ) ), - #####################Create fourth panel################################ + #####################Create cookie panel################################ shiny::tabPanel( "Cookies", - value = "panel4", + value = "panel-cookies", gov_layout( size = "two-thirds", - heading_text("Page 3", size = "l"), - label_hint("label3", "This an example cookie page that could be + heading_text("Cookie page", size = "l"), + label_hint("label-cookies", "This an example cookie page that could be expanded") ) - )), + ))) + + +), #end of gov row + + footer(TRUE) - # Add a full footer - footer(TRUE)), + +), #end of fluid page server = function(input, output, session) { - # Nav to next tab - shiny::observeEvent(input$btn1, { - shiny::updateTabsetPanel(session, "nav", - selected = "panel2") + + + # Tab nav + shiny::observeEvent(input$select_types_button, { + shiny::updateTabsetPanel(session, "tab-container", selected = "select_types") }) - # Nav to next tab - shiny::observeEvent(input$btn2, { - shiny::updateTabsetPanel(session, "nav", - selected = "panel3") + shiny::observeEvent(input$text_types_button, { + shiny::updateTabsetPanel(session, "tab-container", selected = "text_types") }) + shiny::observeEvent(input$tables_tabs_and_accordions_button, { + shiny::updateTabsetPanel(session, "tab-container", selected = "tables_tabs_and_accordions") + }) + + shiny::observeEvent(input$feedback_types_button, { + shiny::updateTabsetPanel(session, "tab-container", selected = "feedback_types") + }) + + shiny::observeEvent(input$cookies_button, { + shiny::updateTabsetPanel(session, "tab-container", selected = "panel-cookies") + }) + + + # Back buttons shiny::observeEvent(input$back1, { - shiny::updateTabsetPanel(session, "nav", - selected = "panel1") + shiny::updateTabsetPanel(session, "tab-container", selected = "select_types") }) shiny::observeEvent(input$back2, { - shiny::updateTabsetPanel(session, "nav", - selected = "panel2") + shiny::updateTabsetPanel(session, "tab-container", selected = "text_types") + }) + + shiny::observeEvent(input$back3, { + shiny::updateTabsetPanel(session, "tab-container", selected = "tables_tabs_and_accordions") }) + # Next page buttons + shiny::observeEvent(input$btn1, { + shiny::updateTabsetPanel(session, "tab-container", selected = "text_types") + }) + + shiny::observeEvent(input$btn1, { + shiny::updateTabsetPanel(session, "tab-container", selected = "tables_tabs_and_accordions") + }) + + shiny::observeEvent(input$btn1, { + shiny::updateTabsetPanel(session, "tab-container", selected = "feedback_types") + }) + # Need this to use live update the word counter shiny::observeEvent( input$text_area2, diff --git a/R/tag.R b/R/tag.R index e81eb13..af2caaf 100644 --- a/R/tag.R +++ b/R/tag.R @@ -16,8 +16,8 @@ #' secondary_text = "User Examples", #' logo="shinyGovstyle/images/moj_logo.png"), #' shinyGovstyle::gov_layout(size = "two-thirds", -#' shinyGovstyle::tag_Input("tag1", "COMPLETE"), -#' shinyGovstyle::tag_Input("tag2", "INCOMPLETE", "red")), +#' shinyGovstyle::tag_Input("tag1", "Complete"), +#' shinyGovstyle::tag_Input("tag2", "Incomplete", "red")), #' shinyGovstyle::footer(full = TRUE) #' ) #' diff --git a/R/utils-pipe.R b/R/utils-pipe.R new file mode 100644 index 0000000..fd0b1d1 --- /dev/null +++ b/R/utils-pipe.R @@ -0,0 +1,14 @@ +#' Pipe operator +#' +#' See \code{magrittr::\link[magrittr:pipe]{\%>\%}} for details. +#' +#' @name %>% +#' @rdname pipe +#' @keywords internal +#' @export +#' @importFrom magrittr %>% +#' @usage lhs \%>\% rhs +#' @param lhs A value or the magrittr placeholder. +#' @param rhs A function call using the magrittr semantics. +#' @return The result of calling `rhs(lhs)`. +NULL diff --git a/R/warning_text.R b/R/warning_text.R index 11ef0d5..ef80dc6 100644 --- a/R/warning_text.R +++ b/R/warning_text.R @@ -31,7 +31,7 @@ warning_text <- function(inputId, text){ "!", class="govuk-warning-text__icon", `aria-hidden`="true" ), shiny::tags$strong(text, class="govuk-warning-text__text", - shiny::tags$span("Warning", class="govuk-warning-text__assistive") + shiny::tags$span("Warning", class="govuk-visually-hidden") ) ) attachDependency(govWarning) diff --git a/README.md b/README.md index 8c10605..171dd6c 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![CRAN status](https://www.r-pkg.org/badges/version/shinyGovstyle)](https://cran.r-project.org/package=shinyGovstyle) - +[![R-CMD-check](https://github.com/moj-analytical-services/shinyGovstyle/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/moj-analytical-services/shinyGovstyle/actions/workflows/R-CMD-check.yaml) > Apply Gov styled components and formats in shiny @@ -44,6 +44,8 @@ To use error and word count elements you will need to load useShinyjs from shiny - [Gov style layout](#gov-style-layout) - [Banner](#banner) + - [Contents links](#contents-links) + - [Header text](#header-text) - [Radio button](#radio-button) - [Checkbox](#checkbox) - [Button](#button) @@ -111,6 +113,165 @@ ui <- fluidPage( server <- function(input, output, session) {} ``` +### Contents links + +Create contents and subcontents links to sidebar to navigate page. + +![](man/figures/contents_link.png) + +Important: `contents_link()` requires the following UI structure to enable the js to work as it relies on the IDs for each section to then point a users focus to. This can also be found in `run_example()`: + +``` +shiny::fluidpage( + shinygovstyle::header( + main_text = "example", + secondary_text = "user examples", + logo = "shinygovstyle/images/moj_logo.png" + ), + gov_row( + shiny::column( + width = 3, + id = "nav", # DO NOT REMOVE ID + shiny::tags$div( + id = "govuk-contents-box", # DO NOT REMOVE ID + class = "govuk-contents-box", # DO NOT REMOVE CLASS + shiny::tags$h2("contents"), + + # CONTENTS LINKS GO HERE + ) + ), + shiny::column( + width = 9, + id = "main-col", # DO NOT REMOVE ID + shiny::tabsetpanel( + type = "hidden", + id = "tab-container", # DO NOT REMOVE ID + + # TAB PANELS GO HERE + ) + ) + ) +) +``` + +You can create a content links without subcontents links: + +``` +contents_link( + link_text = "Cookies", + input_id = "cookies_button") +``` + +Or with subcontents links: + +``` +contents_link( + link_text = "Feedback types", + input_id = "feedback_types_button", + subcontents_text_list = c("tag_Input", "details")) +``` + +If you use `subcontents_text_list` without specifying `subcontents_id_list` then the subcontents links will automatically link to `shinyGovstyle::heading_text()` elements where the header label matches the `subcontents_text_list` label. + +Use `subcontents_id_list` to link a subcontents link to a `shinyGovstyle::heading_text()` with a custom `id` argument. The order needs to match that of `subcontents_text_list`. + +Add as a `NA` to your vector any subcontents links where you still want to use the automatic link id for. + +``` +contents_link( + link_text = "Tables, tabs and accordions", + input_id = "tables_tabs_and_accordions_button", + subcontents_text_list = c("govTable", "govTabs", "button_Input"), + subcontents_id_list = c(NA, NA, "button_input_tables_tabs_accordions") +) +``` + +Contents links will need a `shiny::observeEvent()` in the server to switch between tabset panels. + +``` +ui <- shiny::fluidPage( + shinyGovstyle::header( + main_text = "Example", + secondary_text = "User Examples", + logo = "shinyGovstyle/images/moj_logo.png" + ), + gov_row( + shiny::column( + width = 3, + id = "nav", # DO NOT REMOVE ID + + shiny::tags$div( # DO NOT REMOVE DIV + shiny::tags$h2("Contents"), + contents_link( + "Tables, tabs and accordions", + "tables_tabs_and_accordions_button", + ), + contents_link("Feedback types", "feedback_types_button"), + ) + ), + shiny::column( + width = 9, + id = "main_col", # DO NOT REMOVE ID + shiny::tabsetPanel( + type = "hidden", + id = "tab-container", # DO NOT REMOVE ID + + shiny::tabPanel( + "Tables, tabs and accordions", + value = "tables_tabs_and_accordions", + gov_layout(size = "Tables, tabs and accordions", + heading_text("Tables, tabs and accordions", size = "l")) + ), + + shiny::tabPanel( + "Feedback Types", + value = "feedback_types", + gov_layout(size = "two-thirds", + heading_text("Feedback types", size = "l")) + ), + ) + + ) + ) +) + +server <- function(input, output, session) { + shiny::observeEvent(input$tables_tabs_and_accordions_button, { + shiny::updateTabsetPanel(session, "tab-container", selected = "tables_tabs_and_accordions") + }) + + shiny::observeEvent(input$feedback_types_button, { + shiny::updateTabsetPanel(session, "tab-container", selected = "feedback_types") + }) + +} +shiny::shinyApp(ui = ui, server = server) +} +``` + +Subcontents links work automatically and do not need to a `shiny::observeEvent()` in the server. + +### Heading text + +Use heading text to create headings. + +![](man/figures/header_text.png) + +You can adjust the text size by setting `size` to 'xl', 'l', 'm', or 's'. `size` defaults to 'xl'. + +``` +heading_text(text_input = "I am the default extra large text", size = "xl"), +heading_text(text_input = "I am large text", size = "l"), +heading_text(text_input = "I am medium text", size = "m"), +heading_text(text_input = "I am small text", size = "s") +``` + +You can use `id` to create a custom id to link with `subcontents_id_list` from `shinyGovstyle::contents_link`. This can be helpful when you have identically named headings. + +``` +heading_text(text_input = "I am the default extra large text", id = "custom_id") +``` + ### Radio button Create a gov style radio button :
      @@ -118,7 +279,7 @@ Create a gov style radio button :
      ```r radio_button_Input(inputId = "name_changed", label = "Have you changed your name?", - choices = c("Yes", "No"), inline = TRUE, + choices= c("Yes", "No"), inline = TRUE, hint_label = "This includes changing your last name or spelling your name differently.") ``` @@ -445,8 +606,17 @@ Add a gov style tag component : ![tags](man/figures/tags.png) ```r -shinyGovstyle::tag_Input("tag1", "COMPLETE"), -shinyGovstyle::tag_Input("tag2", "INCOMPLETE", "red") +tag_Input(inputId = "tag1", text = "Default"), +tag_Input(inputId = "tag2", text = "Grey", colour = "grey"), +tag_Input(inputId = "tag3", text = "Green", colour = "green"), +tag_Input(inputId = "tag4", text = "Turquoise", colour = "turquoise"), +tag_Input(inputId = "tag5", text = "Blue", colour = "blue"), +tag_Input(inputId = "tag6", text = "Light-blue", colour = "light-blue"), +tag_Input(inputId = "tag7", text = "Purple", colour = "purple"), +tag_Input(inputId = "tag8", text = "Pink", colour = "pink"), +tag_Input(inputId = "tag9", text = "Red", colour = "red"), +tag_Input(inputId = "tag10", text = "Orange", colour = "orange"), +tag_Input(inputId = "tag11", text = "Yellow", colour = "yellow") ``` ### Error diff --git a/_pkgdown.yml b/_pkgdown.yml new file mode 100644 index 0000000..d71acfb --- /dev/null +++ b/_pkgdown.yml @@ -0,0 +1,4 @@ +url: ~ +template: + bootstrap: 5 + diff --git a/cran-comments.md b/cran-comments.md index 73518a3..3c9237a 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -2,23 +2,8 @@ This is a minor release to update the style sheets to the latest release plus adding a couple of new components. -## Test environments -- R-hub windows-x86_64-devel (r-devel) -- R-hub ubuntu-gcc-release (r-release) -- R-hub fedora-clang-devel (r-devel) -- win-builder (devel and release) - -One note from Windows Server 2022, R-devel, 64 bit - -``` -* checking for detritus in the temp directory ... NOTE -Found the following files/directories: - 'lastMiKTeXException' -``` -A github search suggests this is isolate to that setup on rhub and is not an -issue. In addition, I can't replicate the issue on any local builds. - ## R CMD check results 0 errors v | 0 warnings v | 0 note v - +## revdepcheck results +There are currently no downstream dependencies for this package. diff --git a/css_changes.md b/css_changes.md index 83d1cc9..1780401 100644 --- a/css_changes.md +++ b/css_changes.md @@ -24,25 +24,174 @@ color: #0b0c0c; ``` * Move fonts css to the font css -*Change url links +* Change url links -* For accordion need to fix the norem by: +* For accordion need to fix the css by: + + Finding and replacing all `.govuk-frontend-supported .govuk-accordion` with `.js-enabled .govuk-accordion` + + and adding this chunk to the accordion section of css: + +``` +.js-enabled .govuk-accordion__section-toggle { + pointer-events: none; +} ``` -.js-enabled .govuk-accordion-nav__chevron { - width: 20px; - height: 20px; - border: 1px solid; -.js-enabled .govuk-accordion-nav__chevron:after{ - bottom: 5px; - left: 6px; - width: 6px; - height: 6px; - border-top: 2px solid; - border-right: 2px solid +* Change filepaths for crown copyright logo: +``` +.govuk-footer__copyright-logo { + display: inline-block; + min-width: 125px; + padding-top: 112px; + background-image: url(../images/govuk-crest.png); + background-repeat: no-repeat; + background-position: 50% 0; + background-size: 125px 102px; + text-align: center; + white-space: nowrap } -.js-enabled .govuk-accordion__section-toggle { - pointer-events: none; +@media only screen and (-webkit-min-device-pixel-ratio:2), +only screen and (min-resolution:192dpi), +only screen and (min-resolution:2dppx) { + .govuk-footer__copyright-logo { + background-image: url(../images/govuk-crest-2x.png) + } +} +``` + +* Fix alignment on the radio button item labels +``` +.govuk-radios__input { + z-index: 1; + width: 44px; + height: 44px; + margin: 0; + opacity: 0; + vertical-align: middle; + cursor: pointer +} + +.govuk-radios__label { + align-self: center; + max-width: calc(100% - 74px); + display: inline-block; + padding: 7px 15px; + cursor: pointer; + touch-action: manipulation +} +``` + +* Fix selected tab panel border gap +``` +.govuk-frontend-supported .govuk-tabs__list-item--selected { + position: relative; + margin-top: -5px; + margin-bottom: -2px; + padding: 14px 19px 16px; + border: 1px solid #b1b4b6; + border-bottom: none; + background-color: #fff +} +``` + +* govTable caption colour: + +``` +.govuk-table__caption { + font-weight: 700; + display: table-caption; + text-align: left; + color: #000; +} +``` + +* contents box: + +``` +/*Match margin in main-wrapper so "Contents" is level*/ +@media (max-width:40.0625em) { + .govuk-contents-box { + margin-right: 30px; + margin-left: 30px + + } +} + +/*Match margin in main-wrapper so "Contents" is level*/ +@media (min-width:40.0625em) and (max-width:48.0625em) { + .govuk-contents-box { + margin-right: 45px; + margin-left: 45px + + } +} + + +/*Match margin in main-wrapper so "Contents" is level*/ +@media (min-width:40.0625em) { + .govuk-contents-box { + margin-top: 40px; + + } +} + + +/*Do not apply stickyness on smaller screen*/ +@media (min-width:48.0625em) { +.govuk-contents-box_sticky { + position: fixed; + /*Guess? - probably could put exact pixels to make smooth*/ + top: 26px; + /* Margin 0 to stop the contents box bopping around */ + margin: 0; + padding: 0; +} +} + + +/*Contents link formatting*/ +.govuk-contents { + top: 0.5rem; + padding: 0.25rem; +} + +.govuk-contents__link { + padding-left: 0; + font-size: 1rem; +} + +.govuk-subcontents { + list-style-type: none; + padding-left: 0; + font-size: 1rem; +} + +/*Only display subcontents for first one - on load*/ +.govuk-contents ~ .govuk-contents > .govuk-subcontents { + display: none; +} +``` + +* Updated govuk-link--no-visited-state to still have a clear focus highlight (copied from the govuk-link formatting) + +``` +.govuk-link--no-visited-state:focus { + outline: 3px solid transparent; + background-color: #fd0; + box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone +} + +.govuk-link--no-visited-state:hover { + text-decoration-thickness: max(3px, .1875rem, .12em); + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; + -webkit-text-decoration-skip: none; + text-decoration-skip: none; + color: #003078 } ``` diff --git a/docs/404.html b/docs/404.html new file mode 100644 index 0000000..a22911f --- /dev/null +++ b/docs/404.html @@ -0,0 +1,110 @@ + + + + + + + +Page not found (404) • shinyGovstyle + + + + + + + + + + + + + + + + + + +
      +
      + + + + +
      +
      + + +Content not found. Please use links in the navbar. + +
      + + + +
      + + + +
      + +
      +

      +

      Site built with pkgdown 2.0.7.

      +
      + +
      +
      + + + + + + + + diff --git a/docs/apple-touch-icon-120x120.png b/docs/apple-touch-icon-120x120.png new file mode 100644 index 0000000..8660c0e Binary files /dev/null and b/docs/apple-touch-icon-120x120.png differ diff --git a/docs/apple-touch-icon-152x152.png b/docs/apple-touch-icon-152x152.png new file mode 100644 index 0000000..3466d2e Binary files /dev/null and b/docs/apple-touch-icon-152x152.png differ diff --git a/docs/apple-touch-icon-180x180.png b/docs/apple-touch-icon-180x180.png new file mode 100644 index 0000000..eadce2a Binary files /dev/null and b/docs/apple-touch-icon-180x180.png differ diff --git a/docs/apple-touch-icon-60x60.png b/docs/apple-touch-icon-60x60.png new file mode 100644 index 0000000..57ba63e Binary files /dev/null and b/docs/apple-touch-icon-60x60.png differ diff --git a/docs/apple-touch-icon-76x76.png b/docs/apple-touch-icon-76x76.png new file mode 100644 index 0000000..577efb8 Binary files /dev/null and b/docs/apple-touch-icon-76x76.png differ diff --git a/docs/apple-touch-icon.png b/docs/apple-touch-icon.png new file mode 100644 index 0000000..f926b33 Binary files /dev/null and b/docs/apple-touch-icon.png differ diff --git a/docs/authors.html b/docs/authors.html new file mode 100644 index 0000000..9d23dc9 --- /dev/null +++ b/docs/authors.html @@ -0,0 +1,98 @@ + +Authors and Citation • shinyGovstyle + + +
      +
      + + + +
      +
      +
      + + + +
      • +

        Ross Wyatt. Author, maintainer. +

        +
      • +
      +
      +
      +

      Citation

      + Source: DESCRIPTION +
      +
      + + +

      Wyatt R (2024). +shinyGovstyle: Custom Gov Style Inputs for Shiny. +R package version 0.0.8, https://github.com/moj-analytical-services/shinyGovstyle. +

      +
      @Manual{,
      +  title = {shinyGovstyle: Custom Gov Style Inputs for Shiny},
      +  author = {Ross Wyatt},
      +  year = {2024},
      +  note = {R package version 0.0.8},
      +  url = {https://github.com/moj-analytical-services/shinyGovstyle},
      +}
      + +
      + +
      + + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/bootstrap-toc.css b/docs/bootstrap-toc.css new file mode 100644 index 0000000..5a85941 --- /dev/null +++ b/docs/bootstrap-toc.css @@ -0,0 +1,60 @@ +/*! + * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) + * Copyright 2015 Aidan Feldman + * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ + +/* modified from https://github.com/twbs/bootstrap/blob/94b4076dd2efba9af71f0b18d4ee4b163aa9e0dd/docs/assets/css/src/docs.css#L548-L601 */ + +/* All levels of nav */ +nav[data-toggle='toc'] .nav > li > a { + display: block; + padding: 4px 20px; + font-size: 13px; + font-weight: 500; + color: #767676; +} +nav[data-toggle='toc'] .nav > li > a:hover, +nav[data-toggle='toc'] .nav > li > a:focus { + padding-left: 19px; + color: #563d7c; + text-decoration: none; + background-color: transparent; + border-left: 1px solid #563d7c; +} +nav[data-toggle='toc'] .nav > .active > a, +nav[data-toggle='toc'] .nav > .active:hover > a, +nav[data-toggle='toc'] .nav > .active:focus > a { + padding-left: 18px; + font-weight: bold; + color: #563d7c; + background-color: transparent; + border-left: 2px solid #563d7c; +} + +/* Nav: second level (shown on .active) */ +nav[data-toggle='toc'] .nav .nav { + display: none; /* Hide by default, but at >768px, show it */ + padding-bottom: 10px; +} +nav[data-toggle='toc'] .nav .nav > li > a { + padding-top: 1px; + padding-bottom: 1px; + padding-left: 30px; + font-size: 12px; + font-weight: normal; +} +nav[data-toggle='toc'] .nav .nav > li > a:hover, +nav[data-toggle='toc'] .nav .nav > li > a:focus { + padding-left: 29px; +} +nav[data-toggle='toc'] .nav .nav > .active > a, +nav[data-toggle='toc'] .nav .nav > .active:hover > a, +nav[data-toggle='toc'] .nav .nav > .active:focus > a { + padding-left: 28px; + font-weight: 500; +} + +/* from https://github.com/twbs/bootstrap/blob/e38f066d8c203c3e032da0ff23cd2d6098ee2dd6/docs/assets/css/src/docs.css#L631-L634 */ +nav[data-toggle='toc'] .nav > .active > ul { + display: block; +} diff --git a/docs/bootstrap-toc.js b/docs/bootstrap-toc.js new file mode 100644 index 0000000..1cdd573 --- /dev/null +++ b/docs/bootstrap-toc.js @@ -0,0 +1,159 @@ +/*! + * Bootstrap Table of Contents v0.4.1 (http://afeld.github.io/bootstrap-toc/) + * Copyright 2015 Aidan Feldman + * Licensed under MIT (https://github.com/afeld/bootstrap-toc/blob/gh-pages/LICENSE.md) */ +(function() { + 'use strict'; + + window.Toc = { + helpers: { + // return all matching elements in the set, or their descendants + findOrFilter: function($el, selector) { + // http://danielnouri.org/notes/2011/03/14/a-jquery-find-that-also-finds-the-root-element/ + // http://stackoverflow.com/a/12731439/358804 + var $descendants = $el.find(selector); + return $el.filter(selector).add($descendants).filter(':not([data-toc-skip])'); + }, + + generateUniqueIdBase: function(el) { + var text = $(el).text(); + var anchor = text.trim().toLowerCase().replace(/[^A-Za-z0-9]+/g, '-'); + return anchor || el.tagName.toLowerCase(); + }, + + generateUniqueId: function(el) { + var anchorBase = this.generateUniqueIdBase(el); + for (var i = 0; ; i++) { + var anchor = anchorBase; + if (i > 0) { + // add suffix + anchor += '-' + i; + } + // check if ID already exists + if (!document.getElementById(anchor)) { + return anchor; + } + } + }, + + generateAnchor: function(el) { + if (el.id) { + return el.id; + } else { + var anchor = this.generateUniqueId(el); + el.id = anchor; + return anchor; + } + }, + + createNavList: function() { + return $(''); + }, + + createChildNavList: function($parent) { + var $childList = this.createNavList(); + $parent.append($childList); + return $childList; + }, + + generateNavEl: function(anchor, text) { + var $a = $(''); + $a.attr('href', '#' + anchor); + $a.text(text); + var $li = $('
    1. '); + $li.append($a); + return $li; + }, + + generateNavItem: function(headingEl) { + var anchor = this.generateAnchor(headingEl); + var $heading = $(headingEl); + var text = $heading.data('toc-text') || $heading.text(); + return this.generateNavEl(anchor, text); + }, + + // Find the first heading level (`

      `, then `

      `, etc.) that has more than one element. Defaults to 1 (for `

      `). + getTopLevel: function($scope) { + for (var i = 1; i <= 6; i++) { + var $headings = this.findOrFilter($scope, 'h' + i); + if ($headings.length > 1) { + return i; + } + } + + return 1; + }, + + // returns the elements for the top level, and the next below it + getHeadings: function($scope, topLevel) { + var topSelector = 'h' + topLevel; + + var secondaryLevel = topLevel + 1; + var secondarySelector = 'h' + secondaryLevel; + + return this.findOrFilter($scope, topSelector + ',' + secondarySelector); + }, + + getNavLevel: function(el) { + return parseInt(el.tagName.charAt(1), 10); + }, + + populateNav: function($topContext, topLevel, $headings) { + var $context = $topContext; + var $prevNav; + + var helpers = this; + $headings.each(function(i, el) { + var $newNav = helpers.generateNavItem(el); + var navLevel = helpers.getNavLevel(el); + + // determine the proper $context + if (navLevel === topLevel) { + // use top level + $context = $topContext; + } else if ($prevNav && $context === $topContext) { + // create a new level of the tree and switch to it + $context = helpers.createChildNavList($prevNav); + } // else use the current $context + + $context.append($newNav); + + $prevNav = $newNav; + }); + }, + + parseOps: function(arg) { + var opts; + if (arg.jquery) { + opts = { + $nav: arg + }; + } else { + opts = arg; + } + opts.$scope = opts.$scope || $(document.body); + return opts; + } + }, + + // accepts a jQuery object, or an options object + init: function(opts) { + opts = this.helpers.parseOps(opts); + + // ensure that the data attribute is in place for styling + opts.$nav.attr('data-toggle', 'toc'); + + var $topContext = this.helpers.createChildNavList(opts.$nav); + var topLevel = this.helpers.getTopLevel(opts.$scope); + var $headings = this.helpers.getHeadings(opts.$scope, topLevel); + this.helpers.populateNav($topContext, topLevel, $headings); + } + }; + + $(function() { + $('nav[data-toggle="toc"]').each(function(i, el) { + var $nav = $(el); + Toc.init($nav); + }); + }); +})(); diff --git a/docs/css_changes.html b/docs/css_changes.html new file mode 100644 index 0000000..55fe099 --- /dev/null +++ b/docs/css_changes.html @@ -0,0 +1,112 @@ + +NA • shinyGovstyle + + +
      +
      + + + +
      +
      + + + +

      These the things needed when updating the gov.uk css to make it work.

      +
      • add to .govuk-back-link for backlink
      • +
      border: none;
      +background: white;
      +color: #0b0c0c;
      +
      • error summary change
      • +
      .govuk-error-summary__list {
      +    color: #d4351c;
      +    font-weight: 700;
      +    text-decoration: underline;
      +    text-underline-offset: 0.1em
      +
      • add
      • +
      .govuk-link {
      +    border:none
      +}
      +
      • Move fonts css to the font css *Change url links

      • +
      • For accordion need to fix the norem by:

      • +
      .js-enabled .govuk-accordion-nav__chevron {
      +    width: 20px;
      +    height: 20px;
      +    border: 1px solid;
      +
      +.js-enabled .govuk-accordion-nav__chevron:after{
      +    bottom: 5px;
      +    left: 6px;
      +    width: 6px;
      +    height: 6px;
      +    border-top: 2px solid;
      +    border-right: 2px solid
      +}
      +
      +.js-enabled .govuk-accordion__section-toggle {
      +  pointer-events: none;
      +}
      + + +
      + + + +
      + + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/docsearch.css b/docs/docsearch.css new file mode 100644 index 0000000..e5f1fe1 --- /dev/null +++ b/docs/docsearch.css @@ -0,0 +1,148 @@ +/* Docsearch -------------------------------------------------------------- */ +/* + Source: https://github.com/algolia/docsearch/ + License: MIT +*/ + +.algolia-autocomplete { + display: block; + -webkit-box-flex: 1; + -ms-flex: 1; + flex: 1 +} + +.algolia-autocomplete .ds-dropdown-menu { + width: 100%; + min-width: none; + max-width: none; + padding: .75rem 0; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, .1); + box-shadow: 0 .5rem 1rem rgba(0, 0, 0, .175); +} + +@media (min-width:768px) { + .algolia-autocomplete .ds-dropdown-menu { + width: 175% + } +} + +.algolia-autocomplete .ds-dropdown-menu::before { + display: none +} + +.algolia-autocomplete .ds-dropdown-menu [class^=ds-dataset-] { + padding: 0; + background-color: rgb(255,255,255); + border: 0; + max-height: 80vh; +} + +.algolia-autocomplete .ds-dropdown-menu .ds-suggestions { + margin-top: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion { + padding: 0; + overflow: visible +} + +.algolia-autocomplete .algolia-docsearch-suggestion--category-header { + padding: .125rem 1rem; + margin-top: 0; + font-size: 1.3em; + font-weight: 500; + color: #00008B; + border-bottom: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--wrapper { + float: none; + padding-top: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--subcategory-column { + float: none; + width: auto; + padding: 0; + text-align: left +} + +.algolia-autocomplete .algolia-docsearch-suggestion--content { + float: none; + width: auto; + padding: 0 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--content::before { + display: none +} + +.algolia-autocomplete .ds-suggestion:not(:first-child) .algolia-docsearch-suggestion--category-header { + padding-top: .75rem; + margin-top: .75rem; + border-top: 1px solid rgba(0, 0, 0, .1) +} + +.algolia-autocomplete .ds-suggestion .algolia-docsearch-suggestion--subcategory-column { + display: block; + padding: .1rem 1rem; + margin-bottom: 0.1; + font-size: 1.0em; + font-weight: 400 + /* display: none */ +} + +.algolia-autocomplete .algolia-docsearch-suggestion--title { + display: block; + padding: .25rem 1rem; + margin-bottom: 0; + font-size: 0.9em; + font-weight: 400 +} + +.algolia-autocomplete .algolia-docsearch-suggestion--text { + padding: 0 1rem .5rem; + margin-top: -.25rem; + font-size: 0.8em; + font-weight: 400; + line-height: 1.25 +} + +.algolia-autocomplete .algolia-docsearch-footer { + width: 110px; + height: 20px; + z-index: 3; + margin-top: 10.66667px; + float: right; + font-size: 0; + line-height: 0; +} + +.algolia-autocomplete .algolia-docsearch-footer--logo { + background-image: url("data:image/svg+xml;utf8,"); + background-repeat: no-repeat; + background-position: 50%; + background-size: 100%; + overflow: hidden; + text-indent: -9000px; + width: 100%; + height: 100%; + display: block; + transform: translate(-8px); +} + +.algolia-autocomplete .algolia-docsearch-suggestion--highlight { + color: #FF8C00; + background: rgba(232, 189, 54, 0.1) +} + + +.algolia-autocomplete .algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight { + box-shadow: inset 0 -2px 0 0 rgba(105, 105, 105, .5) +} + +.algolia-autocomplete .ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content { + background-color: rgba(192, 192, 192, .15) +} diff --git a/docs/docsearch.js b/docs/docsearch.js new file mode 100644 index 0000000..b35504c --- /dev/null +++ b/docs/docsearch.js @@ -0,0 +1,85 @@ +$(function() { + + // register a handler to move the focus to the search bar + // upon pressing shift + "/" (i.e. "?") + $(document).on('keydown', function(e) { + if (e.shiftKey && e.keyCode == 191) { + e.preventDefault(); + $("#search-input").focus(); + } + }); + + $(document).ready(function() { + // do keyword highlighting + /* modified from https://jsfiddle.net/julmot/bL6bb5oo/ */ + var mark = function() { + + var referrer = document.URL ; + var paramKey = "q" ; + + if (referrer.indexOf("?") !== -1) { + var qs = referrer.substr(referrer.indexOf('?') + 1); + var qs_noanchor = qs.split('#')[0]; + var qsa = qs_noanchor.split('&'); + var keyword = ""; + + for (var i = 0; i < qsa.length; i++) { + var currentParam = qsa[i].split('='); + + if (currentParam.length !== 2) { + continue; + } + + if (currentParam[0] == paramKey) { + keyword = decodeURIComponent(currentParam[1].replace(/\+/g, "%20")); + } + } + + if (keyword !== "") { + $(".contents").unmark({ + done: function() { + $(".contents").mark(keyword); + } + }); + } + } + }; + + mark(); + }); +}); + +/* Search term highlighting ------------------------------*/ + +function matchedWords(hit) { + var words = []; + + var hierarchy = hit._highlightResult.hierarchy; + // loop to fetch from lvl0, lvl1, etc. + for (var idx in hierarchy) { + words = words.concat(hierarchy[idx].matchedWords); + } + + var content = hit._highlightResult.content; + if (content) { + words = words.concat(content.matchedWords); + } + + // return unique words + var words_uniq = [...new Set(words)]; + return words_uniq; +} + +function updateHitURL(hit) { + + var words = matchedWords(hit); + var url = ""; + + if (hit.anchor) { + url = hit.url_without_anchor + '?q=' + escape(words.join(" ")) + '#' + hit.anchor; + } else { + url = hit.url + '?q=' + escape(words.join(" ")); + } + + return url; +} diff --git a/docs/favicon-16x16.png b/docs/favicon-16x16.png new file mode 100644 index 0000000..e371dd7 Binary files /dev/null and b/docs/favicon-16x16.png differ diff --git a/docs/favicon-32x32.png b/docs/favicon-32x32.png new file mode 100644 index 0000000..7b899d3 Binary files /dev/null and b/docs/favicon-32x32.png differ diff --git a/docs/favicon.ico b/docs/favicon.ico new file mode 100644 index 0000000..919fba3 Binary files /dev/null and b/docs/favicon.ico differ diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..9b131d3 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,567 @@ + + + + + + + +Custom Gov Style Inputs for Shiny • shinyGovstyle + + + + + + + + + + + + + + + + + + + +
      +
      + + + + +
      +
      +
      + + + + +
      +

      Apply Gov styled components and formats in shiny

      +
      +
      +

      Overview +

      +

      This package provides some custom widgets to style your app like gov.uk. There are a variety of widgets available, including select, radio, checkboxes as well as styling for headers and footers.

      +

      To view details of gov.uk components please visit https://design-system.service.gov.uk/. Most components from https://design-system.service.gov.uk/components/ are available to use through this package.

      +

      Installation :

      +
      +install.packages("shinyGovstyle")
      +

      This is also available on conda

      +
      conda install r-shinygovstyle
      +

      If you want to make use of the development then

      +
      +remotes::install_github("moj-analytical-services/shinyGovstyle")
      +

      To use error and word count elements you will need to load useShinyjs from shinyjs in the UI:

      +
      +  shinyjs::useShinyjs()
      +
      +
      +

      Components available : +

      + +
      +

      Gov style layout +

      +

      Create a gov style look to the page with a header, footer, font and layout:
      gov-style-layout

      +
      +ui <- fluidPage(
      +  #font(),
      +  shinyGovstyle::header("Justice", "Prototype", logo="shinyGovstyle/images/moj_logo.png"),
      +  gov_layout(size = "full",
      +        tags$br(),
      +        tags$br(),
      +        tags$br(),
      +        tags$br(),
      +        tags$br()
      +      ),
      +  footer(TRUE)
      +)
      +
      +server <- function(input, output, session) {}
      +

      Note: You can only use gov.uk font on service.gov.uk (see https://design-system.service.gov.uk/styles/typography/)

      +
      +
      + +

      Add a banner to the header to state in beta or alpha :
      banner

      +
      +ui <- fluidPage(
      +  shinyGovstyle::header("Justice", "Prototype", logo="shinyGovstyle/images/moj_logo.png"),
      +  banner("banner", "beta", 'This is a new service – your <a class="govuk-link" href="#">feedback</a> will help us to improve it.'),
      +  gov_layout(size = "full",
      +        tags$br(),
      +        tags$br(),
      +        tags$br(),
      +        tags$br(),
      +        tags$br()
      +      ),
      +  footer(TRUE)
      +)
      +
      +server <- function(input, output, session) {}
      +
      +
      +

      Radio button +

      +

      Create a gov style radio button :
      radio_button

      +
      +radio_button_Input(inputId = "name_changed", label = "Have you changed your name?",
      +                   choices = c("Yes", "No"), inline = TRUE,
      +                   hint_label = "This includes changing your last name or spelling your name differently.")
      +
      +
      +

      Checkbox +

      +

      Turn checkboxes into gov style ones :
      checkbox

      +
      +checkbox_Input(
      +  inputId = "checkID", 
      +  cb_labels = c("Waste from animal carcasses", "Waste from mines or quarries", "Farm or agricultural waste"),
      +  checkboxIds = c("op1", "op2", "op3"),
      +  label = "Which types of waste do you transport?",
      +  hint_label = "Select all that apply.")
      +

      Note that you currently access the values separately through the inputIds you supply or all values through the main inputID.

      +
      +
      +

      Button +

      +

      Gov style button with different styles : button

      +
      shinyGovstyle::button_Input(inputId = "btn1", label = "default"),
      +shinyGovstyle::button_Input(inputId = "btn1", label = "start", type = "start"),
      +shinyGovstyle::button_Input(inputId = "btn1", label = "secondary", type = "secondary"),
      +shinyGovstyle::button_Input(inputId = "btn1", label = "warning", type = "warning")
      +
      +
      +

      Select +

      +

      Gov style drop down select : select

      +
      +shinyGovstyle::select_Input(
      +  inputId = "sorter", 
      +  label = "Sort by",
      +  select_text = c("Recently published", "Recently updated", "Most views", "Most comments"),
      +  select_value = c("published", "updated", "view", "comments"))
      +
      +
      +

      Date +

      +

      Gov style date input : date

      +
      +date_Input(
      +  inputId = "date1",
      +  label = "What is your date of birth?",
      +  hint_label = "For example, 31 3 1980")
      +

      Note that you currently access the individual values by adding an affix of _day, _month and _year or the full date in dd/mm/yy by using the inputID.

      +
      +
      +

      File input +

      +

      Gov style file input component : file_input

      +
      +file_Input(inputId = "file1", label = "Upload a file")
      +
      +
      +

      Text input +

      +

      Gov style text input component : text_input

      +
      +text_Input(inputId = "txt1", label = "Event name")
      +
      +
      +

      Text area input +

      +

      Gov style text area input component : text_area

      +
      +text_area_Input(
      +  inputId = "text_area",
      +  label = "Can you provide more detail?",
      +  hint_label = "Do not include personal or financial information, like your National Insurance number or credit card details.")
      +

      You can also add a word count to the options, which requires an additional argument in the server : text_area

      +
      +ui <- fluidPage(
      +  shinyjs::useShinyjs(),
      +  shinyGovstyle::header("Justice", "", logo="shinyGovstyle/images/moj_logo.png"),
      +  gov_layout(size = "full",
      +        text_area_Input(
      +          inputId = "text_area",
      +          label = "Can you provide more detail?",
      +          hint_label =  "Do not include personal or financial information, like 
      +                         your National Insurance number or credit card details.",
      +          word_limit = 300)
      +  ),
      +  footer(TRUE)
      +)
      +
      +# Define server logic required to draw a histogram
      +server <- function(input, output, session) {
      +  observeEvent(input$text_area,
      +    word_count(inputId = "text_area", input = input$text_area, word_limit = 300)
      +  )
      +}
      +
      +
      +

      Warning +

      +

      Gov style warning component : text_area

      +
      +warning_text(inputId = "warn", text = "You can be fined up to £5,000 if you do not register.")
      +
      +
      +

      Insert text +

      +

      Gov style insert text component : text_area

      +
      +insert_text(inputId = "insertId",
      +            text = "It can take up to 8 weeks to register a lasting power of attorney 
      +                    if there are no mistakes in the application.")
      +
      +
      +

      Details +

      +

      Gov style details component : details

      +
      + details(
      +  inputId = "detID",
      +  label = "Help with nationality",
      +  help_text = "We need to know your nationality so we can work out which elections you’re 
      +              entitled to vote in. If you cannot provide your nationality, you’ll have to 
      +              send copies of identity documents through the post.")
      +
      +
      +

      Panel +

      +

      Gov style panel component : panel

      +
      +panel_output(
      +  inputId = "panId", 
      +  main_text = "Application complete", 
      +  sub_text = "Your reference number <br> <strong>HDJ2123F</strong>")
      +
      +
      +

      Notification Banner +

      +

      Gov style panel component : Notification Banner

      +
      noti_banner(
      +  "notId",
      +  title_txt = "Important",
      +  body_txt = Example text,
      +  type = "standard"
      +)
      +
      +
      +

      Accordion +

      +

      Gov style accordion component : Accordion

      +
      +accordion(
      +      "acc1",
      +      c("Writing well for the web",
      +        "Writing well for specialists",
      +        "Know your audience",
      +        "How people read"
      +       ),
      +      c("This is the content for Writing well for the web.",
      +        "This is the content for Writing well for specialists.",
      +        "This is the content for Know your audience.",
      +        "This is the content for How people read."
      +       ))
      +
      +
      +

      Table +

      +

      Gov style table component : Table

      +
      +Months <- c("January", "February", "March")
      +Bikes <- c("£85", "£75", "£165")
      +Cars <- c("£95", "£55", "£125")
      +example_data <- data.frame(Months, Bikes, Cars)
      +
      +shinyGovstyle::govTable(
      +      "tab1", example_data, "Test", "l", num_col = c(2,3),
      +      width_overwrite = c("one-half", "one-quarter", "one-quarter"))
      +
      +
      +

      Tabs +

      +

      Gov style tabs component : Tabs

      +
      +  # Create an example dataset
      +  tabs <- c(rep("Past Day", 3),
      +            rep("Past Week", 3),
      +            rep("Past Month", 3),
      +            rep("Past Year", 3))
      +  Case_manager <- rep(c("David Francis", "Paul Farmer", "Rita Patel"),4)
      +  Cases_open <- c(3, 1, 2, 24, 16, 24, 98, 122, 126, 1380, 1129, 1539)
      +  Cases_closed <- c(0, 0, 0, 18, 20, 27, 95, 131, 142, 1472, 1083, 1265)
      +  data <- data.frame(tabs, Case_manager, Cases_open, Cases_closed)
      +
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      shinyGovstyle::govTabs("tabsID", data, "tabs")),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +
      +
      +

      Summary List +

      +

      Gov style summary list : Summary List

      +
      +  # Create an example dataset
      +  headers <- c("Name", "Date of birth", "Contact information", "Contact details")
      +  info <- c(
      +    "Sarah Philips",
      +    "5 January 1978",
      +    "72 Guild Street <br> London <br> SE23 6FH",
      +    "07700 900457 <br> sarah.phillips@example.com")
      +
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      shinyGovstyle::gov_summary("sumID", headers, info, action = TRUE)),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +
      +
      + +

      Gov style cookie banner : Cookie Banner

      +
      +ui <- fluidPage(
      +  shinyGovstyle::header(
      +    main_text = "Example",
      +    secondary_text = "User Examples",
      +    logo="shinyGovstyle/images/moj_logo.png"),
      +  #Needs shinyjs to work
      +  shinyjs::useShinyjs(),
      +  shinyGovstyle::cookieBanner("The best thing"),
      +  shinyGovstyle::gov_layout(size = "two-thirds"),
      +  shinyGovstyle::footer(full = TRUE)
      +)
      +
      +server <- function(input, output, session) {
      +
      +  #Need these set of observeEvent to create a path through the cookie banner
      +  observeEvent(input$cookieAccept, {
      +    shinyjs::show(id = "cookieAcceptDiv")
      +    shinyjs::hide(id = "cookieMain")
      +  })
      +
      +  observeEvent(input$cookieReject, {
      +    shinyjs::show(id = "cookieRejectDiv")
      +    shinyjs::hide(id = "cookieMain")
      +  })
      +
      +  observeEvent(input$hideAccept, {
      +    shinyjs::toggle(id = "cookieDiv")
      +  })
      +
      +  observeEvent(input$hideReject, {
      +    shinyjs::toggle(id = "cookieDiv")
      +  })
      +
      +  observeEvent(input$cookieLink, {
      +    #Need to link here to where further info is located.  You can
      +    #updateTabsetPanel to have a cookie page for instance
      +  })
      +
      +}
      +shinyApp(ui = ui, server = server)
      +
      +
      +

      Tags +

      +

      Add a gov style tag component : tags

      +
      shinyGovstyle::tag_Input("tag1", "COMPLETE"),
      +shinyGovstyle::tag_Input("tag2", "INCOMPLETE", "red")
      +
      +
      +

      Error +

      +

      Add errors to components when not filled in correctly. Most components have an option to add : error

      +
      +ui <- fluidPage(
      +  shinyjs::useShinyjs(),
      +  shinyGovstyle::header("Justice", "", logo="shinyGovstyle/images/moj_logo.png"),
      +  gov_layout(size = "full",
      +        text_area_Input(
      +          "text_area",
      +          "Can you provide more detail?",
      +          "Do not include personal or financial information, like your National Insurance number or credit card details.",
      +          word_limit = 300, error = TRUE, error_message = "Error"),
      +
      +        button_Input("btn1", "Toggle error")
      +  ),
      +  footer(TRUE)
      +)
      +
      +server <- function(input, output, session) {
      +  err <<- FALSE
      +  observeEvent(input$btn1,{
      +    if (err) {
      +      err <<- FALSE
      +      error_off("text_area")
      +    }
      +    else {
      +      err <<- TRUE
      +      error_on("text_area", "You have an error")
      +    }
      +  }
      +  )
      +}
      +
      +
      +

      Example Version +

      +

      You can run an example dashboard. This is very rough and will be improved. example

      + +
      +
      +
      +
      + + +
      + + +
      + +
      +

      +

      Site built with pkgdown 2.0.7.

      +
      + +
      +
      + + + + + + + + diff --git a/docs/link.svg b/docs/link.svg new file mode 100644 index 0000000..88ad827 --- /dev/null +++ b/docs/link.svg @@ -0,0 +1,12 @@ + + + + + + diff --git a/docs/logo.png b/docs/logo.png new file mode 100644 index 0000000..d87cda6 Binary files /dev/null and b/docs/logo.png differ diff --git a/docs/news/index.html b/docs/news/index.html new file mode 100644 index 0000000..b68e88c --- /dev/null +++ b/docs/news/index.html @@ -0,0 +1,106 @@ + +Changelog • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      + +
      • Update the css to v4.0.0 and made fixes associated with that.
      • +
      • One of the major changes in the css is a change in look for the accordion.
      • +
      • Added new functions gov_main_layout, gov_row, gov_box and gov_text to give better control over the layouts.
      • +
      • Added tabs as a component using the govTab command
      • +
      • Added summary list as a component using the gov_summary command
      • +
      • Added error summary component (error_summary) and error summary update (error_summary_update)
      • +
      +
      + +
      • Improved the header so that you can adjust the logo size to suit
      • +
      • Fix some errors that appeared in the footer
      • +
      • Fix the word count function so that you only need to enter word count limit on the text_area function. You can change the limit on word_count if needed.
      • +
      • Change the run_example to a better versions that show more ways you can you the package.
      • +
      • Change the backlink_Input to a button so that you can use server to move between panels etc.
      • +
      • Added tags through the tag_Input function plus added to the use_example.
      • +
      • Added cookie banner through the cookieBanner function.
      • +
      • Added accordion through the accordion function.
      • +
      • Added tables through the govTable function.
      • +
      +
      + +
      • Fix minor bugs from the issues list including data default and radio default
      • +
      • Added units test
      • +
      • Added an example function
      • +
      • Added a NEWS.md file to track changes to the package.
      • +
      • Added a notification banner function
      • +
      • Got ready for CRAN release.
      • +
      • Added output value to the documentation
      • +
      +
      + + + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/pkgdown.css b/docs/pkgdown.css new file mode 100644 index 0000000..80ea5b8 --- /dev/null +++ b/docs/pkgdown.css @@ -0,0 +1,384 @@ +/* Sticky footer */ + +/** + * Basic idea: https://philipwalton.github.io/solved-by-flexbox/demos/sticky-footer/ + * Details: https://github.com/philipwalton/solved-by-flexbox/blob/master/assets/css/components/site.css + * + * .Site -> body > .container + * .Site-content -> body > .container .row + * .footer -> footer + * + * Key idea seems to be to ensure that .container and __all its parents__ + * have height set to 100% + * + */ + +html, body { + height: 100%; +} + +body { + position: relative; +} + +body > .container { + display: flex; + height: 100%; + flex-direction: column; +} + +body > .container .row { + flex: 1 0 auto; +} + +footer { + margin-top: 45px; + padding: 35px 0 36px; + border-top: 1px solid #e5e5e5; + color: #666; + display: flex; + flex-shrink: 0; +} +footer p { + margin-bottom: 0; +} +footer div { + flex: 1; +} +footer .pkgdown { + text-align: right; +} +footer p { + margin-bottom: 0; +} + +img.icon { + float: right; +} + +/* Ensure in-page images don't run outside their container */ +.contents img { + max-width: 100%; + height: auto; +} + +/* Fix bug in bootstrap (only seen in firefox) */ +summary { + display: list-item; +} + +/* Typographic tweaking ---------------------------------*/ + +.contents .page-header { + margin-top: calc(-60px + 1em); +} + +dd { + margin-left: 3em; +} + +/* Section anchors ---------------------------------*/ + +a.anchor { + display: none; + margin-left: 5px; + width: 20px; + height: 20px; + + background-image: url(./link.svg); + background-repeat: no-repeat; + background-size: 20px 20px; + background-position: center center; +} + +h1:hover .anchor, +h2:hover .anchor, +h3:hover .anchor, +h4:hover .anchor, +h5:hover .anchor, +h6:hover .anchor { + display: inline-block; +} + +/* Fixes for fixed navbar --------------------------*/ + +.contents h1, .contents h2, .contents h3, .contents h4 { + padding-top: 60px; + margin-top: -40px; +} + +/* Navbar submenu --------------------------*/ + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu>.dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover>.dropdown-menu { + display: block; +} + +.dropdown-submenu>a:after { + display: block; + content: " "; + float: right; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; + border-width: 5px 0 5px 5px; + border-left-color: #cccccc; + margin-top: 5px; + margin-right: -10px; +} + +.dropdown-submenu:hover>a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left>.dropdown-menu { + left: -100%; + margin-left: 10px; + border-radius: 6px 0 6px 6px; +} + +/* Sidebar --------------------------*/ + +#pkgdown-sidebar { + margin-top: 30px; + position: -webkit-sticky; + position: sticky; + top: 70px; +} + +#pkgdown-sidebar h2 { + font-size: 1.5em; + margin-top: 1em; +} + +#pkgdown-sidebar h2:first-child { + margin-top: 0; +} + +#pkgdown-sidebar .list-unstyled li { + margin-bottom: 0.5em; +} + +/* bootstrap-toc tweaks ------------------------------------------------------*/ + +/* All levels of nav */ + +nav[data-toggle='toc'] .nav > li > a { + padding: 4px 20px 4px 6px; + font-size: 1.5rem; + font-weight: 400; + color: inherit; +} + +nav[data-toggle='toc'] .nav > li > a:hover, +nav[data-toggle='toc'] .nav > li > a:focus { + padding-left: 5px; + color: inherit; + border-left: 1px solid #878787; +} + +nav[data-toggle='toc'] .nav > .active > a, +nav[data-toggle='toc'] .nav > .active:hover > a, +nav[data-toggle='toc'] .nav > .active:focus > a { + padding-left: 5px; + font-size: 1.5rem; + font-weight: 400; + color: inherit; + border-left: 2px solid #878787; +} + +/* Nav: second level (shown on .active) */ + +nav[data-toggle='toc'] .nav .nav { + display: none; /* Hide by default, but at >768px, show it */ + padding-bottom: 10px; +} + +nav[data-toggle='toc'] .nav .nav > li > a { + padding-left: 16px; + font-size: 1.35rem; +} + +nav[data-toggle='toc'] .nav .nav > li > a:hover, +nav[data-toggle='toc'] .nav .nav > li > a:focus { + padding-left: 15px; +} + +nav[data-toggle='toc'] .nav .nav > .active > a, +nav[data-toggle='toc'] .nav .nav > .active:hover > a, +nav[data-toggle='toc'] .nav .nav > .active:focus > a { + padding-left: 15px; + font-weight: 500; + font-size: 1.35rem; +} + +/* orcid ------------------------------------------------------------------- */ + +.orcid { + font-size: 16px; + color: #A6CE39; + /* margins are required by official ORCID trademark and display guidelines */ + margin-left:4px; + margin-right:4px; + vertical-align: middle; +} + +/* Reference index & topics ----------------------------------------------- */ + +.ref-index th {font-weight: normal;} + +.ref-index td {vertical-align: top; min-width: 100px} +.ref-index .icon {width: 40px;} +.ref-index .alias {width: 40%;} +.ref-index-icons .alias {width: calc(40% - 40px);} +.ref-index .title {width: 60%;} + +.ref-arguments th {text-align: right; padding-right: 10px;} +.ref-arguments th, .ref-arguments td {vertical-align: top; min-width: 100px} +.ref-arguments .name {width: 20%;} +.ref-arguments .desc {width: 80%;} + +/* Nice scrolling for wide elements --------------------------------------- */ + +table { + display: block; + overflow: auto; +} + +/* Syntax highlighting ---------------------------------------------------- */ + +pre, code, pre code { + background-color: #f8f8f8; + color: #333; +} +pre, pre code { + white-space: pre-wrap; + word-break: break-all; + overflow-wrap: break-word; +} + +pre { + border: 1px solid #eee; +} + +pre .img, pre .r-plt { + margin: 5px 0; +} + +pre .img img, pre .r-plt img { + background-color: #fff; +} + +code a, pre a { + color: #375f84; +} + +a.sourceLine:hover { + text-decoration: none; +} + +.fl {color: #1514b5;} +.fu {color: #000000;} /* function */ +.ch,.st {color: #036a07;} /* string */ +.kw {color: #264D66;} /* keyword */ +.co {color: #888888;} /* comment */ + +.error {font-weight: bolder;} +.warning {font-weight: bolder;} + +/* Clipboard --------------------------*/ + +.hasCopyButton { + position: relative; +} + +.btn-copy-ex { + position: absolute; + right: 0; + top: 0; + visibility: hidden; +} + +.hasCopyButton:hover button.btn-copy-ex { + visibility: visible; +} + +/* headroom.js ------------------------ */ + +.headroom { + will-change: transform; + transition: transform 200ms linear; +} +.headroom--pinned { + transform: translateY(0%); +} +.headroom--unpinned { + transform: translateY(-100%); +} + +/* mark.js ----------------------------*/ + +mark { + background-color: rgba(255, 255, 51, 0.5); + border-bottom: 2px solid rgba(255, 153, 51, 0.3); + padding: 1px; +} + +/* vertical spacing after htmlwidgets */ +.html-widget { + margin-bottom: 10px; +} + +/* fontawesome ------------------------ */ + +.fab { + font-family: "Font Awesome 5 Brands" !important; +} + +/* don't display links in code chunks when printing */ +/* source: https://stackoverflow.com/a/10781533 */ +@media print { + code a:link:after, code a:visited:after { + content: ""; + } +} + +/* Section anchors --------------------------------- + Added in pandoc 2.11: https://github.com/jgm/pandoc-templates/commit/9904bf71 +*/ + +div.csl-bib-body { } +div.csl-entry { + clear: both; +} +.hanging-indent div.csl-entry { + margin-left:2em; + text-indent:-2em; +} +div.csl-left-margin { + min-width:2em; + float:left; +} +div.csl-right-inline { + margin-left:2em; + padding-left:1em; +} +div.csl-indent { + margin-left: 2em; +} diff --git a/docs/pkgdown.js b/docs/pkgdown.js new file mode 100644 index 0000000..6f0eee4 --- /dev/null +++ b/docs/pkgdown.js @@ -0,0 +1,108 @@ +/* http://gregfranko.com/blog/jquery-best-practices/ */ +(function($) { + $(function() { + + $('.navbar-fixed-top').headroom(); + + $('body').css('padding-top', $('.navbar').height() + 10); + $(window).resize(function(){ + $('body').css('padding-top', $('.navbar').height() + 10); + }); + + $('[data-toggle="tooltip"]').tooltip(); + + var cur_path = paths(location.pathname); + var links = $("#navbar ul li a"); + var max_length = -1; + var pos = -1; + for (var i = 0; i < links.length; i++) { + if (links[i].getAttribute("href") === "#") + continue; + // Ignore external links + if (links[i].host !== location.host) + continue; + + var nav_path = paths(links[i].pathname); + + var length = prefix_length(nav_path, cur_path); + if (length > max_length) { + max_length = length; + pos = i; + } + } + + // Add class to parent
    2. , and enclosing
    3. if in dropdown + if (pos >= 0) { + var menu_anchor = $(links[pos]); + menu_anchor.parent().addClass("active"); + menu_anchor.closest("li.dropdown").addClass("active"); + } + }); + + function paths(pathname) { + var pieces = pathname.split("/"); + pieces.shift(); // always starts with / + + var end = pieces[pieces.length - 1]; + if (end === "index.html" || end === "") + pieces.pop(); + return(pieces); + } + + // Returns -1 if not found + function prefix_length(needle, haystack) { + if (needle.length > haystack.length) + return(-1); + + // Special case for length-0 haystack, since for loop won't run + if (haystack.length === 0) { + return(needle.length === 0 ? 0 : -1); + } + + for (var i = 0; i < haystack.length; i++) { + if (needle[i] != haystack[i]) + return(i); + } + + return(haystack.length); + } + + /* Clipboard --------------------------*/ + + function changeTooltipMessage(element, msg) { + var tooltipOriginalTitle=element.getAttribute('data-original-title'); + element.setAttribute('data-original-title', msg); + $(element).tooltip('show'); + element.setAttribute('data-original-title', tooltipOriginalTitle); + } + + if(ClipboardJS.isSupported()) { + $(document).ready(function() { + var copyButton = ""; + + $("div.sourceCode").addClass("hasCopyButton"); + + // Insert copy buttons: + $(copyButton).prependTo(".hasCopyButton"); + + // Initialize tooltips: + $('.btn-copy-ex').tooltip({container: 'body'}); + + // Initialize clipboard: + var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', { + text: function(trigger) { + return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, ""); + } + }); + + clipboardBtnCopies.on('success', function(e) { + changeTooltipMessage(e.trigger, 'Copied!'); + e.clearSelection(); + }); + + clipboardBtnCopies.on('error', function() { + changeTooltipMessage(e.trigger,'Press Ctrl+C or Command+C to copy'); + }); + }); + } +})(window.jQuery || window.$) diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml new file mode 100644 index 0000000..908c34c --- /dev/null +++ b/docs/pkgdown.yml @@ -0,0 +1,6 @@ +pandoc: 3.1.1 +pkgdown: 2.0.7 +pkgdown_sha: ~ +articles: {} +last_built: 2024-04-02T09:12Z + diff --git a/docs/reference/Rplot001.png b/docs/reference/Rplot001.png new file mode 100644 index 0000000..17a3580 Binary files /dev/null and b/docs/reference/Rplot001.png differ diff --git a/docs/reference/accordion.html b/docs/reference/accordion.html new file mode 100644 index 0000000..739c7ef --- /dev/null +++ b/docs/reference/accordion.html @@ -0,0 +1,137 @@ + +Accordion Function — accordion • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function inserts a accordion

      +
      + +
      +
      accordion(inputId, titles, descriptions)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      Input id for the accordion

      + + +
      titles
      +

      Add the titles for the accordion

      + + +
      descriptions
      +

      Add the main text for the accordion

      + +
      +
      +

      Value

      + + +

      an accordion html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::banner(
      +      inputId = "banner", type = "beta", 'This is a new service'),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +    accordion(
      +      "acc1",
      +      c("Writing well for the web",
      +        "Writing well for specialists",
      +        "Know your audience",
      +        "How people read"
      +       ),
      +      c("This is the content for Writing well for the web.",
      +        "This is the content for Writing well for specialists.",
      +        "This is the content for Know your audience.",
      +        "This is the content for How people read."
      +       ))),
      +
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/backlink_Input.html b/docs/reference/backlink_Input.html new file mode 100644 index 0000000..4ad2d95 --- /dev/null +++ b/docs/reference/backlink_Input.html @@ -0,0 +1,134 @@ + +Back Link Function — backlink_Input • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function adds a back link to the page

      +
      + +
      +
      backlink_Input(inputId)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + +
      +
      +

      Value

      + + +

      a backlink html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shiny::navlistPanel(
      +      "",
      +      id="nav",
      +      widths = c(2, 10),
      +      well = FALSE,
      +
      +      #Create first panel
      +      shiny::tabPanel(
      +        "Select Types",
      +        value = "panel1",
      +        gov_layout(size = "two-thirds",
      +          backlink_Input("link1"),
      +          shiny::tags$br(), shiny::tags$br()
      +       )),
      +       shiny::tabPanel(
      +         "Tab2",
      +         value = "panel2")),
      +   shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {
      +    #Slightly confused in that it goes forward rather than back, but shows how
      +    #to use
      +    observeEvent(input$link1,{
      +      updateTabsetPanel(session, "nav", selected = "panel2")
      +    })
      +  }
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/banner.html b/docs/reference/banner.html new file mode 100644 index 0000000..a3022c1 --- /dev/null +++ b/docs/reference/banner.html @@ -0,0 +1,124 @@ + +Banner Function — banner • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create a detail component that you can click for further +details.

      +
      + +
      +
      banner(inputId, type, label)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + + +
      type
      +

      Main type of label e.g. alpha or beta. Can be any word.

      + + +
      label
      +

      test to display.

      + +
      +
      +

      Value

      + + +

      a banner html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::banner(
      +      inputId = "banner", type = "beta", 'This is a new service')
      +  )
      +
      +  server <- function(input, output, session) {}
      +
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/button_Input.html b/docs/reference/button_Input.html new file mode 100644 index 0000000..f053e19 --- /dev/null +++ b/docs/reference/button_Input.html @@ -0,0 +1,126 @@ + +Button Function — button_Input • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create a gov style button

      +
      + +
      +
      button_Input(inputId, label, type = "default")
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + + +
      label
      +

      Display label for the control, or NULL for no label.

      + + +
      type
      +

      The type of button. Options are default, start, secondary and +warning. Defaults to default.

      + +
      +
      +

      Value

      + + +

      a html button shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      shinyGovstyle::button_Input(
      +        inputId = "btn1",
      +        label = "Continue",
      +        type = "default")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/checkbox_Input.html b/docs/reference/checkbox_Input.html new file mode 100644 index 0000000..380ccc6 --- /dev/null +++ b/docs/reference/checkbox_Input.html @@ -0,0 +1,183 @@ + +Checkbox Function — checkbox_Input • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function inserts a checkbox group

      +
      + +
      +
      checkbox_Input(
      +  inputId,
      +  cb_labels,
      +  checkboxIds,
      +  label,
      +  hint_label = NULL,
      +  small = FALSE,
      +  error = FALSE,
      +  error_message = NULL
      +)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      Input id for the group of checkboxes

      + + +
      cb_labels
      +

      Add the names of the options that will appear

      + + +
      checkboxIds
      +

      Add the values for each checkbox

      + + +
      label
      +

      Insert the text for the checkbox group.

      + + +
      hint_label
      +

      Insert optional hint/secondary text. Defaults to NULL

      + + +
      small
      +

      change the sizing to a small version of the checkbox. Defaults +to FALSE

      + + +
      error
      +

      Whenever you want to include error handle on the component.

      + + +
      error_message
      +

      If you want a default error message.

      + +
      +
      +

      Value

      + + +

      a checkbox html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  ui <- fluidPage(
      +    # Required for error handling function
      +    shinyjs::useShinyjs(),
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::banner(
      +      inputId = "banner", type = "beta", 'This is a new service'),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      # Simple checkbox
      +      shinyGovstyle::checkbox_Input(
      +        inputId = "check1",
      +        cb_labels = c("Option 1", "Option 2", "Option 3"),
      +        checkboxIds = c("op1", "op2", "op3"),
      +        label = "Choice option"),
      +       # Error checkbox
      +      shinyGovstyle::checkbox_Input(
      +        inputId = "check2",
      +        cb_labels = c("Option 1", "Option 2", "Option 3"),
      +        checkboxIds = c("op1", "op2", "op3"),
      +        label = "Choice option",
      +        hint_label = "Select the best fit",
      +        error = TRUE,
      +        error_message = "Select one"),
      +      # Button to trigger error
      +      shinyGovstyle::button_Input(inputId = "submit", label = "Submit")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {
      +    #'Trigger error on blank submit of eventId2
      +    observeEvent(input$submit, {
      +      if (is.null(input$check2)){
      +        shinyGovstyle::error_on(inputId = "check2")
      +      } else {
      +        shinyGovstyle::error_off(inputId = "check2")
      +      }
      +    })
      +  }
      +
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/cookieBanner.html b/docs/reference/cookieBanner.html new file mode 100644 index 0000000..7adafdf --- /dev/null +++ b/docs/reference/cookieBanner.html @@ -0,0 +1,145 @@ + +Cookie Banner Function — cookieBanner • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function creates a cookie banner. You need to have shinyjs::useShinyjs() +enabled to work. All the ids are pre set. See example for how to +structure.

      +
      + +
      +
      cookieBanner(service_name)
      +
      + +
      +

      Arguments

      +
      service_name
      +

      Name for this service to add to banner

      + +
      +
      +

      Value

      + + +

      a cookie banner html shiny object.

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +ui <- fluidPage(
      +  shinyGovstyle::header(
      +    main_text = "Example",
      +    secondary_text = "User Examples",
      +    logo="shinyGovstyle/images/moj_logo.png"),
      +  #Needs shinyjs to work
      +  shinyjs::useShinyjs(),
      +  shinyGovstyle::cookieBanner("The best thing"),
      +  shinyGovstyle::gov_layout(size = "two-thirds"),
      +  shinyGovstyle::footer(full = TRUE)
      +)
      +
      +server <- function(input, output, session) {
      +
      +  #Need these set of observeEvent to create a path through the cookie banner
      +  observeEvent(input$cookieAccept, {
      +    shinyjs::show(id = "cookieAcceptDiv")
      +    shinyjs::hide(id = "cookieMain")
      +  })
      +
      +  observeEvent(input$cookieReject, {
      +    shinyjs::show(id = "cookieRejectDiv")
      +    shinyjs::hide(id = "cookieMain")
      +  })
      +
      +  observeEvent(input$hideAccept, {
      +    shinyjs::toggle(id = "cookieDiv")
      +  })
      +
      +  observeEvent(input$hideReject, {
      +    shinyjs::toggle(id = "cookieDiv")
      +  })
      +
      +  observeEvent(input$cookieLink, {
      +    #Need to link here to where further info is located.  You can you
      +    #updateTabsetPanel to have a cookie page for instance
      +  })
      +
      +}
      +shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/date_Input.html b/docs/reference/date_Input.html new file mode 100644 index 0000000..a06b4ec --- /dev/null +++ b/docs/reference/date_Input.html @@ -0,0 +1,178 @@ + +Date Input Function — date_Input • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create a date input that follows GDS component

      +
      + +
      +
      date_Input(
      +  inputId,
      +  label,
      +  hint_label = NULL,
      +  error = FALSE,
      +  error_message = NULL,
      +  day = NULL,
      +  month = NULL,
      +  year = NULL
      +)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + + +
      label
      +

      Display label for the control, or NULL for no label.

      + + +
      hint_label
      +

      Display hint label for the control, or NULL for no +hint label.

      + + +
      error
      +

      Whenever to include error components.Defaults to FALSE.

      + + +
      error_message
      +

      Error handling message? Defaults to NULL

      + + +
      day
      +

      Select a default day on start up. Defaults to NULL

      + + +
      month
      +

      Select a default month on start up. Defaults to NULL

      + + +
      year
      +

      Select a default year on start up. Defaults to NULL

      + +
      +
      +

      Value

      + + +

      a data input html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  ui <- fluidPage(
      +    # Required for error handling function.
      +    shinyjs::useShinyjs(),
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::banner(
      +      inputId = "banner", type = "beta", 'This is a new service'),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +       # Simple date input
      +      shinyGovstyle::date_Input(
      +        inputId = "dob_input",
      +        label = "Please enter your birthday"),
      +       # Error date input
      +       shinyGovstyle::date_Input(
      +         inputId = "dob_input2",
      +         label = "Please enter your birthday",
      +         hint_label = "For example, 12 11 2007",
      +         error = TRUE),
      +       # Button to trigger error
      +       shinyGovstyle::button_Input(inputId = "submit", label = "Submit")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {
      +    #'Trigger error on blank submit of dob_input2
      +    observeEvent(input$submit, {
      +      if (input$dob_input2 == "//"){
      +        shinyGovstyle::error_on(inputId = "dob_input2")
      +      } else {
      +        shinyGovstyle::error_off(
      +          inputId = "dob_input2")
      +      }
      +    })
      +  }
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/details.html b/docs/reference/details.html new file mode 100644 index 0000000..a989045 --- /dev/null +++ b/docs/reference/details.html @@ -0,0 +1,127 @@ + +Details Function — details • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create a detail component that you can click for further +details.

      +
      + +
      +
      details(inputId, label, help_text)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + + +
      label
      +

      Main label text

      + + +
      help_text
      +

      Additional help information in the component.

      + +
      +
      +

      Value

      + + +

      a details box html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      shinyGovstyle::details(
      +        inputId = "help_div",
      +        label = "Help with form",
      +        help_text = "To complete the form you need to fill it in...")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/error_off.html b/docs/reference/error_off.html new file mode 100644 index 0000000..ead8377 --- /dev/null +++ b/docs/reference/error_off.html @@ -0,0 +1,142 @@ + +Error off Function — error_off • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function turns off the the error o the component, once issues have +been sorted.

      +
      + +
      +
      error_off(inputId)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The inputId to turn error handling iff for on for.

      + +
      +
      +

      Value

      + + +

      no return value. This toggles off error css

      +
      + +
      +

      Examples

      +
      ## Only run examples in interactive R sessions
      +if (interactive()) {
      +
      +  ui <- fluidPage(
      +    # Required for error handling function
      +    shinyjs::useShinyjs(),
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::banner(
      +      inputId = "banner", type = "beta", 'This is a new service'),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      # Error text box
      +      shinyGovstyle::text_Input(
      +        inputId = "eventId",
      +        label = "Event Name",
      +        error = TRUE),
      +      # Button to trigger error
      +      shinyGovstyle::button_Input(inputId = "submit", label = "Submit")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +
      +  server <- function(input, output, session) {
      +    #Trigger error on blank submit of eventId2
      +    observeEvent(input$submit, {
      +      if (input$eventId != ""){
      +        shinyGovstyle::error_off(inputId = "eventId")
      +      } else {
      +        shinyGovstyle::error_on(
      +          inputId = "eventId",
      +          error_message = "Please complete")
      +      }
      +    })
      +  }
      +
      +  # Run the application
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/error_on.html b/docs/reference/error_on.html new file mode 100644 index 0000000..a52ad99 --- /dev/null +++ b/docs/reference/error_on.html @@ -0,0 +1,147 @@ + +Error on Function — error_on • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function turns on the the error o the component. Can be used to +validate inputs.

      +
      + +
      +
      error_on(inputId, error_message = NULL)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input id that you to to turn the error on for.

      + + +
      error_message
      +

      if you want to add an additional error message. +Defaults to NULL, showing the original designed error message

      + +
      +
      +

      Value

      + + +

      no return value. This toggles on error css

      +
      + +
      +

      Examples

      +
      ## Only run examples in interactive R sessions
      +if (interactive()) {
      +
      +  ui <- fluidPage(
      +    # Required for error handling function
      +    shinyjs::useShinyjs(),
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::banner(
      +      inputId = "banner", type = "beta", 'This is a new service'),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      # Error text box
      +      shinyGovstyle::text_Input(
      +        inputId = "eventId",
      +        label = "Event Name",
      +        error = TRUE),
      +      # Button to trigger error
      +      shinyGovstyle::button_Input(inputId = "submit", label = "Submit")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +
      +  server <- function(input, output, session) {
      +    #Trigger error on blank submit of eventId2
      +    observeEvent(input$submit, {
      +      if (input$eventId != ""){
      +        shinyGovstyle::error_off(inputId = "eventId")
      +      } else {
      +        shinyGovstyle::error_on(
      +          inputId = "eventId",
      +          error_message = "Please complete")
      +      }
      +    })
      +  }
      +
      +  # Run the application
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/error_summary.html b/docs/reference/error_summary.html new file mode 100644 index 0000000..af5a3ca --- /dev/null +++ b/docs/reference/error_summary.html @@ -0,0 +1,143 @@ + +Error Summary Function — error_summary • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function loads the error summary component to display error text. +This replicates the gov style error boxes linked below: +https://design-system.service.gov.uk/components/error-summary/

      +
      + +
      +
      error_summary(inputId, error_title, error_list)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + + +
      error_title
      +

      The title for the error summary.

      + + +
      error_list
      +

      A list of text values to be displayed in the error body.

      + +
      +
      +

      Value

      + + +

      an error_summary html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    shinyjs::useShinyjs(),
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo = "shinyGovstyle/images/moj_logo.png"
      +    ),
      +    shinyGovstyle::gov_layout(
      +      size = "two-thirds",
      +      error_summary(
      +        inputId = "errorId",
      +        error_title = "Error title",
      +        error_list = c("error item1", "error item2")
      +      )
      +    ),
      +    shinyGovstyle::button_Input("btn1", "Change error summary"),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {
      +
      +    shiny::observeEvent(input$btn1, {
      +      error_summary_update(
      +        "errorId",
      +        c("error item1", "error item2", "error item3")
      +      )},
      +      ignoreInit = TRUE
      +    )
      +  }
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/error_summary_update.html b/docs/reference/error_summary_update.html new file mode 100644 index 0000000..9afb62c --- /dev/null +++ b/docs/reference/error_summary_update.html @@ -0,0 +1,138 @@ + +Error Summary Update Function — error_summary_update • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function changes the text that displays in the error summary box. +Requires shinyjs::useShinyjs() to work.

      +
      + +
      +
      error_summary_update(inputId, error_list)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The inputid of the error summary you want to update

      + + +
      error_list
      +

      An updated list of text values to be displayed in the +error body.

      + +
      +
      +

      Value

      + + +

      an update error summary box

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    shinyjs::useShinyjs(),
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo = "shinyGovstyle/images/moj_logo.png"
      +    ),
      +    shinyGovstyle::gov_layout(
      +      size = "two-thirds",
      +      error_summary(
      +        inputId = "errorId",
      +        error_title = "Error title",
      +        error_list = c("error item1", "error item2")
      +      )
      +    ),
      +    shinyGovstyle::button_Input("btn1", "Change error summary"),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {
      +
      +    shiny::observeEvent(input$btn1, {
      +      error_summary_update(
      +        "errorId",
      +        c("error item1", "error item2", "error item3")
      +      )},
      +      ignoreInit = TRUE
      +    )
      +  }
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/figures/accordion.png b/docs/reference/figures/accordion.png new file mode 100644 index 0000000..8686635 Binary files /dev/null and b/docs/reference/figures/accordion.png differ diff --git a/docs/reference/figures/banner.png b/docs/reference/figures/banner.png new file mode 100644 index 0000000..a9886d3 Binary files /dev/null and b/docs/reference/figures/banner.png differ diff --git a/docs/reference/figures/buttons.png b/docs/reference/figures/buttons.png new file mode 100644 index 0000000..3edd942 Binary files /dev/null and b/docs/reference/figures/buttons.png differ diff --git a/docs/reference/figures/checkbox.png b/docs/reference/figures/checkbox.png new file mode 100644 index 0000000..1680a30 Binary files /dev/null and b/docs/reference/figures/checkbox.png differ diff --git a/docs/reference/figures/cookie.png b/docs/reference/figures/cookie.png new file mode 100644 index 0000000..ebe6ff5 Binary files /dev/null and b/docs/reference/figures/cookie.png differ diff --git a/docs/reference/figures/date.png b/docs/reference/figures/date.png new file mode 100644 index 0000000..ffd634b Binary files /dev/null and b/docs/reference/figures/date.png differ diff --git a/docs/reference/figures/details.png b/docs/reference/figures/details.png new file mode 100644 index 0000000..d3f587a Binary files /dev/null and b/docs/reference/figures/details.png differ diff --git a/docs/reference/figures/error.png b/docs/reference/figures/error.png new file mode 100644 index 0000000..e76a055 Binary files /dev/null and b/docs/reference/figures/error.png differ diff --git a/docs/reference/figures/example.png b/docs/reference/figures/example.png new file mode 100644 index 0000000..41feb87 Binary files /dev/null and b/docs/reference/figures/example.png differ diff --git a/docs/reference/figures/file.png b/docs/reference/figures/file.png new file mode 100644 index 0000000..f1aaab5 Binary files /dev/null and b/docs/reference/figures/file.png differ diff --git a/docs/reference/figures/insert.png b/docs/reference/figures/insert.png new file mode 100644 index 0000000..5c122e8 Binary files /dev/null and b/docs/reference/figures/insert.png differ diff --git a/docs/reference/figures/logo.png b/docs/reference/figures/logo.png new file mode 100644 index 0000000..d87cda6 Binary files /dev/null and b/docs/reference/figures/logo.png differ diff --git a/docs/reference/figures/noti_banner.png b/docs/reference/figures/noti_banner.png new file mode 100644 index 0000000..e0e5611 Binary files /dev/null and b/docs/reference/figures/noti_banner.png differ diff --git a/docs/reference/figures/page_layout.png b/docs/reference/figures/page_layout.png new file mode 100644 index 0000000..6326019 Binary files /dev/null and b/docs/reference/figures/page_layout.png differ diff --git a/docs/reference/figures/panel.png b/docs/reference/figures/panel.png new file mode 100644 index 0000000..15db806 Binary files /dev/null and b/docs/reference/figures/panel.png differ diff --git a/docs/reference/figures/radio_button_Input.png b/docs/reference/figures/radio_button_Input.png new file mode 100644 index 0000000..6289195 Binary files /dev/null and b/docs/reference/figures/radio_button_Input.png differ diff --git a/docs/reference/figures/select.png b/docs/reference/figures/select.png new file mode 100644 index 0000000..3c213c7 Binary files /dev/null and b/docs/reference/figures/select.png differ diff --git a/docs/reference/figures/summary.png b/docs/reference/figures/summary.png new file mode 100644 index 0000000..5b55cb6 Binary files /dev/null and b/docs/reference/figures/summary.png differ diff --git a/docs/reference/figures/table.png b/docs/reference/figures/table.png new file mode 100644 index 0000000..409eaaa Binary files /dev/null and b/docs/reference/figures/table.png differ diff --git a/docs/reference/figures/tabs.png b/docs/reference/figures/tabs.png new file mode 100644 index 0000000..c1841d1 Binary files /dev/null and b/docs/reference/figures/tabs.png differ diff --git a/docs/reference/figures/tags.png b/docs/reference/figures/tags.png new file mode 100644 index 0000000..f17cbf4 Binary files /dev/null and b/docs/reference/figures/tags.png differ diff --git a/docs/reference/figures/text.png b/docs/reference/figures/text.png new file mode 100644 index 0000000..d1e13d4 Binary files /dev/null and b/docs/reference/figures/text.png differ diff --git a/docs/reference/figures/text_area.png b/docs/reference/figures/text_area.png new file mode 100644 index 0000000..099ff69 Binary files /dev/null and b/docs/reference/figures/text_area.png differ diff --git a/docs/reference/figures/warning.png b/docs/reference/figures/warning.png new file mode 100644 index 0000000..680d7d3 Binary files /dev/null and b/docs/reference/figures/warning.png differ diff --git a/docs/reference/figures/word_count.png b/docs/reference/figures/word_count.png new file mode 100644 index 0000000..911ac93 Binary files /dev/null and b/docs/reference/figures/word_count.png differ diff --git a/docs/reference/file_Input.html b/docs/reference/file_Input.html new file mode 100644 index 0000000..5de3f4f --- /dev/null +++ b/docs/reference/file_Input.html @@ -0,0 +1,190 @@ + +File Input Function — file_Input • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create a file upload component. It uses the basis of the +shiny fileInput function, but restyles the label and adds error onto it. +It doesn't look like the www.gov.uk/ style one, although this www.gov.uk/ +doesn't seem to have a settle style as, for example it changes between +Firefox and Chrome

      +
      + +
      +
      file_Input(
      +  inputId,
      +  label,
      +  multiple = FALSE,
      +  accept = NULL,
      +  width = NULL,
      +  buttonLabel = "Choose file",
      +  placeholder = "No file chosen",
      +  error = FALSE,
      +  error_message = NULL
      +)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + + +
      label
      +

      Display label for the control, or NULL for no label.

      + + +
      multiple
      +

      Whether the user should be allowed to select and upload +multiple files at once. Does not work on older browsers, including Internet +Explorer 9 and earlier.

      + + +
      accept
      +

      A character vector of MIME types; gives the browser a hint of +what kind of files the server is expecting.

      + + +
      width
      +

      The width of the input, e.g. '400px', or '100%'

      + + +
      buttonLabel
      +

      The label used on the button. Can be text or an HTML tag +object.

      + + +
      placeholder
      +

      The text to show before a file has been uploaded.

      + + +
      error
      +

      Whenever to icnlud error handling Defaults to FALSE.

      + + +
      error_message
      +

      Message to display on error. Defaults to NULL

      + +
      +
      +

      Value

      + + +

      a file input html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    # Required for error handling function
      +    shinyjs::useShinyjs(),
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::banner(
      +    inputId = "banner", type = "beta", 'This is a new service'),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      # Simple file input
      +      shinyGovstyle::file_Input(inputId = "file1", label = "Upload a file"),
      +      # Error file
      +      shinyGovstyle::file_Input(
      +        inputId = "file2",
      +        label = "Upload a file",
      +        error = TRUE),
      +      # Button to trigger error
      +      shinyGovstyle::button_Input(inputId = "submit", label = "Submit")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {
      +    #'Trigger error on blank submit of file2
      +    observeEvent(input$submit, {
      +      if (is.null(input$file2)){
      +        shinyGovstyle::error_on(inputId = "file2")
      +      } else {
      +        shinyGovstyle::error_off(
      +          inputId = "file2")
      +      }
      +    })
      +  }
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/font.html b/docs/reference/font.html new file mode 100644 index 0000000..8ee6f49 --- /dev/null +++ b/docs/reference/font.html @@ -0,0 +1,111 @@ + +Font Function — font • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function adds rge nta fonts to the app. See +https://design-system.service.gov.uk/styles/typography/ for when they +are allowed.

      +
      + +
      +
      font()
      +
      + +
      +

      Value

      + + +

      no value returned. This loads the font css file

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  ui <- fluidPage(
      +    font(),
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png")
      +  )
      +
      +  server <- function(input, output, session) {}
      +
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/footer.html b/docs/reference/footer.html new file mode 100644 index 0000000..8f7d710 --- /dev/null +++ b/docs/reference/footer.html @@ -0,0 +1,118 @@ + +Footer Function — footer • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create a gov style footer for your page

      +
      + +
      +
      footer(full = FALSE)
      +
      + +
      +

      Arguments

      +
      full
      +

      Whenever you want to have blank footer or official gov version. +Defaults to FALSE

      + +
      +
      +

      Value

      + + +

      a footer html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::banner(
      +      inputId = "banner", type = "beta", 'This is a new service'),
      +    tags$br(),
      +    tags$br(),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/govTable.html b/docs/reference/govTable.html new file mode 100644 index 0000000..4446377 --- /dev/null +++ b/docs/reference/govTable.html @@ -0,0 +1,159 @@ + +Table Function — govTable • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function inserts a gov styled table. Format is with header looking +rows and columns

      +
      + +
      +
      govTable(
      +  inputId,
      +  df,
      +  caption,
      +  caption_size = "l",
      +  num_col = NULL,
      +  width_overwrite = NULL
      +)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      Input id for the table

      + + +
      df
      +

      expects a dataframe to create a table

      + + +
      caption
      +

      adds a caption to the table as a header

      + + +
      caption_size
      +

      adjust the size of caption. Options are s, m, l, xl, +with l as the default

      + + +
      num_col
      +

      adds numeric class format to these columns.

      + + +
      width_overwrite
      +

      change width. Need to include width for every column. +Options are three-quarters, two-thirds, one-half, one-third, one-quarter. +Default is NULL.

      + +
      +
      +

      Value

      + + +

      an table html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  Months <- c("January", "February", "March")
      +  Bikes <- c("£85", "£75", "£165")
      +  Cars <- c("£95", "£55", "£125")
      +
      +  example_data <- data.frame(Months, Bikes, Cars)
      +
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::banner(
      +      inputId = "banner", type = "beta", 'This is a new service'),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +    shinyGovstyle::govTable(
      +      "tab1", example_data, "Test", "l", num_col = c(2,3),
      +      width_overwrite = c("one-half", "one-quarter", "one-quarter"))
      +    ),
      +
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/govTabs.html b/docs/reference/govTabs.html new file mode 100644 index 0000000..3b897f7 --- /dev/null +++ b/docs/reference/govTabs.html @@ -0,0 +1,134 @@ + +Tabs Function — govTabs • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function creates a tabs based table. It requires a single dataframe +with a grouping variable

      +
      + +
      +
      govTabs(inputId, df, group_col)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The id to access the tag

      + + +
      df
      +

      A single dataframe with all data. See example for structure.

      + + +
      group_col
      +

      The column name with the groups to be used as tabs

      + +
      +
      +

      Value

      + + +

      a tab table html shiny object.

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  # Create an example dataset
      +  tabs <- c(rep("Past Day", 3),
      +            rep("Past Week", 3),
      +            rep("Past Month", 3),
      +            rep("Past Year", 3))
      +  Case_manager <- rep(c("David Francis", "Paul Farmer", "Rita Patel"),4)
      +  Cases_open <- c(3, 1, 2, 24, 16, 24, 98, 122, 126, 1380, 1129, 1539)
      +  Cases_closed <- c(0, 0, 0, 18, 20, 27, 95, 131, 142, 1472, 1083, 1265)
      +  data <- data.frame(tabs, Case_manager, Cases_open, Cases_closed)
      +
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      shinyGovstyle::govTabs(data, "tabs")),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/gov_layout.html b/docs/reference/gov_layout.html new file mode 100644 index 0000000..6849a4c --- /dev/null +++ b/docs/reference/gov_layout.html @@ -0,0 +1,132 @@ + +Page Layout Function — gov_layout • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function loads the page layout, This doesn't work as well as +the `gov_main_layout` and associated functions. This is being kept for now +as a simpler version where grids are not needed.

      +
      + +
      +
      gov_layout(..., inputID = "main", size = "full")
      +
      + +
      +

      Arguments

      +
      ...
      +

      include the components of the UI that you want within the +main page.

      + + +
      inputID
      +

      ID of the main div. Defaults to "main"

      + + +
      size
      +

      Layout of the page. Optional are full, one-half, two-thirds, +one-third and one-quarter. Defaults to "full"

      + +
      +
      +

      Value

      + + +

      a html shiny layout div

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "full",
      +      shinyGovstyle::panel_output(
      +        inputId = "panel1",
      +        main_text = "Application Complete",
      +        sub_text = "Thank you for submitting your application.
      +        Your reference is xvsiq")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/gov_summary.html b/docs/reference/gov_summary.html new file mode 100644 index 0000000..81523ec --- /dev/null +++ b/docs/reference/gov_summary.html @@ -0,0 +1,144 @@ + +Tabs Function — gov_summary • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function creates a tabs based table. It requires a single dataframe +with a grouping variable

      +
      + +
      +
      gov_summary(inputId, headers, info, action = FALSE, border = TRUE)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The id to access the summary list

      + + +
      headers
      +

      input for the row headers value

      + + +
      info
      +

      summary information values for the table

      + + +
      action
      +

      whenever a change link is needed. sets input to the value of +the headers using lowercase and with underscore to replace gaps. Default +set to FALSE

      + + +
      border
      +

      set if the table should have borders. Default set +to TRUE

      + +
      +
      +

      Value

      + + +

      a summary list table html shiny object.

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  # Create an example dataset
      +  headers <- c("Name", "Date of birth", "Contact information", "Contact details")
      +  info <- c(
      +    "Sarah Philips",
      +    "5 January 1978",
      +    "72 Guild Street <br> London <br> SE23 6FH",
      +    "07700 900457 <br> sarah.phillips@example.com")
      +
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      shinyGovstyle::gov_summary("sumID", headers, info, action = FALSE)),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/header.html b/docs/reference/header.html new file mode 100644 index 0000000..fc0effb --- /dev/null +++ b/docs/reference/header.html @@ -0,0 +1,145 @@ + +Header Function — header • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create a header banner. For use at top of the screen

      +
      + +
      +
      header(
      +  main_text,
      +  secondary_text,
      +  logo = NULL,
      +  main_link = "#",
      +  secondary_link = "#",
      +  logo_width = 36,
      +  logo_height = 32
      +)
      +
      + +
      +

      Arguments

      +
      main_text
      +

      Main text that goes in the header

      + + +
      secondary_text
      +

      Secondary header to supplement the main text

      + + +
      logo
      +

      Add a link to a logo which will apply in the header. Use crown to +use the crown svg version on gov uk.

      + + +
      main_link
      +

      Add a link for clicking on main text

      + + +
      secondary_link
      +

      Add a link for clicking on secondary header.

      + + +
      logo_width
      +

      Change the logo size width css to improve fit

      + + +
      logo_height
      +

      Change the logo size height css to improve fit

      + +
      +
      +

      Value

      + + +

      a header html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png")
      +  )
      +
      +  server <- function(input, output, session) {}
      +
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/heading_text.html b/docs/reference/heading_text.html new file mode 100644 index 0000000..5a4fe79 --- /dev/null +++ b/docs/reference/heading_text.html @@ -0,0 +1,118 @@ + +Heading Text Function — heading_text • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create a heading text

      +
      + +
      +
      heading_text(text_input, size = "xl")
      +
      + +
      +

      Arguments

      +
      text_input
      +

      Text to display

      + + +
      size
      +

      Text size using xl, l, m, s. Defaults to xl.

      + +
      +
      +

      Value

      + + +

      a heading text html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      shinyGovstyle::heading_text("This is great text", "m")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/index.html b/docs/reference/index.html new file mode 100644 index 0000000..86408da --- /dev/null +++ b/docs/reference/index.html @@ -0,0 +1,217 @@ + +Function reference • shinyGovstyle + + +
      +
      + + + +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      +

      All functions

      +

      +
      +

      accordion()

      +

      Accordion Function

      +

      backlink_Input()

      +

      Back Link Function

      +

      banner()

      +

      Banner Function

      +

      button_Input()

      +

      Button Function

      +

      checkbox_Input()

      +

      Checkbox Function

      +

      cookieBanner()

      +

      Cookie Banner Function

      +

      date_Input()

      +

      Date Input Function

      +

      details()

      +

      Details Function

      +

      error_off()

      +

      Error off Function

      +

      error_on()

      +

      Error on Function

      +

      error_summary()

      +

      Error Summary Function

      +

      error_summary_update()

      +

      Error Summary Update Function

      +

      file_Input()

      +

      File Input Function

      +

      font()

      +

      Font Function

      +

      footer()

      +

      Footer Function

      +

      govTable()

      +

      Table Function

      +

      govTabs()

      +

      Tabs Function

      +

      gov_layout()

      +

      Page Layout Function

      +

      gov_summary()

      +

      Tabs Function

      +

      header()

      +

      Header Function

      +

      heading_text()

      +

      Heading Text Function

      +

      input_field()

      +

      Input Field Function

      +

      insert_text()

      +

      Insert Text Function

      +

      label_hint()

      +

      Label with Hint Function

      +

      gov_main_layout() gov_row() gov_box() gov_text()

      +

      Page Layout Functions

      +

      noti_banner()

      +

      Notification Banner Function

      +

      panel_output()

      +

      Panel output

      +

      radio_button_Input()

      +

      Radio Button Function

      +

      run_example()

      +

      Example Function

      +

      select_Input()

      +

      Select Function

      +

      tag_Input()

      +

      Tag Function

      +

      text_area_Input()

      +

      Text Area Input Function

      +

      text_Input()

      +

      Text Input Function

      +

      warning_text()

      +

      Warning Text Function

      +

      word_count()

      +

      Word Count Function

      + + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/input_field.html b/docs/reference/input_field.html new file mode 100644 index 0000000..9c8c9ff --- /dev/null +++ b/docs/reference/input_field.html @@ -0,0 +1,170 @@ + +Input Field Function — input_field • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function inserts number of text inputs. Useful for addresses.

      +
      + +
      +
      input_field(
      +  legend,
      +  labels,
      +  inputIds,
      +  widths = NULL,
      +  types = "text",
      +  error = FALSE,
      +  error_message = NULL
      +)
      +
      + +
      +

      Arguments

      +
      legend
      +

      Legend that goes above the fieldset

      + + +
      labels
      +

      A list of labels for the text inputs

      + + +
      inputIds
      +

      A list input slots that will be used to access the value.

      + + +
      widths
      +

      control the size of the box based on number of characters +required. Options are 30, 20, 10, 5, 4, 3, 2. NULL will not limit the size

      + + +
      types
      +

      text box types. Will default to text.

      + + +
      error
      +

      Whenever to icnlud error handling Defaults to FALSE.

      + + +
      error_message
      +

      Message to display on error. Defaults to NULL

      + +
      +
      +

      Value

      + + +

      a input field of html as a shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  ui <- fluidPage(
      +    # Required for error handling function
      +    shinyjs::useShinyjs(),
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::banner(
      +      inputId = "banner", type = "beta", 'This is a new service'),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      shinyGovstyle::input_field(
      +        legend ="List of three text boxes in a field",
      +        labels = c("Field 1", "Field 2", "Field 3"),
      +        inputIds = c("field1", "field2", "field3"),
      +        widths = c(30,20,10),
      +        error = TRUE),
      +     # Button to trigger error
      +     shinyGovstyle::button_Input(inputId = "submit", label = "Submit")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {
      +    # Trigger error on blank submit of field2
      +    observeEvent(input$submit, {
      +      if (input$field2 == ""){
      +        shinyGovstyle::error_on(inputId = "field2",
      +                                error_message = "Please complete")
      +      } else {
      +        shinyGovstyle::error_off(
      +          inputId = "field2")
      +      }
      +    })
      +  }
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/insert_text.html b/docs/reference/insert_text.html new file mode 100644 index 0000000..4d0a08e --- /dev/null +++ b/docs/reference/insert_text.html @@ -0,0 +1,124 @@ + +Insert Text Function — insert_text • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function loads the insert text component to display additional +information in a special format.

      +
      + +
      +
      insert_text(inputId, text)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + + +
      text
      +

      Text that you want to display on the insert

      + +
      +
      +

      Value

      + + +

      a insert text html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      shinyGovstyle::insert_text(
      +        inputId = "note",
      +        text = "It can take up to 8 weeks to register a lasting power of
      +                attorney if there are no mistakes in the application."
      +      )
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/label_hint.html b/docs/reference/label_hint.html new file mode 100644 index 0000000..132a74f --- /dev/null +++ b/docs/reference/label_hint.html @@ -0,0 +1,126 @@ + +Label with Hint Function — label_hint • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function inserts a label and optional hint

      +
      + +
      +
      label_hint(inputId, label, hint_input = NULL)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + + +
      label
      +

      Display label for the control, or NULL for no label.

      + + +
      hint_input
      +

      Display hint label for the control, or NULL for +no hint label.

      + +
      +
      +

      Value

      + + +

      a label hint html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      label_hint(
      +        inputId = "label1",
      +        label = "This is a label",
      +        hint_input = "This is a hint")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/layouts.html b/docs/reference/layouts.html new file mode 100644 index 0000000..125faa5 --- /dev/null +++ b/docs/reference/layouts.html @@ -0,0 +1,172 @@ + +Page Layout Functions — layouts • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      These function loads the page layout in a gov layout. There is a selection +of components that can sit within each other. The gov_main_layout is the +overarching layout. The gov_row creates a each row and gov_box creates +a box within the row. The gov_text is a container for text bodies.

      +
      + +
      +
      gov_main_layout(..., inputID = "main")
      +
      +gov_row(...)
      +
      +gov_box(..., size = "full")
      +
      +gov_text(...)
      +
      + +
      +

      Arguments

      +
      ...
      +

      include the components of the UI that you want within the +main page. These components are made to flow through each other. See +example

      + + +
      inputID
      +

      ID of the main div. Defaults to "main"

      + + +
      size
      +

      size of the box in the row. Optional are full, one-half, +two-thirds, one-third and one-quarter. Defaults to "full"

      + +
      +
      +

      Value

      + + +

      a html shiny layout div

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_main_layout(
      +      shinyGovstyle::gov_row(
      +        shinyGovstyle::gov_box(
      +          size = "full",
      +          shinyGovstyle::gov_text("govuk-grid-column-full")
      +        )
      +      ),
      +      shinyGovstyle::gov_row(
      +        shinyGovstyle::gov_box(
      +          size = "one-half",
      +          shinyGovstyle::gov_text("govuk-grid-column-one-half")
      +        ),
      +        shinyGovstyle::gov_box(
      +          size = "one-half",
      +          shinyGovstyle::gov_text("govuk-grid-column-one-half")
      +        )
      +      ),
      +      shinyGovstyle::gov_row(
      +        shinyGovstyle::gov_box(
      +          size = "one-third",
      +          shinyGovstyle::gov_text("govuk-grid-column-one-third")
      +        ),
      +        shinyGovstyle::gov_box(
      +          size = "two-third",
      +          shinyGovstyle::gov_text("govuk-grid-column-two-third")
      +        )
      +      ),
      +      shinyGovstyle::gov_row(
      +        shinyGovstyle::gov_box(
      +          size = "one-quarter",
      +          shinyGovstyle::gov_text("govuk-grid-column-one-quarter")
      +        ),
      +        shinyGovstyle::gov_box(
      +          size = "three-quarters",
      +          shinyGovstyle::gov_text("govuk-grid-column-three-quarters")
      +        )
      +      )
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/noti_banner.html b/docs/reference/noti_banner.html new file mode 100644 index 0000000..7fa8d28 --- /dev/null +++ b/docs/reference/noti_banner.html @@ -0,0 +1,133 @@ + +Notification Banner Function — noti_banner • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create a notification banner

      +
      + +
      +
      noti_banner(
      +  inputId,
      +  title_txt = "Important",
      +  body_txt = NULL,
      +  type = "standard"
      +)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input id for the banner

      + + +
      title_txt
      +

      The wording that appears in the title

      + + +
      body_txt
      +

      The wording that appears in the banner body

      + + +
      type
      +

      The type of banner. Options are standard and success. +Standard is default

      + +
      +
      +

      Value

      + + +

      a notification html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::noti_banner(
      +      inputId = "banner", title_txt = "Important", body_txt = "Example text")
      +  )
      +
      +  server <- function(input, output, session) {}
      +
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/panel_output.html b/docs/reference/panel_output.html new file mode 100644 index 0000000..648a497 --- /dev/null +++ b/docs/reference/panel_output.html @@ -0,0 +1,126 @@ + +Panel output — panel_output • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function inserts a panel. Normally used for confirmation screens

      +
      + +
      +
      panel_output(inputId, main_text, sub_text)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + + +
      main_text
      +

      Add the header for the panel

      + + +
      sub_text
      +

      Add the main body of text for the panel

      + +
      +
      +

      Value

      + + +

      a panel html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "full",
      +      shinyGovstyle::panel_output(
      +        inputId = "panel1",
      +        main_text = "Application Complete",
      +        sub_text = "Thank you for submitting your application.
      +                    Your reference is xvsiq")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/radio_button_Input.html b/docs/reference/radio_button_Input.html new file mode 100644 index 0000000..6ebfba8 --- /dev/null +++ b/docs/reference/radio_button_Input.html @@ -0,0 +1,208 @@ + +Radio Button Function — radio_button_Input • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create radio buttons

      +
      + +
      +
      radio_button_Input(
      +  inputId,
      +  label,
      +  choices = NULL,
      +  selected = NULL,
      +  inline = FALSE,
      +  small = FALSE,
      +  choiceNames = NULL,
      +  choiceValues = NULL,
      +  hint_label = NULL,
      +  error = FALSE,
      +  error_message = NULL,
      +  custom_class = ""
      +)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + + +
      label
      +

      Input label.

      + + +
      choices
      +

      List of values to select from (if elements of the list are +named then that name rather than the value is displayed to the user)

      + + +
      selected
      +

      The initially selected value.

      + + +
      inline
      +

      If you want the radio inline or not, Default is FALSE

      + + +
      small
      +

      If you want the smaller versions of radio buttons, Default +is FALSE

      + + +
      choiceNames, choiceValues
      +

      Same as in +checkboxGroupInput. List of names and values, +respectively, that are displayed to the user in the app and correspond to +the each choice (for this reason they must have the same length). If either +of these arguments is provided, then the other must be provided and choices +must not be provided. The advantage of using both of these over a named list +for choices is that choiceNames allows any type of UI object to be passed +through (tag objects, icons, HTML code, ...), instead of just simple text.

      + + +
      hint_label
      +

      Additional hint text you may want to display below the +label. Defaults to NULL

      + + +
      error
      +

      Whenever you want to include error handle on the component.

      + + +
      error_message
      +

      If you want a default error message.

      + + +
      custom_class
      +

      If you want to add additional classes to the radio +buttons

      + +
      +
      +

      Value

      + + +

      radio buttons html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  ui <- fluidPage(
      +    # Required for error handling function
      +    shinyjs::useShinyjs(),
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::banner(
      +      inputId = "banner", type = "beta", 'This is a new service'),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      #Simple radio
      +      shinyGovstyle::radio_button_Input(
      +        inputId = "radio1",
      +        choices = c("Yes", "No", "Maybe"),
      +        label = "Choice option"),
      +      # Error radio
      +      shinyGovstyle::radio_button_Input(
      +        inputId = "radio2",
      +        choices = c("Yes", "No", "Maybe"),
      +        label = "Choice option",
      +        hint_label = "Select the best fit",
      +        inline = TRUE,
      +        error = TRUE,
      +        error_message = "Select one"),
      +      # Button to trigger error
      +      shinyGovstyle::button_Input(inputId = "submit", label = "Submit")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {
      +    #Trigger error on blank submit of eventId2
      +    observeEvent(input$submit, {
      +      if (is.null(input$radio2)){
      +        shinyGovstyle::error_on(inputId = "radio2")
      +      } else {
      +        shinyGovstyle::error_off(
      +          inputId = "radio2")
      +      }
      +    })
      +  }
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/run_example.html b/docs/reference/run_example.html new file mode 100644 index 0000000..a1ad1a4 --- /dev/null +++ b/docs/reference/run_example.html @@ -0,0 +1,96 @@ + +Example Function — run_example • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function runs a shiny example using different parts of the package

      +
      + +
      +
      run_example()
      +
      + +
      +

      Value

      + + +

      a shiny app with examples in

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +run_example()
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/select_Input.html b/docs/reference/select_Input.html new file mode 100644 index 0000000..17cfc7a --- /dev/null +++ b/docs/reference/select_Input.html @@ -0,0 +1,134 @@ + +Select Function — select_Input • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function inserts a select box

      +
      + +
      +
      select_Input(inputId, label, select_text, select_value)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      Input id for the component

      + + +
      label
      +

      Insert the text for the label.

      + + +
      select_text
      +

      Add the text that will apply in the drop down as a list

      + + +
      select_value
      +

      Add the value that will be used for each selection.

      + +
      +
      +

      Value

      + + +

      a select input html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "full",
      +      select_Input(
      +        inputId = "sorter",
      +        label = "Sort by",
      +        select_text = c("Recently published",
      +                        "Recently updated",
      +                        "Most views",
      +                        "Most comments"),
      +        select_value = c("published", "updated", "view", "comments")),
      +        tags$br()
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/tag_Input.html b/docs/reference/tag_Input.html new file mode 100644 index 0000000..af131d1 --- /dev/null +++ b/docs/reference/tag_Input.html @@ -0,0 +1,123 @@ + +Tag Function — tag_Input • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function creates a tag

      +
      + +
      +
      tag_Input(inputId, text, colour = "navy")
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The id to access the tag

      + + +
      text
      +

      The text in the tag

      + + +
      colour
      +

      The colour of the tag. Default is navy. Other options are +grey, green, turquoise, blue, purple, pink, red, orange and yellow

      + +
      +
      +

      Value

      + + +

      a tag html shiny object.

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      shinyGovstyle::tag_Input("tag1", "COMPLETE"),
      +      shinyGovstyle::tag_Input("tag2", "INCOMPLETE", "red")),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/text_Input.html b/docs/reference/text_Input.html new file mode 100644 index 0000000..1fe971a --- /dev/null +++ b/docs/reference/text_Input.html @@ -0,0 +1,187 @@ + +Text Input Function — text_Input • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create a text area input

      +
      + +
      +
      text_Input(
      +  inputId,
      +  label,
      +  hint_label = NULL,
      +  type = "text",
      +  width = NULL,
      +  error = FALSE,
      +  error_message = NULL,
      +  prefix = NULL,
      +  suffix = NULL
      +)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + + +
      label
      +

      Display label for the control, or NULL for no label.

      + + +
      hint_label
      +

      Display hint label for the control, or NULL for +no hint label.

      + + +
      type
      +

      Type of text input to accept. Defaults to text.

      + + +
      width
      +

      control the size of the box based on number of characters +required. Options are 30, 20, 10, 5, 4, 3, 2. NULL will not limit the size

      + + +
      error
      +

      Whenever to include error handling Defaults to FALSE.

      + + +
      error_message
      +

      Message to display on error. Defaults to NULL

      + + +
      prefix
      +

      Add a prefix to the box. Defaults to NULL

      + + +
      suffix
      +

      Add a suffix to the box. Defaults to NULL

      + +
      +
      +

      Value

      + + +

      a text input html shiny object

      +
      + +
      +

      Examples

      +
      ## Only run examples in interactive R sessions
      +if (interactive()) {
      +
      +  ui <- fluidPage(
      +    # Required for error handling function
      +    shinyjs::useShinyjs(),
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::banner(
      +      inputId = "banner", type = "beta", 'This is a new service'),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      # Simple text box
      +      shinyGovstyle::text_Input(inputId = "eventId", label = "Event Name"),
      +      # Error text box
      +      shinyGovstyle::text_Input(
      +        inputId = "eventId2",
      +        label = "Event Name",
      +        hint_label = "This can be found on the letter",
      +        error = TRUE),
      +      # Button to trigger error
      +      shinyGovstyle::button_Input(inputId = "submit", label = "Submit")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +
      +  server <- function(input, output, session) {
      +    #Trigger error on blank submit of eventId2
      +    observeEvent(input$submit, {
      +      if (input$eventId2 != ""){
      +        shinyGovstyle::error_off(inputId = "eventId2")
      +      } else {
      +        shinyGovstyle::error_on(
      +          inputId = "eventId2",
      +          error_message = "Please complete")
      +      }
      +    })
      +  }
      +
      +  # Run the application
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/text_area_Input.html b/docs/reference/text_area_Input.html new file mode 100644 index 0000000..69f1d5c --- /dev/null +++ b/docs/reference/text_area_Input.html @@ -0,0 +1,141 @@ + +Text Area Input Function — text_area_Input • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create a text area input

      +
      + +
      +
      text_area_Input(
      +  inputId,
      +  label,
      +  hint_label = NULL,
      +  row_no = 5,
      +  error = FALSE,
      +  error_message = NULL,
      +  word_limit = NULL
      +)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + + +
      label
      +

      Display label for the control, or NULL for no label.

      + + +
      hint_label
      +

      Display hint label for the control, or NULL for no +hint label.

      + + +
      row_no
      +

      Size of the text entry box. Defaults to 5.

      + + +
      error
      +

      Whenever to icnlud error handling Defaults to FALSE

      + + +
      error_message
      +

      Message to display on error. Defaults to NULL

      + + +
      word_limit
      +

      Add a word limit to the display. Defaults to NULL.

      + +
      +
      +

      Value

      + + +

      a text area box html shiny object

      +
      + +
      +

      Examples

      +
      text_area_Input("taId", "Can you provide more detail?",
      +"Do not include personal or financial information, like your
      +National Insurance number or credit card details.")
      +#> <div class="govuk-form-group govuk-character-count" id="taIddiv">
      +#>   <label class="govuk-label">Can you provide more detail?</label>
      +#>   <div class="govuk-hint">Do not include personal or financial information, like your
      +#> National Insurance number or credit card details.</div>
      +#>   <textarea id="taId" class="govuk-textarea" rows="5"></textarea>
      +#> </div>
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/warning_text.html b/docs/reference/warning_text.html new file mode 100644 index 0000000..41d7db6 --- /dev/null +++ b/docs/reference/warning_text.html @@ -0,0 +1,120 @@ + +Warning Text Function — warning_text • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create warning text

      +
      + +
      +
      warning_text(inputId, text)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot that will be used to access the value.

      + + +
      text
      +

      Text that goes in the main

      + +
      +
      +

      Value

      + + +

      a warning box html shiny object

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +  ui <- fluidPage(
      +    shinyGovstyle::header(
      +      main_text = "Example",
      +      secondary_text = "User Examples",
      +      logo="shinyGovstyle/images/moj_logo.png"),
      +    shinyGovstyle::gov_layout(size = "two-thirds",
      +      shinyGovstyle::warning_text(
      +        inputId = "warn1",
      +        text = "You can be fined up to £5,000 if you do not register.")
      +    ),
      +    shinyGovstyle::footer(full = TRUE)
      +  )
      +
      +  server <- function(input, output, session) {}
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/reference/word_count.html b/docs/reference/word_count.html new file mode 100644 index 0000000..032d5a4 --- /dev/null +++ b/docs/reference/word_count.html @@ -0,0 +1,137 @@ + +Word Count Function — word_count • shinyGovstyle + + +
      +
      + + + +
      +
      + + +
      +

      This function create tracks the word count and should be used with the +text area function

      +
      + +
      +
      word_count(inputId, input, word_limit = NULL)
      +
      + +
      +

      Arguments

      +
      inputId
      +

      The input slot of the text area that you want to affect

      + + +
      input
      +

      The text input that is associated with the box.

      + + +
      word_limit
      +

      Change the word limit if needed. Default will keep as +what was used in text area component

      + +
      +
      +

      Value

      + + +

      no value returned. Updates the word count in a shiny app

      +
      + +
      +

      Examples

      +
      if (interactive()) {
      +
      +  ui <- shiny::fluidPage(
      +  shinyjs::useShinyjs(),
      +  shinyGovstyle::header(
      +    "Justice", "", logo="shinyGovstyle/images/moj_logo.png"),
      +  gov_layout(size = "full",
      +           text_area_Input(
      +             inputId = "text_area",
      +             label = "Can you provide more detail?",
      +             hint_label =  "Do not include personal or financial information
      +                            , like your National Insurance number or credit
      +                            card details.",
      +             word_limit = 300)
      +  ),
      +  footer(TRUE)
      +  )
      +
      +  server <- function(input, output, session) {
      +  shiny::observeEvent(input$text_area,
      +               word_count(inputId = "text_area",
      +                          input = input$text_area
      +               )
      +  )
      +  }
      +  shinyApp(ui = ui, server = server)
      +}
      +
      +
      +
      + +
      + + +
      + +
      +

      Site built with pkgdown 2.0.7.

      +
      + +
      + + + + + + + + diff --git a/docs/sitemap.xml b/docs/sitemap.xml new file mode 100644 index 0000000..006e623 --- /dev/null +++ b/docs/sitemap.xml @@ -0,0 +1,126 @@ + + + + /404.html + + + /authors.html + + + /css_changes.html + + + /index.html + + + /news/index.html + + + /reference/accordion.html + + + /reference/backlink_Input.html + + + /reference/banner.html + + + /reference/button_Input.html + + + /reference/checkbox_Input.html + + + /reference/cookieBanner.html + + + /reference/date_Input.html + + + /reference/details.html + + + /reference/error_off.html + + + /reference/error_on.html + + + /reference/error_summary.html + + + /reference/error_summary_update.html + + + /reference/file_Input.html + + + /reference/font.html + + + /reference/footer.html + + + /reference/govTable.html + + + /reference/govTabs.html + + + /reference/gov_layout.html + + + /reference/gov_summary.html + + + /reference/header.html + + + /reference/heading_text.html + + + /reference/index.html + + + /reference/input_field.html + + + /reference/insert_text.html + + + /reference/label_hint.html + + + /reference/layouts.html + + + /reference/noti_banner.html + + + /reference/panel_output.html + + + /reference/radio_button_Input.html + + + /reference/run_example.html + + + /reference/select_Input.html + + + /reference/tag_Input.html + + + /reference/text_area_Input.html + + + /reference/text_Input.html + + + /reference/warning_text.html + + + /reference/word_count.html + + diff --git a/inst/www/css/font.css b/inst/www/css/font.css index 3ed98ec..f0814eb 100644 --- a/inst/www/css/font.css +++ b/inst/www/css/font.css @@ -4,14 +4,15 @@ font-style: normal; font-weight: 400; src: url(../fonts/light-94a07e06a1-v2.woff2) format("woff2"), url(../fonts/light-f591b13f7d-v2.woff) format("woff"); - font-display: fallback; + font-display: fallback } + @font-face { font-family: GDS Transport; font-style: normal; font-weight: 700; src: url(../fonts/bold-b542beb274-v2.woff2) format("woff2"), url(../fonts/bold-affa96571d-v2.woff) format("woff"); - font-display: fallback; + font-display: fallback } /* @font-face { diff --git a/inst/www/css/govuk-frontend-norem.css b/inst/www/css/govuk-frontend-norem.css index 84a064b..f745a66 100644 --- a/inst/www/css/govuk-frontend-norem.css +++ b/inst/www/css/govuk-frontend-norem.css @@ -1,8 +1,20 @@ +@charset "UTF-8"; + +:root { + --govuk-frontend-version: "5.4.0"; + font-size: 16px; + --govuk-frontend-breakpoint-mobile: 20rem; + --govuk-frontend-breakpoint-tablet: 40.0625rem; + --govuk-frontend-breakpoint-desktop: 48.0625rem +} + .govuk-link { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - text-decoration: underline + text-decoration: underline; + text-decoration-thickness: max(1px, .0625rem); + text-underline-offset: .1578em } @media print { @@ -11,15 +23,21 @@ } } -.govuk-link { - border:none +.govuk-link:hover { + text-decoration-thickness: max(3px, .1875rem, .12em); + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; + -webkit-text-decoration-skip: none; + text-decoration-skip: none } .govuk-link:focus { - outline: 3px solid rgba(0, 0, 0, 0); + outline: 3px solid transparent; background-color: #fd0; box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; - text-decoration: none + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone } .govuk-link:link { @@ -40,9 +58,10 @@ } @media print { - .govuk-link[href^="/"]:after, - .govuk-link[href^="http://"]:after, - .govuk-link[href^="https://"]:after { + + [href^="/"].govuk-link:after, + [href^="http://"].govuk-link:after, + [href^="https://"].govuk-link:after { content: " (" attr(href) ")"; font-size: 90%; word-wrap: break-word @@ -63,6 +82,7 @@ } @media print { + .govuk-link--text-colour:link, .govuk-link--text-colour:visited { color: #000 @@ -79,6 +99,7 @@ } @media print { + .govuk-link--text-colour:active, .govuk-link--text-colour:focus { color: #000 @@ -108,24 +129,48 @@ color: #1d70b8 } +.govuk-link--no-visited-state:focus { + outline: 3px solid transparent; + background-color: #fd0; + box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone +} + .govuk-link--no-visited-state:hover { + text-decoration-thickness: max(3px, .1875rem, .12em); + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; + -webkit-text-decoration-skip: none; + text-decoration-skip: none; color: #003078 } .govuk-link--no-visited-state:active, -.govuk-link--no-visited-state:focus, -.govuk-list { +.govuk-link--no-visited-state:focus { color: #0b0c0c } +.govuk-link-image { + display: inline-block; + line-height: 0; + text-decoration: none +} + +.govuk-link-image:focus { + outline: 3px solid transparent; + box-shadow: 0 0 0 4px #fd0, 0 0 0 8px #0b0c0c +} + .govuk-list { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; + color: #0b0c0c; margin-top: 0; margin-bottom: 15px; padding-left: 0; @@ -140,9 +185,8 @@ @media (min-width:40.0625em) { .govuk-list { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + font-size: 1.1875rem; + line-height: 1.3157894737 } } @@ -184,6 +228,7 @@ } @media (min-width:40.0625em) { + .govuk-list--bullet>li, .govuk-list--number>li { margin-bottom: 5px @@ -206,8 +251,7 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 700; - font-size: 32px; - font-size: 2norem; + font-size: 2rem; line-height: 1.09375; display: block; margin-top: 0; @@ -223,9 +267,8 @@ @media (min-width:40.0625em) { .govuk-heading-xl { - font-size: 48px; - font-size: 3norem; - line-height: 1.04167 + font-size: 3rem; + line-height: 1.0416666667 } } @@ -248,9 +291,8 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 700; - font-size: 24px; - font-size: 1.5norem; - line-height: 1.04167; + font-size: 1.5rem; + line-height: 1.0416666667; display: block; margin-top: 0; margin-bottom: 20px @@ -265,9 +307,8 @@ @media (min-width:40.0625em) { .govuk-heading-l { - font-size: 36px; - font-size: 2.25norem; - line-height: 1.11111 + font-size: 2.25rem; + line-height: 1.1111111111 } } @@ -290,9 +331,8 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 700; - font-size: 18px; - font-size: 1.125norem; - line-height: 1.11111; + font-size: 1.125rem; + line-height: 1.1111111111; display: block; margin-top: 0; margin-bottom: 15px @@ -307,8 +347,7 @@ @media (min-width:40.0625em) { .govuk-heading-m { - font-size: 24px; - font-size: 1.5norem; + font-size: 1.5rem; line-height: 1.25 } } @@ -332,8 +371,7 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 700; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; display: block; margin-top: 0; @@ -349,9 +387,8 @@ @media (min-width:40.0625em) { .govuk-heading-s { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + font-size: 1.1875rem; + line-height: 1.3157894737 } } @@ -373,9 +410,8 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 18px; - font-size: 1.125norem; - line-height: 1.11111; + font-size: 1.125rem; + line-height: 1.1111111111; display: block; margin-bottom: 5px; color: #505a5f @@ -389,9 +425,8 @@ @media (min-width:40.0625em) { .govuk-caption-xl { - font-size: 27px; - font-size: 1.6875norem; - line-height: 1.11111 + font-size: 1.6875rem; + line-height: 1.1111111111 } } @@ -407,9 +442,8 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 18px; - font-size: 1.125norem; - line-height: 1.11111; + font-size: 1.125rem; + line-height: 1.1111111111; display: block; margin-bottom: 5px; color: #505a5f @@ -423,8 +457,7 @@ @media (min-width:40.0625em) { .govuk-caption-l { - font-size: 24px; - font-size: 1.5norem; + font-size: 1.5rem; line-height: 1.25 } } @@ -447,8 +480,7 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; display: block; color: #505a5f @@ -462,9 +494,8 @@ @media (min-width:40.0625em) { .govuk-caption-m { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + font-size: 1.1875rem; + line-height: 1.3157894737 } } @@ -482,14 +513,14 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 18px; - font-size: 1.125norem; - line-height: 1.11111; + font-size: 1.125rem; + line-height: 1.1111111111; margin-top: 0; margin-bottom: 20px } @media print { + .govuk-body-l, .govuk-body-lead { color: #000; @@ -498,15 +529,16 @@ } @media (min-width:40.0625em) { + .govuk-body-l, .govuk-body-lead { - font-size: 24px; - font-size: 1.5norem; + font-size: 1.5rem; line-height: 1.25 } } @media print { + .govuk-body-l, .govuk-body-lead { font-size: 18pt; @@ -515,6 +547,7 @@ } @media (min-width:40.0625em) { + .govuk-body-l, .govuk-body-lead { margin-bottom: 30px @@ -528,14 +561,14 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; margin-top: 0; margin-bottom: 15px } @media print { + .govuk-body, .govuk-body-m { color: #000; @@ -544,15 +577,16 @@ } @media (min-width:40.0625em) { + .govuk-body, .govuk-body-m { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + font-size: 1.1875rem; + line-height: 1.3157894737 } } @media print { + .govuk-body, .govuk-body-m { font-size: 14pt; @@ -561,6 +595,7 @@ } @media (min-width:40.0625em) { + .govuk-body, .govuk-body-m { margin-bottom: 20px @@ -573,9 +608,8 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 14px; - font-size: .875norem; - line-height: 1.14286; + font-size: .875rem; + line-height: 1.1428571429; margin-top: 0; margin-bottom: 15px } @@ -589,8 +623,7 @@ @media (min-width:40.0625em) { .govuk-body-s { - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25 } } @@ -614,8 +647,7 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 12px; - font-size: .75norem; + font-size: .75rem; line-height: 1.25; margin-top: 0; margin-bottom: 15px @@ -630,9 +662,8 @@ @media (min-width:40.0625em) { .govuk-body-xs { - font-size: 14px; - font-size: .875norem; - line-height: 1.42857 + font-size: .875rem; + line-height: 1.4285714286 } } @@ -655,6 +686,7 @@ } @media (min-width:40.0625em) { + .govuk-body-l+.govuk-heading-l, .govuk-body-lead+.govuk-heading-l { padding-top: 10px @@ -669,6 +701,7 @@ } @media (min-width:40.0625em) { + .govuk-body+.govuk-heading-l, .govuk-body-m+.govuk-heading-l, .govuk-body-s+.govuk-heading-l, @@ -689,6 +722,7 @@ } @media (min-width:40.0625em) { + .govuk-body+.govuk-heading-m, .govuk-body+.govuk-heading-s, .govuk-body-m+.govuk-heading-m, @@ -748,18 +782,8 @@ .govuk-button-group { margin-bottom: 5px; - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; display: flex; - -webkit-box-orient: vertical; - -webkit-box-direction: normal; - -webkit-flex-direction: column; - -ms-flex-direction: column; flex-direction: column; - -webkit-box-align: center; - -webkit-align-items: center; - -ms-flex-align: center; align-items: center } @@ -774,8 +798,7 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.1875; display: inline-block; max-width: 100%; @@ -792,8 +815,7 @@ @media (min-width:40.0625em) { .govuk-button-group .govuk-link { - font-size: 19px; - font-size: 1.1875norem; + font-size: 1.1875rem; line-height: 1 } } @@ -812,23 +834,16 @@ @media (min-width:40.0625em) { .govuk-button-group { margin-right: -15px; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -webkit-flex-direction: row; - -ms-flex-direction: row; flex-direction: row; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; flex-wrap: wrap; - -webkit-box-align: baseline; - -webkit-align-items: baseline; - -ms-flex-align: baseline; align-items: baseline } + .govuk-button-group .govuk-button, .govuk-button-group .govuk-link { margin-right: 15px } + .govuk-button-group .govuk-link { text-align: left } @@ -896,7 +911,7 @@ @media (min-width:40.0625em) { .govuk-grid-column-one-third { - width: 33.3333%; + width: 33.3333333333%; float: left } } @@ -922,7 +937,7 @@ @media (min-width:40.0625em) { .govuk-grid-column-two-thirds { - width: 66.6666%; + width: 66.6666666667%; float: left } } @@ -972,7 +987,7 @@ @media (min-width:48.0625em) { .govuk-grid-column-one-third-from-desktop { - width: 33.3333%; + width: 33.3333333333%; float: left } } @@ -996,7 +1011,7 @@ @media (min-width:48.0625em) { .govuk-grid-column-two-thirds-from-desktop { - width: 66.6666%; + width: 66.6666666667%; float: left } } @@ -1044,6 +1059,7 @@ } @media (min-width:40.0625em) { + .govuk-main-wrapper--auto-spacing:first-child, .govuk-main-wrapper--l { padding-top: 50px @@ -1053,10 +1069,20 @@ .govuk-template { background-color: #f3f2f1; -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; + -moz-text-size-adjust: 100%; text-size-adjust: 100% } +@supports ((position:-webkit-sticky) or (position:sticky)) { + .govuk-template { + scroll-padding-top: 60px + } + + .govuk-template:not(:has(.govuk-exit-this-page)) { + scroll-padding-top: 0 + } +} + @media screen { .govuk-template { overflow-y: scroll @@ -1086,6 +1112,7 @@ margin-right: 30px; margin-left: 30px } + @supports (margin:max(calc(0px))) { .govuk-width-container { margin-right: max(30px, calc(15px + env(safe-area-inset-right))); @@ -1099,6 +1126,7 @@ margin-right: auto; margin-left: auto } + @supports (margin:max(calc(0px))) { .govuk-width-container { margin-right: auto; @@ -1129,6 +1157,12 @@ } .govuk-accordion__section-button { + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 700; + font-size: 1.125rem; + line-height: 1.1111111111; color: #0b0c0c; display: block; margin-bottom: 0; @@ -1137,38 +1171,22 @@ @media print { .govuk-accordion__section-button { - color: #000 - } -} - -.govuk-accordion__section-heading-text { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 18px; - font-size: 1.125norem; - line-height: 1.11111 -} - -@media print { - .govuk-accordion__section-heading-text { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-accordion__section-heading-text { - font-size: 24px; - font-size: 1.5norem; + .govuk-accordion__section-button { + font-size: 1.5rem; line-height: 1.25 } } @media print { - .govuk-accordion__section-heading-text { + .govuk-accordion__section-button { font-size: 18pt; - line-height: 1.15 + line-height: 1.15; + color: #000 } } @@ -1186,6 +1204,7 @@ .js-enabled .govuk-accordion__section-content { display: none; + padding-top: 15px; padding-bottom: 30px } @@ -1195,6 +1214,18 @@ } } +.js-enabled .govuk-accordion__section-content[hidden] { + padding-top: 0; + padding-bottom: 0 +} + +@supports (content-visibility:hidden) { + .js-enabled .govuk-accordion__section-content[hidden] { + content-visibility: hidden; + display: inherit + } +} + .js-enabled .govuk-accordion__section--expanded .govuk-accordion__section-content { display: block } @@ -1204,8 +1235,7 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; position: relative; z-index: 1; @@ -1226,9 +1256,8 @@ @media (min-width:40.0625em) { .js-enabled .govuk-accordion__show-all { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + font-size: 1.1875rem; + line-height: 1.3157894737 } } @@ -1239,7 +1268,7 @@ } } -@media (min-width:48.0625em) { +@media (min-width:40.0625em) { .js-enabled .govuk-accordion__show-all { margin-bottom: 14px } @@ -1270,11 +1299,13 @@ } .js-enabled .govuk-accordion__show-all:focus { - outline: 3px solid rgba(0, 0, 0, 0); + outline: 3px solid transparent; color: #0b0c0c; background-color: #fd0; box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; - text-decoration: none + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone } .js-enabled .govuk-accordion__show-all:focus .govuk-accordion-nav__chevron { @@ -1293,9 +1324,9 @@ box-sizing: border-box; display: inline-block; position: relative; - width: 20px; - height: 20px; - border: 1px solid; + width: 1.25rem; + height: 1.25rem; + border: .0625rem solid; border-radius: 50%; vertical-align: middle } @@ -1305,20 +1336,16 @@ box-sizing: border-box; display: block; position: absolute; - bottom: 5px; - left: 6px; - width: 6px; - height: 6px; - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); + bottom: .3125rem; + left: .375rem; + width: .375rem; + height: .375rem; transform: rotate(-45deg); - border-top: 2px solid; - border-right: 2px solid + border-top: .125rem solid; + border-right: .125rem solid } .js-enabled .govuk-accordion-nav__chevron--down { - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); transform: rotate(180deg) } @@ -1327,7 +1354,7 @@ padding: 10px 0 0; border: 0; border-top: 1px solid #b1b4b6; - border-bottom: 10px solid rgba(0, 0, 0, 0); + border-bottom: 10px solid transparent; color: #0b0c0c; background: none; text-align: left; @@ -1335,6 +1362,11 @@ -webkit-appearance: none } +.js-enabled .govuk-accordion__section-toggle { + pointer-events: none; +} + + @media (min-width:40.0625em) { .js-enabled .govuk-accordion__section-button { padding-bottom: 10px @@ -1371,11 +1403,13 @@ .js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-heading-text-focus, .js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-summary-focus, .js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-toggle-focus { - outline: 3px solid rgba(0, 0, 0, 0); + outline: 3px solid transparent; color: #0b0c0c; background-color: #fd0; box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; - text-decoration: none + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone } .js-enabled .govuk-accordion__section-button:focus .govuk-accordion-nav__chevron { @@ -1393,10 +1427,16 @@ } .js-enabled .govuk-accordion__section--expanded .govuk-accordion__section-button { - padding-bottom: 20px; + padding-bottom: 15px; border-bottom: 0 } +@media (min-width:40.0625em) { + .js-enabled .govuk-accordion__section--expanded .govuk-accordion__section-button { + padding-bottom: 20px + } +} + .js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-toggle-focus { padding-bottom: 3px } @@ -1411,8 +1451,7 @@ .js-enabled .govuk-accordion__section-summary, .js-enabled .govuk-accordion__section-toggle { display: block; - margin-bottom: 13px; - pointer-events: none; + margin-bottom: 13px } .js-enabled .govuk-accordion__section-heading-text .govuk-accordion__section-heading-text-focus, @@ -1428,27 +1467,16 @@ } .js-enabled .govuk-accordion__section-toggle { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; + font-weight: 400; color: #1d70b8 } -@media print { - .js-enabled .govuk-accordion__section-toggle { - font-family: sans-serif - } -} - @media (min-width:40.0625em) { .js-enabled .govuk-accordion__section-toggle { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + font-size: 1.1875rem; + line-height: 1.3157894737 } } @@ -1466,10 +1494,12 @@ } @media screen and (forced-colors:active) { + .js-enabled .govuk-accordion__section-button:hover .govuk-accordion-nav__chevron, .js-enabled .govuk-accordion__show-all:hover .govuk-accordion-nav__chevron { - background-color: rgba(0, 0, 0, 0) + background-color: transparent } + .js-enabled .govuk-accordion__section-button:focus .govuk-accordion-nav__chevron, .js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-heading-text-focus, .js-enabled .govuk-accordion__section-button:focus .govuk-accordion__section-summary-focus, @@ -1478,8 +1508,8 @@ .js-enabled .govuk-accordion__show-all:focus .govuk-accordion__section-heading-text-focus, .js-enabled .govuk-accordion__show-all:focus .govuk-accordion__section-summary-focus, .js-enabled .govuk-accordion__show-all:focus .govuk-accordion__section-toggle-focus { - background: rgba(0, 0, 0, 0); - background-color: rgba(0, 0, 0, 0) + background: transparent; + background-color: transparent } } @@ -1488,33 +1518,31 @@ border-top-color: #b1b4b6; box-shadow: inset 0 3px 0 0 #1d70b8 } + .js-enabled .govuk-accordion__section-header:hover .govuk-accordion__section-button { border-top-color: #b1b4b6 } } .govuk-back-link { - font-size: 14px; - font-size: .875norem; - line-height: 1.14286; + font-size: .875rem; + line-height: 1.1428571429; font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: underline; + text-decoration-thickness: max(1px, .0625rem); + text-underline-offset: .1578em; display: inline-block; position: relative; margin-top: 15px; margin-bottom: 15px; - padding-left: 14px; - border: none; - background: white; - color: #0b0c0c; + padding-left: .875em } @media (min-width:40.0625em) { .govuk-back-link { - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25 } } @@ -1527,12 +1555,22 @@ } } +.govuk-back-link:hover { + text-decoration-thickness: max(3px, .1875rem, .12em); + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; + -webkit-text-decoration-skip: none; + text-decoration-skip: none +} + .govuk-back-link:focus { - outline: 3px solid rgba(0, 0, 0, 0); + outline: 3px solid transparent; color: #0b0c0c; background-color: #fd0; box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; - text-decoration: none + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone } .govuk-back-link:link, @@ -1541,6 +1579,7 @@ } @media print { + .govuk-back-link:link, .govuk-back-link:visited { color: #000 @@ -1557,6 +1596,7 @@ } @media print { + .govuk-back-link:active, .govuk-back-link:focus { color: #000 @@ -1569,18 +1609,23 @@ position: absolute; top: 0; bottom: 0; - left: 3px; - width: 7px; - height: 7px; + left: .1875em; + width: .4375em; + height: .4375em; margin: auto 0; - -webkit-transform: rotate(225deg); - -ms-transform: rotate(225deg); transform: rotate(225deg); border: solid; border-width: 1px 1px 0 0; border-color: #505a5f } +@supports (border-width:max(0px)) { + .govuk-back-link:before { + border-width: max(1px, .0625em) max(1px, .0625em) 0 0; + font-size: max(16px, 1em) + } +} + .govuk-back-link:focus:before { border-color: #0b0c0c } @@ -1594,14 +1639,31 @@ left: 0 } +.govuk-back-link--inverse:link, +.govuk-back-link--inverse:visited { + color: #fff +} + +.govuk-back-link--inverse:active, +.govuk-back-link--inverse:hover { + color: hsla(0, 0%, 100%, .99) +} + +.govuk-back-link--inverse:focus { + color: #0b0c0c +} + +.govuk-back-link--inverse:before { + border-color: currentcolor +} + .govuk-breadcrumbs { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 14px; - font-size: .875norem; - line-height: 1.14286; + font-size: .875rem; + line-height: 1.1428571429; color: #0b0c0c; margin-top: 15px; margin-bottom: 10px @@ -1615,8 +1677,7 @@ @media (min-width:40.0625em) { .govuk-breadcrumbs { - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25 } } @@ -1645,8 +1706,8 @@ display: inline-block; position: relative; margin-bottom: 5px; - margin-left: 10px; - padding-left: 15.655px; + margin-left: .625em; + padding-left: .9784375em; float: left } @@ -1656,18 +1717,23 @@ position: absolute; top: 0; bottom: 0; - left: -3.31px; - width: 7px; - height: 7px; + left: -.206875em; + width: .4375em; + height: .4375em; margin: auto 0; - -webkit-transform: rotate(45deg); - -ms-transform: rotate(45deg); transform: rotate(45deg); border: solid; border-width: 1px 1px 0 0; border-color: #505a5f } +@supports (border-width:max(0px)) { + .govuk-breadcrumbs__list-item:before { + border-width: max(1px, .0625em) max(1px, .0625em) 0 0; + font-size: max(16px, 1em) + } +} + .govuk-breadcrumbs__list-item:first-child { margin-left: 0; padding-left: 0 @@ -1682,7 +1748,9 @@ font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - text-decoration: underline + text-decoration: underline; + text-decoration-thickness: max(1px, .0625rem); + text-underline-offset: .1578em } @media print { @@ -1691,12 +1759,22 @@ } } +.govuk-breadcrumbs__link:hover { + text-decoration-thickness: max(3px, .1875rem, .12em); + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; + -webkit-text-decoration-skip: none; + text-decoration-skip: none +} + .govuk-breadcrumbs__link:focus { - outline: 3px solid rgba(0, 0, 0, 0); + outline: 3px solid transparent; color: #0b0c0c; background-color: #fd0; box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; - text-decoration: none + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone } .govuk-breadcrumbs__link:link, @@ -1705,6 +1783,7 @@ } @media print { + .govuk-breadcrumbs__link:link, .govuk-breadcrumbs__link:visited { color: #000 @@ -1721,6 +1800,7 @@ } @media print { + .govuk-breadcrumbs__link:active, .govuk-breadcrumbs__link:focus { color: #000 @@ -1731,29 +1811,47 @@ .govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list-item { display: none } + .govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list-item:first-child, .govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list-item:last-child { display: inline-block } + .govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list-item:before { - top: 6px; + top: .375em; margin: 0 } + .govuk-breadcrumbs--collapse-on-mobile .govuk-breadcrumbs__list { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; display: flex } } +.govuk-breadcrumbs--inverse, +.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:link, +.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:visited { + color: #fff +} + +.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:active, +.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:hover { + color: hsla(0, 0%, 100%, .99) +} + +.govuk-breadcrumbs--inverse .govuk-breadcrumbs__link:focus { + color: #0b0c0c +} + +.govuk-breadcrumbs--inverse .govuk-breadcrumbs__list-item:before { + border-color: currentcolor +} + .govuk-button { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.1875; box-sizing: border-box; display: inline-block; @@ -1761,7 +1859,7 @@ width: 100%; margin: 0 0 22px; padding: 8px 10px 7px; - border: 2px solid rgba(0, 0, 0, 0); + border: 2px solid transparent; border-radius: 0; color: #fff; background-color: #00703c; @@ -1780,8 +1878,7 @@ @media (min-width:40.0625em) { .govuk-button { - font-size: 19px; - font-size: 1.1875norem; + font-size: 1.1875rem; line-height: 1 } } @@ -1823,7 +1920,7 @@ .govuk-button:focus { border-color: #fd0; - outline: 3px solid rgba(0, 0, 0, 0); + outline: 3px solid transparent; box-shadow: inset 0 0 0 1px #fd0 } @@ -1842,28 +1939,22 @@ right: -2px; bottom: -4px; left: -2px; - background: rgba(0, 0, 0, 0) + background: transparent } .govuk-button:active:before { top: -4px } -.govuk-button--disabled, -.govuk-button[disabled=disabled], .govuk-button[disabled] { opacity: .5 } -.govuk-button--disabled:hover, -.govuk-button[disabled=disabled]:hover, .govuk-button[disabled]:hover { background-color: #00703c; - cursor: default + cursor: not-allowed } -.govuk-button--disabled:active, -.govuk-button[disabled=disabled]:active, .govuk-button[disabled]:active { top: 0; box-shadow: 0 2px 0 #002d18 @@ -1911,26 +2002,39 @@ background-color: #d4351c } +.govuk-button--inverse { + background-color: #fff; + box-shadow: 0 2px 0 #144e81 +} + +.govuk-button--inverse, +.govuk-button--inverse:active, +.govuk-button--inverse:hover, +.govuk-button--inverse:link, +.govuk-button--inverse:visited { + color: #1d70b8 +} + +.govuk-button--inverse:hover { + background-color: #e8f1f8 +} + +.govuk-button--inverse:hover[disabled] { + background-color: #fff +} + .govuk-button--start { font-weight: 700; - font-size: 18px; - font-size: 1.125norem; + font-size: 1.125rem; line-height: 1; - display: -webkit-inline-box; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; display: inline-flex; min-height: auto; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; justify-content: center } @media (min-width:40.0625em) { .govuk-button--start { - font-size: 24px; - font-size: 1.5norem; + font-size: 1.5rem; line-height: 1 } } @@ -1945,11 +2049,7 @@ .govuk-button__start-icon { margin-left: 5px; vertical-align: middle; - -webkit-flex-shrink: 0; - -ms-flex-negative: 0; flex-shrink: 0; - -webkit-align-self: center; - -ms-flex-item-align: center; align-self: center; forced-color-adjust: auto } @@ -1965,8 +2065,7 @@ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 700; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; display: block; margin-top: 0; @@ -1983,9 +2082,8 @@ @media (min-width:40.0625em) { .govuk-error-message { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + font-size: 1.1875rem; + line-height: 1.3157894737 } } @@ -1996,511 +2094,451 @@ } } -.govuk-fieldset { - min-width: 0; - margin: 0; - padding: 0; - border: 0 -} - -.govuk-fieldset:after { - content: ""; - display: block; - clear: both -} - -@supports not (caret-color:auto) { - .govuk-fieldset, - x:-moz-any-link { - display: table-cell - } -} - -.govuk-fieldset__legend { +.govuk-hint { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; - color: #0b0c0c; - box-sizing: border-box; - display: table; - max-width: 100%; - margin-bottom: 10px; - padding: 0; - white-space: normal + margin-bottom: 15px; + color: #505a5f } @media print { - .govuk-fieldset__legend { + .govuk-hint { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-fieldset__legend { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + .govuk-hint { + font-size: 1.1875rem; + line-height: 1.3157894737 } } @media print { - .govuk-fieldset__legend { + .govuk-hint { font-size: 14pt; - line-height: 1.15; - color: #000 + line-height: 1.15 } } -.govuk-fieldset__legend--xl { +.govuk-fieldset__legend:not(.govuk-fieldset__legend--m):not(.govuk-fieldset__legend--l):not(.govuk-fieldset__legend--xl)+.govuk-hint, +.govuk-label:not(.govuk-label--m):not(.govuk-label--l):not(.govuk-label--xl)+.govuk-hint { + margin-bottom: 10px +} + +.govuk-fieldset__legend+.govuk-hint { + margin-top: -5px +} + +.govuk-label { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 32px; - font-size: 2norem; - line-height: 1.09375; - margin-bottom: 15px + font-weight: 400; + font-size: 1rem; + line-height: 1.25; + color: #0b0c0c; + display: block; + margin-bottom: 5px } @media print { - .govuk-fieldset__legend--xl { + .govuk-label { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-fieldset__legend--xl { - font-size: 48px; - font-size: 3norem; - line-height: 1.04167 + .govuk-label { + font-size: 1.1875rem; + line-height: 1.3157894737 } } @media print { - .govuk-fieldset__legend--xl { - font-size: 32pt; - line-height: 1.15 + .govuk-label { + font-size: 14pt; + line-height: 1.15; + color: #000 } } -.govuk-fieldset__legend--l { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; +.govuk-label--l, +.govuk-label--m, +.govuk-label--xl { font-weight: 700; - font-size: 24px; - font-size: 1.5norem; - line-height: 1.04167; margin-bottom: 15px } -@media print { - .govuk-fieldset__legend--l { - font-family: sans-serif - } +.govuk-label--xl { + font-size: 2rem; + line-height: 1.09375 } @media (min-width:40.0625em) { - .govuk-fieldset__legend--l { - font-size: 36px; - font-size: 2.25norem; - line-height: 1.11111 + .govuk-label--xl { + font-size: 3rem; + line-height: 1.0416666667 } } @media print { - .govuk-fieldset__legend--l { - font-size: 24pt; - line-height: 1.05 + .govuk-label--xl { + font-size: 32pt; + line-height: 1.15 } } -.govuk-fieldset__legend--m { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 18px; - font-size: 1.125norem; - line-height: 1.11111; - margin-bottom: 15px +.govuk-label--l { + font-size: 1.5rem; + line-height: 1.0416666667 +} + +@media (min-width:40.0625em) { + .govuk-label--l { + font-size: 2.25rem; + line-height: 1.1111111111 + } } @media print { - .govuk-fieldset__legend--m { - font-family: sans-serif + .govuk-label--l { + font-size: 24pt; + line-height: 1.05 } } +.govuk-label--m { + font-size: 1.125rem; + line-height: 1.1111111111 +} + @media (min-width:40.0625em) { - .govuk-fieldset__legend--m { - font-size: 24px; - font-size: 1.5norem; + .govuk-label--m { + font-size: 1.5rem; line-height: 1.25 } } @media print { - .govuk-fieldset__legend--m { + .govuk-label--m { font-size: 18pt; line-height: 1.15 } } -.govuk-fieldset__legend--s { +.govuk-label--s { + font-weight: 700 +} + +.govuk-label-wrapper { + margin: 0 +} + +.govuk-textarea { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 16px; - font-size: 1norem; - line-height: 1.25 + font-weight: 400; + font-size: 1rem; + line-height: 1.25; + box-sizing: border-box; + display: block; + width: 100%; + min-height: 40px; + margin-bottom: 20px; + padding: 5px; + resize: vertical; + border: 2px solid #0b0c0c; + border-radius: 0; + -webkit-appearance: none } @media print { - .govuk-fieldset__legend--s { + .govuk-textarea { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-fieldset__legend--s { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + .govuk-textarea { + font-size: 1.1875rem; + line-height: 1.25 } } @media print { - .govuk-fieldset__legend--s { + .govuk-textarea { font-size: 14pt; - line-height: 1.15 + line-height: 1.25 } } -.govuk-fieldset__heading { - margin: 0; - font-size: inherit; - font-weight: inherit +@media (min-width:40.0625em) { + .govuk-textarea { + margin-bottom: 30px + } } -.govuk-hint { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 16px; - font-size: 1norem; - line-height: 1.25; - margin-bottom: 15px; - color: #505a5f +.govuk-textarea:focus { + outline: 3px solid #fd0; + outline-offset: 0; + box-shadow: inset 0 0 0 2px } -@media print { - .govuk-hint { - font-family: sans-serif - } +.govuk-textarea:disabled { + opacity: .5; + color: inherit; + background-color: transparent; + cursor: not-allowed +} + +.govuk-textarea--error { + border-color: #d4351c +} + +.govuk-textarea--error:focus { + border-color: #0b0c0c +} + +.govuk-character-count { + margin-bottom: 20px } @media (min-width:40.0625em) { - .govuk-hint { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + .govuk-character-count { + margin-bottom: 30px } } -@media print { - .govuk-hint { - font-size: 14pt; - line-height: 1.15 - } +.govuk-character-count .govuk-form-group, +.govuk-character-count .govuk-textarea { + margin-bottom: 5px } -.govuk-label:not(.govuk-label--m):not(.govuk-label--l):not(.govuk-label--xl)+.govuk-hint { - margin-bottom: 10px +.govuk-character-count__message { + font-variant-numeric: tabular-nums; + margin-top: 0; + margin-bottom: 0 } -.govuk-fieldset__legend:not(.govuk-fieldset__legend--m):not(.govuk-fieldset__legend--l):not(.govuk-fieldset__legend--xl)+.govuk-hint { - margin-bottom: 10px +.govuk-character-count__message:after { + content: "​" } -.govuk-fieldset__legend+.govuk-hint { - margin-top: -5px +.govuk-character-count__message--disabled { + visibility: hidden } -.govuk-label { +.govuk-fieldset { + min-width: 0; + margin: 0; + padding: 0; + border: 0 +} + +.govuk-fieldset:after { + content: ""; + display: block; + clear: both +} + +@supports not (caret-color:auto) { + + .govuk-fieldset, + x:-moz-any-link { + display: table-cell + } +} + +.govuk-fieldset__legend { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; color: #0b0c0c; - display: block; - margin-bottom: 5px + box-sizing: border-box; + display: table; + max-width: 100%; + margin-bottom: 10px; + padding: 0; + white-space: normal } @media print { - .govuk-label { + .govuk-fieldset__legend { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-label { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + .govuk-fieldset__legend { + font-size: 1.1875rem; + line-height: 1.3157894737 } } @media print { - .govuk-label { + .govuk-fieldset__legend { font-size: 14pt; line-height: 1.15; color: #000 } } -.govuk-label--xl { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; +.govuk-fieldset__legend--l, +.govuk-fieldset__legend--m, +.govuk-fieldset__legend--xl { font-weight: 700; - font-size: 32px; - font-size: 2norem; - line-height: 1.09375; margin-bottom: 15px } -@media print { - .govuk-label--xl { - font-family: sans-serif - } +.govuk-fieldset__legend--xl { + font-size: 2rem; + line-height: 1.09375 } @media (min-width:40.0625em) { - .govuk-label--xl { - font-size: 48px; - font-size: 3norem; - line-height: 1.04167 + .govuk-fieldset__legend--xl { + font-size: 3rem; + line-height: 1.0416666667 } } @media print { - .govuk-label--xl { + .govuk-fieldset__legend--xl { font-size: 32pt; line-height: 1.15 } } -.govuk-label--l { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 24px; - font-size: 1.5norem; - line-height: 1.04167; - margin-bottom: 15px -} - -@media print { - .govuk-label--l { - font-family: sans-serif - } +.govuk-fieldset__legend--l { + font-size: 1.5rem; + line-height: 1.0416666667 } @media (min-width:40.0625em) { - .govuk-label--l { - font-size: 36px; - font-size: 2.25norem; - line-height: 1.11111 + .govuk-fieldset__legend--l { + font-size: 2.25rem; + line-height: 1.1111111111 } } @media print { - .govuk-label--l { + .govuk-fieldset__legend--l { font-size: 24pt; line-height: 1.05 } } -.govuk-label--m { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 18px; - font-size: 1.125norem; - line-height: 1.11111; - margin-bottom: 10px -} - -@media print { - .govuk-label--m { - font-family: sans-serif - } +.govuk-fieldset__legend--m { + font-size: 1.125rem; + line-height: 1.1111111111 } @media (min-width:40.0625em) { - .govuk-label--m { - font-size: 24px; - font-size: 1.5norem; + .govuk-fieldset__legend--m { + font-size: 1.5rem; line-height: 1.25 } } @media print { - .govuk-label--m { + .govuk-fieldset__legend--m { font-size: 18pt; line-height: 1.15 } } -.govuk-label--s { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 16px; - font-size: 1norem; - line-height: 1.25 -} - -@media print { - .govuk-label--s { - font-family: sans-serif - } -} - -@media (min-width:40.0625em) { - .govuk-label--s { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 - } -} - -@media print { - .govuk-label--s { - font-size: 14pt; - line-height: 1.15 - } +.govuk-fieldset__legend--s { + font-weight: 700 } -.govuk-label-wrapper { - margin: 0 +.govuk-fieldset__heading { + margin: 0; + font-size: inherit; + font-weight: inherit } .govuk-checkboxes__item { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 16px; - font-size: 1norem; - line-height: 1.25; - display: block; + display: flex; + flex-wrap: wrap; position: relative; - min-height: 40px; - margin-bottom: 10px; - padding-left: 40px; - clear: left + margin-bottom: 10px } -@media print { - .govuk-checkboxes__item { - font-family: sans-serif - } -} - -@media (min-width:40.0625em) { - .govuk-checkboxes__item { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 - } -} - -@media print { - .govuk-checkboxes__item { - font-size: 14pt; - line-height: 1.15 - } -} - -.govuk-checkboxes__item:last-child, -.govuk-checkboxes__item:last-of-type { - margin-bottom: 0 +.govuk-checkboxes__item:last-child, +.govuk-checkboxes__item:last-of-type { + margin-bottom: 0 } .govuk-checkboxes__input { - cursor: pointer; - position: absolute; z-index: 1; - top: -2px; - left: -2px; width: 44px; height: 44px; margin: 0; - opacity: 0 + opacity: 0; + cursor: pointer } .govuk-checkboxes__label { - display: inline-block; + align-self: center; + max-width: calc(100% - 74px); margin-bottom: 0; - padding: 8px 15px 5px; + padding: 7px 15px; cursor: pointer; - -ms-touch-action: manipulation; touch-action: manipulation } .govuk-checkboxes__label:before { - content: ""; - box-sizing: border-box; - position: absolute; - top: 0; - left: 0; + top: 2px; + left: 2px; width: 40px; height: 40px; - border: 2px solid; - background: rgba(0, 0, 0, 0) + border: 2px solid } -.govuk-checkboxes__label:after { +.govuk-checkboxes__label:after, +.govuk-checkboxes__label:before { content: ""; box-sizing: border-box; position: absolute; - top: 11px; - left: 9px; + background: transparent +} + +.govuk-checkboxes__label:after { + top: 13px; + left: 10px; width: 23px; height: 12px; - -webkit-transform: rotate(-45deg); - -ms-transform: rotate(-45deg); transform: rotate(-45deg); border: solid; border-width: 0 0 5px 5px; - border-top-color: rgba(0, 0, 0, 0); - opacity: 0; - background: rgba(0, 0, 0, 0) + border-top-color: transparent; + opacity: 0 } .govuk-checkboxes__hint { display: block; + width: 100%; + margin-top: -5px; padding-right: 15px; - padding-left: 15px + padding-left: 59px +} + +.govuk-label:not(.govuk-label--m):not(.govuk-label--l):not(.govuk-label--xl)+.govuk-checkboxes__hint { + margin-bottom: 0 } .govuk-checkboxes__input:focus+.govuk-checkboxes__label:before { border-width: 4px; - outline: 3px solid rgba(0, 0, 0, 0); + outline: 3px solid transparent; outline-offset: 1px; box-shadow: 0 0 0 3px #fd0 } @@ -2518,10 +2556,11 @@ screen and (forced-colors:active) { .govuk-checkboxes__input:disabled, .govuk-checkboxes__input:disabled+.govuk-checkboxes__label { - cursor: default + cursor: not-allowed } -.govuk-checkboxes__input:disabled+.govuk-checkboxes__label { +.govuk-checkboxes__input:disabled+.govuk-checkboxes__label, +.govuk-checkboxes__input:disabled~.govuk-hint { opacity: .5 } @@ -2530,8 +2569,7 @@ screen and (forced-colors:active) { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; color: #0b0c0c; width: 40px; @@ -2547,9 +2585,8 @@ screen and (forced-colors:active) { @media (min-width:40.0625em) { .govuk-checkboxes__divider { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + font-size: 1.1875rem; + line-height: 1.3157894737 } } @@ -2574,51 +2611,32 @@ screen and (forced-colors:active) { } } -.js-enabled .govuk-checkboxes__conditional--hidden { +.govuk-frontend-supported .govuk-checkboxes__conditional--hidden { display: none } +.govuk-checkboxes--small .govuk-checkboxes__item, .govuk-checkboxes__conditional>:last-child { margin-bottom: 0 } -.govuk-checkboxes--small .govuk-checkboxes__item { - min-height: 0; - margin-bottom: 0; - padding-left: 34px; - float: left -} - -.govuk-checkboxes--small .govuk-checkboxes__item:after { - content: ""; - display: block; - clear: both -} - .govuk-checkboxes--small .govuk-checkboxes__input { - left: -10px + margin-left: -10px } .govuk-checkboxes--small .govuk-checkboxes__label { - margin-top: -2px; - padding: 13px 15px 13px 1px; - float: left -} - -@media (min-width:40.0625em) { - .govuk-checkboxes--small .govuk-checkboxes__label { - padding: 11px 15px 10px 1px - } + padding-left: 1px } .govuk-checkboxes--small .govuk-checkboxes__label:before { - top: 8px; + top: 10px; + left: 0; width: 24px; height: 24px } .govuk-checkboxes--small .govuk-checkboxes__label:after { - top: 15px; + top: 17px; left: 6px; width: 12px; height: 6.5px; @@ -2626,17 +2644,17 @@ screen and (forced-colors:active) { } .govuk-checkboxes--small .govuk-checkboxes__hint { - padding: 0; - clear: both + padding-left: 34px } .govuk-checkboxes--small .govuk-checkboxes__conditional { margin-left: 10px; - padding-left: 20px; - clear: both + padding-left: 20px } .govuk-checkboxes--small .govuk-checkboxes__item:hover .govuk-checkboxes__input:not(:disabled)+.govuk-checkboxes__label:before { + outline: 3px dashed transparent; + outline-offset: 1px; box-shadow: 0 0 0 10px #b1b4b6 } @@ -2644,939 +2662,789 @@ screen and (forced-colors:active) { box-shadow: 0 0 0 3px #fd0, 0 0 0 10px #b1b4b6 } +@media (-ms-high-contrast:active), +screen and (forced-colors:active) { + .govuk-checkboxes--small .govuk-checkboxes__item:hover .govuk-checkboxes__input:focus+.govuk-checkboxes__label:before { + outline-color: Highlight + } +} + @media (hover:none), (pointer:coarse) { .govuk-checkboxes--small .govuk-checkboxes__item:hover .govuk-checkboxes__input:not(:disabled)+.govuk-checkboxes__label:before { box-shadow: none } + .govuk-checkboxes--small .govuk-checkboxes__item:hover .govuk-checkboxes__input:focus+.govuk-checkboxes__label:before { box-shadow: 0 0 0 3px #fd0 } } -.govuk-textarea { +.govuk-cookie-banner { + padding-top: 20px; + border-bottom: 10px solid transparent; + background-color: #f3f2f1 +} + +.govuk-cookie-banner[hidden] { + display: none +} + +.govuk-cookie-banner__message { + margin-bottom: -10px +} + +.govuk-cookie-banner__message[hidden] { + display: none +} + +.govuk-cookie-banner__message:focus { + outline: none +} + +.govuk-input { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; box-sizing: border-box; - display: block; width: 100%; - min-height: 40px; - margin-bottom: 20px; + height: 2.5rem; + margin-top: 0; padding: 5px; - resize: vertical; border: 2px solid #0b0c0c; border-radius: 0; - -webkit-appearance: none + -webkit-appearance: none; + appearance: none } @media print { - .govuk-textarea { + .govuk-input { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-textarea { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.25 + .govuk-input { + font-size: 1.1875rem; + line-height: 1.3157894737 } } @media print { - .govuk-textarea { + .govuk-input { font-size: 14pt; - line-height: 1.25 - } -} - -@media (min-width:40.0625em) { - .govuk-textarea { - margin-bottom: 30px + line-height: 1.15 } } -.govuk-textarea:focus { +.govuk-input:focus { outline: 3px solid #fd0; outline-offset: 0; box-shadow: inset 0 0 0 2px } -.govuk-textarea--error { +.govuk-input:disabled { + opacity: .5; + color: inherit; + background-color: transparent; + cursor: not-allowed +} + +.govuk-input::-webkit-inner-spin-button, +.govuk-input::-webkit-outer-spin-button { + margin: 0; + -webkit-appearance: none +} + +.govuk-input[type=number] { + -moz-appearance: textfield +} + +.govuk-input--error { border-color: #d4351c } -.govuk-textarea--error:focus { +.govuk-input--error:focus { border-color: #0b0c0c } -.govuk-character-count { - margin-bottom: 20px +.govuk-input--extra-letter-spacing { + font-variant-numeric: tabular-nums; + letter-spacing: .05em } -@media (min-width:40.0625em) { - .govuk-character-count { - margin-bottom: 30px - } +.govuk-input--width-30 { + max-width: 29.5em } -.govuk-character-count .govuk-form-group, -.govuk-character-count .govuk-textarea { - margin-bottom: 5px +.govuk-input--width-20 { + max-width: 20.5em } -.govuk-character-count__message { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-font-feature-settings: "tnum" 1; - font-feature-settings: "tnum" 1; - font-weight: 400; - margin-top: 0; - margin-bottom: 0 +.govuk-input--width-10 { + max-width: 11.5em } -@media print { - .govuk-character-count__message { - font-family: sans-serif - } +.govuk-input--width-5 { + max-width: 5.5em } -@supports (font-variant-numeric:tabular-nums) { - .govuk-character-count__message { - -webkit-font-feature-settings: normal; - font-feature-settings: normal; - font-variant-numeric: tabular-nums - } +.govuk-input--width-4 { + max-width: 4.5em } -.govuk-character-count__message--disabled { - visibility: hidden +.govuk-input--width-3 { + max-width: 3.75em } -.govuk-cookie-banner { - padding-top: 20px; - border-bottom: 10px solid rgba(0, 0, 0, 0); - background-color: #f3f2f1 +.govuk-input--width-2 { + max-width: 2.75em } -.govuk-cookie-banner[hidden] { - display: none +.govuk-input__wrapper { + display: flex } -.govuk-cookie-banner__message { - margin-bottom: -10px +.govuk-input__wrapper .govuk-input { + flex: 0 1 auto } -.govuk-cookie-banner__message[hidden] { - display: none +.govuk-input__wrapper .govuk-input:focus { + z-index: 1 } -.govuk-cookie-banner__message:focus { - outline: none +@media (max-width:19.99em) { + .govuk-input__wrapper { + display: block + } + + .govuk-input__wrapper .govuk-input { + max-width: 100% + } } -.govuk-summary-list { +.govuk-input__prefix, +.govuk-input__suffix { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; - color: #0b0c0c; - margin: 0 0 20px + box-sizing: border-box; + display: flex; + align-items: center; + justify-content: center; + min-width: 2.5rem; + height: 2.5rem; + padding: 5px; + border: 2px solid #0b0c0c; + background-color: #f3f2f1; + text-align: center; + white-space: nowrap; + cursor: default; + flex: 0 0 auto } @media print { - .govuk-summary-list { + + .govuk-input__prefix, + .govuk-input__suffix { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-summary-list { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + + .govuk-input__prefix, + .govuk-input__suffix { + font-size: 1.1875rem; + line-height: 1.3157894737 } } @media print { - .govuk-summary-list { + + .govuk-input__prefix, + .govuk-input__suffix { font-size: 14pt; - line-height: 1.15; - color: #000 + line-height: 1.15 } } -@media (min-width:40.0625em) { - .govuk-summary-list { - display: table; - width: 100%; - table-layout: fixed; - border-collapse: collapse; - margin-bottom: 30px +@media (max-width:19.99em) { + + .govuk-input__prefix, + .govuk-input__suffix { + display: block; + height: 100%; + white-space: normal } -} -.govuk-summary-list__row { - border-bottom: 1px solid #b1b4b6 + .govuk-input__prefix { + border-bottom: 0 + } } -@media (max-width:40.0525em) { - .govuk-summary-list__row { - margin-bottom: 15px +@media (min-width:20em) { + .govuk-input__prefix { + border-right: 0 } } -@media (min-width:40.0625em) { - .govuk-summary-list__row { - display: table-row +@media (max-width:19.99em) { + .govuk-input__suffix { + border-top: 0 } } -.govuk-summary-list__row--no-actions:after { - content: ""; - display: table-cell +@media (min-width:20em) { + .govuk-input__suffix { + border-left: 0 + } } -.govuk-summary-list__actions, -.govuk-summary-list__key, -.govuk-summary-list__value { - margin: 0 +.govuk-date-input { + font-size: 0 } -@media (min-width:40.0625em) { - .govuk-summary-list__actions, - .govuk-summary-list__key, - .govuk-summary-list__value { - display: table-cell; - padding-top: 10px; - padding-right: 20px; - padding-bottom: 10px - } +.govuk-date-input:after { + content: ""; + display: block; + clear: both } -.govuk-summary-list__actions { - margin-bottom: 15px +.govuk-date-input__item { + display: inline-block; + margin-right: 20px; + margin-bottom: 0 } -@media (min-width:40.0625em) { - .govuk-summary-list__actions { - width: 20%; - padding-right: 0; - text-align: right - } +.govuk-date-input__label { + display: block } -.govuk-summary-list__key, -.govuk-summary-list__value { - word-wrap: break-word; - overflow-wrap: break-word +.govuk-date-input__input { + margin-bottom: 0 } -.govuk-summary-list__key { - margin-bottom: 5px; - font-weight: 700 +.govuk-details { + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 400; + font-size: 1rem; + line-height: 1.25; + color: #0b0c0c; + margin-bottom: 20px; + display: block +} + +@media print { + .govuk-details { + font-family: sans-serif + } } @media (min-width:40.0625em) { - .govuk-summary-list__key { - width: 30% + .govuk-details { + font-size: 1.1875rem; + line-height: 1.3157894737 } } -@media (max-width:40.0525em) { - .govuk-summary-list__value { - margin-bottom: 15px +@media print { + .govuk-details { + font-size: 14pt; + line-height: 1.15; + color: #000 } } -.govuk-summary-list__value>p { - margin-bottom: 10px +@media (min-width:40.0625em) { + .govuk-details { + margin-bottom: 30px + } } -.govuk-summary-list__value>:last-child { - margin-bottom: 0 +.govuk-details__summary { + display: inline-block; + margin-bottom: 5px } -.govuk-summary-list__actions-list { - width: 100%; - margin: 0; - padding: 0 +.govuk-details__summary-text>:first-child { + margin-top: 0 } -.govuk-summary-list__actions-list-item { - display: inline; - margin-right: 10px; - padding-right: 10px +.govuk-details__summary-text>:last-child, +.govuk-details__summary-text>:only-child { + margin-bottom: 0 } -.govuk-summary-list__actions-list-item:not(:last-child) { - border-right: 1px solid #b1b4b6 +.govuk-details__text { + padding-top: 15px; + padding-bottom: 15px; + padding-left: 20px } -.govuk-summary-list__actions-list-item:last-child { - margin-right: 0; - padding-right: 0; - border: 0 +.govuk-details__text p { + margin-top: 0; + margin-bottom: 20px } -.govuk-summary-list--no-border .govuk-summary-list__row { - border: 0 +.govuk-details__text>:last-child { + margin-bottom: 0 } -@media (min-width:40.0625em) { - .govuk-summary-list--no-border .govuk-summary-list__actions, - .govuk-summary-list--no-border .govuk-summary-list__key, - .govuk-summary-list--no-border .govuk-summary-list__value { - padding-bottom: 11px +@media screen\0 { + .govuk-details { + border-left: 10px solid #b1b4b6 + } + + .govuk-details__summary { + margin-top: 15px + } + + .govuk-details__summary-text { + font-weight: 700; + margin-bottom: 15px; + padding-left: 20px } } -.govuk-summary-list__row--no-border { - border: 0 +@media screen\0 and (min-width:40.0625em) { + .govuk-details__summary-text { + margin-bottom: 20px + } } -@media (min-width:40.0625em) { - .govuk-summary-list__row--no-border .govuk-summary-list__actions, - .govuk-summary-list__row--no-border .govuk-summary-list__key, - .govuk-summary-list__row--no-border .govuk-summary-list__value { - padding-bottom: 11px +@supports not (-ms-ime-align:auto) { + .govuk-details__summary { + position: relative; + padding-left: 25px; + color: #1d70b8; + cursor: pointer + } + + .govuk-details__summary:hover { + color: #003078 + } + + .govuk-details__summary:focus { + outline: 3px solid transparent; + color: #0b0c0c; + background-color: #fd0; + box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone + } + + .govuk-details__summary-text { + text-decoration: underline; + text-decoration-thickness: max(1px, .0625rem); + text-underline-offset: .1578em + } + + .govuk-details__summary:hover .govuk-details__summary-text { + text-decoration-thickness: max(3px, .1875rem, .12em); + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; + -webkit-text-decoration-skip: none; + text-decoration-skip: none + } + + .govuk-details__summary:focus .govuk-details__summary-text { + text-decoration: none + } + + .govuk-details__summary::-webkit-details-marker { + display: none + } + + .govuk-details__summary:before { + content: ""; + position: absolute; + top: -1px; + bottom: 0; + left: 0; + margin: auto; + display: block; + width: 0; + height: 0; + -webkit-clip-path: polygon(0 0, 100% 50%, 0 100%); + clip-path: polygon(0 0, 100% 50%, 0 100%); + border-color: transparent; + border-style: solid; + border-width: 7px 0 7px 12.124px; + border-left-color: inherit + } + + .govuk-details[open]>.govuk-details__summary:before { + display: block; + width: 0; + height: 0; + -webkit-clip-path: polygon(0 0, 50% 100%, 100% 0); + clip-path: polygon(0 0, 50% 100%, 100% 0); + border-color: transparent; + border-style: solid; + border-width: 12.124px 7px 0; + border-top-color: inherit + } + + .govuk-details__text { + border-left: 5px solid #b1b4b6 } } -.govuk-input { +.govuk-error-summary { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; - box-sizing: border-box; - width: 100%; - height: 40px; - height: 2.5norem; - margin-top: 0; - padding: 5px; - border: 2px solid #0b0c0c; - border-radius: 0; - -webkit-appearance: none; - -moz-appearance: none; - appearance: none + color: #0b0c0c; + padding: 15px; + margin-bottom: 30px; + border: 5px solid #d4351c } @media print { - .govuk-input { + .govuk-error-summary { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-input { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + .govuk-error-summary { + font-size: 1.1875rem; + line-height: 1.3157894737 } } @media print { - .govuk-input { + .govuk-error-summary { font-size: 14pt; - line-height: 1.15 + line-height: 1.15; + color: #000 } } -.govuk-input:focus { - outline: 3px solid #fd0; - outline-offset: 0; - box-shadow: inset 0 0 0 2px +@media (min-width:40.0625em) { + .govuk-error-summary { + padding: 20px; + margin-bottom: 50px + } } -.govuk-input::-webkit-inner-spin-button, -.govuk-input::-webkit-outer-spin-button { - margin: 0; - -webkit-appearance: none +.govuk-error-summary:focus { + outline: 3px solid #fd0 } -.govuk-input[type=number] { - -moz-appearance: textfield +.govuk-error-summary__title { + font-size: 1.125rem; + line-height: 1.1111111111; + font-weight: 700; + margin-top: 0; + margin-bottom: 15px } -.govuk-input--error { - border-color: #d4351c +@media (min-width:40.0625em) { + .govuk-error-summary__title { + font-size: 1.5rem; + line-height: 1.25 + } } -.govuk-input--error:focus { - border-color: #0b0c0c +@media print { + .govuk-error-summary__title { + font-size: 18pt; + line-height: 1.15 + } } -.govuk-input--width-30 { - max-width: 59ex +@media (min-width:40.0625em) { + .govuk-error-summary__title { + margin-bottom: 20px + } } -.govuk-input--width-20 { - max-width: 41ex +.govuk-error-summary__body p { + margin-bottom: 0 } -.govuk-input--width-10 { - max-width: 23ex +.govuk-error-summary__body>*+* { + margin-top: 15px } -.govuk-input--width-5 { - max-width: 10.8ex +@media (min-width:40.0625em) { + .govuk-error-summary__body>*+* { + margin-top: 20px + } } -.govuk-input--width-4 { - max-width: 9ex +.govuk-error-summary__list, +.govuk-error-summary__list li:last-child { + margin-bottom: 0 } -.govuk-input--width-3 { - max-width: 7.2ex +.govuk-error-summary__list a { + font-weight: 700; + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: underline; + text-decoration-thickness: max(1px, .0625rem); + text-underline-offset: .1578em } -.govuk-input--width-2 { - max-width: 5.4ex +@media print { + .govuk-error-summary__list a { + font-family: sans-serif + } } -.govuk-input__wrapper { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; - display: flex +.govuk-error-summary__list a:hover { + text-decoration-thickness: max(3px, .1875rem, .12em); + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; + -webkit-text-decoration-skip: none; + text-decoration-skip: none } -.govuk-input__wrapper .govuk-input { - -webkit-box-flex: 0; - -webkit-flex: 0 1 auto; - -ms-flex: 0 1 auto; - flex: 0 1 auto +.govuk-error-summary__list a:focus { + outline: 3px solid transparent; + background-color: #fd0; + box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone } -.govuk-input__wrapper .govuk-input:focus { - z-index: 1 +.govuk-error-summary__list a:link, +.govuk-error-summary__list a:visited { + color: #d4351c } -@media (max-width:19.99em) { - .govuk-input__wrapper { - display: block - } - .govuk-input__wrapper .govuk-input { - max-width: 100% - } +.govuk-error-summary__list a:hover { + color: #942514 } -.govuk-input__prefix, -.govuk-input__suffix { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 16px; - font-size: 1norem; - line-height: 1.25; - box-sizing: border-box; - display: inline-block; - min-width: 40px; - min-width: 2.5norem; - height: 40px; - height: 2.5norem; - padding: 5px; - border: 2px solid #0b0c0c; - background-color: #f3f2f1; - text-align: center; - white-space: nowrap; - cursor: default; - -webkit-box-flex: 0; - -webkit-flex: 0 0 auto; - -ms-flex: 0 0 auto; - flex: 0 0 auto +.govuk-error-summary__list a:active { + color: #d4351c } -@media print { - .govuk-input__prefix, - .govuk-input__suffix { - font-family: sans-serif - } +.govuk-error-summary__list a:focus { + color: #0b0c0c } -@media (min-width:40.0625em) { - .govuk-input__prefix, - .govuk-input__suffix { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 - } +.govuk-exit-this-page { + margin-bottom: 30px; + position: -webkit-sticky; + position: sticky; + z-index: 1000; + top: 0; + left: 0; + width: 100% } -@media print { - .govuk-input__prefix, - .govuk-input__suffix { - font-size: 14pt; - line-height: 1.15 +@media (min-width:40.0625em) { + .govuk-exit-this-page { + margin-bottom: 50px; + display: inline-block; + right: 0; + left: auto; + width: auto; + float: right } } -@media (max-width:40.0525em) { - .govuk-input__prefix, - .govuk-input__suffix { - line-height: 1.6 - } +.govuk-exit-this-page__button { + margin-bottom: 0 } -@media (max-width:19.99em) { - .govuk-input__prefix, - .govuk-input__suffix { - display: block; - height: 100%; - white-space: normal - } +.govuk-exit-this-page__indicator { + display: none; + padding: 10px 10px 0; + color: inherit; + line-height: 0; + text-align: center; + pointer-events: none } -@media (max-width:19.99em) { - .govuk-input__prefix { - border-bottom: 0 - } +.govuk-exit-this-page__indicator--visible { + display: block } -@media (min-width:20em) { - .govuk-input__prefix { - border-right: 0 - } +.govuk-exit-this-page__indicator-light { + box-sizing: border-box; + display: inline-block; + width: .75em; + height: .75em; + margin: 0 .125em; + border-radius: 50%; + border: 2px solid } -@media (max-width:19.99em) { - .govuk-input__suffix { - border-top: 0 - } +.govuk-exit-this-page__indicator-light--on { + border-width: .375em } -@media (min-width:20em) { - .govuk-input__suffix { - border-left: 0 +@media only print { + .govuk-exit-this-page { + display: none } } -.govuk-date-input { - font-size: 0 -} - -.govuk-date-input:after { - content: ""; - display: block; - clear: both -} - -.govuk-date-input__item { - display: inline-block; - margin-right: 20px; - margin-bottom: 0 +.govuk-exit-this-page-overlay { + position: fixed; + z-index: 9999; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: #fff } -.govuk-date-input__label { - display: block +.govuk-exit-this-page-hide-content * { + display: none !important } -.govuk-date-input__input { - margin-bottom: 0 +.govuk-exit-this-page-hide-content .govuk-exit-this-page-overlay { + display: block !important } -.govuk-details { +.govuk-file-upload { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; color: #0b0c0c; - margin-bottom: 20px; - display: block + max-width: 100%; + margin-left: -5px; + padding: 5px } @media print { - .govuk-details { + .govuk-file-upload { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-details { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + .govuk-file-upload { + font-size: 1.1875rem; + line-height: 1.3157894737 } } @media print { - .govuk-details { + .govuk-file-upload { font-size: 14pt; line-height: 1.15; color: #000 } } -@media (min-width:40.0625em) { - .govuk-details { - margin-bottom: 30px - } -} - -.govuk-details__summary { - display: inline-block; - position: relative; - margin-bottom: 5px; - padding-left: 25px; - color: #1d70b8; - cursor: pointer -} - -.govuk-details__summary:hover { - color: #003078 -} - -.govuk-details__summary:focus { - outline: 3px solid rgba(0, 0, 0, 0); - color: #0b0c0c; - background-color: #fd0; - box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; - text-decoration: none -} - -.govuk-details__summary-text { - text-decoration: underline -} - -.govuk-details__summary:focus .govuk-details__summary-text { - text-decoration: none -} - -.govuk-details__summary::-webkit-details-marker { - display: none -} - -.govuk-details__summary:before { - content: ""; - position: absolute; - top: -1px; - bottom: 0; - left: 0; - margin: auto; - display: block; - width: 0; - height: 0; - -webkit-clip-path: polygon(0 0, 100% 50%, 0 100%); - clip-path: polygon(0 0, 100% 50%, 0 100%); - border-color: rgba(0, 0, 0, 0); - border-style: solid; - border-width: 7px 0 7px 12.124px; - border-left-color: inherit -} - -.govuk-details[open]>.govuk-details__summary:before { - display: block; - width: 0; - height: 0; - -webkit-clip-path: polygon(0 0, 50% 100%, 100% 0); - clip-path: polygon(0 0, 50% 100%, 100% 0); - border-color: rgba(0, 0, 0, 0); - border-style: solid; - border-width: 12.124px 7px 0; - border-top-color: inherit -} - -.govuk-details__text { - padding-top: 15px; - padding-bottom: 15px; - padding-left: 20px; - border-left: 5px solid #b1b4b6 -} - -.govuk-details__text p { - margin-top: 0; - margin-bottom: 20px -} - -.govuk-details__text>:last-child { - margin-bottom: 0 -} - -.govuk-error-summary { - color: #0b0c0c; - padding: 15px; - margin-bottom: 30px; - border: 5px solid #d4351c +.govuk-file-upload::-webkit-file-upload-button { + -webkit-appearance: button; + color: inherit; + font: inherit } -@media print { - .govuk-error-summary { - color: #000 - } +.govuk-file-upload:focus { + outline: 3px solid #fd0; + box-shadow: inset 0 0 0 4px #0b0c0c } -@media (min-width:40.0625em) { - .govuk-error-summary { - padding: 20px; - margin-bottom: 50px - } +.govuk-file-upload:focus-within { + outline: 3px solid #fd0; + box-shadow: inset 0 0 0 4px #0b0c0c } -.govuk-error-summary:focus { - outline: 3px solid #fd0 +.govuk-file-upload:disabled { + opacity: .5; + cursor: not-allowed } -.govuk-error-summary__title { +.govuk-footer { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 18px; - font-size: 1.125norem; - line-height: 1.11111; - margin-top: 0; - margin-bottom: 15px + font-weight: 400; + font-size: .875rem; + line-height: 1.1428571429; + padding-top: 25px; + padding-bottom: 15px; + border-top: 1px solid #b1b4b6; + color: #0b0c0c; + background: #f3f2f1; } @media print { - .govuk-error-summary__title { + .govuk-footer { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-error-summary__title { - font-size: 24px; - font-size: 1.5norem; + .govuk-footer { + font-size: 1rem; line-height: 1.25 } } @media print { - .govuk-error-summary__title { - font-size: 18pt; - line-height: 1.15 + .govuk-footer { + font-size: 14pt; + line-height: 1.2 } } @media (min-width:40.0625em) { - .govuk-error-summary__title { - margin-bottom: 20px + .govuk-footer { + padding-top: 40px; + padding-bottom: 25px } } -.govuk-error-summary__body { +.govuk-footer__link { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 16px; - font-size: 1norem; - line-height: 1.25 + text-decoration: underline; + text-decoration-thickness: max(1px, .0625rem); + text-underline-offset: .1578em } @media print { - .govuk-error-summary__body { + .govuk-footer__link { font-family: sans-serif } } -@media (min-width:40.0625em) { - .govuk-error-summary__body { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 - } +.govuk-footer__link:hover { + text-decoration-thickness: max(3px, .1875rem, .12em); + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; + -webkit-text-decoration-skip: none; + text-decoration-skip: none } -@media print { - .govuk-error-summary__body { - font-size: 14pt; - line-height: 1.15 - } -} - -.govuk-error-summary__body p { - margin-top: 0; - margin-bottom: 15px -} - -@media (min-width:40.0625em) { - .govuk-error-summary__body p { - margin-bottom: 20px - } -} - -.govuk-error-summary__list { - margin-top: 0; - margin-bottom: 0; - color: #d4351c; - font-weight: 700; - text-decoration: underline; - text-underline-offset: 0.1em -} - -.govuk-error-summary__list a { - font-weight: 700; - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - text-decoration: underline -} - -@media print { - .govuk-error-summary__list a { - font-family: sans-serif - } -} - -.govuk-error-summary__list a:focus { - outline: 3px solid rgba(0, 0, 0, 0); - background-color: #fd0; - box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; - text-decoration: none -} - -.govuk-error-summary__list a:link, -.govuk-error-summary__list a:visited { - color: #d4351c -} - -.govuk-error-summary__list a:hover { - color: #942514 -} - -.govuk-error-summary__list a:active { - color: #d4351c -} - -.govuk-error-summary__list a:focus { - color: #0b0c0c -} - -.govuk-file-upload { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 16px; - font-size: 1norem; - line-height: 1.25; - color: #0b0c0c; - max-width: 100%; - margin-left: -5px; - padding: 5px -} - -@media print { - .govuk-file-upload { - font-family: sans-serif - } -} - -@media (min-width:40.0625em) { - .govuk-file-upload { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 - } -} - -@media print { - .govuk-file-upload { - font-size: 14pt; - line-height: 1.15; - color: #000 - } -} - -.govuk-file-upload::-webkit-file-upload-button { - -webkit-appearance: button; - color: inherit; - font: inherit -} - -.govuk-file-upload:focus { - outline: 3px solid #fd0; - box-shadow: inset 0 0 0 4px #0b0c0c -} - -.govuk-file-upload:focus-within { - outline: 3px solid #fd0; - box-shadow: inset 0 0 0 4px #0b0c0c -} - -.govuk-footer { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 14px; - font-size: .875norem; - line-height: 1.14286; - padding-top: 25px; - padding-bottom: 15px; - border-top: 1px solid #b1b4b6; - color: #0b0c0c; - background: #f3f2f1; - display:inline-block; - width:100%; - bottom:0 -} - -@media print { - .govuk-footer { - font-family: sans-serif - } -} - -@media (min-width:40.0625em) { - .govuk-footer { - font-size: 16px; - font-size: 1norem; - line-height: 1.25 - } -} - -@media print { - .govuk-footer { - font-size: 14pt; - line-height: 1.2 - } -} - -@media (min-width:40.0625em) { - .govuk-footer { - padding-top: 40px; - padding-bottom: 25px - } -} - -.govuk-footer__link { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - text-decoration: underline -} - -@media print { - .govuk-footer__link { - font-family: sans-serif - } -} - -.govuk-footer__link:focus { - outline: 3px solid rgba(0, 0, 0, 0); - color: #0b0c0c; - background-color: #fd0; - box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; - text-decoration: none +.govuk-footer__link:focus { + outline: 3px solid transparent; + color: #0b0c0c; + background-color: #fd0; + box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone } .govuk-footer__link:link, @@ -3585,6 +3453,7 @@ screen and (forced-colors:active) { } @media print { + .govuk-footer__link:link, .govuk-footer__link:visited { color: #000 @@ -3601,6 +3470,7 @@ screen and (forced-colors:active) { } @media print { + .govuk-footer__link:active, .govuk-footer__link:focus { color: #000 @@ -3620,22 +3490,11 @@ screen and (forced-colors:active) { } .govuk-footer__meta { - display: -webkit-box; - display: -webkit-flex; - display: -ms-flexbox; display: flex; margin-right: -15px; margin-left: -15px; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; flex-wrap: wrap; - -webkit-box-align: end; - -webkit-align-items: flex-end; - -ms-flex-align: end; align-items: flex-end; - -webkit-box-pack: center; - -webkit-justify-content: center; - -ms-flex-pack: center; justify-content: center } @@ -3646,16 +3505,11 @@ screen and (forced-colors:active) { } .govuk-footer__meta-item--grow { - -webkit-box-flex: 1; - -webkit-flex: 1; - -ms-flex: 1; flex: 1 } @media (max-width:40.0525em) { .govuk-footer__meta-item--grow { - -webkit-flex-basis: 320px; - -ms-flex-preferred-size: 320px; flex-basis: 320px } } @@ -3690,8 +3544,8 @@ screen and (forced-colors:active) { } @media only screen and (-webkit-min-device-pixel-ratio:2), -only screen and (min-resolution:2dppx), -only screen and (min-resolution:192dpi) { +only screen and (min-resolution:192dpi), +only screen and (min-resolution:2dppx) { .govuk-footer__copyright-logo { background-image: url(../images/govuk-crest-2x.png) } @@ -3746,21 +3600,15 @@ only screen and (min-resolution:192dpi) { margin: 0; padding: 0; list-style: none; - -webkit-column-gap: 30px; column-gap: 30px } -.govuk-footer__list .govuk-footer__link:hover { - text-decoration-thickness: auto -} - @media (min-width:48.0625em) { .govuk-footer__list--columns-2 { - -webkit-column-count: 2; column-count: 2 } + .govuk-footer__list--columns-3 { - -webkit-column-count: 3; column-count: 3 } } @@ -3784,9 +3632,8 @@ only screen and (min-resolution:192dpi) { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 14px; - font-size: .875norem; - line-height: 1.14286; + font-size: .875rem; + line-height: 1; border-bottom: 10px solid #fff; color: #fff; background: #0b0c0c @@ -3800,16 +3647,15 @@ only screen and (min-resolution:192dpi) { @media (min-width:40.0625em) { .govuk-header { - font-size: 16px; - font-size: 1norem; - line-height: 1.25 + font-size: 1rem; + line-height: 1 } } @media print { .govuk-header { font-size: 14pt; - line-height: 1.2 + line-height: 1 } } @@ -3837,7 +3683,11 @@ only screen and (min-resolution:192dpi) { .govuk-header__logotype { display: inline-block; - margin-right: 5px + position: relative; + top: -3px; + margin-right: 5px; + fill: currentcolor; + vertical-align: top } @media (forced-colors:active) { @@ -3851,42 +3701,18 @@ only screen and (min-resolution:192dpi) { margin-right: 0 } -.govuk-header__logotype-crown { - position: relative; - top: -1px; - margin-right: 1px; - fill: currentColor; - vertical-align: top -} - -.govuk-header__logotype-crown-fallback-image { - width: 36px; - height: 32px; - border: 0; - vertical-align: bottom -} - .govuk-header__product-name { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 18px; - font-size: 1.125norem; + font-size: 1.125rem; line-height: 1; - display: inline-table -} - -@media print { - .govuk-header__product-name { - font-family: sans-serif - } + font-weight: 400; + display: inline-table; + margin-top: 10px; + vertical-align: top } @media (min-width:40.0625em) { .govuk-header__product-name { - font-size: 24px; - font-size: 1.5norem; + font-size: 1.5rem; line-height: 1 } } @@ -3898,19 +3724,28 @@ only screen and (min-resolution:192dpi) { } } -.govuk-header__link { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - text-decoration: none +@-moz-document url-prefix() { + .govuk-header__product-name { + margin-top: 9.5px + } } -@media print { - .govuk-header__link { - font-family: sans-serif +@media (min-width:40.0625em) { + .govuk-header__product-name { + margin-top: 5px + } + + @-moz-document url-prefix() { + .govuk-header__product-name { + margin-top: 4.5px + } } } +.govuk-header__link { + text-decoration: none +} + .govuk-header__link:link, .govuk-header__link:visited { color: #fff @@ -3924,31 +3759,32 @@ only screen and (min-resolution:192dpi) { .govuk-header__link:hover { text-decoration: underline; text-decoration-thickness: 3px; - text-underline-offset: .1em + text-underline-offset: .1578em } .govuk-header__link:focus { - outline: 3px solid rgba(0, 0, 0, 0); + outline: 3px solid transparent; color: #0b0c0c; background-color: #fd0; box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; - text-decoration: none + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone } .govuk-header__link--homepage { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; display: inline-block; margin-right: 10px; - font-size: 30px; - line-height: 1 + font-size: 30px } -@media print { +@media (min-width:48.0625em) { .govuk-header__link--homepage { - font-family: sans-serif + display: inline + } + + .govuk-header__link--homepage:focus { + box-shadow: 0 0 #fd0 } } @@ -3968,34 +3804,23 @@ only screen and (min-resolution:192dpi) { border-bottom: 0 } -.govuk-header__link--service-name { +.govuk-header__service-name { display: inline-block; margin-bottom: 10px; - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 18px; - font-size: 1.125norem; - line-height: 1.11111 -} - -@media print { - .govuk-header__link--service-name { - font-family: sans-serif - } + font-size: 1.125rem; + line-height: 1.1111111111; + font-weight: 700 } @media (min-width:40.0625em) { - .govuk-header__link--service-name { - font-size: 24px; - font-size: 1.5norem; + .govuk-header__service-name { + font-size: 1.5rem; line-height: 1.25 } } @media print { - .govuk-header__link--service-name { + .govuk-header__service-name { font-size: 18pt; line-height: 1.15 } @@ -4008,13 +3833,7 @@ only screen and (min-resolution:192dpi) { .govuk-header__logo { margin-bottom: 10px; - padding-right: 50px -} - -@media (min-width:40.0625em) { - .govuk-header__logo { - margin-bottom: 10px - } + padding-right: 80px } @media (min-width:48.0625em) { @@ -4024,9 +3843,13 @@ only screen and (min-resolution:192dpi) { float: left; vertical-align: top } -} -@media (min-width:48.0625em) { + .govuk-header__logo:last-child { + width: auto; + padding-right: 0; + float: none + } + .govuk-header__content { width: 66.66%; padding-left: 15px; @@ -4039,18 +3862,19 @@ only screen and (min-resolution:192dpi) { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 14px; - font-size: .875norem; - line-height: 1.14286; - display: none; + font-size: .875rem; + line-height: 1.1428571429; position: absolute; - top: 20px; + top: 13px; right: 0; + max-width: 80px; + min-height: 24px; margin: 0; padding: 0; border: 0; color: #fff; background: none; + word-break: break-all; cursor: pointer } @@ -4062,8 +3886,7 @@ only screen and (min-resolution:192dpi) { @media (min-width:40.0625em) { .govuk-header__menu-button { - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25 } } @@ -4078,15 +3901,17 @@ only screen and (min-resolution:192dpi) { .govuk-header__menu-button:hover { -webkit-text-decoration: solid underline 3px; text-decoration: solid underline 3px; - text-underline-offset: .1em + text-underline-offset: .1578em } .govuk-header__menu-button:focus { - outline: 3px solid rgba(0, 0, 0, 0); + outline: 3px solid transparent; color: #0b0c0c; background-color: #fd0; box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; - text-decoration: none + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone } .govuk-header__menu-button:after { @@ -4095,7 +3920,7 @@ only screen and (min-resolution:192dpi) { height: 0; -webkit-clip-path: polygon(0 0, 50% 100%, 100% 0); clip-path: polygon(0 0, 50% 100%, 100% 0); - border-color: rgba(0, 0, 0, 0); + border-color: transparent; border-style: solid; border-width: 8.66px 5px 0; border-top-color: inherit; @@ -4103,183 +3928,1347 @@ only screen and (min-resolution:192dpi) { margin-left: 5px } -@media (min-width:40.0625em) { - .govuk-header__menu-button { - top: 15px - } -} - -.govuk-header__menu-button--open:after { +.govuk-header__menu-button[aria-expanded=true]:after { display: inline-block; width: 0; height: 0; -webkit-clip-path: polygon(50% 0, 0 100%, 100% 100%); clip-path: polygon(50% 0, 0 100%, 100% 100%); - border-color: rgba(0, 0, 0, 0); + border-color: transparent; border-style: solid; border-width: 0 5px 8.66px; border-bottom-color: inherit } -@media (min-width:48.0625em) { - .govuk-header__navigation { - margin-bottom: 10px +@media (min-width:40.0625em) { + .govuk-header__menu-button { + top: 15px } } -.govuk-header__navigation-list { - margin: 0; - padding: 0; - list-style: none +.govuk-frontend-supported .govuk-header__menu-button { + display: block } -.js-enabled .govuk-header__menu-button { - display: block +.govuk-frontend-supported .govuk-header__menu-button[hidden], +.govuk-header__menu-button[hidden] { + display: none } @media (min-width:48.0625em) { - .js-enabled .govuk-header__menu-button { - display: none + .govuk-header__navigation { + margin-bottom: 10px } } -.js-enabled .govuk-header__navigation-list { +.govuk-header__navigation-list { + margin: 0; + padding: 0; + list-style: none +} + +.govuk-header__navigation-list[hidden] { display: none } @media (min-width:48.0625em) { - .js-enabled .govuk-header__navigation-list { - display: block + .govuk-header__navigation--end { + margin: 0; + padding: 5px 0; + text-align: right } } -.js-enabled .govuk-header__navigation-list--open { - display: block +.govuk-header__navigation-item { + padding: 10px 0; + border-bottom: 1px solid #2e3133 } @media (min-width:48.0625em) { - .govuk-header__navigation--end { - margin: 0; + .govuk-header__navigation-item { + display: inline-block; + margin-right: 15px; padding: 5px 0; - text-align: right + border: 0 + } +} + +.govuk-header__navigation-item a { + font-size: .875rem; + line-height: 1.1428571429; + font-weight: 700; + white-space: nowrap +} + +@media (min-width:40.0625em) { + .govuk-header__navigation-item a { + font-size: 1rem; + line-height: 1.25 } } -.govuk-header__navigation--no-service-name { - padding-top: 40px +@media print { + .govuk-header__navigation-item a { + font-size: 14pt; + line-height: 1.2 + } } -.govuk-header__navigation-item { - padding: 10px 0; - border-bottom: 1px solid #2e3133 +.govuk-header__navigation-item--active a:hover, +.govuk-header__navigation-item--active a:link, +.govuk-header__navigation-item--active a:visited { + color: #1d8feb +} + +@media print { + .govuk-header__navigation-item--active a { + color: #1d70b8 + } +} + +.govuk-header__navigation-item--active a:focus { + color: #0b0c0c +} + +.govuk-header__navigation-item:last-child { + margin-right: 0; + border-bottom: 0 +} + +@media print { + .govuk-header { + border-bottom-width: 0; + color: #0b0c0c; + background: transparent + } + + .govuk-header__link:link, + .govuk-header__link:visited { + color: #0b0c0c + } + + .govuk-header__link:after { + display: none + } +} + +.govuk-inset-text { + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 400; + font-size: 1rem; + line-height: 1.25; + color: #0b0c0c; + padding: 15px; + margin-top: 20px; + margin-bottom: 20px; + clear: both; + border-left: 10px solid #b1b4b6 +} + +@media print { + .govuk-inset-text { + font-family: sans-serif + } +} + +@media (min-width:40.0625em) { + .govuk-inset-text { + font-size: 1.1875rem; + line-height: 1.3157894737 + } +} + +@media print { + .govuk-inset-text { + font-size: 14pt; + line-height: 1.15; + color: #000 + } +} + +@media (min-width:40.0625em) { + .govuk-inset-text { + margin-top: 30px; + margin-bottom: 30px + } +} + +.govuk-inset-text>:first-child { + margin-top: 0 +} + +.govuk-inset-text>:last-child, +.govuk-inset-text>:only-child { + margin-bottom: 0 +} + +.govuk-notification-banner { + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 400; + font-size: 1rem; + line-height: 1.25; + margin-bottom: 30px; + border: 5px solid #1d70b8; + background-color: #1d70b8 +} + +@media print { + .govuk-notification-banner { + font-family: sans-serif + } +} + +@media (min-width:40.0625em) { + .govuk-notification-banner { + font-size: 1.1875rem; + line-height: 1.3157894737 + } +} + +@media print { + .govuk-notification-banner { + font-size: 14pt; + line-height: 1.15 + } +} + +@media (min-width:40.0625em) { + .govuk-notification-banner { + margin-bottom: 50px + } +} + +.govuk-notification-banner:focus { + outline: 3px solid #fd0 +} + +.govuk-notification-banner__header { + padding: 2px 15px 5px; + border-bottom: 1px solid transparent +} + +@media (min-width:40.0625em) { + .govuk-notification-banner__header { + padding: 2px 20px 5px + } +} + +.govuk-notification-banner__title { + font-size: 1rem; + line-height: 1.25; + font-weight: 700; + margin: 0; + padding: 0; + color: #fff +} + +@media (min-width:40.0625em) { + .govuk-notification-banner__title { + font-size: 1.1875rem; + line-height: 1.3157894737 + } +} + +@media print { + .govuk-notification-banner__title { + font-size: 14pt; + line-height: 1.15 + } +} + +.govuk-notification-banner__content { + color: #0b0c0c; + padding: 15px; + background-color: #fff +} + +@media print { + .govuk-notification-banner__content { + color: #000 + } +} + +@media (min-width:40.0625em) { + .govuk-notification-banner__content { + padding: 20px + } +} + +.govuk-notification-banner__content>* { + box-sizing: border-box; + max-width: 605px +} + +.govuk-notification-banner__content>:last-child { + margin-bottom: 0 +} + +.govuk-notification-banner__heading { + font-size: 1.125rem; + line-height: 1.1111111111; + font-weight: 700; + margin: 0 0 15px; + padding: 0 +} + +@media (min-width:40.0625em) { + .govuk-notification-banner__heading { + font-size: 1.5rem; + line-height: 1.25 + } +} + +@media print { + .govuk-notification-banner__heading { + font-size: 18pt; + line-height: 1.15 + } +} + +.govuk-notification-banner__link { + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: underline; + text-decoration-thickness: max(1px, .0625rem); + text-underline-offset: .1578em +} + +@media print { + .govuk-notification-banner__link { + font-family: sans-serif + } +} + +.govuk-notification-banner__link:hover { + text-decoration-thickness: max(3px, .1875rem, .12em); + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; + -webkit-text-decoration-skip: none; + text-decoration-skip: none +} + +.govuk-notification-banner__link:focus { + outline: 3px solid transparent; + background-color: #fd0; + box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone +} + +.govuk-notification-banner__link:link, +.govuk-notification-banner__link:visited { + color: #1d70b8 +} + +.govuk-notification-banner__link:hover { + color: #003078 +} + +.govuk-notification-banner__link:active, +.govuk-notification-banner__link:focus { + color: #0b0c0c +} + +.govuk-notification-banner--success { + border-color: #00703c; + background-color: #00703c +} + +.govuk-notification-banner--success .govuk-notification-banner__link:link, +.govuk-notification-banner--success .govuk-notification-banner__link:visited { + color: #00703c +} + +.govuk-notification-banner--success .govuk-notification-banner__link:hover { + color: #004e2a +} + +.govuk-notification-banner--success .govuk-notification-banner__link:active { + color: #00703c +} + +.govuk-notification-banner--success .govuk-notification-banner__link:focus { + color: #0b0c0c +} + +.govuk-pagination { + margin-bottom: 20px; + display: flex; + flex-direction: column; + align-items: center; + flex-wrap: wrap +} + +@media (min-width:40.0625em) { + .govuk-pagination { + margin-bottom: 30px; + flex-direction: row; + align-items: flex-start + } +} + +.govuk-pagination__list { + margin: 0; + padding: 0; + list-style: none +} + +.govuk-pagination__item, +.govuk-pagination__next, +.govuk-pagination__prev { + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 400; + font-size: 1rem; + line-height: 1.25; + box-sizing: border-box; + position: relative; + min-width: 45px; + min-height: 45px; + padding: 10px 15px; + float: left +} + +@media print { + + .govuk-pagination__item, + .govuk-pagination__next, + .govuk-pagination__prev { + font-family: sans-serif + } +} + +@media (min-width:40.0625em) { + + .govuk-pagination__item, + .govuk-pagination__next, + .govuk-pagination__prev { + font-size: 1.1875rem; + line-height: 1.3157894737 + } +} + +@media print { + + .govuk-pagination__item, + .govuk-pagination__next, + .govuk-pagination__prev { + font-size: 14pt; + line-height: 1.15 + } +} + +.govuk-pagination__item:hover, +.govuk-pagination__next:hover, +.govuk-pagination__prev:hover { + background-color: #f3f2f1 +} + +.govuk-pagination__item { + display: none; + text-align: center +} + +@media (min-width:40.0625em) { + .govuk-pagination__item { + display: block + } +} + +.govuk-pagination__next, +.govuk-pagination__prev { + font-weight: 700 +} + +.govuk-pagination__next .govuk-pagination__link, +.govuk-pagination__prev .govuk-pagination__link { + display: flex; + align-items: center +} + +.govuk-pagination__prev { + padding-left: 0 +} + +.govuk-pagination__next { + padding-right: 0 +} + +.govuk-pagination__item--current, +.govuk-pagination__item--ellipses, +.govuk-pagination__item:first-child, +.govuk-pagination__item:last-child { + display: block +} + +.govuk-pagination__item--current { + font-weight: 700; + outline: 1px solid transparent; + background-color: #1d70b8 +} + +.govuk-pagination__item--current:hover { + background-color: #1d70b8 +} + +.govuk-pagination__item--current .govuk-pagination__link:link, +.govuk-pagination__item--current .govuk-pagination__link:visited { + color: #fff +} + +.govuk-pagination__item--current .govuk-pagination__link:active, +.govuk-pagination__item--current .govuk-pagination__link:hover { + color: hsla(0, 0%, 100%, .99) +} + +.govuk-pagination__item--current .govuk-pagination__link:focus { + color: #0b0c0c +} + +.govuk-pagination__item--ellipses { + font-weight: 700; + color: #505a5f +} + +.govuk-pagination__item--ellipses:hover { + background-color: transparent +} + +.govuk-pagination__link { + display: block; + min-width: 15px +} + +@media screen { + .govuk-pagination__link:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0 + } +} + +.govuk-pagination__link:active .govuk-pagination__link-title--decorated, +.govuk-pagination__link:hover .govuk-pagination__link-title--decorated { + text-decoration: underline; + text-decoration-thickness: max(1px, .0625rem); + text-underline-offset: .1578em +} + +.govuk-pagination__link:active .govuk-pagination__link-label, +.govuk-pagination__link:active .govuk-pagination__link-title--decorated, +.govuk-pagination__link:hover .govuk-pagination__link-label, +.govuk-pagination__link:hover .govuk-pagination__link-title--decorated { + text-decoration-thickness: max(3px, .1875rem, .12em); + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; + -webkit-text-decoration-skip: none; + text-decoration-skip: none +} + +.govuk-pagination__link:focus .govuk-pagination__icon { + color: #0b0c0c +} + +.govuk-pagination__link:focus .govuk-pagination__link-label, +.govuk-pagination__link:focus .govuk-pagination__link-title--decorated { + text-decoration: none +} + +.govuk-pagination__link-label { + font-weight: 400; + text-decoration: underline; + text-decoration-thickness: max(1px, .0625rem); + text-underline-offset: .1578em; + display: inline-block; + padding-left: 30px +} + +.govuk-pagination__icon { + width: .9375rem; + height: .8125rem; + color: #505a5f; + fill: currentcolor; + forced-color-adjust: auto +} + +.govuk-pagination__icon--prev { + margin-right: 15px +} + +.govuk-pagination__icon--next { + margin-left: 15px +} + +.govuk-pagination--block { + display: block +} + +.govuk-pagination--block .govuk-pagination__item { + padding: 15px; + float: none +} + +.govuk-pagination--block .govuk-pagination__next, +.govuk-pagination--block .govuk-pagination__prev { + padding-left: 0; + float: none +} + +.govuk-pagination--block .govuk-pagination__next { + padding-right: 15px +} + +.govuk-pagination--block .govuk-pagination__next .govuk-pagination__icon { + margin-left: 0 +} + +.govuk-pagination--block .govuk-pagination__prev+.govuk-pagination__next { + border-top: 1px solid #b1b4b6 +} + +.govuk-pagination--block .govuk-pagination__link, +.govuk-pagination--block .govuk-pagination__link-title { + display: inline +} + +.govuk-pagination--block .govuk-pagination__link-title:after { + content: ""; + display: block +} + +.govuk-pagination--block .govuk-pagination__link { + text-align: left +} + +.govuk-pagination--block .govuk-pagination__link:focus .govuk-pagination__link-label { + outline: 3px solid transparent; + color: #0b0c0c; + background-color: #fd0; + box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone +} + +.govuk-pagination--block .govuk-pagination__link:not(:focus) { + text-decoration: none +} + +.govuk-pagination--block .govuk-pagination__icon { + margin-right: 10px +} + +.govuk-panel { + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 400; + font-size: 1.5rem; + line-height: 1.0416666667; + box-sizing: border-box; + margin-bottom: 15px; + padding: 35px; + border: 5px solid transparent; + text-align: center +} + +@media print { + .govuk-panel { + font-family: sans-serif + } +} + +@media (min-width:40.0625em) { + .govuk-panel { + font-size: 2.25rem; + line-height: 1.1111111111 + } +} + +@media print { + .govuk-panel { + font-size: 24pt; + line-height: 1.05 + } +} + +@media (max-width:40.0525em) { + .govuk-panel { + padding: 10px; + overflow-wrap: break-word; + word-wrap: break-word + } +} + +.govuk-panel--confirmation { + color: #fff; + background: #00703c +} + +@media print { + .govuk-panel--confirmation { + border-color: currentcolor; + color: #000; + background: none + } +} + +.govuk-panel__title { + font-size: 2rem; + line-height: 1.09375; + font-weight: 700; + margin-top: 0; + margin-bottom: 30px +} + +@media (min-width:40.0625em) { + .govuk-panel__title { + font-size: 3rem; + line-height: 1.0416666667 + } +} + +@media print { + .govuk-panel__title { + font-size: 32pt; + line-height: 1.15 + } +} + +.govuk-panel__title:last-child { + margin-bottom: 0 +} + +@media (min-width:20em) { + .govuk-password-input__wrapper { + flex-direction: row; + align-items: flex-start + } +} + +.govuk-password-input__input::-ms-reveal { + display: none +} + +.govuk-password-input__toggle { + margin-top: 5px; + margin-bottom: 0 +} + +.govuk-password-input__toggle[hidden] { + display: none +} + +@media (min-width:20em) { + .govuk-password-input__toggle { + width: auto; + flex-shrink: 0; + flex-basis: 5em; + margin-top: 0; + margin-left: 5px + } +} + +.govuk-tag { + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 400; + font-size: 1rem; + line-height: 1.25; + display: inline-block; + max-width: 160px; + margin-top: -2px; + margin-bottom: -3px; + padding: 2px 8px 3px; + color: #0c2d4a; + background-color: #bbd4ea; + text-decoration: none; + overflow-wrap: break-word +} + +@media print { + .govuk-tag { + font-family: sans-serif + } +} + +@media (min-width:40.0625em) { + .govuk-tag { + font-size: 1.1875rem; + line-height: 1.3157894737 + } +} + +@media print { + .govuk-tag { + font-size: 14pt; + line-height: 1.15 + } +} + +@media screen and (forced-colors:active) { + .govuk-tag { + font-weight: 700 + } +} + +.govuk-tag--grey { + color: #282d30; + background-color: #e5e6e7 +} + +.govuk-tag--purple { + color: #491644; + background-color: #efdfed +} + +.govuk-tag--turquoise { + color: #10403c; + background-color: #d4ecea +} + +.govuk-tag--blue { + color: #0c2d4a; + background-color: #bbd4ea +} + +.govuk-tag--light-blue { + color: #0c2d4a; + background-color: #e8f1f8 +} + +.govuk-tag--yellow { + color: #594d00; + background-color: #fff7bf +} + +.govuk-tag--orange { + color: #6e3619; + background-color: #fcd6c3 +} + +.govuk-tag--red { + color: #2a0b06; + background-color: #f4cdc6 +} + +.govuk-tag--pink { + color: #6b1c40; + background-color: #f9e1ec +} + +.govuk-tag--green { + color: #005a30; + background-color: #cce2d8 +} + +.govuk-phase-banner { + padding-top: 10px; + padding-bottom: 10px; + border-bottom: 1px solid #b1b4b6 +} + +.govuk-phase-banner__content { + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 400; + font-size: .875rem; + line-height: 1.1428571429; + color: #0b0c0c; + display: table; + margin: 0 +} + +@media print { + .govuk-phase-banner__content { + font-family: sans-serif + } +} + +@media (min-width:40.0625em) { + .govuk-phase-banner__content { + font-size: 1rem; + line-height: 1.25 + } +} + +@media print { + .govuk-phase-banner__content { + font-size: 14pt; + line-height: 1.2; + color: #000 + } +} + +.govuk-phase-banner__content__tag { + font-size: .875rem; + line-height: 1.1428571429; + margin-right: 10px +} + +@media (min-width:40.0625em) { + .govuk-phase-banner__content__tag { + font-size: 1rem; + line-height: 1.25 + } +} + +@media print { + .govuk-phase-banner__content__tag { + font-size: 14pt; + line-height: 1.2 + } +} + +@media screen and (forced-colors:active) { + .govuk-phase-banner__content__tag { + font-weight: 700 + } +} + +.govuk-phase-banner__text { + display: table-cell; + vertical-align: middle +} + +.govuk-radios__item { + display: flex; + flex-wrap: wrap; + position: relative; + margin-bottom: 10px +} + +.govuk-radios__item:last-child, +.govuk-radios__item:last-of-type { + margin-bottom: 0 +} + +.govuk-radios__input { + z-index: 1; + width: 44px; + height: 44px; + margin: 0; + opacity: 0; + vertical-align: middle; + cursor: pointer +} + +.govuk-radios__label { + align-self: center; + max-width: calc(100% - 74px); + display: inline-block; + padding: 7px 15px; + cursor: pointer; + touch-action: manipulation +} + +.govuk-radios__label:before { + content: ""; + box-sizing: border-box; + position: absolute; + top: 2px; + left: 2px; + width: 40px; + height: 40px; + border: 2px solid; + border-radius: 50%; + background: transparent +} + +.govuk-radios__label:after { + content: ""; + position: absolute; + top: 12px; + left: 12px; + width: 0; + height: 0; + border: 10px solid; + border-radius: 50%; + opacity: 0; + background: currentcolor +} + +.govuk-radios__hint { + display: block; + width: 100%; + margin-top: -5px; + padding-right: 15px; + padding-left: 59px +} + +.govuk-label:not(.govuk-label--m):not(.govuk-label--l):not(.govuk-label--xl)+.govuk-radios__hint { + margin-bottom: 0 +} + +.govuk-radios__input:focus+.govuk-radios__label:before { + border-width: 4px; + outline: 3px solid transparent; + outline-offset: 1px; + box-shadow: 0 0 0 4px #fd0 +} + +@media (-ms-high-contrast:active), +screen and (forced-colors:active) { + .govuk-radios__input:focus+.govuk-radios__label:before { + outline-color: Highlight + } +} + +.govuk-radios__input:checked+.govuk-radios__label:after { + opacity: 1 +} + +.govuk-radios__input:disabled, +.govuk-radios__input:disabled+.govuk-radios__label { + cursor: not-allowed +} + +.govuk-radios__input:disabled+.govuk-radios__label, +.govuk-radios__input:disabled~.govuk-hint { + opacity: .5 +} + +@media (min-width:40.0625em) { + .govuk-radios--inline { + display: flex; + flex-wrap: wrap; + align-items: flex-start + } + + .govuk-radios--inline .govuk-radios__item { + margin-right: 20px + } +} + +.govuk-radios__divider { + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 400; + font-size: 1rem; + line-height: 1.25; + color: #0b0c0c; + width: 40px; + margin-bottom: 10px; + text-align: center +} + +@media print { + .govuk-radios__divider { + font-family: sans-serif + } +} + +@media (min-width:40.0625em) { + .govuk-radios__divider { + font-size: 1.1875rem; + line-height: 1.3157894737 + } +} + +@media print { + .govuk-radios__divider { + font-size: 14pt; + line-height: 1.15; + color: #000 + } +} + +.govuk-radios__conditional { + margin-bottom: 15px; + margin-left: 18px; + padding-left: 33px; + border-left: 4px solid #b1b4b6 +} + +@media (min-width:40.0625em) { + .govuk-radios__conditional { + margin-bottom: 20px + } +} + +.govuk-frontend-supported .govuk-radios__conditional--hidden { + display: none +} + +.govuk-radios--small .govuk-radios__item, +.govuk-radios__conditional>:last-child { + margin-bottom: 0 +} + +.govuk-radios--small .govuk-radios__input { + margin-left: -10px +} + +.govuk-radios--small .govuk-radios__label { + padding-left: 1px +} + +.govuk-radios--small .govuk-radios__label:before { + top: 10px; + left: 0; + width: 24px; + height: 24px +} + +.govuk-radios--small .govuk-radios__label:after { + top: 17px; + left: 7px; + border-width: 5px +} + +.govuk-radios--small .govuk-radios__hint { + padding-left: 34px +} + +.govuk-radios--small .govuk-radios__conditional { + margin-left: 10px; + padding-left: 20px +} + +.govuk-radios--small .govuk-radios__divider { + width: 24px; + margin-bottom: 5px +} + +.govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:not(:disabled)+.govuk-radios__label:before { + outline: 4px dashed transparent; + outline-offset: 1px; + box-shadow: 0 0 0 10px #b1b4b6 +} + +.govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:focus+.govuk-radios__label:before { + box-shadow: 0 0 0 4px 0 0 0 10px #fd0 #b1b4b6 +} + +@media (-ms-high-contrast:active), +screen and (forced-colors:active) { + .govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:focus+.govuk-radios__label:before { + outline-color: Highlight + } +} + +@media (hover:none), +(pointer:coarse) { + .govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:not(:disabled)+.govuk-radios__label:before { + box-shadow: none + } + + .govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:focus+.govuk-radios__label:before { + box-shadow: 0 0 0 4px #fd0 + } +} + +.govuk-select { + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 400; + font-size: 1rem; + line-height: 1.25; + box-sizing: border-box; + min-width: 11.5em; + max-width: 100%; + height: 2.5rem; + padding: 5px; + border: 2px solid #0b0c0c; + color: #0b0c0c; + background-color: #fff +} + +@media print { + .govuk-select { + font-family: sans-serif + } +} + +@media (min-width:40.0625em) { + .govuk-select { + font-size: 1.1875rem; + line-height: 1.25 + } +} + +@media print { + .govuk-select { + font-size: 14pt; + line-height: 1.25 + } +} + +.govuk-select:focus { + outline: 3px solid #fd0; + outline-offset: 0; + box-shadow: inset 0 0 0 2px +} + +.govuk-select:disabled { + opacity: .5; + color: inherit; + cursor: not-allowed +} + +.govuk-select option:active, +.govuk-select option:checked, +.govuk-select:focus::-ms-value { + color: #fff; + background-color: #1d70b8 +} + +.govuk-select--error { + border-color: #d4351c +} + +.govuk-select--error:focus { + border-color: #0b0c0c +} + +.govuk-skip-link { + position: absolute !important; + width: 1px !important; + height: 1px !important; + margin: 0 !important; + overflow: hidden !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(50%) !important; + clip-path: inset(50%) !important; + white-space: nowrap !important; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + text-decoration: underline; + text-decoration-thickness: max(1px, .0625rem); + text-underline-offset: .1578em; + font-size: .875rem; + line-height: 1.1428571429; + display: block; + padding: 10px 15px +} + +.govuk-skip-link:active, +.govuk-skip-link:focus { + position: static !important; + width: auto !important; + height: auto !important; + margin: inherit !important; + overflow: visible !important; + clip: auto !important; + -webkit-clip-path: none !important; + clip-path: none !important; + white-space: inherit !important; + -webkit-user-select: text; + -ms-user-select: text; + user-select: text +} + +@media print { + .govuk-skip-link { + font-family: sans-serif + } +} + +.govuk-skip-link:link, +.govuk-skip-link:visited { + color: #0b0c0c } -@media (min-width:48.0625em) { - .govuk-header__navigation-item { - display: inline-block; - margin-right: 15px; - padding: 5px 0; - border: 0 +@media print { + + .govuk-skip-link:link, + .govuk-skip-link:visited { + color: #000 } } -.govuk-header__navigation-item a { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 14px; - font-size: .875norem; - line-height: 1.14286; - white-space: nowrap +.govuk-skip-link:hover { + color: rgba(11, 12, 12, .99) +} + +.govuk-skip-link:active, +.govuk-skip-link:focus { + color: #0b0c0c } @media print { - .govuk-header__navigation-item a { - font-family: sans-serif + + .govuk-skip-link:active, + .govuk-skip-link:focus { + color: #000 } } @media (min-width:40.0625em) { - .govuk-header__navigation-item a { - font-size: 16px; - font-size: 1norem; + .govuk-skip-link { + font-size: 1rem; line-height: 1.25 } } @media print { - .govuk-header__navigation-item a { + .govuk-skip-link { font-size: 14pt; line-height: 1.2 } } -.govuk-header__navigation-item--active a:hover, -.govuk-header__navigation-item--active a:link, -.govuk-header__navigation-item--active a:visited { - color: #1d8feb -} - -.govuk-header__navigation-item--active a:focus { - color: #0b0c0c +@supports (padding:max(calc(0px))) { + .govuk-skip-link { + padding-right: max(15px, calc(15px + env(safe-area-inset-right))); + padding-left: max(15px, calc(15px + env(safe-area-inset-left))) + } } -.govuk-header__navigation-item:last-child { - margin-right: 0; - border-bottom: 0 +.govuk-skip-link:focus { + outline: 3px solid #fd0; + outline-offset: 0; + background-color: #fd0 } -@media print { - .govuk-header { - border-bottom-width: 0; - color: #0b0c0c; - background: rgba(0, 0, 0, 0) - } - .govuk-header__logotype-crown-fallback-image { - display: none - } - .govuk-header__link:link, - .govuk-header__link:visited { - color: #0b0c0c - } - .govuk-header__link:after { - display: none - } +.govuk-skip-link-focused-element:focus { + outline: none } -.govuk-inset-text { +.govuk-summary-list { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; color: #0b0c0c; - padding: 15px; - margin-top: 20px; - margin-bottom: 20px; - clear: both; - border-left: 10px solid #b1b4b6 + margin: 0 0 20px } @media print { - .govuk-inset-text { + .govuk-summary-list { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-inset-text { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + .govuk-summary-list { + font-size: 1.1875rem; + line-height: 1.3157894737 } } @media print { - .govuk-inset-text { + .govuk-summary-list { font-size: 14pt; line-height: 1.15; color: #000 @@ -4287,521 +5276,515 @@ only screen and (min-resolution:192dpi) { } @media (min-width:40.0625em) { - .govuk-inset-text { - margin-top: 30px; + .govuk-summary-list { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: collapse; margin-bottom: 30px } } -.govuk-inset-text>:first-child { - margin-top: 0 -} - -.govuk-inset-text>:last-child, -.govuk-inset-text>:only-child { - margin-bottom: 0 -} - -.govuk-notification-banner { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 16px; - font-size: 1norem; - line-height: 1.25; - margin-bottom: 30px; - border: 5px solid #1d70b8; - background-color: #1d70b8 +.govuk-summary-list__row { + border-bottom: 1px solid #b1b4b6 } -@media print { - .govuk-notification-banner { - font-family: sans-serif +@media (max-width:40.0525em) { + .govuk-summary-list__row { + margin-bottom: 15px } } @media (min-width:40.0625em) { - .govuk-notification-banner { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + .govuk-summary-list__row { + display: table-row } } -@media print { - .govuk-notification-banner { - font-size: 14pt; - line-height: 1.15 - } +.govuk-summary-list__row:not(.govuk-summary-list__row--no-actions)>:last-child { + padding-right: 0 } @media (min-width:40.0625em) { - .govuk-notification-banner { - margin-bottom: 50px + .govuk-summary-list__row--no-actions:after { + content: ""; + display: table-cell; + width: 20% } } -.govuk-notification-banner:focus { - outline: 3px solid #fd0 -} - -.govuk-notification-banner__header { - padding: 2px 15px 5px; - border-bottom: 1px solid rgba(0, 0, 0, 0) +.govuk-summary-list__actions, +.govuk-summary-list__key, +.govuk-summary-list__value { + margin: 0 } @media (min-width:40.0625em) { - .govuk-notification-banner__header { - padding: 2px 20px 5px - } -} -.govuk-notification-banner__title { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 16px; - font-size: 1norem; - line-height: 1.25; - margin: 0; - padding: 0; - color: #fff + .govuk-summary-list__actions, + .govuk-summary-list__key, + .govuk-summary-list__value { + display: table-cell; + padding-top: 10px; + padding-right: 20px; + padding-bottom: 10px + } } -@media print { - .govuk-notification-banner__title { - font-family: sans-serif - } +.govuk-summary-list__actions { + margin-bottom: 15px } @media (min-width:40.0625em) { - .govuk-notification-banner__title { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + .govuk-summary-list__actions { + width: 20%; + text-align: right } } -@media print { - .govuk-notification-banner__title { - font-size: 14pt; - line-height: 1.15 - } +.govuk-summary-list__key, +.govuk-summary-list__value { + word-wrap: break-word; + overflow-wrap: break-word } -.govuk-notification-banner__content { - color: #0b0c0c; - padding: 15px; - background-color: #fff +.govuk-summary-list__key { + margin-bottom: 5px; + font-weight: 700 } -@media print { - .govuk-notification-banner__content { - color: #000 +@media (min-width:40.0625em) { + .govuk-summary-list__key { + width: 30% } } -@media (min-width:40.0625em) { - .govuk-notification-banner__content { - padding: 20px +@media (max-width:40.0525em) { + .govuk-summary-list__value { + margin-bottom: 15px } } -.govuk-notification-banner__content>* { - box-sizing: border-box; - max-width: 605px +.govuk-summary-list__value>p { + margin-bottom: 10px } -.govuk-notification-banner__content>:last-child { +.govuk-summary-list__value>:last-child { margin-bottom: 0 } -.govuk-notification-banner__heading { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 18px; - font-size: 1.125norem; - line-height: 1.11111; - margin: 0 0 15px; +.govuk-summary-list__actions-list { + width: 100%; + margin: 0; padding: 0 } -@media print { - .govuk-notification-banner__heading { - font-family: sans-serif - } +.govuk-summary-list__actions-list-item { + display: inline-block } -@media (min-width:40.0625em) { - .govuk-notification-banner__heading { - font-size: 24px; - font-size: 1.5norem; - line-height: 1.25 +@media (max-width:40.0525em) { + .govuk-summary-list__actions-list-item { + margin-right: 10px; + padding-right: 10px; + border-right: 1px solid #b1b4b6 } -} -@media print { - .govuk-notification-banner__heading { - font-size: 18pt; - line-height: 1.15 + .govuk-summary-list__actions-list-item:last-child { + margin-right: 0; + padding-right: 0; + border: 0 } } -.govuk-notification-banner__link { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - text-decoration: underline -} +@media (min-width:40.0625em) { + .govuk-summary-list__actions-list-item { + margin-left: 10px; + padding-left: 10px + } -@media print { - .govuk-notification-banner__link { - font-family: sans-serif + .govuk-summary-list__actions-list-item:not(:first-child) { + border-left: 1px solid #b1b4b6 } -} -.govuk-notification-banner__link:focus { - outline: 3px solid rgba(0, 0, 0, 0); - background-color: #fd0; - box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; - text-decoration: none + .govuk-summary-list__actions-list-item:first-child { + margin-left: 0; + padding-left: 0; + border: 0 + } +} + +.govuk-summary-list__actions-list-item .govuk-link:focus { + isolation: isolate } -.govuk-notification-banner__link:link, -.govuk-notification-banner__link:visited { - color: #1d70b8 +.govuk-summary-list--no-border .govuk-summary-list__row { + border: 0 } -.govuk-notification-banner__link:hover { - color: #003078 +@media (min-width:40.0625em) { + + .govuk-summary-list--no-border .govuk-summary-list__actions, + .govuk-summary-list--no-border .govuk-summary-list__key, + .govuk-summary-list--no-border .govuk-summary-list__value { + padding-bottom: 11px + } } -.govuk-notification-banner__link:active, -.govuk-notification-banner__link:focus { - color: #0b0c0c +.govuk-summary-list__row--no-border { + border: 0 } -.govuk-notification-banner--success { - border-color: #00703c; - background-color: #00703c +@media (min-width:40.0625em) { + + .govuk-summary-list__row--no-border .govuk-summary-list__actions, + .govuk-summary-list__row--no-border .govuk-summary-list__key, + .govuk-summary-list__row--no-border .govuk-summary-list__value { + padding-bottom: 11px + } } -.govuk-notification-banner--success .govuk-notification-banner__link:link, -.govuk-notification-banner--success .govuk-notification-banner__link:visited { - color: #00703c +.govuk-summary-card { + margin-bottom: 20px; + border: 1px solid #b1b4b6 } -.govuk-notification-banner--success .govuk-notification-banner__link:hover { - color: #004e2a +@media (min-width:40.0625em) { + .govuk-summary-card { + margin-bottom: 30px + } } -.govuk-notification-banner--success .govuk-notification-banner__link:active { - color: #00703c +.govuk-summary-card__title-wrapper { + padding: 15px; + border-bottom: 1px solid transparent; + background-color: #f3f2f1 } -.govuk-notification-banner--success .govuk-notification-banner__link:focus { - color: #0b0c0c +@media (min-width:40.0625em) { + .govuk-summary-card__title-wrapper { + display: flex; + justify-content: space-between; + flex-wrap: nowrap; + padding: 15px 20px + } } -.govuk-panel { +.govuk-summary-card__title { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-weight: 700; + font-size: 1rem; line-height: 1.25; - box-sizing: border-box; - margin-bottom: 15px; - padding: 35px; - border: 5px solid rgba(0, 0, 0, 0); - text-align: center + color: #0b0c0c; + margin: 5px 20px 10px 0 } @media print { - .govuk-panel { + .govuk-summary-card__title { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-panel { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + .govuk-summary-card__title { + font-size: 1.1875rem; + line-height: 1.3157894737 } } @media print { - .govuk-panel { + .govuk-summary-card__title { font-size: 14pt; - line-height: 1.15 + line-height: 1.15; + color: #000 } } -@media (max-width:40.0525em) { - .govuk-panel { - padding: 10px; - overflow-wrap: break-word; - word-wrap: break-word +@media (min-width:40.0625em) { + .govuk-summary-card__title { + margin-bottom: 5px } } -.govuk-panel--confirmation { - color: #fff; - background: #00703c +.govuk-summary-card__actions { + font-size: 1rem; + line-height: 1.25; + font-weight: 700; + display: flex; + flex-wrap: wrap; + row-gap: 10px; + margin: 5px 0; + padding: 0; + list-style: none } -@media print { - .govuk-panel--confirmation { - border-color: currentColor; - color: #000; - background: none +@media (min-width:40.0625em) { + .govuk-summary-card__actions { + font-size: 1.1875rem; + line-height: 1.3157894737 } } -.govuk-panel__title { - margin-top: 0; - margin-bottom: 30px; - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 32px; - font-size: 2norem; - line-height: 1.09375 +@media print { + .govuk-summary-card__actions { + font-size: 14pt; + line-height: 1.15 + } } -@media print { - .govuk-panel__title { - font-family: sans-serif +@media (min-width:40.0625em) { + .govuk-summary-card__actions { + justify-content: right; + text-align: right } } +.govuk-summary-card__action { + display: inline; + margin: 0 10px 0 0; + padding-right: 10px; + border-right: 1px solid #b1b4b6 +} + @media (min-width:40.0625em) { - .govuk-panel__title { - font-size: 48px; - font-size: 3norem; - line-height: 1.04167 + .govuk-summary-card__action { + margin-right: 0 } } -@media print { - .govuk-panel__title { - font-size: 32pt; - line-height: 1.15 +@media (-ms-high-contrast:none), +screen and (-ms-high-contrast:active) { + .govuk-summary-card__action { + margin-bottom: 5px } } -.govuk-panel__title:last-child { - margin-bottom: 0 +.govuk-summary-card__action:last-child { + margin: 0; + padding-right: 0; + border-right: none } -.govuk-panel__body { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 24px; - font-size: 1.5norem; - line-height: 1.04167 +@media (min-width:40.0625em) { + .govuk-summary-card__action:last-child { + padding-left: 10px + } } -@media print { - .govuk-panel__body { - font-family: sans-serif +@media (-ms-high-contrast:none), +screen and (-ms-high-contrast:active) { + .govuk-summary-card__action:last-child { + margin-bottom: 0 } } +.govuk-summary-card__content { + padding: 15px 15px 0 +} + @media (min-width:40.0625em) { - .govuk-panel__body { - font-size: 36px; - font-size: 2.25norem; - line-height: 1.11111 + .govuk-summary-card__content { + padding: 15px 20px } } -@media print { - .govuk-panel__body { - font-size: 24pt; - line-height: 1.05 - } +.govuk-summary-card__content .govuk-summary-list { + margin-bottom: 0 } -.govuk-tag { - display: inline-block; - outline: 2px solid rgba(0, 0, 0, 0); - outline-offset: -2px; - color: #fff; - background-color: #1d70b8; - letter-spacing: 1px; - text-decoration: none; - text-transform: uppercase; +.govuk-summary-card__content .govuk-summary-list__row:last-of-type { + margin-bottom: 0; + border-bottom: none +} + +.govuk-table { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 14px; - font-size: .875norem; - line-height: 1; - padding: 5px 8px 4px + font-weight: 400; + font-size: 1rem; + line-height: 1.25; + color: #0b0c0c; + width: 100%; + margin-bottom: 20px; + border-spacing: 0; + border-collapse: collapse } @media print { - .govuk-tag { + .govuk-table { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-tag { - font-size: 16px; - font-size: 1norem; - line-height: 1 + .govuk-table { + font-size: 1.1875rem; + line-height: 1.3157894737 } } @media print { - .govuk-tag { + .govuk-table { font-size: 14pt; - line-height: 1 + line-height: 1.15; + color: #000 } } -.govuk-tag--grey { - color: #383f43; - background: #eeefef +@media (min-width:40.0625em) { + .govuk-table { + margin-bottom: 30px + } } -.govuk-tag--purple { - color: #3d2375; - background: #dbd5e9 +.govuk-table__header { + font-weight: 700 } -.govuk-tag--turquoise { - color: #10403c; - background: #bfe3e0 +.govuk-table__cell, +.govuk-table__header { + padding: 10px 20px 10px 0; + border-bottom: 1px solid #b1b4b6; + text-align: left; + vertical-align: top } -.govuk-tag--blue { - color: #144e81; - background: #d2e2f1 +.govuk-table__cell--numeric { + font-variant-numeric: tabular-nums } -.govuk-tag--yellow { - color: #594d00; - background: #fff7bf +.govuk-table__cell--numeric, +.govuk-table__header--numeric { + text-align: right } -.govuk-tag--orange { - color: #6e3619; - background: #fcd6c3 +.govuk-table__cell:last-child, +.govuk-table__header:last-child { + padding-right: 0 } -.govuk-tag--red { - color: #942514; - background: #f6d7d2 +.govuk-table__caption { + font-weight: 700; + display: table-caption; + text-align: left; + color: #000; } -.govuk-tag--pink { - color: #80224d; - background: #f7d7e6 +.govuk-table__caption--l, +.govuk-table__caption--m, +.govuk-table__caption--xl { + margin-bottom: 15px } -.govuk-tag--green { - color: #005a30; - background: #cce2d8 +.govuk-table__caption--xl { + font-size: 2rem; + line-height: 1.09375 } -.govuk-phase-banner { - padding-top: 10px; - padding-bottom: 10px; - border-bottom: 1px solid #b1b4b6 +@media (min-width:40.0625em) { + .govuk-table__caption--xl { + font-size: 3rem; + line-height: 1.0416666667 + } } -.govuk-phase-banner__content { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 14px; - font-size: .875norem; - line-height: 1.14286; - color: #0b0c0c; - display: table; - margin: 0 +@media print { + .govuk-table__caption--xl { + font-size: 32pt; + line-height: 1.15 + } +} + +.govuk-table__caption--l { + font-size: 1.5rem; + line-height: 1.0416666667 +} + +@media (min-width:40.0625em) { + .govuk-table__caption--l { + font-size: 2.25rem; + line-height: 1.1111111111 + } } @media print { - .govuk-phase-banner__content { - font-family: sans-serif + .govuk-table__caption--l { + font-size: 24pt; + line-height: 1.05 + } +} + +.govuk-table__caption--m { + font-size: 1.125rem; + line-height: 1.1111111111 +} + +@media (min-width:40.0625em) { + .govuk-table__caption--m { + font-size: 1.5rem; + line-height: 1.25 + } +} + +@media print { + .govuk-table__caption--m { + font-size: 18pt; + line-height: 1.15 } } +.govuk-tabs { + margin-top: 5px; + margin-bottom: 20px; + font-family: GDS Transport, arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 400; + font-size: 1rem; + line-height: 1.25 +} + @media (min-width:40.0625em) { - .govuk-phase-banner__content { - font-size: 16px; - font-size: 1norem; - line-height: 1.25 + .govuk-tabs { + margin-bottom: 30px } } @media print { - .govuk-phase-banner__content { - font-size: 14pt; - line-height: 1.2; - color: #000 + .govuk-tabs { + font-family: sans-serif } } -.govuk-phase-banner__content__tag { - margin-right: 10px -} - -.govuk-phase-banner__text { - display: table-cell; - vertical-align: middle -} - -.govuk-tabs { - margin-top: 5px; - margin-bottom: 20px +@media (min-width:40.0625em) { + .govuk-tabs { + font-size: 1.1875rem; + line-height: 1.3157894737 + } } -@media (min-width:40.0625em) { +@media print { .govuk-tabs { - margin-top: 5px; - margin-bottom: 30px + font-size: 14pt; + line-height: 1.15 } } .govuk-tabs__title { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; + font-weight: 400; color: #0b0c0c; margin-bottom: 10px } -@media print { - .govuk-tabs__title { - font-family: sans-serif - } -} - @media (min-width:40.0625em) { .govuk-tabs__title { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + font-size: 1.1875rem; + line-height: 1.3157894737 } } @@ -4826,40 +5809,12 @@ only screen and (min-resolution:192dpi) { } .govuk-tabs__list-item { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 16px; - font-size: 1norem; - line-height: 1.25; margin-left: 25px } -@media print { - .govuk-tabs__list-item { - font-family: sans-serif - } -} - -@media (min-width:40.0625em) { - .govuk-tabs__list-item { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 - } -} - -@media print { - .govuk-tabs__list-item { - font-size: 14pt; - line-height: 1.15 - } -} - .govuk-tabs__list-item:before { color: #0b0c0c; - content: "\2014 "; + content: "—"; margin-left: -25px; padding-right: 5px } @@ -4875,6 +5830,8 @@ only screen and (min-resolution:192dpi) { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-decoration: underline; + text-decoration-thickness: max(1px, .0625rem); + text-underline-offset: .1578em; display: inline-block; margin-bottom: 10px } @@ -4885,11 +5842,21 @@ only screen and (min-resolution:192dpi) { } } +.govuk-tabs__tab:hover { + text-decoration-thickness: max(3px, .1875rem, .12em); + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; + -webkit-text-decoration-skip: none; + text-decoration-skip: none +} + .govuk-tabs__tab:focus { - outline: 3px solid rgba(0, 0, 0, 0); + outline: 3px solid transparent; background-color: #fd0; box-shadow: 0 -2px #fd0, 0 4px #0b0c0c; - text-decoration: none + text-decoration: none; + -webkit-box-decoration-break: clone; + box-decoration-break: clone } .govuk-tabs__tab:link { @@ -4917,22 +5884,23 @@ only screen and (min-resolution:192dpi) { .govuk-tabs__panel { margin-bottom: 50px } -} -@media (min-width:40.0625em) { - .js-enabled .govuk-tabs__list { + .govuk-frontend-supported .govuk-tabs__list { margin-bottom: 0; border-bottom: 1px solid #b1b4b6 } - .js-enabled .govuk-tabs__list:after { + + .govuk-frontend-supported .govuk-tabs__list:after { content: ""; display: block; clear: both } - .js-enabled .govuk-tabs__title { + + .govuk-frontend-supported .govuk-tabs__title { display: none } - .js-enabled .govuk-tabs__list-item { + + .govuk-frontend-supported .govuk-tabs__list-item { position: relative; margin-right: 5px; margin-bottom: 0; @@ -4942,56 +5910,64 @@ only screen and (min-resolution:192dpi) { background-color: #f3f2f1; text-align: center } - .js-enabled .govuk-tabs__list-item:before { + + .govuk-frontend-supported .govuk-tabs__list-item:before { content: none } - .js-enabled .govuk-tabs__list-item--selected { + + .govuk-frontend-supported .govuk-tabs__list-item--selected { position: relative; margin-top: -5px; - margin-bottom: -1px; + margin-bottom: -2px; padding: 14px 19px 16px; border: 1px solid #b1b4b6; - border-bottom: 0; + border-bottom: none; background-color: #fff } - .js-enabled .govuk-tabs__list-item--selected .govuk-tabs__tab { + + .govuk-frontend-supported .govuk-tabs__list-item--selected .govuk-tabs__tab { text-decoration: none } - .js-enabled .govuk-tabs__tab { + + .govuk-frontend-supported .govuk-tabs__tab { margin-bottom: 0 } - .js-enabled .govuk-tabs__tab:link, - .js-enabled .govuk-tabs__tab:visited { + + .govuk-frontend-supported .govuk-tabs__tab:link, + .govuk-frontend-supported .govuk-tabs__tab:visited { color: #0b0c0c } } @media print and (min-width:40.0625em) { - .js-enabled .govuk-tabs__tab:link, - .js-enabled .govuk-tabs__tab:visited { + + .govuk-frontend-supported .govuk-tabs__tab:link, + .govuk-frontend-supported .govuk-tabs__tab:visited { color: #000 } } @media (min-width:40.0625em) { - .js-enabled .govuk-tabs__tab:hover { + .govuk-frontend-supported .govuk-tabs__tab:hover { color: rgba(11, 12, 12, .99) } - .js-enabled .govuk-tabs__tab:active, - .js-enabled .govuk-tabs__tab:focus { + + .govuk-frontend-supported .govuk-tabs__tab:active, + .govuk-frontend-supported .govuk-tabs__tab:focus { color: #0b0c0c } } @media print and (min-width:40.0625em) { - .js-enabled .govuk-tabs__tab:active, - .js-enabled .govuk-tabs__tab:focus { + + .govuk-frontend-supported .govuk-tabs__tab:active, + .govuk-frontend-supported .govuk-tabs__tab:focus { color: #000 } } @media (min-width:40.0625em) { - .js-enabled .govuk-tabs__tab:after { + .govuk-frontend-supported .govuk-tabs__tab:after { content: ""; position: absolute; top: 0; @@ -4999,383 +5975,256 @@ only screen and (min-resolution:192dpi) { bottom: 0; left: 0 } - .js-enabled .govuk-tabs__panel { + + .govuk-frontend-supported .govuk-tabs__panel { margin-bottom: 0; padding: 30px 20px; border: 1px solid #b1b4b6; border-top: 0 } -} -@media (min-width:40.0625em) and (min-width:40.0625em) { - .js-enabled .govuk-tabs__panel { + .govuk-frontend-supported .govuk-tabs__panel>:last-child { margin-bottom: 0 } -} -@media (min-width:40.0625em) { - .js-enabled .govuk-tabs__panel>:last-child { - margin-bottom: 0 - } - .js-enabled .govuk-tabs__panel--hidden { + .govuk-frontend-supported .govuk-tabs__panel--hidden { display: none } } -.govuk-radios__item { +.govuk-task-list { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; - display: block; - position: relative; - min-height: 40px; - margin-bottom: 10px; - padding-left: 40px; - clear: left + margin-top: 0; + margin-bottom: 20px; + padding: 0; + list-style-type: none } @media print { - .govuk-radios__item { + .govuk-task-list { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-radios__item { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + .govuk-task-list { + font-size: 1.1875rem; + line-height: 1.3157894737 } } @media print { - .govuk-radios__item { + .govuk-task-list { font-size: 14pt; line-height: 1.15 } } -.govuk-radios__item:last-child, -.govuk-radios__item:last-of-type { - margin-bottom: 0 -} - -.govuk-radios__input { - cursor: pointer; - position: absolute; - z-index: 1; - top: -2px; - left: -2px; - width: 44px; - height: 44px; - margin: 0; - opacity: 0 -} - -.govuk-radios__label { - display: inline-block; - margin-bottom: 0; - padding: 8px 15px 5px; - cursor: pointer; - -ms-touch-action: manipulation; - touch-action: manipulation -} - -.govuk-radios__label:before { - content: ""; - box-sizing: border-box; - position: absolute; - top: 0; - left: 0; - width: 40px; - height: 40px; - border: 2px solid; - border-radius: 50%; - background: rgba(0, 0, 0, 0) -} - -.govuk-radios__label:after { - content: ""; - position: absolute; - top: 10px; - left: 10px; - width: 0; - height: 0; - border: 10px solid; - border-radius: 50%; - opacity: 0; - background: currentColor -} - -.govuk-radios__hint { - display: block; - padding-right: 15px; - padding-left: 15px -} - -.govuk-radios__input:focus+.govuk-radios__label:before { - border-width: 4px; - outline: 3px solid rgba(0, 0, 0, 0); - outline-offset: 1px; - box-shadow: 0 0 0 4px #fd0 -} - -@media (-ms-high-contrast:active), -screen and (forced-colors:active) { - .govuk-radios__input:focus+.govuk-radios__label:before { - outline-color: Highlight - } -} - -.govuk-radios__input:checked+.govuk-radios__label:after { - opacity: 1 -} - -.govuk-radios__input:disabled, -.govuk-radios__input:disabled+.govuk-radios__label { - cursor: default -} - -.govuk-radios__input:disabled+.govuk-radios__label { - opacity: .5 -} - -@media (min-width:40.0625em) { - .govuk-radios--inline:after { - content: ""; - display: block; - clear: both - } - .govuk-radios--inline .govuk-radios__item { - margin-right: 20px; - float: left; - clear: none - } -} - -.govuk-radios--inline.govuk-radios--conditional .govuk-radios__item { - margin-right: 0; - float: none -} - -.govuk-radios__divider { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 16px; - font-size: 1norem; - line-height: 1.25; - color: #0b0c0c; - width: 40px; - margin-bottom: 10px; - text-align: center -} - -@media print { - .govuk-radios__divider { - font-family: sans-serif - } -} - -@media (min-width:40.0625em) { - .govuk-radios__divider { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 - } -} - -@media print { - .govuk-radios__divider { - font-size: 14pt; - line-height: 1.15; - color: #000 - } -} - -.govuk-radios__conditional { - margin-bottom: 15px; - margin-left: 18px; - padding-left: 33px; - border-left: 4px solid #b1b4b6 -} - @media (min-width:40.0625em) { - .govuk-radios__conditional { - margin-bottom: 20px + .govuk-task-list { + margin-bottom: 30px } } -.js-enabled .govuk-radios__conditional--hidden { - display: none -} - -.govuk-radios__conditional>:last-child { - margin-bottom: 0 -} - -.govuk-radios--small .govuk-radios__item { - min-height: 0; - margin-bottom: 0; - padding-left: 34px; - float: left -} - -.govuk-radios--small .govuk-radios__item:after { - content: ""; - display: block; - clear: both -} - -.govuk-radios--small .govuk-radios__input { - left: -10px -} - -.govuk-radios--small .govuk-radios__label { - margin-top: -2px; - padding: 13px 15px 13px 1px; - float: left +.govuk-task-list__item { + display: table; + position: relative; + width: 100%; + margin-bottom: 0; + padding-top: 10px; + padding-bottom: 10px; + border-bottom: 1px solid #b1b4b6 } -@media (min-width:40.0625em) { - .govuk-radios--small .govuk-radios__label { - padding: 11px 15px 10px 1px - } +.govuk-task-list__item:first-child { + border-top: 1px solid #b1b4b6 } -.govuk-radios--small .govuk-radios__label:before { - top: 8px; - width: 24px; - height: 24px +.govuk-task-list__item--with-link:hover { + background: #f3f2f1 } -.govuk-radios--small .govuk-radios__label:after { - top: 15px; - left: 7px; - border-width: 5px +.govuk-task-list__name-and-hint { + display: table-cell; + vertical-align: top; + color: #0b0c0c } -.govuk-radios--small .govuk-radios__hint { - padding: 0; - clear: both; - pointer-events: none +@media print { + .govuk-task-list__name-and-hint { + color: #000 + } } -.govuk-radios--small .govuk-radios__conditional { - margin-left: 10px; - padding-left: 20px; - clear: both +.govuk-task-list__status { + display: table-cell; + padding-left: 10px; + text-align: right; + vertical-align: top; + color: #0b0c0c } -.govuk-radios--small .govuk-radios__divider { - width: 24px; - margin-bottom: 5px +@media print { + .govuk-task-list__status { + color: #000 + } } -.govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:not(:disabled)+.govuk-radios__label:before { - box-shadow: 0 0 0 10px #b1b4b6 +.govuk-task-list__status--cannot-start-yet { + color: #505a5f } -.govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:focus+.govuk-radios__label:before { - box-shadow: 0 0 0 4px #fd0, 0 0 0 10px #b1b4b6 +.govuk-task-list__link:after { + content: ""; + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0 } -@media (hover:none), -(pointer:coarse) { - .govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:not(:disabled)+.govuk-radios__label:before { - box-shadow: none - } - .govuk-radios--small .govuk-radios__item:hover .govuk-radios__input:focus+.govuk-radios__label:before { - box-shadow: 0 0 0 4px #fd0 - } +.govuk-task-list__hint { + margin-top: 5px; + color: #505a5f } -.govuk-select { +.govuk-warning-text { font-family: GDS Transport, arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-weight: 400; - font-size: 16px; - font-size: 1norem; + font-size: 1rem; line-height: 1.25; - box-sizing: border-box; - max-width: 100%; - height: 40px; - height: 2.5norem; - padding: 5px; - border: 2px solid #0b0c0c + margin-bottom: 20px; + position: relative; + padding: 10px 0 } @media print { - .govuk-select { + .govuk-warning-text { font-family: sans-serif } } @media (min-width:40.0625em) { - .govuk-select { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.25 + .govuk-warning-text { + font-size: 1.1875rem; + line-height: 1.3157894737 } } @media print { - .govuk-select { + .govuk-warning-text { font-size: 14pt; - line-height: 1.25 + line-height: 1.15 } } -.govuk-select:focus { - outline: 3px solid #fd0; - outline-offset: 0; - box-shadow: inset 0 0 0 2px +@media (min-width:40.0625em) { + .govuk-warning-text { + margin-bottom: 30px + } } -.govuk-select:focus::-ms-value, -.govuk-select option:active, -.govuk-select option:checked { +.govuk-warning-text__icon { + font-weight: 700; + box-sizing: border-box; + display: inline-block; + position: absolute; + left: 0; + min-width: 35px; + min-height: 35px; + margin-top: -7px; + border: 3px solid #0b0c0c; + border-radius: 50%; color: #fff; - background-color: #1d70b8 + background: #0b0c0c; + font-size: 30px; + line-height: 29px; + text-align: center; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none; + forced-color-adjust: none } -.govuk-select--error { - border-color: #d4351c +@media (min-width:40.0625em) { + .govuk-warning-text__icon { + margin-top: -5px + } } -.govuk-select--error:focus { - border-color: #0b0c0c +@media screen and (forced-colors:active) { + .govuk-warning-text__icon { + border-color: windowText; + color: windowText; + background: transparent + } } -.govuk-skip-link { +.govuk-warning-text__text { + color: #0b0c0c; + display: block; + padding-left: 45px +} + +@media print { + .govuk-warning-text__text { + color: #000 + } +} + +.govuk-clearfix:after { + content: ""; + display: block; + clear: both +} + +.govuk-visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; margin: 0 !important; + padding: 0 !important; overflow: hidden !important; clip: rect(0 0 0 0) !important; -webkit-clip-path: inset(50%) !important; clip-path: inset(50%) !important; + border: 0 !important; white-space: nowrap !important; - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - text-decoration: underline; - font-size: 14px; - font-size: .875norem; - line-height: 1.14286; - display: block; - padding: 10px 15px + -webkit-user-select: none; + -ms-user-select: none; + user-select: none } -.govuk-skip-link:active, -.govuk-skip-link:focus { +.govuk-visually-hidden:after, +.govuk-visually-hidden:before { + content: " " +} + +.govuk-visually-hidden-focusable { + position: absolute !important; + width: 1px !important; + height: 1px !important; + margin: 0 !important; + overflow: hidden !important; + clip: rect(0 0 0 0) !important; + -webkit-clip-path: inset(50%) !important; + clip-path: inset(50%) !important; + white-space: nowrap !important; + -webkit-user-select: none; + -ms-user-select: none; + user-select: none +} + +.govuk-visually-hidden-focusable:active, +.govuk-visually-hidden-focusable:focus { position: static !important; width: auto !important; height: auto !important; @@ -5384,1696 +6233,1485 @@ screen and (forced-colors:active) { clip: auto !important; -webkit-clip-path: none !important; clip-path: none !important; - white-space: inherit !important -} - -@media print { - .govuk-skip-link { - font-family: sans-serif - } -} - -.govuk-skip-link:link, -.govuk-skip-link:visited { - color: #0b0c0c -} - -@media print { - .govuk-skip-link:link, - .govuk-skip-link:visited { - color: #000 - } + white-space: inherit !important; + -webkit-user-select: text; + -ms-user-select: text; + user-select: text } -.govuk-skip-link:hover { - color: rgba(11, 12, 12, .99) +.govuk-\!-display-inline { + display: inline !important } -.govuk-skip-link:active, -.govuk-skip-link:focus { - color: #0b0c0c +.govuk-\!-display-inline-block { + display: inline-block !important } -@media print { - .govuk-skip-link:active, - .govuk-skip-link:focus { - color: #000 - } +.govuk-\!-display-block { + display: block !important } -@media (min-width:40.0625em) { - .govuk-skip-link { - font-size: 16px; - font-size: 1norem; - line-height: 1.25 - } +.govuk-\!-display-none { + display: none !important } @media print { - .govuk-skip-link { - font-size: 14pt; - line-height: 1.2 - } -} - -@supports (padding:max(calc(0px))) { - .govuk-skip-link { - padding-right: max(15px, calc(15px + env(safe-area-inset-right))); - padding-left: max(15px, calc(15px + env(safe-area-inset-left))) + .govuk-\!-display-none-print { + display: none !important } } -.govuk-skip-link:focus { - outline: 3px solid #fd0; - outline-offset: 0; - background-color: #fd0 +.govuk-\!-margin-0 { + margin: 0 !important } -.govuk-skip-link-focused-element:focus { - outline: none +.govuk-\!-margin-top-0 { + margin-top: 0 !important } -.govuk-table { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 400; - font-size: 16px; - font-size: 1norem; - line-height: 1.25; - color: #0b0c0c; - width: 100%; - margin-bottom: 20px; - border-spacing: 0; - border-collapse: collapse +.govuk-\!-margin-right-0 { + margin-right: 0 !important } -@media print { - .govuk-table { - font-family: sans-serif - } +.govuk-\!-margin-bottom-0 { + margin-bottom: 0 !important } -@media (min-width:40.0625em) { - .govuk-table { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 - } +.govuk-\!-margin-left-0 { + margin-left: 0 !important } -@media print { - .govuk-table { - font-size: 14pt; - line-height: 1.15; - color: #000 - } +.govuk-\!-margin-1 { + margin: 5px !important } -@media (min-width:40.0625em) { - .govuk-table { - margin-bottom: 30px - } +.govuk-\!-margin-top-1 { + margin-top: 5px !important } -.govuk-table__header { - font-weight: 700 +.govuk-\!-margin-right-1 { + margin-right: 5px !important } -.govuk-table__cell, -.govuk-table__header { - padding: 10px 20px 10px 0; - border-bottom: 1px solid #b1b4b6; - text-align: left; - vertical-align: top +.govuk-\!-margin-bottom-1 { + margin-bottom: 5px !important } -.govuk-table__cell--numeric { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-font-feature-settings: "tnum" 1; - font-feature-settings: "tnum" 1; - font-weight: 400 +.govuk-\!-margin-left-1 { + margin-left: 5px !important } -@media print { - .govuk-table__cell--numeric { - font-family: sans-serif - } +.govuk-\!-margin-2 { + margin: 10px !important } -@supports (font-variant-numeric:tabular-nums) { - .govuk-table__cell--numeric { - -webkit-font-feature-settings: normal; - font-feature-settings: normal; - font-variant-numeric: tabular-nums - } +.govuk-\!-margin-top-2 { + margin-top: 10px !important } -.govuk-table__cell--numeric, -.govuk-table__header--numeric { - text-align: right +.govuk-\!-margin-right-2 { + margin-right: 10px !important } -.govuk-table__cell:last-child, -.govuk-table__header:last-child { - padding-right: 0 +.govuk-\!-margin-bottom-2 { + margin-bottom: 10px !important } -.govuk-table__caption { - font-weight: 700; - display: table-caption; - text-align: left +.govuk-\!-margin-left-2 { + margin-left: 10px !important } -.govuk-table__caption--xl { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 32px; - font-size: 2norem; - line-height: 1.09375; - margin-bottom: 15px +.govuk-\!-margin-3 { + margin: 15px !important } -@media print { - .govuk-table__caption--xl { - font-family: sans-serif - } +.govuk-\!-margin-top-3 { + margin-top: 15px !important } -@media (min-width:40.0625em) { - .govuk-table__caption--xl { - font-size: 48px; - font-size: 3norem; - line-height: 1.04167 - } +.govuk-\!-margin-right-3 { + margin-right: 15px !important } -@media print { - .govuk-table__caption--xl { - font-size: 32pt; - line-height: 1.15 - } +.govuk-\!-margin-bottom-3 { + margin-bottom: 15px !important } -.govuk-table__caption--l { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 24px; - font-size: 1.5norem; - line-height: 1.04167; - margin-bottom: 15px +.govuk-\!-margin-left-3 { + margin-left: 15px !important } -@media print { - .govuk-table__caption--l { - font-family: sans-serif - } +.govuk-\!-margin-4 { + margin: 15px !important } @media (min-width:40.0625em) { - .govuk-table__caption--l { - font-size: 36px; - font-size: 2.25norem; - line-height: 1.11111 + .govuk-\!-margin-4 { + margin: 20px !important } } -@media print { - .govuk-table__caption--l { - font-size: 24pt; - line-height: 1.05 - } +.govuk-\!-margin-top-4 { + margin-top: 15px !important } -.govuk-table__caption--m { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 18px; - font-size: 1.125norem; - line-height: 1.11111; - margin-bottom: 15px +@media (min-width:40.0625em) { + .govuk-\!-margin-top-4 { + margin-top: 20px !important + } } -@media print { - .govuk-table__caption--m { - font-family: sans-serif - } +.govuk-\!-margin-right-4 { + margin-right: 15px !important } @media (min-width:40.0625em) { - .govuk-table__caption--m { - font-size: 24px; - font-size: 1.5norem; - line-height: 1.25 + .govuk-\!-margin-right-4 { + margin-right: 20px !important } } -@media print { - .govuk-table__caption--m { - font-size: 18pt; - line-height: 1.15 - } +.govuk-\!-margin-bottom-4 { + margin-bottom: 15px !important } -.govuk-table__caption--s { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 16px; - font-size: 1norem; - line-height: 1.25 +@media (min-width:40.0625em) { + .govuk-\!-margin-bottom-4 { + margin-bottom: 20px !important + } } -@media print { - .govuk-table__caption--s { - font-family: sans-serif - } +.govuk-\!-margin-left-4 { + margin-left: 15px !important } @media (min-width:40.0625em) { - .govuk-table__caption--s { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + .govuk-\!-margin-left-4 { + margin-left: 20px !important } } -@media print { - .govuk-table__caption--s { - font-size: 14pt; - line-height: 1.15 +.govuk-\!-margin-5 { + margin: 15px !important +} + +@media (min-width:40.0625em) { + .govuk-\!-margin-5 { + margin: 25px !important } } -.govuk-warning-text { - position: relative; - margin-bottom: 20px; - padding: 10px 0 +.govuk-\!-margin-top-5 { + margin-top: 15px !important } @media (min-width:40.0625em) { - .govuk-warning-text { - margin-bottom: 30px + .govuk-\!-margin-top-5 { + margin-top: 25px !important } } -.govuk-warning-text__assistive { - position: absolute !important; - width: 1px !important; - height: 1px !important; - margin: 0 !important; - padding: 0 !important; - overflow: hidden !important; - clip: rect(0 0 0 0) !important; - -webkit-clip-path: inset(50%) !important; - clip-path: inset(50%) !important; - border: 0 !important; - white-space: nowrap !important +.govuk-\!-margin-right-5 { + margin-right: 15px !important } -.govuk-warning-text__icon { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - box-sizing: border-box; - display: inline-block; - position: absolute; - left: 0; - min-width: 35px; - min-height: 35px; - margin-top: -7px; - border: 3px solid #0b0c0c; - border-radius: 50%; - color: #fff; - background: #0b0c0c; - font-size: 30px; - line-height: 29px; - text-align: center; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; - forced-color-adjust: none +@media (min-width:40.0625em) { + .govuk-\!-margin-right-5 { + margin-right: 25px !important + } } -@media print { - .govuk-warning-text__icon { - font-family: sans-serif - } +.govuk-\!-margin-bottom-5 { + margin-bottom: 15px !important } @media (min-width:40.0625em) { - .govuk-warning-text__icon { - margin-top: -5px + .govuk-\!-margin-bottom-5 { + margin-bottom: 25px !important } } -@media screen and (forced-colors:active) { - .govuk-warning-text__icon { - border-color: windowText; - color: windowText; - background: rgba(0, 0, 0, 0) +.govuk-\!-margin-left-5 { + margin-left: 15px !important +} + +@media (min-width:40.0625em) { + .govuk-\!-margin-left-5 { + margin-left: 25px !important } } -.govuk-warning-text__text { - font-family: GDS Transport, arial, sans-serif; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - font-weight: 700; - font-size: 16px; - font-size: 1norem; - line-height: 1.25; - color: #0b0c0c; - display: block; - padding-left: 45px +.govuk-\!-margin-6 { + margin: 20px !important } -@media print { - .govuk-warning-text__text { - font-family: sans-serif +@media (min-width:40.0625em) { + .govuk-\!-margin-6 { + margin: 30px !important } } +.govuk-\!-margin-top-6 { + margin-top: 20px !important +} + @media (min-width:40.0625em) { - .govuk-warning-text__text { - font-size: 19px; - font-size: 1.1875norem; - line-height: 1.31579 + .govuk-\!-margin-top-6 { + margin-top: 30px !important } } -@media print { - .govuk-warning-text__text { - font-size: 14pt; - line-height: 1.15; - color: #000 - } +.govuk-\!-margin-right-6 { + margin-right: 20px !important } -.govuk-clearfix:after { - content: ""; - display: block; - clear: both +@media (min-width:40.0625em) { + .govuk-\!-margin-right-6 { + margin-right: 30px !important + } } -.govuk-visually-hidden { - padding: 0 !important; - border: 0 !important +.govuk-\!-margin-bottom-6 { + margin-bottom: 20px !important } -.govuk-visually-hidden, -.govuk-visually-hidden-focusable { - position: absolute !important; - width: 1px !important; - height: 1px !important; - margin: 0 !important; - overflow: hidden !important; - clip: rect(0 0 0 0) !important; - -webkit-clip-path: inset(50%) !important; - clip-path: inset(50%) !important; - white-space: nowrap !important +@media (min-width:40.0625em) { + .govuk-\!-margin-bottom-6 { + margin-bottom: 30px !important + } } -.govuk-visually-hidden-focusable:active, -.govuk-visually-hidden-focusable:focus { - position: static !important; - width: auto !important; - height: auto !important; - margin: inherit !important; - overflow: visible !important; - clip: auto !important; - -webkit-clip-path: none !important; - clip-path: none !important; - white-space: inherit !important +.govuk-\!-margin-left-6 { + margin-left: 20px !important } -.govuk-\ !-display-inline { - display: inline !important +@media (min-width:40.0625em) { + .govuk-\!-margin-left-6 { + margin-left: 30px !important + } } -.govuk-\ !-display-inline-block { - display: inline-block !important +.govuk-\!-margin-7 { + margin: 25px !important } -.govuk-\ !-display-block { - display: block !important +@media (min-width:40.0625em) { + .govuk-\!-margin-7 { + margin: 40px !important + } } -.govuk-\ !-display-none { - display: none !important +.govuk-\!-margin-top-7 { + margin-top: 25px !important } -@media print { - .govuk-\ !-display-none-print { - display: none !important +@media (min-width:40.0625em) { + .govuk-\!-margin-top-7 { + margin-top: 40px !important } } -.govuk-\ !-margin-0 { - margin: 0 !important +.govuk-\!-margin-right-7 { + margin-right: 25px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-0 { - margin: 0 !important + .govuk-\!-margin-right-7 { + margin-right: 40px !important } } -.govuk-\ !-margin-top-0 { - margin-top: 0 !important +.govuk-\!-margin-bottom-7 { + margin-bottom: 25px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-top-0 { - margin-top: 0 !important + .govuk-\!-margin-bottom-7 { + margin-bottom: 40px !important } } -.govuk-\ !-margin-right-0 { - margin-right: 0 !important +.govuk-\!-margin-left-7 { + margin-left: 25px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-right-0 { - margin-right: 0 !important + .govuk-\!-margin-left-7 { + margin-left: 40px !important } } -.govuk-\ !-margin-bottom-0 { - margin-bottom: 0 !important +.govuk-\!-margin-8 { + margin: 30px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-bottom-0 { - margin-bottom: 0 !important + .govuk-\!-margin-8 { + margin: 50px !important } } -.govuk-\ !-margin-left-0 { - margin-left: 0 !important +.govuk-\!-margin-top-8 { + margin-top: 30px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-left-0 { - margin-left: 0 !important + .govuk-\!-margin-top-8 { + margin-top: 50px !important } } -.govuk-\ !-margin-1 { - margin: 5px !important +.govuk-\!-margin-right-8 { + margin-right: 30px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-1 { - margin: 5px !important + .govuk-\!-margin-right-8 { + margin-right: 50px !important } } -.govuk-\ !-margin-top-1 { - margin-top: 5px !important +.govuk-\!-margin-bottom-8 { + margin-bottom: 30px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-top-1 { - margin-top: 5px !important + .govuk-\!-margin-bottom-8 { + margin-bottom: 50px !important } } -.govuk-\ !-margin-right-1 { - margin-right: 5px !important +.govuk-\!-margin-left-8 { + margin-left: 30px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-right-1 { - margin-right: 5px !important + .govuk-\!-margin-left-8 { + margin-left: 50px !important } } -.govuk-\ !-margin-bottom-1 { - margin-bottom: 5px !important +.govuk-\!-margin-9 { + margin: 40px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-bottom-1 { - margin-bottom: 5px !important + .govuk-\!-margin-9 { + margin: 60px !important } } -.govuk-\ !-margin-left-1 { - margin-left: 5px !important +.govuk-\!-margin-top-9 { + margin-top: 40px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-left-1 { - margin-left: 5px !important + .govuk-\!-margin-top-9 { + margin-top: 60px !important } } -.govuk-\ !-margin-2 { - margin: 10px !important +.govuk-\!-margin-right-9 { + margin-right: 40px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-2 { - margin: 10px !important + .govuk-\!-margin-right-9 { + margin-right: 60px !important } } -.govuk-\ !-margin-top-2 { - margin-top: 10px !important +.govuk-\!-margin-bottom-9 { + margin-bottom: 40px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-top-2 { - margin-top: 10px !important + .govuk-\!-margin-bottom-9 { + margin-bottom: 60px !important } } -.govuk-\ !-margin-right-2 { - margin-right: 10px !important +.govuk-\!-margin-left-9 { + margin-left: 40px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-right-2 { - margin-right: 10px !important + .govuk-\!-margin-left-9 { + margin-left: 60px !important } } -.govuk-\ !-margin-bottom-2 { - margin-bottom: 10px !important +.govuk-\!-padding-0 { + padding: 0 !important } -@media (min-width:40.0625em) { - .govuk-\ !-margin-bottom-2 { - margin-bottom: 10px !important - } +.govuk-\!-padding-top-0 { + padding-top: 0 !important } -.govuk-\ !-margin-left-2 { - margin-left: 10px !important +.govuk-\!-padding-right-0 { + padding-right: 0 !important } -@media (min-width:40.0625em) { - .govuk-\ !-margin-left-2 { - margin-left: 10px !important - } +.govuk-\!-padding-bottom-0 { + padding-bottom: 0 !important } -.govuk-\ !-margin-3 { - margin: 15px !important +.govuk-\!-padding-left-0 { + padding-left: 0 !important } -@media (min-width:40.0625em) { - .govuk-\ !-margin-3 { - margin: 15px !important - } +.govuk-\!-padding-1 { + padding: 5px !important } -.govuk-\ !-margin-top-3 { - margin-top: 15px !important +.govuk-\!-padding-top-1 { + padding-top: 5px !important } -@media (min-width:40.0625em) { - .govuk-\ !-margin-top-3 { - margin-top: 15px !important - } +.govuk-\!-padding-right-1 { + padding-right: 5px !important } -.govuk-\ !-margin-right-3 { - margin-right: 15px !important +.govuk-\!-padding-bottom-1 { + padding-bottom: 5px !important } -@media (min-width:40.0625em) { - .govuk-\ !-margin-right-3 { - margin-right: 15px !important - } +.govuk-\!-padding-left-1 { + padding-left: 5px !important } -.govuk-\ !-margin-bottom-3 { - margin-bottom: 15px !important +.govuk-\!-padding-2 { + padding: 10px !important } -@media (min-width:40.0625em) { - .govuk-\ !-margin-bottom-3 { - margin-bottom: 15px !important - } +.govuk-\!-padding-top-2 { + padding-top: 10px !important } -.govuk-\ !-margin-left-3 { - margin-left: 15px !important +.govuk-\!-padding-right-2 { + padding-right: 10px !important } -@media (min-width:40.0625em) { - .govuk-\ !-margin-left-3 { - margin-left: 15px !important - } +.govuk-\!-padding-bottom-2 { + padding-bottom: 10px !important } -.govuk-\ !-margin-4 { - margin: 15px !important +.govuk-\!-padding-left-2 { + padding-left: 10px !important } -@media (min-width:40.0625em) { - .govuk-\ !-margin-4 { - margin: 20px !important - } +.govuk-\!-padding-3 { + padding: 15px !important } -.govuk-\ !-margin-top-4 { - margin-top: 15px !important +.govuk-\!-padding-top-3 { + padding-top: 15px !important } -@media (min-width:40.0625em) { - .govuk-\ !-margin-top-4 { - margin-top: 20px !important - } +.govuk-\!-padding-right-3 { + padding-right: 15px !important } -.govuk-\ !-margin-right-4 { - margin-right: 15px !important +.govuk-\!-padding-bottom-3 { + padding-bottom: 15px !important } -@media (min-width:40.0625em) { - .govuk-\ !-margin-right-4 { - margin-right: 20px !important - } +.govuk-\!-padding-left-3 { + padding-left: 15px !important } -.govuk-\ !-margin-bottom-4 { - margin-bottom: 15px !important +.govuk-\!-padding-4 { + padding: 15px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-bottom-4 { - margin-bottom: 20px !important + .govuk-\!-padding-4 { + padding: 20px !important } } -.govuk-\ !-margin-left-4 { - margin-left: 15px !important +.govuk-\!-padding-top-4 { + padding-top: 15px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-left-4 { - margin-left: 20px !important + .govuk-\!-padding-top-4 { + padding-top: 20px !important } } -.govuk-\ !-margin-5 { - margin: 15px !important +.govuk-\!-padding-right-4 { + padding-right: 15px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-5 { - margin: 25px !important + .govuk-\!-padding-right-4 { + padding-right: 20px !important } } -.govuk-\ !-margin-top-5 { - margin-top: 15px !important +.govuk-\!-padding-bottom-4 { + padding-bottom: 15px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-top-5 { - margin-top: 25px !important + .govuk-\!-padding-bottom-4 { + padding-bottom: 20px !important } } -.govuk-\ !-margin-right-5 { - margin-right: 15px !important +.govuk-\!-padding-left-4 { + padding-left: 15px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-right-5 { - margin-right: 25px !important + .govuk-\!-padding-left-4 { + padding-left: 20px !important } } -.govuk-\ !-margin-bottom-5 { - margin-bottom: 15px !important +.govuk-\!-padding-5 { + padding: 15px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-bottom-5 { - margin-bottom: 25px !important + .govuk-\!-padding-5 { + padding: 25px !important } } -.govuk-\ !-margin-left-5 { - margin-left: 15px !important +.govuk-\!-padding-top-5 { + padding-top: 15px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-left-5 { - margin-left: 25px !important + .govuk-\!-padding-top-5 { + padding-top: 25px !important } } -.govuk-\ !-margin-6 { - margin: 20px !important +.govuk-\!-padding-right-5 { + padding-right: 15px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-6 { - margin: 30px !important + .govuk-\!-padding-right-5 { + padding-right: 25px !important } } -.govuk-\ !-margin-top-6 { - margin-top: 20px !important +.govuk-\!-padding-bottom-5 { + padding-bottom: 15px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-top-6 { - margin-top: 30px !important + .govuk-\!-padding-bottom-5 { + padding-bottom: 25px !important } } -.govuk-\ !-margin-right-6 { - margin-right: 20px !important +.govuk-\!-padding-left-5 { + padding-left: 15px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-right-6 { - margin-right: 30px !important + .govuk-\!-padding-left-5 { + padding-left: 25px !important } } -.govuk-\ !-margin-bottom-6 { - margin-bottom: 20px !important +.govuk-\!-padding-6 { + padding: 20px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-bottom-6 { - margin-bottom: 30px !important + .govuk-\!-padding-6 { + padding: 30px !important } } -.govuk-\ !-margin-left-6 { - margin-left: 20px !important +.govuk-\!-padding-top-6 { + padding-top: 20px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-left-6 { - margin-left: 30px !important + .govuk-\!-padding-top-6 { + padding-top: 30px !important } } -.govuk-\ !-margin-7 { - margin: 25px !important +.govuk-\!-padding-right-6 { + padding-right: 20px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-7 { - margin: 40px !important + .govuk-\!-padding-right-6 { + padding-right: 30px !important } } -.govuk-\ !-margin-top-7 { - margin-top: 25px !important +.govuk-\!-padding-bottom-6 { + padding-bottom: 20px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-top-7 { - margin-top: 40px !important + .govuk-\!-padding-bottom-6 { + padding-bottom: 30px !important } } -.govuk-\ !-margin-right-7 { - margin-right: 25px !important +.govuk-\!-padding-left-6 { + padding-left: 20px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-right-7 { - margin-right: 40px !important + .govuk-\!-padding-left-6 { + padding-left: 30px !important } } -.govuk-\ !-margin-bottom-7 { - margin-bottom: 25px !important +.govuk-\!-padding-7 { + padding: 25px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-bottom-7 { - margin-bottom: 40px !important + .govuk-\!-padding-7 { + padding: 40px !important } } -.govuk-\ !-margin-left-7 { - margin-left: 25px !important +.govuk-\!-padding-top-7 { + padding-top: 25px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-left-7 { - margin-left: 40px !important + .govuk-\!-padding-top-7 { + padding-top: 40px !important } } -.govuk-\ !-margin-8 { - margin: 30px !important +.govuk-\!-padding-right-7 { + padding-right: 25px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-8 { - margin: 50px !important + .govuk-\!-padding-right-7 { + padding-right: 40px !important } } -.govuk-\ !-margin-top-8 { - margin-top: 30px !important +.govuk-\!-padding-bottom-7 { + padding-bottom: 25px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-top-8 { - margin-top: 50px !important + .govuk-\!-padding-bottom-7 { + padding-bottom: 40px !important } } -.govuk-\ !-margin-right-8 { - margin-right: 30px !important +.govuk-\!-padding-left-7 { + padding-left: 25px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-right-8 { - margin-right: 50px !important + .govuk-\!-padding-left-7 { + padding-left: 40px !important } } -.govuk-\ !-margin-bottom-8 { - margin-bottom: 30px !important +.govuk-\!-padding-8 { + padding: 30px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-bottom-8 { - margin-bottom: 50px !important + .govuk-\!-padding-8 { + padding: 50px !important } } -.govuk-\ !-margin-left-8 { - margin-left: 30px !important +.govuk-\!-padding-top-8 { + padding-top: 30px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-left-8 { - margin-left: 50px !important + .govuk-\!-padding-top-8 { + padding-top: 50px !important } } -.govuk-\ !-margin-9 { - margin: 40px !important +.govuk-\!-padding-right-8 { + padding-right: 30px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-9 { - margin: 60px !important + .govuk-\!-padding-right-8 { + padding-right: 50px !important } } -.govuk-\ !-margin-top-9 { - margin-top: 40px !important +.govuk-\!-padding-bottom-8 { + padding-bottom: 30px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-top-9 { - margin-top: 60px !important + .govuk-\!-padding-bottom-8 { + padding-bottom: 50px !important } } -.govuk-\ !-margin-right-9 { - margin-right: 40px !important +.govuk-\!-padding-left-8 { + padding-left: 30px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-right-9 { - margin-right: 60px !important + .govuk-\!-padding-left-8 { + padding-left: 50px !important } } -.govuk-\ !-margin-bottom-9 { - margin-bottom: 40px !important +.govuk-\!-padding-9 { + padding: 40px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-bottom-9 { - margin-bottom: 60px !important + .govuk-\!-padding-9 { + padding: 60px !important } } -.govuk-\ !-margin-left-9 { - margin-left: 40px !important +.govuk-\!-padding-top-9 { + padding-top: 40px !important } @media (min-width:40.0625em) { - .govuk-\ !-margin-left-9 { - margin-left: 60px !important + .govuk-\!-padding-top-9 { + padding-top: 60px !important } } -.govuk-\ !-padding-0 { - padding: 0 !important +.govuk-\!-padding-right-9 { + padding-right: 40px !important } @media (min-width:40.0625em) { - .govuk-\ !-padding-0 { - padding: 0 !important + .govuk-\!-padding-right-9 { + padding-right: 60px !important } } -.govuk-\ !-padding-top-0 { - padding-top: 0 !important +.govuk-\!-padding-bottom-9 { + padding-bottom: 40px !important } @media (min-width:40.0625em) { - .govuk-\ !-padding-top-0 { - padding-top: 0 !important + .govuk-\!-padding-bottom-9 { + padding-bottom: 60px !important } } -.govuk-\ !-padding-right-0 { - padding-right: 0 !important +.govuk-\!-padding-left-9 { + padding-left: 40px !important } @media (min-width:40.0625em) { - .govuk-\ !-padding-right-0 { - padding-right: 0 !important + .govuk-\!-padding-left-9 { + padding-left: 60px !important } } -.govuk-\ !-padding-bottom-0 { - padding-bottom: 0 !important +.govuk-\!-static-margin-0 { + margin: 0 !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-bottom-0 { - padding-bottom: 0 !important - } +.govuk-\!-static-margin-top-0 { + margin-top: 0 !important } -.govuk-\ !-padding-left-0 { - padding-left: 0 !important +.govuk-\!-static-margin-right-0 { + margin-right: 0 !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-left-0 { - padding-left: 0 !important - } +.govuk-\!-static-margin-bottom-0 { + margin-bottom: 0 !important } -.govuk-\ !-padding-1 { - padding: 5px !important +.govuk-\!-static-margin-left-0 { + margin-left: 0 !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-1 { - padding: 5px !important - } +.govuk-\!-static-margin-1 { + margin: 5px !important } -.govuk-\ !-padding-top-1 { - padding-top: 5px !important +.govuk-\!-static-margin-top-1 { + margin-top: 5px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-top-1 { - padding-top: 5px !important - } +.govuk-\!-static-margin-right-1 { + margin-right: 5px !important +} + +.govuk-\!-static-margin-bottom-1 { + margin-bottom: 5px !important +} + +.govuk-\!-static-margin-left-1 { + margin-left: 5px !important +} + +.govuk-\!-static-margin-2 { + margin: 10px !important +} + +.govuk-\!-static-margin-top-2 { + margin-top: 10px !important +} + +.govuk-\!-static-margin-right-2 { + margin-right: 10px !important +} + +.govuk-\!-static-margin-bottom-2 { + margin-bottom: 10px !important +} + +.govuk-\!-static-margin-left-2 { + margin-left: 10px !important } -.govuk-\ !-padding-right-1 { - padding-right: 5px !important +.govuk-\!-static-margin-3 { + margin: 15px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-right-1 { - padding-right: 5px !important - } +.govuk-\!-static-margin-top-3 { + margin-top: 15px !important } -.govuk-\ !-padding-bottom-1 { - padding-bottom: 5px !important +.govuk-\!-static-margin-right-3 { + margin-right: 15px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-bottom-1 { - padding-bottom: 5px !important - } +.govuk-\!-static-margin-bottom-3 { + margin-bottom: 15px !important } -.govuk-\ !-padding-left-1 { - padding-left: 5px !important +.govuk-\!-static-margin-left-3 { + margin-left: 15px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-left-1 { - padding-left: 5px !important - } +.govuk-\!-static-margin-4 { + margin: 20px !important } -.govuk-\ !-padding-2 { - padding: 10px !important +.govuk-\!-static-margin-top-4 { + margin-top: 20px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-2 { - padding: 10px !important - } +.govuk-\!-static-margin-right-4 { + margin-right: 20px !important } -.govuk-\ !-padding-top-2 { - padding-top: 10px !important +.govuk-\!-static-margin-bottom-4 { + margin-bottom: 20px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-top-2 { - padding-top: 10px !important - } +.govuk-\!-static-margin-left-4 { + margin-left: 20px !important } -.govuk-\ !-padding-right-2 { - padding-right: 10px !important +.govuk-\!-static-margin-5 { + margin: 25px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-right-2 { - padding-right: 10px !important - } +.govuk-\!-static-margin-top-5 { + margin-top: 25px !important } -.govuk-\ !-padding-bottom-2 { - padding-bottom: 10px !important +.govuk-\!-static-margin-right-5 { + margin-right: 25px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-bottom-2 { - padding-bottom: 10px !important - } +.govuk-\!-static-margin-bottom-5 { + margin-bottom: 25px !important } -.govuk-\ !-padding-left-2 { - padding-left: 10px !important +.govuk-\!-static-margin-left-5 { + margin-left: 25px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-left-2 { - padding-left: 10px !important - } +.govuk-\!-static-margin-6 { + margin: 30px !important } -.govuk-\ !-padding-3 { - padding: 15px !important +.govuk-\!-static-margin-top-6 { + margin-top: 30px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-3 { - padding: 15px !important - } +.govuk-\!-static-margin-right-6 { + margin-right: 30px !important } -.govuk-\ !-padding-top-3 { - padding-top: 15px !important +.govuk-\!-static-margin-bottom-6 { + margin-bottom: 30px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-top-3 { - padding-top: 15px !important - } +.govuk-\!-static-margin-left-6 { + margin-left: 30px !important } -.govuk-\ !-padding-right-3 { - padding-right: 15px !important +.govuk-\!-static-margin-7 { + margin: 40px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-right-3 { - padding-right: 15px !important - } +.govuk-\!-static-margin-top-7 { + margin-top: 40px !important } -.govuk-\ !-padding-bottom-3 { - padding-bottom: 15px !important +.govuk-\!-static-margin-right-7 { + margin-right: 40px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-bottom-3 { - padding-bottom: 15px !important - } +.govuk-\!-static-margin-bottom-7 { + margin-bottom: 40px !important } -.govuk-\ !-padding-left-3 { - padding-left: 15px !important +.govuk-\!-static-margin-left-7 { + margin-left: 40px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-left-3 { - padding-left: 15px !important - } +.govuk-\!-static-margin-8 { + margin: 50px !important } -.govuk-\ !-padding-4 { - padding: 15px !important +.govuk-\!-static-margin-top-8 { + margin-top: 50px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-4 { - padding: 20px !important - } +.govuk-\!-static-margin-right-8 { + margin-right: 50px !important } -.govuk-\ !-padding-top-4 { - padding-top: 15px !important +.govuk-\!-static-margin-bottom-8 { + margin-bottom: 50px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-top-4 { - padding-top: 20px !important - } +.govuk-\!-static-margin-left-8 { + margin-left: 50px !important } -.govuk-\ !-padding-right-4 { - padding-right: 15px !important +.govuk-\!-static-margin-9 { + margin: 60px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-right-4 { - padding-right: 20px !important - } +.govuk-\!-static-margin-top-9 { + margin-top: 60px !important } -.govuk-\ !-padding-bottom-4 { - padding-bottom: 15px !important +.govuk-\!-static-margin-right-9 { + margin-right: 60px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-bottom-4 { - padding-bottom: 20px !important - } +.govuk-\!-static-margin-bottom-9 { + margin-bottom: 60px !important } -.govuk-\ !-padding-left-4 { - padding-left: 15px !important +.govuk-\!-static-margin-left-9 { + margin-left: 60px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-left-4 { - padding-left: 20px !important - } +.govuk-\!-static-padding-0 { + padding: 0 !important } -.govuk-\ !-padding-5 { - padding: 15px !important +.govuk-\!-static-padding-top-0 { + padding-top: 0 !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-5 { - padding: 25px !important - } +.govuk-\!-static-padding-right-0 { + padding-right: 0 !important } -.govuk-\ !-padding-top-5 { - padding-top: 15px !important +.govuk-\!-static-padding-bottom-0 { + padding-bottom: 0 !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-top-5 { - padding-top: 25px !important - } +.govuk-\!-static-padding-left-0 { + padding-left: 0 !important } -.govuk-\ !-padding-right-5 { - padding-right: 15px !important +.govuk-\!-static-padding-1 { + padding: 5px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-right-5 { - padding-right: 25px !important - } +.govuk-\!-static-padding-top-1 { + padding-top: 5px !important } -.govuk-\ !-padding-bottom-5 { - padding-bottom: 15px !important +.govuk-\!-static-padding-right-1 { + padding-right: 5px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-bottom-5 { - padding-bottom: 25px !important - } +.govuk-\!-static-padding-bottom-1 { + padding-bottom: 5px !important } -.govuk-\ !-padding-left-5 { - padding-left: 15px !important +.govuk-\!-static-padding-left-1 { + padding-left: 5px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-left-5 { - padding-left: 25px !important - } +.govuk-\!-static-padding-2 { + padding: 10px !important } -.govuk-\ !-padding-6 { - padding: 20px !important +.govuk-\!-static-padding-top-2 { + padding-top: 10px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-6 { - padding: 30px !important - } +.govuk-\!-static-padding-right-2 { + padding-right: 10px !important } -.govuk-\ !-padding-top-6 { - padding-top: 20px !important +.govuk-\!-static-padding-bottom-2 { + padding-bottom: 10px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-top-6 { - padding-top: 30px !important - } +.govuk-\!-static-padding-left-2 { + padding-left: 10px !important } -.govuk-\ !-padding-right-6 { - padding-right: 20px !important +.govuk-\!-static-padding-3 { + padding: 15px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-right-6 { - padding-right: 30px !important - } +.govuk-\!-static-padding-top-3 { + padding-top: 15px !important } -.govuk-\ !-padding-bottom-6 { - padding-bottom: 20px !important +.govuk-\!-static-padding-right-3 { + padding-right: 15px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-bottom-6 { - padding-bottom: 30px !important - } +.govuk-\!-static-padding-bottom-3 { + padding-bottom: 15px !important } -.govuk-\ !-padding-left-6 { - padding-left: 20px !important +.govuk-\!-static-padding-left-3 { + padding-left: 15px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-left-6 { - padding-left: 30px !important - } +.govuk-\!-static-padding-4 { + padding: 20px !important } -.govuk-\ !-padding-7 { - padding: 25px !important +.govuk-\!-static-padding-top-4 { + padding-top: 20px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-7 { - padding: 40px !important - } +.govuk-\!-static-padding-right-4 { + padding-right: 20px !important } -.govuk-\ !-padding-top-7 { - padding-top: 25px !important +.govuk-\!-static-padding-bottom-4 { + padding-bottom: 20px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-top-7 { - padding-top: 40px !important - } +.govuk-\!-static-padding-left-4 { + padding-left: 20px !important } -.govuk-\ !-padding-right-7 { - padding-right: 25px !important +.govuk-\!-static-padding-5 { + padding: 25px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-right-7 { - padding-right: 40px !important - } +.govuk-\!-static-padding-top-5 { + padding-top: 25px !important } -.govuk-\ !-padding-bottom-7 { - padding-bottom: 25px !important +.govuk-\!-static-padding-right-5 { + padding-right: 25px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-bottom-7 { - padding-bottom: 40px !important - } +.govuk-\!-static-padding-bottom-5 { + padding-bottom: 25px !important } -.govuk-\ !-padding-left-7 { +.govuk-\!-static-padding-left-5 { padding-left: 25px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-left-7 { - padding-left: 40px !important - } -} - -.govuk-\ !-padding-8 { +.govuk-\!-static-padding-6 { padding: 30px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-8 { - padding: 50px !important - } +.govuk-\!-static-padding-top-6 { + padding-top: 30px !important } -.govuk-\ !-padding-top-8 { - padding-top: 30px !important +.govuk-\!-static-padding-right-6 { + padding-right: 30px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-top-8 { - padding-top: 50px !important - } +.govuk-\!-static-padding-bottom-6 { + padding-bottom: 30px !important } -.govuk-\ !-padding-right-8 { - padding-right: 30px !important +.govuk-\!-static-padding-left-6 { + padding-left: 30px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-right-8 { - padding-right: 50px !important - } +.govuk-\!-static-padding-7 { + padding: 40px !important } -.govuk-\ !-padding-bottom-8 { - padding-bottom: 30px !important +.govuk-\!-static-padding-top-7 { + padding-top: 40px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-bottom-8 { - padding-bottom: 50px !important - } +.govuk-\!-static-padding-right-7 { + padding-right: 40px !important } -.govuk-\ !-padding-left-8 { - padding-left: 30px !important +.govuk-\!-static-padding-bottom-7 { + padding-bottom: 40px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-left-8 { - padding-left: 50px !important - } +.govuk-\!-static-padding-left-7 { + padding-left: 40px !important } -.govuk-\ !-padding-9 { - padding: 40px !important +.govuk-\!-static-padding-8 { + padding: 50px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-9 { - padding: 60px !important - } +.govuk-\!-static-padding-top-8 { + padding-top: 50px !important } -.govuk-\ !-padding-top-9 { - padding-top: 40px !important +.govuk-\!-static-padding-right-8 { + padding-right: 50px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-top-9 { - padding-top: 60px !important - } +.govuk-\!-static-padding-bottom-8 { + padding-bottom: 50px !important } -.govuk-\ !-padding-right-9 { - padding-right: 40px !important +.govuk-\!-static-padding-left-8 { + padding-left: 50px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-right-9 { - padding-right: 60px !important - } +.govuk-\!-static-padding-9 { + padding: 60px !important } -.govuk-\ !-padding-bottom-9 { - padding-bottom: 40px !important +.govuk-\!-static-padding-top-9 { + padding-top: 60px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-bottom-9 { - padding-bottom: 60px !important - } +.govuk-\!-static-padding-right-9 { + padding-right: 60px !important } -.govuk-\ !-padding-left-9 { - padding-left: 40px !important +.govuk-\!-static-padding-bottom-9 { + padding-bottom: 60px !important } -@media (min-width:40.0625em) { - .govuk-\ !-padding-left-9 { - padding-left: 60px !important - } +.govuk-\!-static-padding-left-9 { + padding-left: 60px !important } -.govuk-\ !-text-align-left { +.govuk-\!-text-align-left { text-align: left !important } -.govuk-\ !-text-align-centre { +.govuk-\!-text-align-centre { text-align: center !important } -.govuk-\ !-text-align-right { +.govuk-\!-text-align-right { text-align: right !important } -.govuk-\ !-font-size-80 { - font-size: 53px !important; - font-size: 3.3125norem !important; - line-height: 1.03774 !important +.govuk-\!-font-size-80 { + font-size: 3.3125rem !important; + line-height: 1.0377358491 !important } @media (min-width:40.0625em) { - .govuk-\ !-font-size-80 { - font-size: 80px !important; - font-size: 5norem !important; + .govuk-\!-font-size-80 { + font-size: 5rem !important; line-height: 1 !important } } @media print { - .govuk-\ !-font-size-80 { + .govuk-\!-font-size-80 { font-size: 53pt !important; line-height: 1.1 !important } } -.govuk-\ !-font-size-48 { - font-size: 32px !important; - font-size: 2norem !important; +.govuk-\!-font-size-48 { + font-size: 2rem !important; line-height: 1.09375 !important } @media (min-width:40.0625em) { - .govuk-\ !-font-size-48 { - font-size: 48px !important; - font-size: 3norem !important; - line-height: 1.04167 !important + .govuk-\!-font-size-48 { + font-size: 3rem !important; + line-height: 1.0416666667 !important } } @media print { - .govuk-\ !-font-size-48 { + .govuk-\!-font-size-48 { font-size: 32pt !important; line-height: 1.15 !important } } -.govuk-\ !-font-size-36 { - font-size: 24px !important; - font-size: 1.5norem !important; - line-height: 1.04167 !important +.govuk-\!-font-size-36 { + font-size: 1.5rem !important; + line-height: 1.0416666667 !important } @media (min-width:40.0625em) { - .govuk-\ !-font-size-36 { - font-size: 36px !important; - font-size: 2.25norem !important; - line-height: 1.11111 !important + .govuk-\!-font-size-36 { + font-size: 2.25rem !important; + line-height: 1.1111111111 !important } } @media print { - .govuk-\ !-font-size-36 { + .govuk-\!-font-size-36 { font-size: 24pt !important; line-height: 1.05 !important } } -.govuk-\ !-font-size-27 { - font-size: 18px !important; - font-size: 1.125norem !important; - line-height: 1.11111 !important +.govuk-\!-font-size-27 { + font-size: 1.125rem !important; + line-height: 1.1111111111 !important } @media (min-width:40.0625em) { - .govuk-\ !-font-size-27 { - font-size: 27px !important; - font-size: 1.6875norem !important; - line-height: 1.11111 !important + .govuk-\!-font-size-27 { + font-size: 1.6875rem !important; + line-height: 1.1111111111 !important } } @media print { - .govuk-\ !-font-size-27 { + .govuk-\!-font-size-27 { font-size: 18pt !important; line-height: 1.15 !important } } -.govuk-\ !-font-size-24 { - font-size: 18px !important; - font-size: 1.125norem !important; - line-height: 1.11111 !important +.govuk-\!-font-size-24 { + font-size: 1.125rem !important; + line-height: 1.1111111111 !important } @media (min-width:40.0625em) { - .govuk-\ !-font-size-24 { - font-size: 24px !important; - font-size: 1.5norem !important; + .govuk-\!-font-size-24 { + font-size: 1.5rem !important; line-height: 1.25 !important } } @media print { - .govuk-\ !-font-size-24 { + .govuk-\!-font-size-24 { font-size: 18pt !important; line-height: 1.15 !important } } -.govuk-\ !-font-size-19 { - font-size: 16px !important; - font-size: 1norem !important; +.govuk-\!-font-size-19 { + font-size: 1rem !important; line-height: 1.25 !important } @media (min-width:40.0625em) { - .govuk-\ !-font-size-19 { - font-size: 19px !important; - font-size: 1.1875norem !important; - line-height: 1.31579 !important + .govuk-\!-font-size-19 { + font-size: 1.1875rem !important; + line-height: 1.3157894737 !important } } @media print { - .govuk-\ !-font-size-19 { + .govuk-\!-font-size-19 { font-size: 14pt !important; line-height: 1.15 !important } } -.govuk-\ !-font-size-16 { - font-size: 14px !important; - font-size: .875norem !important; - line-height: 1.14286 !important +.govuk-\!-font-size-16 { + font-size: .875rem !important; + line-height: 1.1428571429 !important } @media (min-width:40.0625em) { - .govuk-\ !-font-size-16 { - font-size: 16px !important; - font-size: 1norem !important; + .govuk-\!-font-size-16 { + font-size: 1rem !important; line-height: 1.25 !important } } @media print { - .govuk-\ !-font-size-16 { + .govuk-\!-font-size-16 { font-size: 14pt !important; line-height: 1.2 !important } } -.govuk-\ !-font-size-14 { - font-size: 12px !important; - font-size: .75norem !important; +.govuk-\!-font-size-14 { + font-size: .75rem !important; line-height: 1.25 !important } @media (min-width:40.0625em) { - .govuk-\ !-font-size-14 { - font-size: 14px !important; - font-size: .875norem !important; - line-height: 1.42857 !important + .govuk-\!-font-size-14 { + font-size: .875rem !important; + line-height: 1.4285714286 !important } } @media print { - .govuk-\ !-font-size-14 { + .govuk-\!-font-size-14 { font-size: 12pt !important; line-height: 1.2 !important } } -.govuk-\ !-font-weight-regular { +.govuk-\!-font-weight-regular { font-weight: 400 !important } -.govuk-\ !-font-weight-bold { +.govuk-\!-font-weight-bold { font-weight: 700 !important } -.govuk-\ !-width-full, -.govuk-\ !-width-three-quarters { +.govuk-\!-font-tabular-numbers { + font-variant-numeric: tabular-nums !important +} + +.govuk-\!-width-full, +.govuk-\!-width-three-quarters { width: 100% !important } @media (min-width:40.0625em) { - .govuk-\ !-width-three-quarters { + .govuk-\!-width-three-quarters { width: 75% !important } } -.govuk-\ !-width-two-thirds { +.govuk-\!-width-two-thirds { width: 100% !important } @media (min-width:40.0625em) { - .govuk-\ !-width-two-thirds { + .govuk-\!-width-two-thirds { width: 66.66% !important } } -.govuk-\ !-width-one-half { +.govuk-\!-width-one-half { width: 100% !important } @media (min-width:40.0625em) { - .govuk-\ !-width-one-half { + .govuk-\!-width-one-half { width: 50% !important } } -.govuk-\ !-width-one-third { +.govuk-\!-width-one-third { width: 100% !important } @media (min-width:40.0625em) { - .govuk-\ !-width-one-third { + .govuk-\!-width-one-third { width: 33.33% !important } } -.govuk-\ !-width-one-quarter { +.govuk-\!-width-one-quarter { width: 100% !important } + @media (min-width:40.0625em) { - .govuk-\ !-width-one-quarter { + .govuk-\!-width-one-quarter { width: 25% !important } } + + +/*Match margin in main-wrapper so "Contents" is level*/ +@media (max-width:40.0625em) { + .govuk-contents-box { + margin-right: 30px; + margin-left: 30px + + } +} + +/*Match margin in main-wrapper so "Contents" is level*/ +@media (min-width:40.0625em) and (max-width:48.0625em) { + .govuk-contents-box { + margin-right: 45px; + margin-left: 45px + + } +} + + +/*Match margin in main-wrapper so "Contents" is level*/ +@media (min-width:40.0625em) { + .govuk-contents-box { + margin-top: 40px; + + } +} + + +/*Do not apply stickyness on smaller screen*/ +@media (min-width:48.0625em) { +.govuk-contents-box_sticky { + position: fixed; + /*Guess? - probably could put exact pixels to make smooth*/ + top: 26px; + /* Margin 0 to stop the contents box bopping around */ + margin: 0; + padding: 0; +} +} + + +/*Contents link formatting*/ +.govuk-contents { + top: 0.5rem; + padding: 0.25rem; +} + +.govuk-contents__link { + padding-left: 0; + font-size: 1rem; +} + +.govuk-subcontents { + list-style-type: none; + padding-left: 0; + font-size: 1rem; +} + +/*Only display subcontents for first one - on load*/ +.govuk-contents ~ .govuk-contents > .govuk-subcontents { + display: none; +} + + +/*# sourceMappingURL=govuk-frontend-5.4.0.min.css.map */ diff --git a/inst/www/fonts/bold-affa96571d-v2.woff b/inst/www/fonts/bold-affa96571d-v2.woff new file mode 100644 index 0000000..48fbcf5 Binary files /dev/null and b/inst/www/fonts/bold-affa96571d-v2.woff differ diff --git a/inst/www/fonts/bold-b542beb274-v2.woff2 b/inst/www/fonts/bold-b542beb274-v2.woff2 new file mode 100644 index 0000000..81fd149 Binary files /dev/null and b/inst/www/fonts/bold-b542beb274-v2.woff2 differ diff --git a/inst/www/fonts/light-94a07e06a1-v2.woff2 b/inst/www/fonts/light-94a07e06a1-v2.woff2 new file mode 100644 index 0000000..1eb1015 Binary files /dev/null and b/inst/www/fonts/light-94a07e06a1-v2.woff2 differ diff --git a/inst/www/fonts/light-f591b13f7d-v2.woff b/inst/www/fonts/light-f591b13f7d-v2.woff new file mode 100644 index 0000000..3b26d5f Binary files /dev/null and b/inst/www/fonts/light-f591b13f7d-v2.woff differ diff --git a/inst/www/images/favicon.ico b/inst/www/images/favicon.ico new file mode 100644 index 0000000..20129a0 Binary files /dev/null and b/inst/www/images/favicon.ico differ diff --git a/inst/www/images/favicon.svg b/inst/www/images/favicon.svg new file mode 100644 index 0000000..67d7ef9 --- /dev/null +++ b/inst/www/images/favicon.svg @@ -0,0 +1 @@ + diff --git a/inst/www/images/govuk-icon-180.png b/inst/www/images/govuk-icon-180.png new file mode 100644 index 0000000..7c33beb Binary files /dev/null and b/inst/www/images/govuk-icon-180.png differ diff --git a/inst/www/images/govuk-icon-192.png b/inst/www/images/govuk-icon-192.png new file mode 100644 index 0000000..35e51d7 Binary files /dev/null and b/inst/www/images/govuk-icon-192.png differ diff --git a/inst/www/images/govuk-icon-512.png b/inst/www/images/govuk-icon-512.png new file mode 100644 index 0000000..f5eb6f4 Binary files /dev/null and b/inst/www/images/govuk-icon-512.png differ diff --git a/inst/www/images/govuk-icon-mask.svg b/inst/www/images/govuk-icon-mask.svg new file mode 100644 index 0000000..e10ff6c --- /dev/null +++ b/inst/www/images/govuk-icon-mask.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/inst/www/images/govuk-opengraph-image.png b/inst/www/images/govuk-opengraph-image.png new file mode 100644 index 0000000..4d0e312 Binary files /dev/null and b/inst/www/images/govuk-opengraph-image.png differ diff --git a/inst/www/js/accordion.js b/inst/www/js/accordion.js index 6f4c7cb..1795d38 100644 --- a/inst/www/js/accordion.js +++ b/inst/www/js/accordion.js @@ -1,35 +1,100 @@ -$(document).on('click', '.govuk-accordion__section-button', function(e) { +// individual section buttons +$(document).on('click', '.govuk-accordion__section-button', function (e) { + // get 'name' value from button var str = e.target.name; - var level = str.substring(str.length-1); + // get z value from name (Map argument) + var level = str.substring(str.length - 1); + + // get class from top div var cur_class = $('[name="accordion-default-heading-' + level + '"]').parent().parent().parent()[0].classList.value - if(cur_class == "govuk-accordion__section") { + + // check if "govuk-accordion__section--expanded" has already been added to the top div class + if (cur_class == "govuk-accordion__section") { + + // add "govuk-accordion__section--expanded" to top div class $('[name="accordion-default-heading-' + level + '"]').parent().parent().parent().addClass("govuk-accordion__section--expanded"); + + // remove chevron transform class $('[name="accordion-default-heading-' + level + '"]').children().children().children().removeClass("govuk-accordion-nav__chevron--down")[0]; + + // edit toggle text + $('[name="accordion-default-heading-' + level + '"]').children().children().children()[1].innerHTML = "Hide" + } else { + + // remove "govuk-accordion__section--expanded" to top div class $('[name="accordion-default-heading-' + level + '"]').parent().parent().parent().removeClass("govuk-accordion__section--expanded"); + + // add chevron transform class $('[name="accordion-default-heading-' + level + '"]').children().children().children().addClass("govuk-accordion-nav__chevron--down")[0]; + + // edit toggle text + $('[name="accordion-default-heading-' + level + '"]').children().children().children()[1].innerHTML = "Show" + + // if any section set to hidden want "Show all text" and chevron down + document.getElementById("show-all-chevron").classList.add("govuk-accordion-nav__chevron--down") + document.getElementsByClassName("govuk-accordion__show-all-text")[0].innerHTML = "Show all sections" } }); -$(document).on('click', '.govuk-accordion__show-all', function(e) { +// show all button +$(document).on('click', '.govuk-accordion__show-all', function (e) { + // get all section elements var sections = document.getElementsByClassName('govuk-accordion__section'); + + // get all chevron elements var chevrons = document.getElementsByClassName('govuk-accordion-nav__chevron'); + // get toggle text element + var toggle_text = document.getElementsByClassName('govuk-accordion__section-toggle-text'); + + // get current class value for the show all chevron + var show_all_chevron_class = document.getElementById("show-all-chevron").classList.value; + + + for (var i = 0; i < sections.length; i++) { + + // check direction of Show all chevron + if (show_all_chevron_class != "govuk-accordion-nav__chevron") { + + // switch Show all text and chevon direction + document.getElementsByClassName("govuk-accordion__show-all-text")[0].innerHTML = "Hide all sections"; + chevrons[0].classList.remove("govuk-accordion-nav__chevron--down"); + + // only switch individual sections if they are closed + if (sections[i].classList.value == "govuk-accordion__section") { + sections[i].classList.add("govuk-accordion__section--expanded"); + + // note: chevron elements length one greater than section length due to show all/hide all chevron + chevrons[i + 1].classList.remove("govuk-accordion-nav__chevron--down"); + + // change individual section text to "Hide" + toggle_text[i].innerHTML = "Hide"; + + } + - for(var i=0; i< sections.length; i++){ - if(sections[i].classList.value == "govuk-accordion__section") { - sections[i].classList.add("govuk-accordion__section--expanded"); - chevrons[i].classList.remove("govuk-accordion-nav__chevron--down"); } else { - sections[i].classList.remove("govuk-accordion__section--expanded"); - chevrons[i].classList.add("govuk-accordion-nav__chevron--down"); + + // this else section does the opposite of the if section above + document.getElementsByClassName("govuk-accordion__show-all-text")[0].innerHTML = "Show all sections"; + chevrons[0].classList.add("govuk-accordion-nav__chevron--down"); + + if (sections[i].classList.value != "govuk-accordion__section") { + sections[i].classList.remove("govuk-accordion__section--expanded"); + chevrons[i + 1].classList.add("govuk-accordion-nav__chevron--down"); + + toggle_text[i].innerHTML = "Show"; + + } + } - console.log(chevrons[i].classList.value); + } diff --git a/inst/www/js/contents_link.js b/inst/www/js/contents_link.js new file mode 100644 index 0000000..4f20d4f --- /dev/null +++ b/inst/www/js/contents_link.js @@ -0,0 +1,63 @@ + +// contents links JS +$(document).on('click', '.govuk-contents__link', function(e) { + + // get subcontents sections + var subsections = document.getElementsByClassName("govuk-subcontents"); + + // close all other subsections except in the section of the link you are clicking + for (var i = 0; i < subsections.length; i++) { + + if(subsections[i].parentElement.children[0].id === event.target.id) { + subsections[i].style.display = "block" + + } else { + subsections[i].style.display = "none" + + } + + } + +}); + + + +// make navbar 'sticky' on scroll +$(document).scroll(function () { + + // Get the navbar + var nav_contents = document.getElementById("govuk-contents-box"); + + + // Add the sticky class to the navbar when you reach its scroll position. Remove "sticky" when you leave the scroll position + if (window.pageYOffset >= document.getElementById("nav").offsetTop) { + nav_contents.classList.add("govuk-contents-box_sticky") + + } else { + nav_contents.classList.remove("govuk-contents-box_sticky"); + } + + +}); + +// Avoid the different widths caused by changing between fixed and static divs? +function set_contents_box_width(){ + var new_width = $('#nav').width(); + $('#govuk-contents-box').width(new_width); +} + +$(document).scroll(function () { + set_contents_box_width(); +}); + +$(window).resize(function () { + set_contents_box_width(); +}); + + +// Scroll to top of main col +$(document).on('click', '.govuk-contents__link', function(e) { + + document.getElementById("main_col").scrollIntoView() + +}); diff --git a/inst/www/js/govuk-frontend-5.4.0.min.js b/inst/www/js/govuk-frontend-5.4.0.min.js new file mode 100644 index 0000000..7c84957 --- /dev/null +++ b/inst/www/js/govuk-frontend-5.4.0.min.js @@ -0,0 +1 @@ +const version="5.4.0";function normaliseString(e,t){const n=e?e.trim():"";let s,i=null==t?void 0:t.type;switch(i||(["true","false"].includes(n)&&(i="boolean"),n.length>0&&isFinite(Number(n))&&(i="number")),i){case"boolean":s="true"===n;break;case"number":s=Number(n);break;default:s=e}return s}function mergeConfigs(...e){const t={};for(const n of e)for(const e of Object.keys(n)){const s=t[e],i=n[e];isObject(s)&&isObject(i)?t[e]=mergeConfigs(s,i):t[e]=i}return t}function extractConfigByNamespace(e,t,n){const s=e.schema.properties[n];if("object"!==(null==s?void 0:s.type))return;const i={[n]:{}};for(const[o,r]of Object.entries(t)){let e=i;const t=o.split(".");for(const[s,i]of t.entries())"object"==typeof e&&(s` from template `