uswds-jekyll 4.1.0 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +82 -48
  3. data/_includes/components/banner.html +3 -3
  4. data/_includes/components/footer--big.html +114 -0
  5. data/_includes/components/footer--medium.html +2 -2
  6. data/_includes/components/footer--slim.html +89 -0
  7. data/_includes/components/header.html +150 -0
  8. data/_includes/footer.html +7 -1
  9. data/_includes/header.html +1 -5
  10. data/_includes/meta.html +6 -0
  11. data/_includes/sidenav.html +23 -21
  12. data/_layouts/default.html +29 -1
  13. data/_layouts/home.html +0 -27
  14. data/_layouts/page.html +8 -9
  15. data/_layouts/project.html +1 -1
  16. data/_layouts/team-member.html +1 -1
  17. data/_sass/components/_side-nav.scss +5 -0
  18. data/_sass/uswds/components/_alerts.scss +4 -1
  19. data/_sass/uswds/components/_banner.scss +3 -4
  20. data/_sass/uswds/components/_footer.scss +6 -2
  21. data/_sass/uswds/components/_forms.scss +18 -38
  22. data/_sass/uswds/components/_header.scss +16 -6
  23. data/_sass/uswds/components/_navigation.scss +19 -7
  24. data/_sass/uswds/components/_search.scss +1 -1
  25. data/_sass/uswds/components/_sidenav.scss +23 -0
  26. data/_sass/uswds/core/_base.scss +1 -0
  27. data/_sass/uswds/core/_grid.scss +1 -2
  28. data/_sass/uswds/core/_utilities.scss +3 -3
  29. data/_sass/uswds/core/_variables-vendor.scss +12 -0
  30. data/_sass/uswds/core/_variables.scss +21 -17
  31. data/_sass/uswds/elements/_inputs.scss +122 -68
  32. data/_sass/uswds/elements/_list.scss +0 -13
  33. data/_sass/uswds/elements/_typography.scss +4 -26
  34. data/_sass/uswds/uswds.scss +1 -0
  35. data/assets/uswds/img/angle-arrow-down-hover.png +0 -0
  36. data/assets/uswds/img/angle-arrow-down-primary-hover.png +0 -0
  37. data/assets/uswds/img/angle-arrow-down-primary.png +0 -0
  38. data/assets/uswds/img/angle-arrow-down.png +0 -0
  39. data/assets/uswds/img/angle-arrow-up-primary-hover.png +0 -0
  40. data/assets/uswds/img/angle-arrow-up-primary.png +0 -0
  41. data/assets/uswds/img/arrow-both.png +0 -0
  42. data/assets/uswds/img/circle-124.png +0 -0
  43. data/assets/uswds/img/close-primary.png +0 -0
  44. data/assets/uswds/img/close.png +0 -0
  45. data/assets/uswds/img/correct8-alt.png +0 -0
  46. data/assets/uswds/img/correct8-alt.svg +1 -0
  47. data/assets/uswds/img/external-link-alt-hover.png +0 -0
  48. data/assets/uswds/img/external-link-alt.png +0 -0
  49. data/assets/uswds/img/external-link-hover.png +0 -0
  50. data/assets/uswds/img/external-link.png +0 -0
  51. data/assets/uswds/img/favicons/favicon-114.png +0 -0
  52. data/assets/uswds/img/favicons/favicon-40.png +0 -0
  53. data/assets/uswds/img/favicons/favicon-57.png +0 -0
  54. data/assets/uswds/img/favicons/favicon-72.png +0 -0
  55. data/assets/uswds/img/hero.png +0 -0
  56. data/assets/uswds/img/minus-alt.png +0 -0
  57. data/assets/uswds/img/plus-alt.png +0 -0
  58. data/assets/uswds/img/search-alt.png +0 -0
  59. data/assets/uswds/img/search-primary.png +0 -0
  60. data/assets/uswds/img/social-icons/png/facebook25.png +0 -0
  61. data/assets/uswds/img/social-icons/png/rss25.png +0 -0
  62. data/assets/uswds/img/social-icons/png/twitter16.png +0 -0
  63. data/assets/uswds/img/social-icons/png/youtube15.png +0 -0
  64. data/assets/uswds/js/uswds.js +532 -181
  65. data/assets/uswds/js/uswds.min.js +1 -1
  66. data/assets/uswds/js/uswds.min.js.map +1 -1
  67. metadata +9 -5
  68. data/_includes/components/header--basic.html +0 -74
  69. data/_includes/components/header--extended.html +0 -92
