Code Monkey home page Code Monkey logo

uswds-site's Introduction

United States Web Design System

CircleCI Build Status Snyk vulnerabilities npm Version npm Downloads GitHub issues code style: prettier

The United States Web Design System includes a library of open source UI components and a visual style guide for U.S. federal government websites.

This repository is for the design system code itself. We maintain another repository for the documentation and website. To see the design system and its documentation on the web, visit https://designsystem.digital.gov.

Contents

Recent updates

Information about the most recent release of the design system can always be found in the release history. We include details about significant updates and any backward-incompatible changes along with a list of all changes.

USWDS 3.0 is our most recent major release.

Getting started

We’re glad you’d like to use the design system — here’s how you can get started:

What's included in USWDS

The USWDS package includes compiled assets in a dist directory and component source files in a packages directory.

As of USWDS 3.0.0, our codebase is centered around functional packages, typically components. For more about how we organize packages, see our Packages documentation. In each of the following examples, we use [package] to represent a specific package. For example, component Sass is located in packages/[package]/src/styles for an accordion, this would be packages/usa-accordion/src/styles.

  • Fonts are located in both dist/fonts and packages/uswds-core/src/assets/fonts. The fonts in dist are simply a copy of the files in uswds-core.
  • Images and icons are located in: dist/img. The source for component-specific images can be found in a package's src/img directory.
  • JavaScript for components is located in packages/[package]/src/index.js. General JavaScript utilities and polyfills are located in the uswds-core package: packages/uswds-core/src/js
  • Sass component-specific stylesheets are located in: packages/[package]/src/styles. Many components also have a component entry point at packages/[package]/_index.scss that includes references to all a component's dependencies as well. Compiled CSS is located in dist/css.
  • Template markup for the components is located in: packages/[package]/src/[package.twig] in the site root. These, however, are written in the templating language Twig. It's best to get HTML source markup directly from designsystem.digital.gov/components

Directory structure

Here's what you can expect to find inside the USWDS package:

[uswds package]
├── .storybook/
├── dist/
│   ├── css/
│   │   ├── uswds.css
│   │   ├── uswds.min.css
│   │   └── uswds.min.css.map
│   ├── fonts/
│   │   ├── merriweather/
│   │   ├── public-sans/
│   │   ├── roboto-mono/
│   │   └── source-sans-pro/
│   ├── img/
│   │   ├── usa-icons/
│   │   ├── material-icons/
│   │   ├── uswds-icons/
│   │   ├── usa-icons-bg/
│   │   ├── sprite.svg
│   │   ├── [individual images]
│   │   ...
│   ├── js/
│   │   ├── uswds-init.js
│   │   ├── uswds-init.min.js
│   │   ├── uswds-init.min.js.map
│   │   ├── uswds.js
│   │   ├── uswds.min.js
│   │   └── uswds.min.js.map
│   ├── scss/
│   │   └── stylesheets/
│   │       └── uswds.scss
│   └── theme/
│       ├── _uswds-theme.scss
│       ├── _uswds-theme-custom-styles.scss
│       └── styles.scss
├── packages/
│   ├── usa-component/
│   │   ├── src/
│   │   │   ├── content/
│   │   │   ├── styles/
│   │   │   │   ├── _index.scss
│   │   │   │   └── component.scss
│   │   │   ├── test/
│   │   │   │   ├── component.spec.js
│   │   │   │   └── template.html
│   │   │   ├── index.js
│   │   │   ├── usa-component.stories.js
│   │   │   └── usa-component.twig
│   │   └── _index.scss_/
│   ├── usa-component/
│   ├── usa-component/
│   ├── uswds-bundle/
│   ├── uswds-bundle/
│   ...
├── src/
│   ├── img/
│   ├── stylesheets/
│   └── test/
└── tasks/

Package contents

