@moreonion/foundist 3.0.0 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/package.json +2 -2
  2. package/src/html/basic-action-page-cover-1col-with-headline.html +60 -0
  3. package/src/html/basic-action-page-cover-2col-with-headline.html +60 -0
  4. package/src/html/basic-action-page-cover-banner-with-headline.html +60 -0
  5. package/src/html/basic-action-page-with-banner-and-headline.html +60 -0
  6. package/src/html/dev-index.html +8 -0
  7. package/src/html/includes/login-form.html +1 -1
  8. package/src/html/includes/section-1col.html +11 -0
  9. package/src/html/includes/section-2col.html +12 -0
  10. package/src/html/templates/action-page-cover-1col.html +1 -1
  11. package/src/html/templates/action-page-cover-banner.html +4 -3
  12. package/src/html/templates/action-page-reversed.html +1 -1
  13. package/src/html/templates/action-page.html +1 -1
  14. package/src/html/templates/page.html +19 -12
  15. package/src/html/templates/share-page.html +6 -0
  16. package/src/html/thank-you-page-cover-1col-with-headline.html +33 -0
  17. package/src/html/thank-you-page-cover-2col-with-headline.html +37 -0
  18. package/src/html/thank-you-page-cover-banner-with-headline.html +33 -0
  19. package/src/html/thank-you-page-with-banner-and-headline.html +33 -0
  20. package/src/html/thank-you-page.html +1 -1
  21. package/src/js/foundist.js +9 -3
  22. package/src/scss/_util.scss +16 -6
  23. package/src/scss/components/_accordion.scss +4 -6
  24. package/src/scss/components/_bottom-section.scss +117 -0
  25. package/src/scss/components/_headline.scss +118 -0
  26. package/src/scss/layout/_banner.scss +50 -13
  27. package/src/scss/layout/_cover-banner.scss +80 -34
  28. package/src/scss/layout/_cover.scss +127 -46
  29. package/src/scss/layout/_default.scss +9 -3
  30. package/src/scss/layout/_sections.scss +7 -3
  31. package/src/scss/main.scss +2 -0
@@ -16,14 +16,16 @@
16
16
  /// @require $header-color-alt
17
17
  ///
18
18
  /// @param {String} $background - Background color