@@ -0,0 +1,150 @@
1
+ {% if header %}
2
+
3
+ {% if header.type == 'basic' %}
4
+ <header class="usa-header usa-header-basic" role="banner">
5
+ {% elsif header.type == 'basic-mega' %}
6
+ <header class="usa-header usa-header-basic usa-header-basic-megamenu" role="banner">
7
+ {% elsif header.type == 'extended' or header.type == 'extended-mega' %}
8
+ <header class="usa-header usa-header-extended" role="banner">
9
+ {% endif %}
10
+
11
+ {% if header.type == 'basic' or header.type == 'basic-mega' %}
12
+ <div class="usa-nav-container">
13
+ {% endif %}
14
+ <div class="usa-navbar">
15
+ <button class="usa-menu-btn">Menu</button>
16
+ <div class="usa-logo" id="{% if header.type == 'extended' or header.type == 'extended-mega' %}extended-mega-{% endif %}logo">
17
+ <em class="usa-logo-text">
18
+ <a href="{% if header.href %}{{ header.href }}{% else %}{{ site.baseurl }}/{% endif %}" title="Home">
19
+ {{ header.title | default: site.title }}
20
+ </a>
21
+ </em>
22
+ </div>
23
+ </div>
24
+
25
+ <nav role="navigation" class="usa-nav">
26
+ <div class="usa-nav-inner">
27
+ <button class="usa-nav-close">
28
+ <img src="{{ site.baseurl }}/assets/uswds/img/close.svg" alt="close">
29
+ </button>
30
+
31
+ {% assign _primary = header.primary.links %}
32
+ {% assign primary_links = site.data.navigation[_primary] | default: _primary %}
33
+ {% if primary_links %}
34
+ <ul class="usa-nav-primary usa-accordion">
35
+ {% for _section in primary_links %}
36
+ <li>
37
+ {% if _section.links %}
38
+ {% assign section_links = site.data.navigation[_section.links] | default: _section.links %}
39
+ {% assign _section_id = _section.id %}
40
+ {% unless _section_id %}{% assign _section_id = 'nav-' | append: forloop.index %}{% endunless %}
41
+ <button class="usa-accordion-button usa-nav-link" aria-expanded="false" aria-controls="{{ _section_id }}">
42
+ <span>{{ _section.text }}</span>
43
+ </button>
44
+ {% if header.type == 'basic' or header.type == 'extended' %}
45
+ <ul id="{{ _section_id }}" class="usa-nav-submenu" aria-hidden="true">
46
+ {% endif %}
47
+ {% if header.type == 'basic-mega' or header.type == 'extended-mega' %}
48
+ <div id="{{ _section_id }}" class="usa-nav-submenu usa-megamenu usa-grid-full" aria-hidden="true">
49
+ {% endif %}
50
+ {% for _link in section_links %}
51
+ {% if header.type == 'basic-mega' or header.type == 'extended-mega' %}
52
+ <!-- wrap every 3 links in a usa-megamenu-col div -->
53
+ {% capture modulo %}{{ forloop.index | modulo: 3 }}{% endcapture %}
54
+ {% if modulo == '1' %}
55
+ <div class="usa-megamenu-col">
56
+ <ul>
57
+ {% endif %}
58
+ {% endif %}
59
+ <li>
60
+ <a href="{% if _link.external %}{{ _link.href }}{% else %}{{ _link.href | relative_url }}{% endif %}">{{ _link.text }}</a>
61
+ </li>
62
+ {% if header.type == 'basic-mega' or header.type == 'extended-mega' %}
63
+ {% if modulo == '0' or forloop.last %}
64
+ </ul>
65
+ </div>
66
+ {% endif %}
67
+ {% endif %}
68
+ {% endfor %}
69
+ {% if header.type == 'basic' or header.type == 'extended' %}
70
+ </ul>
71
+ {% endif %}
72
+ {% if header.type == 'basic-mega' or header.type == 'extended-mega' %}
73
+ </div>
74
+ {% endif %}
75
+ {% else %}
76
+ <a class="{% if _section.class %}{{ _section.class }}{% else %} usa-nav-link {% endif %} {% if _section.href == page.permalink %} usa-current{% endif %}" href="{% if _section.external %}{{ _section.href }}{% else %}{{ _section.href | relative_url }}{% endif %}">
77
+ <span>{{ _section.text }}</span>
78
+ </a>
79
+ {% endif %}
80
+ </li>
81
+ {% endfor %}
82
+ </ul>
83
+ {% endif %}
84
+
85
+ {% if header.type == 'basic' or header.type == 'basic-mega' %}
86
+ {% assign _secondary = header.secondary %}
87
+ {% if site.search_site_handle %}
88
+ <form accept-charset="UTF-8" action="https://search.usa.gov/search" id="search_form" method="get" class="usa-search usa-search-small js-search-form">
89
+ <div style="margin:0;padding:0;display:inline">
90
+ <input name="utf8" type="hidden" value="&#x2713;" />
91
+ </div>
92
+ <input id="affiliate" name="affiliate" type="hidden" value="{{ site.search_site_handle }}" />
93
+ <div role="search">
94
+ <label for="query" class="usa-sr-only">Enter Search Term(s):</label>
95
+ <input autocomplete="off" class="usagov-search-autocomplete" id="query" name="query" type="search" />
96
+ <button type="submit" name="commit">
97
+ <span class="usa-sr-only">Search</span>
98
+ </button>
99
+ </div>
100
+ </form>
101
+ {% endif %}
102
+ {% endif %}
103
+
104
+ {% if header.type == 'extended' or header.type == 'extended-mega' %}
105
+ {% assign _secondary = header.secondary %}
106
+ <div class="usa-nav-secondary">
107
+ {% if site.search_site_handle %}
108
+ <form accept-charset="UTF-8" action="https://search.usa.gov/search" id="search_form" method="get" class="usa-search usa-search-small js-search-form usa-sr-only">
109
+ <div style="margin:0;padding:0;display:inline">
110
+ <input name="utf8" type="hidden" value="&#x2713;" />
111
+ </div>
112
+ <input id="affiliate" name="affiliate" type="hidden" value="{{ site.search_site_handle }}" />
113
+ <div role="search">
114
+ <label for="query" class="usa-sr-only">Enter Search Term(s):</label>
115
+ <input autocomplete="off" class="usagov-search-autocomplete" id="query" name="query" type="search" />
116
+ <button type="submit" name="commit">
117
+ <span class="usa-sr-only">Search</span>
118
+ </button>
119
+ </div>
120
+ </form>
121
+ {% endif %}
122
+ <ul class="usa-unstyled-list usa-nav-secondary-links">
123
+ {% if site.search_site_handle %}
124
+ <li class="js-search-button-container">
125
+ <button class="usa-header-search-button js-search-button">Search</button>
126
+ </li>
127
+ {% endif %}
128
+ {% assign secondary_links = site.data.navigation[_secondary.links] | default: _secondary.links %}
129
+ {% for _link in secondary_links %}
130
+ <li>
131
+ <a href="{% if _link.external %}{{ _link.href }}{% else %}{{ _link.href | relative_url }}{% endif %}"
132
+ {% if _link.class %} class="{{ _link.class }}" {% endif %}>
133
+ {{ _link.text }}
134
+ </a>
135
+ </li>
136
+ {% endfor %}
137
+ </ul>
138
+ </div>
139
+ {% endif %}
140
+
141
+
142
+ </div>
143
+ </div>
144
+ </nav>
145
+ {% if header.type == 'basic' or header.type == 'basic-mega' %}
146
+ </div>
147
+ {% endif %}
148
+ </header>
149
+ <div class="usa-overlay"></div>
150
+ {% endif %}
@@ -1,3 +1,9 @@
1
1
  {% assign footer = site.data.footer %}