Here's what you can expect to find in each of the directories and files in the USWDS package:

  • /.storybook: Storybook configuration files (not used in USWDS projects)

  • /dist: Compiled or collected files

  • /dist/css: Precompiled CSS files with USWDS defaults

  • /dist/fonts: Default fonts available to the design system

  • /dist/img: All USWDS images collected into a single directory

  • /dist/img/usa-icons: All icons collected into the USWDS icon sprite (sprite.svg)

  • /dist/img/material-icons: All Material Icons

  • /dist/img/uswds-icons: All icons created by USWDS

  • /dist/img/sprite.svg: Precompiled icon sprite with default icon set

  • /dist/js: Precompiled JavaScript files

  • /dist/scss/stylesheets/uswds.scss: Backwards compatible USWDS Sass entry point

  • /dist/scss/theme: Example theme files

  • /dist/scss/theme/_uswds-theme.scss: Example theme settings file

  • /dist/scss/theme/_uswds-theme-custom-styles.scss: Example custom settings file

  • /dist/scss/theme/styles.scss: Example project Sass entry point

  • /packages: Source files for USWDS components and other functionality.

  • /packages/usa-[component]: Each package has a name like usa-[component] that matches its class name in the design system, like usa-accordion.

  • /packages/usa-[component]/_index.scss: Sass entry point for the package.

  • /packages/usa-[component]/src: Package source files

  • /packages/usa-[component]/src/index.js: Package javascript

  • /packages/usa-[component]/src/usa-component.stories.js: Storybook setup

  • /packages/usa-[component]/src/usa-component.twig: Component template

  • /packages/usa-[component]/src/index.js: Package javascript

  • /packages/usa-[component]/src/content: Package template content

  • /packages/usa-[component]/src/test: Package unit tests

  • /packages/usa-[component]/src/styles: Package source Sass

  • /packages/uswds: The package most projects include by default. This bundle includes all USWDS components and functionality.

  • /packages/uswds-[bundle]: Other non-component functionality is included in uswds--prefixed packages. These bundles might collect common component packages (uswds-form-controls) or important internal functionality (uswds-core).

  • /src: Placeholders included for backwards compatibility. Most projects should avoid using the contents of this directory.

  • /tasks: Internal build process files (not used in USWDS projects)

Installing the design system

There are two ways to install the design system on a project:

  • Installing it as a project dependency using Node and npm
  • Installing the package directly from GitHub

We recommend using npm to make it as straightforward as possible to install the design system and update it as we release new versions.

Install using Node and npm

Use the npm package manager for Node-based projects. USWDS maintains the @uswds/uswds package that includes both the pre-compiled and compiled files. We rely on npm packages to easily update and install the design system from the command line.

  1. Install Node/npm. Below is a link to find the install method that coincides with your operating system:

    Note for Windows users: If you are using Windows and are unfamiliar with Node or npm, we recommend following Team Treehouse's tutorial for more information.

  2. Make sure you have installed it correctly:

    npm -v
    6.13.0 # This line may vary depending on what version of Node you've installed.
  3. Create a package.json file. You can do this manually, but an easier method is to use the npm init command. This command will prompt you with a few questions to create your package.json file.

  4. Add @uswds/uswds to your project’s package.json:

    npm install --save @uswds/uswds@latest

The @uswds/uswds module is now installed as a dependency. You can use the compiled files found in the node_modules/@uswds/uswds/dist/ directory or the source files in the node_modules/@uswds/uswds/packages/ directory.

Note: We do not recommend directly editing the design system files in node_modules. One of the benefits of using a package manager is its ease of upgrade and installation. If you make customizations to the files in the package, any upgrade or re-installation will wipe them out.

Install the package directly from GitHub

If you’re using a framework or package manager that doesn’t support npm, you can find the source files in this repository and use them in your project. Otherwise, we recommend that you follow the steps outlined in this section.

  1. Download the USWDS package directly from the latest USWDS release and uncompress that file.

  2. Copy these files and folders into a relevant place in your project's code base. Here is an example structure for how this might look:

    example-project/
    ├── assets/
    │   ├── uswds/
    │   │   ├── dist/
    │   │   ├── packages/
    │   │   └── src/
    │   ├── stylesheets/
    │   ├── images/
    │   └── javascript/
    └── index.html
    

    You'll notice in our example above that we also outline a stylesheets, images and javascript folder in your assets folder. These folders are to help organize any assets that are unique to your project and separate from the design system assets.

    Note: Files in the downloadable USWDS package will show a "last modified" date of October 26, 1985. This is intentional. This default date is set by npm on all its packages to ensure builds will be identical.