19
- @mixin match-colors($background) {
19
+ /// @param {Bool} $force - If true, all text colors will be overridden regardless of the value
20
+ @mixin match-colors($background, $force: false) {
20
21
  $background: get-background-color($background);
21
22
  @if $background != transparent {
22
23
  color: color-pick-contrast($background, ($body-font-color, $body-font-color-alt));
23
24
 
24
25
  // Replace heading colors only if the contrast of the original color is < 3
25
26
  // or they should be the same as the body font color.
26
- @if (color-contrast($background, $header-color-odd) < 3) or
27
+ @if $force or
28
+ (color-contrast($background, $header-color-odd) < 3) or
27
29
  ($header-color-odd == $body-font-color and $header-color-alt == $body-font-color-alt)
28
30
  {
29
31
  h1,
@@ -35,7 +37,8 @@
35
37
  color: color-pick-contrast($background, ($header-color-odd, $header-color-alt));
36
38
  }
37
39
  }
38
- @if (color-contrast($background, $header-color-even) < 3) or
40
+ @if $force or
41
+ (color-contrast($background, $header-color-even) < 3) or
39
42
  ($header-color-even == $body-font-color and $header-color-alt == $body-font-color-alt)
40
43
  {
41
44
  h2,
@@ -53,7 +56,7 @@
53
56
  @if color-contrast($background, $anchor-color) < 4.5 or $anchor-color == $body-font-color {
54
57
  $this-anchor-color: color-pick-contrast($background, ($anchor-color, $body-font-color-alt));
55
58
  }
56
- @if $this-anchor-color != $anchor-color {
59
+ @if $force or $this-anchor-color != $anchor-color {
57
60
  a:not(.button) {
58
61
  color: $this-anchor-color;
59
62
 
@@ -74,11 +77,18 @@
74
77
  }
75
78
  // Replace blockquote colors only if the contrast of the original color is < 4.5
76
79
  // or they should be the same as the body font color.
77
- @if (color-contrast($background, $blockquote-color) < 4.5) or
80
+ @if $force or
81
+ (color-contrast($background, $blockquote-color) < 4.5) or
78
82
  ($blockquote-color == $body-font-color)
79
83
  {
80
84
  blockquote {
81
- color: color-pick-contrast($background, ($blockquote-color, $body-font-color-alt));
85
+ &,
86
+ p {
87
+ color: color-pick-contrast($background, ($blockquote-color, $body-font-color-alt));
88
+ }
89
+ cite {
90
+ color: color-pick-contrast($background, ($cite-color, $body-font-color-alt));
91
+ }
82
92
  }
83
93
  }
84
94
  }
@@ -60,12 +60,10 @@
60
60
  }
61
61
  }
62
62
 
63
- .accordion-content {
64
- // Assuming accordions contain either text or paragraphs or a list.
65
- #{$text-tags} {
66
- > &:last-child {
67
- margin-bottom: 0;
68
- }
63
+ // Assuming accordions contain either text or paragraphs or a list.
64
+ #{$text-tags} {
65
+ .accordion-content > &:last-child {
66
+ margin-bottom: 0;
69
67
  }
70
68
  }
71
69
 
@@ -0,0 +1,117 @@
1
+ // Bottom section
2
+ // - - - - - - - - - - - - - - -
3
+ // Styles for the bottom section component.
4
+
5
+ @use "sass:meta";
6
+
7
+ $bottom-section-background-odd: if(
8
+ meta.variable-exists("bottom-section-background"),
9
+ $bottom-section-background,
10
+ $form-background
11
+ ) !default;
12
+ $bottom-section-background-even: if(
13
+ meta.variable-exists("bottom-section-background"),
14
+ $bottom-section-background,
15
+ $body-background
16
+ ) !default;
17
+ $bottom-section-background-image-overlay: rgba($black, 0.3);
18
+
19
+ #bottom section {
20
+ // Generic section styles
21
+ position: relative;
22
+
23
+ &:nth-child(odd) {
24
+ background: $bottom-section-background-odd;
25
+ @include match-colors($bottom-section-background-odd);
26
+ }
27
+
28
+ &:nth-child(even) {
29
+ background: $bottom-section-background-even;
30
+ @include match-colors($bottom-section-background-even);
31
+ }
32
+
33
+ > .grid-container {
34
+ margin-top: 1.5 * $global-margin;
35
+ margin-bottom: 0.5 * $global-margin;
36
+
37
+ @include breakpoint(small down) {
38
+ .media-stretch:first-child {
39
+ margin-top: -1.5 * $global-margin;
40
+ }
41
+ }
42
+
43
+ @include breakpoint(large) {
44
+ margin-top: 2.5 * $global-margin;
45
+ margin-bottom: 1.5 * $global-margin;
46
+ }
47
+ }
48
+
49
+ // Section with background image
50
+ .background {
51
+ &,
52
+ &:after {
53
+ position: absolute;
54
+ top: 0;
55
+ right: 0;
56
+ bottom: 0;
57
+ left: 0;
58
+ }
59
+
60
+ img {
61
+ object-fit: cover;
62
+ width: 100%;
63
+ height: 100%;
64
+ }
65
+
66
+ &:after {
67
+ content: "";
68
+ background: $bottom-section-background-image-overlay;
69
+ }
70
+
71
+ ~ .grid-container {
72
+ position: relative;
73
+ margin-top: 4.5 * $global-margin;
74
+ margin-bottom: 3.5 * $global-margin;
75
+ @include match-colors($bottom-section-background-image-overlay);
76
+ }
77
+ }
78
+
79
+ // Section with 2 columns
80
+ @include breakpoint(large) {
81
+ &:nth-child(even) {
82
+ .column:first-child {
83
+ grid-column: 1 / 5;
84
+ // Cover grid-gap to empty column in the middle.
85
+ margin-right: -1 * $global-margin;
86
+ }
87
+ .column:last-child {
88
+ grid-column: 6 / -1;
89
+ align-self: center;
90
+ }
91
+ }
92
+
93
+ // Every other section switches items.
94
+ &:nth-child(odd) {
95
+ .column:first-child {
96
+ order: 2;
97
+ grid-column: 6 / -1;
98
+ // Cover grid-gap to empty column in the middle.
99
+ margin-left: -1 * $global-margin;
100
+ }
101
+ .column:last-child {
102
+ order: 1;
103
+ grid-column: 1 / 5;
104
+ align-self: center;
105
+ }
106
+ }
107
+ }
108
+
109
+ @include breakpoint(xxlarge) {
110
+ &:nth-child(odd) .column:first-child {
111
+ margin-left: -2 * $global-margin;
112
+ }
113
+ &:nth-child(even) .column:first-child {
114
+ margin-right: -2 * $global-margin;
115
+ }
116
+ }
117
+ }
@@ -0,0 +1,118 @@
1
+ // Headline
2
+ // - - - - - - - - - - - - - - -
3
+ // Displays a huge headline on a background image or banner
4
+
5
+ /// Highlighting background of the headline.
6
+ /// @type Color
7
+ $headline-background: none !default;
8
+
9
+ /// Font family of the headline.
10
+ /// @type String | List
11
+ $headline-font-family: $header-font-family !default;
12
+
13
+ /// Font weight of the headline.
14
+ /// @type Number | String
15
+ $headline-font-weight: $header-font-weight !default;
16
+
17
+ /// Font style of the headline.
18
+ /// @type String
19
+ $headline-font-style: $header-font-style !default;
20
+
21
+ /// Font size of the headline.
22
+ /// @type Number
23
+ $headline-font-size: 2 * $large-font-size !default;
24
+
25
+ /// Font color of the headline.
26
+ /// @type Color
27
+ $headline-color: color-pick-contrast(
28
+ if(
29
+ $headline-background and $headline-background != none,
30
+ $headline-background,
31
+ $fallback-background
32
+ ),
33
+ ($body-font-color-alt, $body-font-color)
34
+ ) !default;
35
+
36
+ #headline {
37
+ color: $headline-color;
38
+ align-self: end;
39
+
40
+ #{$text-tags} {
41
+ font-family: $headline-font-family;
42
+ font-weight: $headline-font-weight;
43
+ font-style: $headline-font-style;
44
+ font-size: $headline-font-size;
45
+ line-height: grid-lineheight($headline-font-size);
46
+
47
+ @include breakpoint(small down) {
48
+ font-size: $headline-font-size * 0.75;
49
+ line-height: grid-lineheight(0.75 * $headline-font-size);
50
+ }
51
+
52
+ @include breakpoint(xxlarge) {
53
+ font-size: $headline-font-size * 1.25;
54
+ line-height: grid-lineheight(1.25 * $headline-font-size);
55
+ }
56
+
57
+ #page.banner-layout & {
58
+ // Reduce font-size because there is less space for the headline.
59
+ @include breakpoint(25em down) {
60
+ font-size: $headline-font-size * 0.5;
61
+ line-height: grid-lineheight(0.5 * $headline-font-size);
62
+ }
63
+ @include breakpoint(medium) {
64
+ font-size: $headline-font-size * 0.75;
65
+ line-height: grid-lineheight(0.75 * $headline-font-size);
66
+ }
67
+ @include breakpoint(xlarge) {
68
+ font-size: $headline-font-size;
69
+ line-height: grid-lineheight($headline-font-size);
70
+ }
71
+ @include breakpoint(xxlarge) {
72
+ font-size: $headline-font-size * 1.25;
73
+ line-height: grid-lineheight(1.25 * $headline-font-size);
74
+ }
75
+ }
76
+ }
77
+
78
+ @if $headline-background and $headline-background != none {
79
+ #{$text-tags} {
80
+ background: $headline-background;
81
+ display: inline;
82
+ box-decoration-break: clone;
83
+ padding: 0.05em 0.25em;
84
+ // Adjust line-height for 0.5em of vertical padding.
85
+ line-height: 1.5 * grid-lineheight(1.5 * $headline-font-size);
86
+
87
+ @include breakpoint(small down) {
88
+ line-height: 1.5 * grid-lineheight(1.5 * 0.75 * $headline-font-size);
89
+ }
90
+
91
+ @include breakpoint(xxlarge) {
92
+ line-height: 1.5 * grid-lineheight(1.5 * 1.25 * $headline-font-size);
93
+ }
94
+
95
+ #page.banner-layout & {
96
+ @include breakpoint(25em down, medium) {
97
+ line-height: 1.5 * grid-lineheight(1.5 * 0.5 * $headline-font-size);
98
+ }
99
+ @include breakpoint(medium) {
100
+ line-height: 1.5 * grid-lineheight(1.5 * 0.75 * $headline-font-size);
101
+ }
102
+ @include breakpoint(xlarge) {
103
+ line-height: 1.5 * grid-lineheight(1.5 * $headline-font-size);
104
+ }
105
+ @include breakpoint(xxlarge) {
106
+ line-height: 1.5 * grid-lineheight(1.5 * 1.25 * $headline-font-size);
107
+ }
108
+ }
109
+ }
110
+
111
+ // Fake the usual margin (missing because of display: inline)
112
+ &:after {
113
+ content: "";
114
+ display: block;
115
+ height: $global-margin;
116
+ }
117
+ }
118
+ }
@@ -6,6 +6,7 @@ $banner-height: 46vw !default;
6
6
  $banner-background: $fallback-background !default;