2
2
 
3
- {% include components/footer--medium.html %}
3
+ {% if footer.type == 'slim' %}
4
+ {% include components/footer--slim.html %}
5
+ {% elsif footer.type == 'medium' %}
6
+ {% include components/footer--medium.html %}
7
+ {% elsif footer.type == 'big' %}
8
+ {% include components/footer--big.html %}
9
+ {% endif %}
@@ -4,8 +4,4 @@
4
4
  {% include components/banner.html %}
5
5
  {% endif %}
6
6
 
7
- {% if header.type == 'basic' %}
8
- {% include components/header--basic.html %}
9
- {% else %}
10
- {% include components/header--extended.html %}
11
- {% endif %}
7
+ {% include components/header.html %}
data/_includes/meta.html CHANGED
@@ -3,4 +3,10 @@
3
3
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
4
4
 
5
5
  <title>{% if page.title %}{{ page.title }} | {% endif %}{{ site.title }}</title>
6
+
7
+ {% assign description = page.description | default: site.description %}
8
+ {% if description %}
9
+ <meta name="description" content="{{ description }}">
10
+ {% endif %}
11
+
6
12
  {% include favicon.html %}
@@ -1,21 +1,23 @@
1
- <ul class="usa-sidenav-list">
2
- {% for link in include.links %}
3
- {% assign _href = link.href %}
4
- {% assign _current = false %}
5
- {% if link.href == page.url or link.href == page.permalink %}
6
- {% assign _current = true %}
7
- {% endif %}
8
- <li>
9
- <a href="{% if link.external == true %}{{ link.href }}{% else %}{{ link.href | relative_url }}{% endif %}"
10
- {% if _current %} class="usa-current" {% endif %}
11
- {% if link.class %}class="{{ link.class }}" {% endif %} >
12
- {{ link.text }}
13
- </a>
14
- {% if _current and page.subnav %}
15
- <ul class="usa-sidenav-sub_list">
16
- {% include subnav.html links=page.subnav %}
17
- </ul>
18
- {% endif %}
19
- </li>
20
- {% endfor %}
21
- </ul>
1
+ <nav>
2
+ <ul class="usa-sidenav-list">
3
+ {% for link in include.links %}
4
+ {% assign _href = link.href %}
5
+ {% assign _current = false %}
6
+ {% if link.href == page.url or link.href == page.permalink %}
7
+ {% assign _current = true %}
8
+ {% endif %}
9
+ <li>
10
+ <a href="{% if link.external == true %}{{ link.href }}{% else %}{{ link.href | relative_url }}{% endif %}"
11
+ {% if _current %} class="usa-current" {% endif %}
12
+ {% if link.class %}class="{{ link.class }}" {% endif %} >
13
+ {{ link.text }}
14
+ </a>
15
+ {% if _current and page.subnav %}
16
+ <ul class="usa-sidenav-sub_list">
17
+ {% include subnav.html links=page.subnav %}
18
+ </ul>
19
+ {% endif %}
20
+ </li>
21
+ {% endfor %}
22
+ </ul>
23
+ </nav>
@@ -14,11 +14,39 @@
14
14
  {% include skipnav.html %}