Using USWDS CSS and JavaScript in your project

The three files critical to any USWDS project are the stylesheet, the JavaScript, and the initializer. Most projects require all of these to function properly.

  • Stylesheet: This is the compiled CSS stylesheet that describes how design system components look. To start, reference either uswds.css or uswds.min.css in the <head> of your document. Find this file in /dist/css. Most projects will want to compile their own CSS from USWDS source Sass instead of using the precompiled version. For more about this, see Compiling USWDS Sass into CSS, below.
  • Library: This is the compiled JavaScript that controls component interactivity. Reference either uswds.js or uswds.min.js at the end of the <body> of your document. Find this file in /dist/js.
  • Initializer: This small JavaScript file (less than 1 KB minified) helps the browser know if the USWDS JavaScript library is loading properly. This prevents component content from "flashing" or "shifting" while the page loads. Reference uswds-init.min.js in the <head> of your page, or inline its contents directly into the <script> tag. Find this file in /dist/js.

Reference the stylesheet, library, and initializer in each HTML page or dynamic template in your project.

Here is an example of how to reference these assets in your index.html file:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Example Project</title>
    <script src="assets/uswds/dist/js/uswds-init.min.js"></script>
    <link rel="stylesheet" href="assets/uswds/dist/css/uswds.min.css" />
  </head>
  <body>
    <script src="assets/uswds/dist/js/uswds.min.js"></script>
  </body>
</html>

And that’s it — you should now be able to copy our code samples into your index.html and start using the design system.

Compiling USWDS Sass into CSS

If you want to take full advantage of USWDS custom settings and add build new styles and components with the USWDS toolset, you'll need a way to access the assets in the USWDS package and compile custom CSS from the USWDS source files.

USWDS uses the task manager Gulp as a way to add USWDS assets to a project and compile our CSS from the package source. Gulp is a useful and powerful tool, but it can be difficult to set up if you are new to it.

The USWDS Compile package is made for developers new to Gulp or those who just want a simple setup to compile USWDS Sass. The repo contains files and instructions for setting up the compiler, initializing USWDS, and compiling CSS from the source files.

Sass compilation requirements

USWDS Sass needs three things to compile properly:

  • Sass Module syntax: USWDS requires a modern Sass compiler that can parse Sass Module syntax.
  • Autoprefixing: USWDS requires Autoprefixing your CSS with a specific .browserslistrc.
  • Sass Load Paths: USWDS requires Sass compilers use Load Paths that reference the /packages directory in the USWDS package

Note: Using a compiler package like USWDS Compile is a good way to fulfill these requirements automatically.

Autoprefixing

The design system requires autoprefixing to work properly. Don't add vendor prefixes to your custom styles manually — it is more reliable to use autoprefixing. Autoprefixing services like gulp-autoprefixer automatically add vendor prefixes to CSS rules. We use the following autoprefixer settings via .browserslistrc config:

> 2%
last 2 versions
IE 11
not dead

Sass Load Paths

USWDS 3.0 and newer require the use of Sass Load Paths to compile properly.

USWDS 3.0 load paths must include a path to the /packages directory in the USWDS package, typically by updating an IncludePaths setting to include node_modules/@uswds/uswds/packages.

Here's how this might look in Gulp and in Webpack:

Gulp
.pipe(
  sass({
    includePaths: [
      "./node_modules/@uswds/uswds/packages",
    ],
  })
Webpack
loader: "sass-loader",
options: {
  sassOptions: {
    includePaths: [
      "./node_modules/@uswds/uswds/packages"
    ],
  },
},

Other useful compiler postprocessing

  • Minification: We recommend using a minifier like csso to compress your final compiled CSS.
  • Sourcemaps: We recommend using a sourcemap tool like gulp-sourcemaps to assist debugging by keeping track of source Sass locations.

Sass and theme settings

The design system is customizable using the power of Sass (Syntactically Awesome Style Sheets). The critical files you'll need in your project are those in dist/scss/theme:

  • _uswds-theme.scss: custom theme settings
  • _uswds-theme-custom-styles.scss: additional project CSS for customizing or adding to what USWDS provides
  • styles.scss: The Sass entry point. This is the primary Sass file that you'll compile. It collects theme settings, USWDS source files, and custom CSS

styles.scss looks something like the following code. It adds all the project theme settings, then adds USWDS source, and finally adds your project's custom styles:

@forward "uswds-theme";
@forward "uswds";
@forward "uswds-theme-custom-styles";

Technical note: The @forward 'uswds' statement above references the uswds package in node_modules/@uswds/uswds/packages. The compile functions included in uswds-compile automatically look for USWDS packages in the proper directory using includePaths.

JS customization

Unfortunately, customizing the JavaScript for the USWDS currently requires NodeJS and a module bundler like Browserify or Webpack. We apologize for this inconvenience, and are working to resolve it in a future release of the design system.

USWDS JavaScript is separated into components (just as with the CSS and HTML) and initialized with event handlers when the DOM is ready. These components are accessible as CommonJS modules that can be required in other JavaScript files, then built for the browser. The components are not accessible in the global browser scope, but can be extended to be included by requiring components and setting it to a global scope:

window.uswds = require("./components");

Each component has a standardized interface that can be used to extend it further. The components store a HTML class (like .usa-accordion__button[aria-controls]) used to link HTML elements with the JavaScript component. When a component is initialized, it searches through the current HTML DOM to find all elements that match the class and initializes the component JavaScript for those elements. The primary methods for each component include:

  • on: Initialize a component's JavaScript behavior by passing the root element, such as window.document.
  • off: The opposite of on, de-initializes a component, removing any JavaScript event handlers on the component.
  • hide: Hide the whole component.
  • show: Shows a whole, hidden component.
  • toggle: Toggles the visibility of a component on and off based on the previous state.

Some components have additional methods based on that component's functionality. Any additional methods are found in that component's JavaScript file.

If you’re using a modern framework like React or Angular you can import components and initialize them in your library's DOM ready lifecycle event.

Importing a modular component.

import USWDS from "@uswds/uswds/js";
const { characterCount, accordion } = USWDS; // deconstruct your components here

// Alternatively
import accordion from "@uswds/uswds/js/usa-accordion";

⚠️Requires webpack 5+

React hooks example:

function App() {
  const ref = document.body;

  useEffect(() => {
    // initialize
    characterCount.on(ref);
    // default ref is document.body, if you want to use
    // default you do not have to pass arguments
    accordion.on();

    // remove event listeners when the component un-mounts.
    return () => {
      characterCount.off();
      accordion.off();
    };
  });
}

Angular example:

export class App implements OnInit {
  constructor() {
    this.ref = document.body;
    // default ref is document.body, if you want to use
    // default you do not have to pass arguments
  }

  ngOnInit() {
    // initialize
    characterCount.on(this.ref);
    accordion.on();
  }

  // remove event listeners when the component un-mounts.
  ngOnDestroy() {
    characterCount.off();
    accordion.off();
  }
}

Style theming and tokens

USWDS 3.0 provides extensive support for theming via its theme settings files introduced in Sass and theme settings, above.

Set theme settings with USWDS design tokens, not with values directly. They tend to be quoted strings like 'desktop' or 'md' or unitless numbers like 2 or -1.5. Tokens are the values passed into the USWDS functions and mixins that parse them. They are the keys that, through the mechanism of a function or mixin, unlock a value — they are not the values themselves.

Visit the Design tokens section of USWDS 3.0 documentation for more on the available tokens for color, spacing units, font size, and more.

Using tokens in theme settings

The following is an example of theme settings from _uswds-theme.scss:

@use "uswds-core" with (
  $theme-grid-container-max-width: "desktop",
  $theme-site-margins-breakpoint: "desktop",
  $theme-site-margins-width: 4,
  $theme-site-margins-mobile-width: 2,
)

The USWDS uses those tokens to build component styles:

.usa-example {
  @include u-padding-x($theme-site-margins-mobile-width);
  max-width: units($theme-grid-container-max-width);

  @include at-media($theme-site-margins-breakpoint) {
    @include u-padding-x($theme-site-margins-width);
  }
}

This is the functional equivalent of:

.usa-example {
  @include u-padding-x(2);
  max-width: units("desktop");

  @include at-media("desktop") {
    @include u-padding-x(4);
  }
}

Which, if $theme-respect-user-font-size is set to true would output something like:

.usa-example {
  padding-left: 1rem;
  padding-right: 1rem;
  max-width: 64rem;
}

@media screen and (min-width: 64em) {
  .usa-example {
    padding-left: 2rem;
    padding-right: 2rem;
  }
}

In general, USWDS sets variables with tokens, and passes those variables into functions and mixins in the source Sass.

Set the base asset paths (fonts and images)

The values of $theme-font-path and $theme-image-path will be appended to USWDS font paths and image paths, respectively:

@use "uswds-core" with (
  $theme-font-path: "../fonts",
  $theme-image-path: "../img",
);

CSS architecture

  • The CSS foundation of this site is built with the Sass preprocessor language.
  • The CSS organization and naming conventions follow 18F’s Engineering Guide.
  • We format our code with Prettier, per the formatting section of the 18F Engineering Guide.
  • CSS selectors are prefixed with usa (For example: .usa-button). This identifier helps the design system avoid conflicts with other styles on a site which are not part of USWDS.
  • Uses a BEM approach for naming CSS selectors. Blocks are separated from elements with two underscores (__). Multi-word blocks use single hyphens instead of spaces. Modifier classes are additive — proper markup requires the base class and the modifier class or classes. Modifier classes consist of the base class plus a modifier suffix, separated by two hyphens (--) as in .usa-button.usa-button--secondary or usa-accordion.usa-accordion--bordered.
  • Uses modular CSS for scalable, modular, and flexible code.
  • Uses nesting when appropriate. Nest minimally with up to two levels of nesting.
  • Hard-coded magic numbers are avoided.
  • Media queries are built mobile first.
  • Spacing units are set with the units() function as described in the USWDS 3.0 documentation. In general, we use spacing in multiples of 8px — expressed as a multiple in units([multiple]). For instance units(2) is the equivalent of 2 * 8px or 16px. In the final, compiled CSS, this value will be expressed in rem, as a multiple of the base font size set with $theme-base-font-size.

For more information, visit: 18F’s CSS Guide

Browser support

We’ve designed the design system to support older and newer browsers through progressive enhancement. The current major version of the design system (3.0.0) follows the 2% rule: we officially support any browser above 2% usage as observed by analytics.usa.gov. Currently, this means that the design system version 3.0.0 supports the newest versions of Chrome, Firefox, and Safari.

As of USWDS 3.0.0, we no longer officially support Internet Explorer 11 (IE11). We continued to include IE11 polyfills and prefixing for the first few releases in USWDS 3.x. We started to remove IE11-related polyfills in USWDS 3.8.2, and will continue to remove more of these polyfills in subsequent releases.

Accessibility

The design system also meets the WCAG 2.0 AA accessibility guidelines and conforms to the standards of Section 508 of the Rehabilitation Act. Additionally, we try to meet the requirements of WCAG 2.1.

We use the following tools to ensure USWDS is accessible:

If you find any issues with our accessibility conformance, please create an issue in our GitHub repo or send us an email at [email protected]. We prioritize accessibility issues. See the Accessibility page of our website for more information.

Long-term support of v1.x

Version 1.x is no longer maintained.

Long-term support of v2.x

Version 2.x is in maintenance mode and will continue to get important bugfixes and security patches until May 2023.

Need installation help?

Do you have questions or need help with setup? Did you run into any weird errors while following these instructions? Feel free to open an issue here:

https://github.com/uswds/uswds/issues.

You can also email us directly at [email protected].

Contributing to the code base

For complete instructions on how to contribute code, please read CONTRIBUTING.md. These instructions also include guidance on how to set up your own copy of the design system style guide website for development.

If you would like to learn more about our workflow process, check out the Workflow and Issue label Glossary pages on the wiki.

If you have questions or concerns about our contributing workflow, please contact us by filing a GitHub issue or emailing our team.

Reuse of open-source style guides

Much of the guidance in USWDS leans on open source designs, code, and patterns from other civic and government organizations, including:

Licenses and attribution

A few parts of this project are not in the public domain. Attribution and licensing information for those parts are described in detail in LICENSE.md.

The rest of this project is in the worldwide public domain, released under the CC0 1.0 Universal public domain dedication.

Contributing

All contributions to this project will be released under the CC0 dedication alongside the public domain portions of this project. For more information, see CONTRIBUTING.md.

uswds-site's People

Contributors

afeijoo avatar allie-shaw avatar amyleadem avatar annepetersen avatar bonnieacameron avatar bradnunnally avatar brunerae avatar dependabot[bot] avatar donjo avatar el-mapache avatar finekatie avatar fpigeonjr avatar gscottqueen avatar hursey013 avatar jaredcunha avatar jonadecker avatar jonathanbobel avatar mahoneycm avatar maya avatar mejiaj avatar mikki-stacey avatar mitchmoccia avatar rachelcorsino avatar sarah-sch avatar shawnbot avatar sknep avatar thisisdano avatar toolness avatar wbyoko avatar yozlet avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

uswds-site's Issues

Migrate to a Jekyll theme

Jekyll themes are ways to package layouts, includes, Sass files, and static assets for reuse. Not only would this be a good thing for our users (particularly at 18F, where we create a lot of Jekyll sites), but it would be a nice way to dramatically simplify the site and discourage people from doing stuff like copying our styleguide.css (or worse: our SCSS files, then try to replicate the site's structure and relatively complicated build process) rather than starting with the "stock" Standards assets.

In a nutshell, this would mean doing away entirely with the existing gulp setup, removing the custom layouts, and (depending on how much we want the theme to do out of the box) some—if not all—of the includes. In an ideal world, the docs site would consist entirely of markdown and HTML content with little-to-no "structural" stuff and no extra (non-Jekyll) build step, which means that it would also be more easily deployable on Federalist and (by our users) GitHub Pages.

[Repo] Remove assets folder from the repo, only have it created by the build process

Description

Everything in the assets/ folder should be there as a result of the build process, not because it's been committed there. All assets that belong to the docs (as opposed to those from a vendor/module, including the uswds package) should start in a separate folder (e.g. src/).

  • Remove images
    • Remove all USWDS package images (unfortunately, they're mixed in with the docs images) (#9)
    • Move all docs images to src/images/, have build step copy them in (#10)
    • Ideally, images copied from uswds should go to assets/img/vendor/uswds/ (but this will require lots of doc changes - probably automatable. We may want to postpone this work to a later date.) (Postponed, no longer part of this issue, but still in consideration at #11)
  • Remove styles
    • Make sass build step copy prism.css from node_modules/ (#12)
    • Move all docs SCSS to src/scss/, have build step copy them in (#13)
  • Remove Javascript
    • Make JS build step copy vendor JS from node_modules/ (#14)
    • Move all docs JS to src/js/, have build step target assets/js/ for styleguide.js output (#15)
  • Remove assets/ (#16)

Rename "Research strategy" to "Research"

In our new site structure, the "Research strategy" page is listed under "What's new", as you can see on staging:

image

This seems off to me, and I suggest that we do one of the following:

  1. Rename the page to "Research" so that it can be updated to be more generally about the actual research we do, rather than the strategy; or
  2. Move the "Research strategy" page somewhere else, where it makes more sense.

npm "watch" scripts should not run "jekyll build"

I was reviewing #46 today and followed the instructions for using the latest version of uswds with the docs, but I ran into a problem: running npm run watch (for the first time?) triggers several calls to bundle exec jekyll build, and I think that one or more of these failed for me because several different Jekyll processes were trying to build the site in the same directory at the same time. Whatever the cause, I couldn't run the server (npm start) and watch files (npm run watch) at the same time.

I think that the solution for this is to remove the && bundle exec jekyll build commands from the build-* scripts. Whatever process publishes the site should be using the build (instead of, say, build-css and build-js), and if you're running the Jekyll server the new builds should be incorporated into the local site by Jekyll anyway.

Replace accordions with sub lists

This idea proposal was submitting to us via email by Isabelle Giuong. Here is what she wrote:

On the same site, remove accordions and have all of the stuff that'd be in there in the "usa-sidenav-sub_list" class instead. Right now, there's a mix and it's confusing and hard to navigate if you're at the middle/bottom of a page with lots of accordions open and you just want to go up or find a previous section. Alternatively, you can have a go to the top of page button, but I really feel strongly about having them as sub lists.

Update call to action buttons on homepage

The call to action buttons under the training and customization sections are a bit long. See comment below for update suggestions from @nicoleslaw (thank you!).

the email buttons could be Ask us about training and Ask us about customization or maybe Email us about training — they are a bit long right now and pull my eye.

Add search to the site

This idea proposal was submitting to us via email by Isabelle Giuong. Here is what she wrote:

Reasons: As you add things to this wiki-like resource, it'll be more beneficial for users to search for specific things without having to spend a long time looking for it. The Android developers guide, used by Android devs in the tech industry, has a good example (https://developer.android.com/guide/index.html) and is very similar to your site.

Update WDS site footer text

Update WDS site footer text to reflect repo split

Description

Currently, WDS footer copy includes this:

Feedback? Edit this page or create an issue on the GitHub repository. You can also email us at [email protected].

Being that we have multiple repos, my thought is that we should update the copy accordingly:

Feedback? Create an issue in our [Standards component repo](https://github.com/18F/web-design-standards) or email us at [email protected].

cc @jameshupp @juliaelman @maya & co!

Note: Here's a screenshot of the current copy (for reference):

screen shot 2016-09-02 at 10 51 18 am

Refactor component previews to leverage Jekyll

The series of gulp tasks that copies component markup and renders previews with Prism needs to go. There's a better way to do it that does away with the gulp workflow altogether, which gets us closer to making this a "pure" Jekyll site that's easier to work on:

  1. Remove the gulp tasks that copy and build _includes/components/**/{code,preview}-*.html.
  2. For component previews, factor out includes of code/preview.html and just include components/some-component.html directly.
  3. For component code, refactor the variable include of code/components/code-{{ include.component }}.html to use this technique for rendering both the markup and the HTML source in one go.

Sidenav bug when looking at new research pages

After testing on staging it looks like there is an issue around the side navigation when looking at the new research pages, see screenshot below.

screen shot 2016-12-16 at 11 36 14 am

My initial guess, without doing any digging, is that it is because /research/ somehow collides with any url pattern that is /research-*/.

[Website + WDS]: Update site files and WDS to 0.12.0

Description

  • Update the site to use v0.12.0
  • Update the Standards site to use the latest documentation files with the v0.12.0 release
  • Restore build-time Prism syntax highlighting
    • Remove copy-prism-javascript step and invocation from config/gulp/javascript.js

Add Events Template

I created an Events page template based on the Landing page template in the WDS am interested in contributing that back to the site for other folks to possibly use. We specifically created it to use for hackathons.

I wanted to check to see what the team thought about including it as a Page Template before starting the PR. Thanks!

Preview:
screencapture-saracope-github-io-uswds-template-eventpage-1484141619044

Limit the number of releases listed in the the sidenav

This was a great suggestion from my critique group: limit the releases page subnav to the last handful—3? 4? major?—releases, and include a link to previous releases that takes you to a URL like this one:

https://github.com/18F/web-design-standards/releases?after={tag}

Where {tag} is the git tag of the last release we list.

[Repo, Build] Images from USWDS package should go in assets/img/vendor/uswds/

Part of overall assets cleanup. (#8)

This would be good for neatness's sake, and to avoid accidental name collisions. However, it'll require all existing image references in the docs to be reworked (which may be automatable, or possibly easier to just build without USWDS images and then check Web Inspector to see which images 404ed).

Reorganize "What's new" page content

The analytics data feels awkward to me as the first thing on the what's new page. We should consider moving that to a separate page, and bringing the blog post link up. I think it'd also be good to include either a direct link to the latest release or drop the the latest release notes right on this page.

Remove repo split disclaimer text

Per comms strategy, the goal was to keep the messaging up for one month (October 15). Adding this issue so that we remember to remove it in that proposed time frame.

Add "What's New" layout

  • Remove component maturity scale page
  • Remove references to component maturity scale throughout website
    (https://github.com/18F/web-design-standards/wiki/Component-Maturity-Scale)
  • Remove references to component maturity scale in web-design-standards
  • Rename and reroute everything to point to whats-new
  • Add release notes to sidenav
  • Remove product roadmap from sidenav
  • Update landing page for What's New to new layout

See mock-up for reference: https://gsa.invisionapp.com/share/FBAA2B78N#/screens/217092077

Add alert to WDS site to inform users of repo split

Add alert to standards.usa.gov

Description

As part of the larger repo-split comms plan, I'd like to add an alert to standards.usa.gov to let users know about the repo split. Here's the proposed copy:

The Standards' GitHub repos have changed! [web-design-standards](https://github.com/18F/web-design-standards) is the code base for the Standards themselves, and [web-design-standards-docs](https://github.com/18F/web-design-standards-docs) contains the code and documentation for this site.

My thought is that this alert could stay up for several weeks (perhaps up to a month?), just to give folks enough time to get used to the change.

As far as placement of the alert goes, this is something I need your helps with! I'm thinking it might be good above all of the other page content — what say you, visually inclined folks?

cc @maya @juliaelman @lauraGgit @donjo @jameshupp

Add content questions to interview guide

As part of our metrics-tracking strategy, @jameshupp and I would like to add some site-copy-related questions to the interview guide to get a better sense of 1) how effective the Getting Started copy is and 2) what else users might like to see.

(Note: The interview guide already has some questions about component-related documentation.)

Add 18F pages redirect to correct url

We currently have a few spots in which https://pages.18f.gov/designstandards/ have been referenced. We'll need to setup a redirect to point to https://standards.usa.gov/ when users try to visit this url.

Header navigation link :focus styles cause issues

The links in our (non-standard) header navigation have an issue that only appears when you click and hold a link or focus it with the keyboard, and it causes the whole nav to bump down. Note the white space above the links before (un-focused):

image

and after, focused:

image

I think this might have something to do with our refactoring of the sticky nav in #120. Otherwise, it may be something that we can solve by migrating over to our "stock" header component in #130.

Move website hosting over to Federalist

The site is currently hosted under the cloud.gov infrastructure and needs to be moved over to Federalist. Here are some of the steps to make this move:

  • Create USWDS account on Federalist (?)
  • Configure build tasks for new infrastructure
  • Remove manifest.yml, manifest-staging.yml, manifest-demo.yml
  • Remove deploy tasks from circle.yml
  • Set custom domain on Federalist to https://standards.usa.gov
  • Switch DNS
  • Remove org, spaces and apps from cloud.gov

Prep for 0.13.2 release

We've specked out the release for 0.13.2 of the Standards here. Here are a few things we will need to do to be in sync on this repo with these updates:

  • QA to make sure v0.13.2 works correctly on website
  • Update version number in _config.yml
  • Update package.json to use Standards v0.13.2
  • Import uswds in place of all in main styleguide Sass file
  • Update documentation in the "Getting Started" page to reflect changes in SCSS inheritance and other new documentation guidelines.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.