7
7
 
8
8
  #banner {
9
+ position: absolute;
9
10
  width: 100%;
10
11
  height: $banner-height;
11
12
  background: $banner-background;
@@ -16,28 +17,64 @@ $banner-background: $fallback-background !default;
16
17
  height: 100%;
17
18
  object-fit: cover;
18
19
  }
19
- }
20
20
 
21
- #banner ~ #main {
22
- #page-title {
23
- padding-top: 0;
24
- }
25
- }
21
+ ~ #main {
22
+ #page-title {
23
+ padding-top: 0;
24
+ }
26
25
 
27
- @include breakpoint(large) {
28
- #banner {
29
- position: absolute;
26
+ .grid-container {
27
+ grid-template-rows: minmax($banner-height, auto) auto;
30
28
 
31
- ~ #main {
32
- @include clearfix;
29
+ // Ensure the first row is blocked when there is no #headline.
30
+ #page:not(.with-headline) &:before {
31
+ content: "";
32
+ }
33
+ }
33
34
 
34
- #top {
35
- margin-top: $banner-height;
35
+ @include breakpoint(large) {
36
+ .grid-container.with-sidebar {
37
+ grid-template-rows: minmax($banner-height, auto) auto 1fr auto;
36
38
  }
37
39
 
38
40
  #form-wrapper {
39
41
  min-height: $banner-height;
40
42
  }