15
15
  {% include header.html %}
16
16
 
17
+ {% assign hero = page.hero %}
18
+ {% include components/hero.html %}
19
+
20
+ {% if page.tagline and page.intro %}
21
+ <section class="usa-grid usa-section">
22
+ <div class="usa-width-one-third">
23
+ <h2>{{ page.tagline }}</h2>
24
+ </div>
25
+ <div class="usa-width-two-thirds">
26
+ {{ page.intro | markdownify }}
27
+ </div>
28
+ </section>
29
+ {% endif %}
30
+
31
+ {% capture _graphics %}
32
+ {% include graphic-list.html graphics=page.graphics %}
33
+ {% endcapture %}
34
+
35
+ {% if page.graphics_position != 'after' %}
36
+ {{ _graphics }}
37
+ {% endif %}
38
+
17
39
  <main id="main-content"{% for _attr in layout.main %} {{ _attr[0] }}="{{ _attr[1] }}"{% endfor %}>
18
- {{ content }}
40
+ {{ content }}
19
41
  </main>
20
42
 
43
+ {% if page.graphics_position == 'after' %}
44
+ {{ _graphics }}
45
+ {% endif %}
46
+
21
47
  {% include footer.html %}
48
+
22
49
  {% include scripts.html %}
50
+
23
51
  </body>
24
52
  </html>
data/_layouts/home.html CHANGED
@@ -1,30 +1,3 @@
1
1
  ---
2
2
  layout: default
3
3
  ---
4
-
5
- {% assign hero = page.hero %}
6
- {% include components/hero.html %}
7
-
8
- {% if page.tagline and page.intro %}
9
- <section class="usa-grid usa-section">
10
- <div class="usa-width-one-third">
11
- <h2>{{ page.tagline }}</h2>
12
- </div>
13
- <div class="usa-width-two-thirds">
14
- {{ page.intro | markdownify }}
15
- </div>
16
- </section>
17
- {% endif %}
18
-
19
- {% capture _graphics %}
20
- {% include graphic-list.html graphics=page.graphics %}
21
- {% endcapture %}
22
- {% if page.graphics_position != 'after' %}{{ _graphics }}{% endif %}
23
-
24
- <section class="usa-section">
25
- <div class="usa-grid">
26
- {{ content }}
27
- </div>
28
- </section>
29
-
30
- {% if page.graphics_position == 'after' %}{{ _graphics }}{% endif %}
data/_layouts/page.html CHANGED
@@ -5,15 +5,14 @@ main:
5
5
  ---
6
6
  {% assign sidenav = site.data.navigation[page.sidenav] | default: page.sidenav %}
7
7
  {% if sidenav %}
8
- <aside class="usa-layout-docs-sidenav sidenav">
9
- {% include sidenav.html links=sidenav %}
10
- </aside>
8
+ <aside class="usa-layout-docs-sidenav sidenav {% if page.sticky_sidenav %}usa-sticky-sidenav{% endif %}">
9
+ {% include sidenav.html links=sidenav %}
10
+ </aside>
11
+ {% endif %}
11
12
 
12
13
  <div class="usa-layout-docs-main_content">
14
+ {% if page.title %}
15
+ <h1>{{ page.title }}</h1>
16
+ {% endif %}
13
17
  {{ content }}
14
- </div>
15
- {% else %}
16
- <div class="usa-layout-docs-main_content">
17
- {{ content }}
18
- </div>
19
- {% endif %}
18
+ </div>
@@ -3,7 +3,7 @@ layout: page
3
3
  ---
4
4
 
5
5
 
6
- <aside class="usa-layout-docs-sidenav sidenav">
6
+ <aside class="usa-layout-docs-sidenav sidenav {% if page.sticky_sidenav %}usa-sticky-sidenav{% endif %}">
7
7
  <ul class="usa-sidenav-list">
8
8
  {% for item in site.projects %}
9
9
  <li>
@@ -3,7 +3,7 @@ layout: page
3
3
  ---
4
4
 
5
5
 
6
- <aside class="usa-layout-docs-sidenav sidenav">
6
+ <aside class="usa-layout-docs-sidenav sidenav {% if page.sticky_sidenav %}usa-sticky-sidenav{% endif %}">
7
7
  <ul class="usa-sidenav-list">
8
8
  {% for item in site.team %}
9
9
  <li>
@@ -1,3 +1,8 @@
1
+ .usa-sticky-sidenav {
2
+ position: sticky;
3
+ top: 1rem;
4
+ }
5
+
1
6
  .usa-sidenav-list {
2
7
  @if variable-exists(side-nav-bg) {
3
8
  background-color: $side-nav-bg;
@@ -79,7 +79,6 @@ $icon-size: 3rem;
79
79
 
80
80
  .usa-alert-body {
81
81
  display: table-cell;
82
- padding-left: $icon-size + $h-padding;
83
82
  vertical-align: top;
84
83
  }
85
84
 
@@ -108,6 +107,10 @@ $icon-size: 3rem;
108
107
  &::before {
109
108
  background-color: map-get($alerts-bar, $name);
110
109
  }
110
+
111
+ .usa-alert-body {
112
+ padding-left: $icon-size + $h-padding;
113
+ }
111
114
  }
112
115
  }