41
43
  }
44
+
45
+ #page.with-headline & #headline {
46
+ // Same as #main padding-top
47
+ margin-bottom: 1.5 * $global-padding;
48
+
49
+ @include breakpoint(large) {
50
+ margin-bottom: 2 * $global-padding;
51
+ }
52
+
53
+ // Extra padding for headlines on larger screens.
54
+ @include breakpoint(xlarge) {
55
+ padding-bottom: $global-padding;
56
+ }
57
+
58
+ @include breakpoint(xxlarge) {
59
+ padding-bottom: 2 * $global-padding;
60
+ }
61
+ }
62
+ }
63
+
64
+ // On small screens when there is a headline double the banner height
65
+ // to increase the chance that the headline will fit on the banner.
66
+ @include breakpoint(small down) {
67
+ #page.with-headline & {
68
+ height: 2 * $banner-height;
69
+
70
+ ~ #main .grid-container {
71
+ grid-template-rows: minmax(2 * $banner-height, auto) auto;
72
+ }
73
+ }
42
74
  }
43
75
  }
76
+
77
+ // Give callouts some margin (assuming #messages are placed before #banner)
78
+ #page.banner-layout #messages .callout {
79
+ margin-bottom: $global-margin;
80
+ }
@@ -3,22 +3,28 @@
3
3
  // Displays the form above the main content with a fixed image as background.
4
4
 
5
5
  $cover-banner-background: $fallback-background !default;
6
- $cover-banner-min-height: 75vh !default;
6
+ $cover-banner-min-height: 66vh !default;
7
7
 
8
8
  // For the background image, the #background styles from cover.scss are used.
9
9
 
10
10
  #banner-content {
11
- @include breakpoint(medium) {
12
- #form-wrapper {
13
- padding-top: 2 * $global-padding;
11
+ ~ #main {
12
+ background: $body-background;
13
+
14
+ // Displaying the #sidebar below the #content on small/medium screens.
15
+ @include breakpoint(medium down) {
16
+ #content + #sidebar {
17
+ margin-top: 2 * $global-margin;
18
+ }
14
19
  }
15
20
  }
16
21
 
17
- @include breakpoint(medium only) {
18
- // Overlap the image a bit.
19
- #background ~ & {
20
- margin-top: -25vw;
21
- min-height: 25vw;
22
+ @include breakpoint(medium) {
23
+ padding-top: 2 * $global-padding;
24
+ padding-bottom: 2 * $global-padding;
25
+
26
+ #form-outer {
27
+ margin-bottom: 0;
22
28
  }
23
29
  }
24
30
 
@@ -27,37 +33,77 @@ $cover-banner-min-height: 75vh !default;
27
33
  grid-column: 6 / -1;
28
34
  }
29
35
 
30
- ~ #main {
31
- background: $body-background;
32
- // Use padding instead of margins to cover the gaps.
33
- padding-top: 2 * $global-margin;
34
- padding-bottom: 3 * $global-margin;
35
- margin: 0;
36
+ #headline {
37
+ position: sticky;
38
+ bottom: 2 * $global-margin;
36
39
  }
40
+ }
37
41
 
38
- // When there is a #background, make sure it’s visible.
39
- #background ~ &,
40
- #background ~ & #form-wrapper {
41
- min-height: $cover-banner-min-height;
42
+ // When there is a #background, make sure it’s visible.
43
+ #background ~ & {
44
+ @include breakpoint(medium down) {
45
+ padding-top: 50vh;
42
46
  }
43
-
44
- // Fallback background when there is no #background.
45
- &:before {
46
- content: "";
47
- position: fixed;
48
- top: 0;
49
- right: 0;
50
- bottom: 0;
51
- left: 0;
52
- background: $cover-banner-background;
53
- z-index: -2;
47
+ @include breakpoint(large) {
48
+ &,
49
+ .grid-container,
50
+ #form-wrapper {
51
+ min-height: $cover-banner-min-height;
52
+ }
54
53
  }
55
54
  }
55
+
56
+ // Fallback background when there is no #background.
57
+ &:before {
58
+ content: "";
59
+ display: block;
60
+ position: fixed;
61
+ top: 0;
62
+ right: 0;
63
+ bottom: 0;
64
+ left: 0;
65
+ background: $cover-banner-background;
66
+ z-index: -2;
67
+ }
56
68
  }
57
69
 
58
- // Displaying the #sidebar below the #content on small/medium screens.
59
- @include breakpoint(medium down) {
60
- #content + #sidebar {
61
- margin-top: 2 * $global-margin;
70
+ // Displaying a big headline on small/medium screens.
71
+ .cover-banner-layout.with-headline {
72
+ @include breakpoint(medium down) {
73
+ #background ~ #banner-content {
74
+ padding-top: 0;
75
+
76
+ .grid-container {
77
+ grid-template-rows: minmax(min(100vh, 100vw), auto) auto;
78
+ padding-top: 0;
79
+
80
+ @include breakpoint(small down) {
81
+ grid-template-rows: minmax(100vh, auto) auto;
82
+ }
83
+ }
84
+
85
+ #headline {
86
+ // A bit more than approximate sticky button height.
87
+ padding-bottom: 3 * $global-padding;
88
+
89
+ // Padding similar to large screens when not at the edge of the screen.
90
+ @include breakpoint(medium) {
91
+ @include breakpoint(portrait) {
92
+ padding-bottom: 2 * $global-padding;
93
+ }
94
+ }
95
+ }
96
+ }
97
+
98
+ #header {
99
+ // #banner-content’s 100vh should start at the top of the page.
100
+ position: absolute;
101
+ width: 100%;
102
+
103
+ ~ #banner-content #headline {
104
+ // A bit more than approximate header height.
105
+ padding-top: $global-padding * 5;
106
+ }
107
+ }
62
108
  }
63
109
  }