113
116
 
@@ -36,9 +36,8 @@
36
36
  }
37
37
 
38
38
  .usa-banner-inner {
39
- @include outer-container();
39
+ @include outer-container($site-max-width);
40
40
  @include padding(null $site-margins-mobile);
41
- max-width: $site-max-width;
42
41
 
43
42
  @include media($nav-width) {
44
43
  @include padding(null $site-margins);
@@ -141,11 +140,11 @@
141
140
  @include padding(0 null null 0);
142
141
  /* stylelint-disable declaration-block-no-ignored-properties */
143
142
  display: inline;
144
- height: initial;
143
+ height: auto;
145
144
  margin-left: 3px;
146
145
  position: relative;
147
146
  vertical-align: middle;
148
- width: initial;
147
+ width: auto;
149
148
  /* stylelint-enable */
150
149
  }
151
150
 
@@ -17,7 +17,13 @@
17
17
  }
18
18
 
19
19
  &:hover {
20
+ cursor: pointer;
20
21
  text-decoration: underline;
22
+
23
+ @include media($medium-screen) {
24
+ cursor: auto;
25
+ text-decoration: none;
26
+ }
21
27
  }
22
28
  }
23
29
 
@@ -41,10 +47,8 @@
41
47
  }
42
48
 
43
49
  .usa-footer-return-to-top {
44
- color: $color-primary;
45
50
  padding-bottom: $spacing-medium;
46
51
  padding-top: $spacing-medium;
47
- text-decoration: underline;
48
52
  }
49
53
 
50
54
  .usa-footer-primary-section {
@@ -1,32 +1,32 @@
1
1
  $usa-form-width: 32rem;
2
2
 
3
- form {
4
- a {
5
- border-bottom: 0;
3
+ [type=submit] {
4
+ @include media($medium-screen) {
5
+ margin-top: calc(3rem - .2em); // Label margin minus input bottom margin
6
6
  }
7
+ }
7
8
 
8
- [type=submit],
9
- [type=submit] {
10
- display: block;
11
- margin-bottom: 1.5em;
12
- margin-top: 2.5rem;
9
+ fieldset {
10
+ border: none;
11
+ margin: 0;
12
+ padding: 0;
13
+ }
13
14
 
14
- @include media($medium-screen) {
15
- padding-left: 2.7em;
16
- padding-right: 2.7em;
17
- width: auto;
18
- }
15
+ .usa-form {
16
+ @include media($medium-screen) {
17
+ max-width: $usa-form-width;
19
18
  }
19
+ }
20
20
 
21
- [name=password],
22
- [name=confirmPassword] {
23
- margin-bottom: 1.1rem;
21
+ .usa-input-tiny {
22
+ @include media($medium-screen) {
23
+ max-width: 6rem;
24
24
  }
25
25
  }
26
26
 
27
- .usa-form {
27
+ .usa-input-medium {
28
28
  @include media($medium-screen) {
29
- max-width: $usa-form-width;
29
+ max-width: 12rem;
30
30
  }
31
31
  }
32
32
 
@@ -41,32 +41,12 @@ form {
41
41
  }
42
42
  }
43
43
 
44
- fieldset {
45
- border: none;
46
- margin: 0;
47
- padding: 0;
48
- }
49
-
50
44
  .usa-form-large {
51
45
  @include media($medium-screen) {
52
46
  max-width: 46rem;
53
47
  }
54
48
  }
55
49
 
56
- input {
57
- &.usa-input-tiny { /* stylelint-disable-line selector-no-qualifying-type */
58
- @include media($medium-screen) {
59
- max-width: 6rem;
60
- }
61
- }
62
-
63
- &.usa-input-medium { /* stylelint-disable-line selector-no-qualifying-type */
64
- @include media($medium-screen) {
65
- max-width: 12rem;
66
- }
67
- }
68
- }
69
-
70
50
  .usa-input-grid {
71
51
  @include media($medium-screen) {
72
52
  padding-right: 5%;