Projet

Général

Profil

0001-meudon-2021-new-theme-57548.patch

Thomas Jund, 14 octobre 2021 18:28

Télécharger (16,6 ko)

Voir les différences:

Subject: [PATCH] meudon-2021: new theme (#57548)

 static/meudon-2021/_custom.scss               | 531 ++++++++++++++++++
 static/meudon-2021/_vars.scss                 |  82 +++
 static/meudon-2021/config.json                |  16 +
 static/meudon-2021/img/account.svg            |  13 +
 static/meudon-2021/style.scss                 |   6 +
 .../combo/page_template_homepage.html         |  23 +
 templates/variants/meudon-2021/theme.html     |  26 +
 templates/variants/meudon-2021/wcs/base.html  |  18 +
 8 files changed, 715 insertions(+)
 create mode 100644 static/meudon-2021/_custom.scss
 create mode 100644 static/meudon-2021/_vars.scss
 create mode 100644 static/meudon-2021/config.json
 create mode 100644 static/meudon-2021/img/account.svg
 create mode 100644 static/meudon-2021/style.scss
 create mode 100644 templates/variants/meudon-2021/combo/page_template_homepage.html
 create mode 100644 templates/variants/meudon-2021/theme.html
 create mode 100644 templates/variants/meudon-2021/wcs/base.html
static/meudon-2021/_custom.scss
1
//
2
//	TYPO
3
//
4
%title {
5
	position: relative;
6
	margin-left: 1rem;
7
	&::before {
8
		content: "";
9
		position: absolute;
10
		bottom: 0;
11
		left: 0;
12
		width: 50px;
13
		height: 0.2em;
14
		background-color: currentColor;
15

  
16
	}
17
	@media ($max-mobile-viewport) {
18
		font-size: $fz-3;
19
	}
20
}
21
h1 {
22
	@extend %title;
23
	font-size: $fz-1;
24
	@media ($max-mobile-viewport) {
25
		font-size: $fz-2;
26
	}
27
}
28
h2 {
29
	@extend %title;
30
}
31
%button {
32
	text-transform: uppercase;
33
	font-weight: bold;
34
}
35
%cancel-button {
36
	background-color: $gray;
37
	border-color: $gray;
38
	&:hover {
39
		color: $gray-dark;
40
	}
41
}
42

  
43
//
44
//	SITE HEADER
45
//
46
$header-desktop-height: 100px;
47
$logo-width: 310px;
48

  
49
div#header {
50
	max-width: $header-width;
51
	#top {
52
		display: flex;
53
		align-items: center;
54

  
55
		@media ($min-desktop-viewport) {
56
			height: $header-desktop-height;
57
		}
58
		@media ($max-mobile-viewport) {
59
			flex-wrap: wrap;
60
			padding: calc(10px + 0.7rem) 10px;
61
			.site-nav {
62
				order: 1;
63
				flex: 1 1 100%;
64
			}
65
		}
66
	}
67
	// Logo
68
	#logo {
69
		flex: 1 1 $logo-width;
70
		@media ($max-mobile-viewport) {
71
			flex-basis: 100%;
72
		}
73
		padding: 0;
74
		font-size: 1em;
75
		&::before {
76
			content: none;
77
		}
78
		a {
79
			display: block;
80
			width: $logo-width;
81
			height: 40px;
82
			@media ($min-desktop-viewport) {
83
				margin-top: 10px;
84
			}
85
			@media ($max-mobile-viewport) {
86
				margin-bottom: 10px;
87
			}
88
		}
89
	}
90
}
91

  
92
// User links
93
#toplinks {
94
	$icon-size: 38px;
95
	position: static;
96
	z-index: 1;
97
	box-shadow: none;
98
	border: none;
99
	border-radius: 0;
100
	padding: 0.33em;
101
	padding: $fz-small 1rem;
102
	padding-left: calc(#{$icon-size} + (#{$fz-small} * 2));
103
	background: url(img/account.svg) left $fz-small center no-repeat $green;
104
	background-size: $icon-size;
105
	@media ($max-mobile-viewport) {
106
		margin-right: $nav-menu-side;
107
	}
108
	.sep {
109
		display: none;
110
	}
111
	a {
112
		color: $violet-dark;
113
		display: block;
114
		font-weight: bold;
115
		&:last-child {
116
			font-size: $fz-small;
117
			font-weight: normal;
118
		}
119
	}
120
}
121

  
122
//
123
//	NAV
124
//	inside header-content
125
//
126
.gru-nav-wrapper {
127
	@media ($max-mobile-viewport) {
128
		margin-top: calc(-1 * #{$nav-menu-side});
129
	}
130
}
131

  
132
div.gru-nav {
133
	text-transform: uppercase;
134
	> ul {
135
		margin: 0;
136
		> li {
137
			a {
138
				font-weight: normal;
139
			}
140
			&.selected > a,
141
			a:hover, a:focus {
142
				font-weight: bolder;
143
			}
144
		}
145
	}
146
	@media ($max-mobile-viewport) {
147
		$header-gutter: '(10px + 0.7em)';
148
		text-align: right;
149
		.gru-nav-button {
150
			display: inline-block;
151
			border: 5px solid transparent;
152
			.icon-bar {
153
				border-width: 3px;
154
			}
155
			+ ul {
156
				position: relative;
157
				text-align: left;
158
				border-top: 0;
159
				margin-left: calc(-1 * #{$header-gutter});
160
				margin-right: calc(-1 * #{$header-gutter});
161
			}
162
			&.toggled + ul {
163
				border-top: 10px solid white;
164
				overflow: visible;
165
				&::before {
166
					content: "";
167
					display: block;
168
					width: 20px;
169
					height: 20px;
170
					border: 10px solid transparent;
171
					border-bottom-color: $green;
172
					position: absolute;
173
					top: -20px;
174
					right: calc(#{$nav-menu-side / 2} - 10px + #{$header-gutter});
175
				}
176
			}
177
		}
178
	}
179
}
180

  
181
//
182
//	PAGE HEADER
183
//
184

  
185
%page-title {
186
	background-color: $violet-dark;
187
	background-image: var(--page-picture);
188
	background-position: center center;
189
	background-repeat: no-repeat;
190
	background-size: cover;
191
	padding : 4em 0;	
192
	color: white;
193
	> div, > h1 {
194
		max-width: $width;
195
		margin-left: auto;
196
		margin-right: auto;
197
	}
198
	* {
199
		color: inherit;
200
	}
201
}
202
.theme-page-header {
203
	max-width: $header-width;
204
	margin: 0 auto 2rem;
205

  
206
	.text-cell {
207
		@extend %page-title;
208
		display: flex;
209
		align-items: flex-end;
210
		min-height: calc(360em / 15);
211
		@media ($max-mobile-viewport) {
212
			min-height: calc(240em / 15);
213
		}
214
		> div {
215
			flex: 0 0 100%;
216
		}
217
	}
218
	div.carrousel-content {
219
		min-height: calc(360em / 15);
220
		@media ($max-mobile-viewport) {
221
			min-height: calc(240em / 15);
222
		}
223
		input + div div.carrousel-item {
224
			padding-bottom: $carrousel-navigation-bullet-size + 20;
225
			div.carrousel-item-content{
226
				flex: 0 1 $width;
227
				margin-left: auto;
228
				margin-right: auto;
229

  
230
				> a {
231
					max-width: 40rem;
232
					strong {
233
						@extend h1;
234
						margin-left: 0;
235
						color: white;
236
						display: block;
237
						line-height: normal;
238
					}
239
				}
240
			}
241
		}
242
		div.carrousel-nav {
243
			max-width: $width;
244
			left: 0;
245
			right: 0;
246
			margin-left: auto;
247
			margin-right: auto;
248
			text-align: left;
249
			label {
250
				background-color: black;
251
			}
252
		}
253
	}
254
}
255

  
256
//
257
//	MAIN
258
//
259
div#main-content-wrapper {
260
	position: static;
261
}
262
// home page template
263
.page-template-homepage {
264
	.gru-content { 
265
		flex-wrap: wrap;
266
	}
267
	#theme-top-section {
268
		flex: 0 0 100%;
269
		margin-top: 1rem;
270
		margin-bottom: 1rem;
271
		@media ($max-mobile-viewport) {
272
			padding-left: 0.7rem;
273
			padding-right: 0.7rem;
274
		}
275
	}
276
	// 3 cols layout
277
	@media ($min-desktop-viewport) {
278
		#columns {
279
			display: flex;
280
			.column {
281
				flex: 1 1 0;
282

  
283
				.cell {
284
					margin-left: #{$columns-gutter / 2};
285
					margin-right: #{$columns-gutter / 2};
286
				}
287
			}
288
		}
289
	}
290
}
291

  
292
//
293
//	CELLS
294
//
295

  
296
.gru-content div.cell {
297
	margin-bottom: $columns-gutter;
298
}
299

  
300
// cells custom style
301
.shadowed-cell {
302
	overflow: hidden;
303
	padding-top: 2rem;
304
	padding-bottom: 2rem;
305

  
306
	> div {
307
		box-shadow: 0 0 1.9em -0.8em #000;
308
		padding-top: 1rem;
309
		padding-bottom: 0.5rem;
310
	}
311
}
312

  
313
.shadowed-cell-top {
314
	@extend .shadowed-cell;
315
	padding-bottom: 0;
316
	> div {
317
		padding-bottom: 0;
318
	}
319
}
320

  
321
.shadowed-cell-bottom {
322
	@extend .shadowed-cell;
323
	padding-top: 0;
324
	> div {
325
		padding-top: 0;
326
	}
327
}
328

  
329
.list-of-forms-cell {
330
	$image-size: 2.5rem;
331
	.gru-content &.cell {
332
		color: white;
333
		background-color: $red-dark;
334
		h2:first-child {
335
			color: inherit;
336
			font-size: $fz-5;
337
			text-align: left;
338
			min-height: 5em;
339
			display: flex !important;
340
			align-items: center;
341
			padding-right: 3rem;
342
			padding-bottom: 0;
343
			padding-left: 1rem;
344
			margin-left: 0;
345
			background-color: $red;
346
			&::before {
347
				content: none;
348
			}
349
		}
350
		&.foldable.folded {
351
			h2:first-child {
352
				background-color: $violet-dark;
353
			}
354
		}
355
		// Picture position
356
		&.has-asset-picture {
357
			h2:first-child {
358
				padding-left: $image-size + 2;
359
			}
360
			> div {
361
				display: flex;
362
				flex-wrap: wrap;
363
				align-items: center;
364
				> * {
365
					flex: 0 0 100%;
366
				}
367
				> h2:first-child {
368
					flex: 1 0 50%;
369
					margin-left: -1 * ($image-size + 1);
370
				}
371
				> picture {
372
					display: block;
373
					order: -1;
374
					flex: 0 0 $image-size;
375
					align-self: center;
376
					margin-left: 1rem;
377
					position: relative;
378
					z-index: 1;
379
					img {
380
						padding: 0;
381
						height: $image-size;
382
						width: $image-size;
383
						object-fit: contain;
384
					}
385
				}
386
			}
387
		}
388
		ul > li {
389
			border-bottom: none;
390
			color: inherit;
391
			> *, a::after {
392
				color: inherit !important;
393
			}
394
			> a:hover {
395
				background-color: $red-xdark;
396
			}
397
		}
398
	}
399
}
400

  
401
#theme-top-section {
402
	.tracking-code-input-cell {
403
		@extend .shadowed-cell-bottom;
404
		.wcs-tracking-code-input {
405
			@media ($min-desktop-viewport) {
406
				&, & form {
407
					display: flex;
408
					align-items: flex-start;
409
				}
410
				h2 {
411
					flex: 1 0 auto;
412
					& + div {
413
						padding-top: 0;
414
						padding-left: 1.5rem;
415
					}
416
				}
417
				form {
418
					p {
419
						flex: 1 1 50%;
420
						margin-right: 0.5rem;
421
					}
422
					input {
423
						margin-right: 1rem;
424
					}
425
					button {
426
						margin-right: 0;
427
					}
428
				}
429
			}
430
		}
431
	}
432
}
433

  
434
.search-cell {
435
	.combo-search--button::before {
436
		content: "\f002"; // search icon
437
		font-family: FontAwesome;
438
		font-size: $fz-5;
439
	}
440
	.combo-search--button-label {
441
		display: none;
442
	}
443
}
444

  
445
.wcs-forms-of-category-cell {
446
	@extend .list-of-forms-cell;
447
}
448

  
449
//
450
//	Forms
451
//
452

  
453
label {
454
	font-style: italic;
455
	font-weight: 300;
456
}
457

  
458
//
459
//	WCS
460
//
461
.wcs-steps {
462
	text-transform: uppercase;
463
	font-weight: bold;
464
	font-size: $fz-5;
465
	@media ($min-desktop-viewport) {
466
		font-size: $fz-4;
467
	}
468
}
469

  
470
div#gauche {
471
	padding: 0.5rem;
472
	div#tracking-code {
473
		@extend .shadowed-cell;
474
		h3 {
475
			margin-left: 0;
476
		}
477
		a {
478
			font-weight: bold;
479
			color: $red;
480
			@media ($min-desktop-viewport) {
481
				padding-left: 0;
482
			}
483
			@media ($max-mobile-viewport) {
484
				padding-left: 1em;
485
			}
486
		}
487
	}
488
}
489
.theme-form-title {
490
	@extend %page-title;
491
	padding-left: calc(0.7rem + 0.5rem);
492
	@media ($min-desktop-viewport) {
493
		padding-left: 0.5rem;
494
	}
495
}
496
div#rub_service {
497
	h3 {
498
		@extend h2;
499
		margin-left: 0;
500
	}
501
	h4 {
502
		font-size: $fz-3;
503
	}
504
}
505

  
506
//
507
//	FOOTER
508
//
509
#theme-gray-footer-wrapper {
510
	background-color: $gray-light;
511
}
512
#theme-gray-footer {
513
	max-width: $width;
514
	margin-left: auto;
515
	margin-right: auto;
516
}
517
#footer-wrapper {
518
	margin-top: 0;
519
	padding: 0;
520
}
521
#theme-gray-footer,
522
#footer {
523
	padding: 3rem 0.7rem 2rem;
524
	@media ($min-desktop-viewport) {
525
		padding-top: 4.5rem;
526
		padding-bottom: 3.5rem;
527
	}
528
	.cell {
529
		margin-bottom: 1rem;
530
	}
531
}
static/meudon-2021/_vars.scss
1
// colors
2
$violet-dark: #22104b;
3
$red: #ec234f;
4
$red-dark: #ac1a3a;
5
$red-xdark: #84142d;
6
$green: #bcf157;
7
$gray-light: #e3e3e3;
8
$gray: #ccc;
9
$gray-dark: #999;
10

  
11
// font-size
12
$fz-1: 55em / 15;
13
$fz-2: 35em / 15;
14
$fz-3: 30em / 15;
15
$fz-4: 25em / 15;
16
$fz-5: 19em / 15;
17
$fz-small: 13em / 15;
18

  
19
$header-width: 1440em / 15;
20

  
21
// Core vars
22
$primary-color: $violet-dark;
23
$font-family: Roboto, sans-serif !default;
24
$font-color: $violet-dark;
25
$font-size: 15px;
26
$link-color: $red;
27
$width: 1220rem / 15;
28
$mobile-limit: 64em;
29
$very-small-limit: 35em;
30
$columns-gutter: 2rem;
31
$sidebar-width: 20rem;
32

  
33
$nav-background: transparent;
34
$nav-active-color: transparent;
35
$nav-color: $font-color;
36
$nav-menu-color: $nav-color;
37
$nav-submenu-background: $green;
38
$nav-mobile-menu-background: $green;
39
$nav-after-image: false;
40
$nav-menu-side: 4rem;
41

  
42
$title-background: transparent;
43
$title-color: $violet-dark;
44
$title-font-size: $fz-2;
45
$title-weight: 800;
46
$title-transform: uppercase;
47
$title-padding: 0 0 0.33em 0;
48

  
49
$cell-background: transparent;
50
$cell-border: none;
51
$cell-title-cover-border: false;
52

  
53
$carrousel-arrows: none;
54
$carrousel-text-position: middle left;
55
$carrousel-item-mask-color: false;
56

  
57
$button-background: $red;
58
$button-border: 1px solid $red;
59
$button-color: white;
60
$button-hover-background: white;
61
$button-hover-color: $red;
62
$buttons-order: cancel, previous, submit;
63

  
64
$widget-border: 1px solid $gray;
65
$widget-focus-border: 1px solid $font-color;
66
$widget-unique-checkbox-position: left;
67

  
68
$form-sidebar-position: right;
69
$form-sidebar-width: $sidebar-width;
70
$form-sidebar-gutter: $columns-gutter;
71

  
72
$wcs-steps-spacing: 0.7em;
73
$wcs-step-color: $gray;
74
$wcs-step-border-bottom: none;
75
$wcs-step-marker-background: $wcs-step-color;
76
$wcs-step-marker-color: white;
77
$wcs-step-current-marker-background: $red;
78
$wcs-step-current-marker-color: white;
79

  
80

  
81
$footer-background: $violet-dark;
82
$footer-link-color: $green;
static/meudon-2021/config.json
1
{
2
  "label": "Meudon 2021",
3
  "variables": {
4
    "pwa_display": "standalone",
5
    "theme_color": "#22104b",
6
    "email_header_asset": "emails:logo"
7
  },
8
  "settings": {
9
    "combo": {
10
      "COMBO_ASSET_SLOTS.update": {
11
        "header:logo": { "label": "Têtière : logo" },
12
        "emails:logo": {"label": "Emails : logo"}
13
      }
14
    }
15
  }
16
}
static/meudon-2021/img/account.svg
1
<?xml version="1.0" encoding="utf-8"?>
2
<!-- Generator: Adobe Illustrator 25.3.1, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
3
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
4
	 viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
5
<style type="text/css">
6
	.st0{fill:#22104B;}
7
</style>
8
<path class="st0" d="M256,0C114.5,0,0,114.5,0,256c0,140.2,113.5,256,256,256c141.9,0,256-115.1,256-256C512,114.5,397.5,0,256,0z
9
	 M87.4,406.5c89.8-100.7,247.4-100.7,337.2,0C334.5,507.3,177.5,507.3,87.4,406.5z M196,234v-30c0-33.1,26.9-60,60-60s60,26.9,60,60
10
	v30c0,33.1-26.9,60-60,60S196,267.1,196,234z M309.2,306.6c22.3-16.4,36.8-42.8,36.8-72.5v-30c0-49.6-40.4-90-90-90s-90,40.4-90,90
11
	v30c0,29.7,14.5,56.1,36.8,72.5c-49.6,10.5-96.7,35.8-134.1,76C43.6,345.4,30,301.6,30,256C30,131.4,131.4,30,256,30
12
	s226,101.4,226,226c0,45.6-13.6,89.4-38.7,126.5C406,342.4,358.9,317.1,309.2,306.6z"/>
13
</svg>
static/meudon-2021/style.scss
1
@charset "UTF-8";
2
@import '../includes/fonts/roboto';
3

  
4
@import 'vars';
5
@import '../includes/publik';
6
@import 'custom';
templates/variants/meudon-2021/combo/page_template_homepage.html
1
{% extends "combo/page_template.html" %}
2
{% load combo i18n %}
3

  
4

  
5
{% block content-top %}
6
  <div id="theme-top-section">
7
    {% placeholder "top-section" name="Haut de page" %}
8
  </div>
9
{% endblock %}
10

  
11
{% block columns %}
12
  <div class="column">
13
  {% trans "Left column" as name %}
14
  {% placeholder "content" name=name %}
15
  </div>
16
  <div class="column">
17
  {% placeholder "center" name="Colonne du milieu" %}
18
  </div>
19
  <div class="column">
20
  {% trans "Right column" as name %}
21
  {% placeholder "right" name=name %}
22
  </div>
23
{% endblock %}
templates/variants/meudon-2021/theme.html
1
{% extends "theme.html" %}
2
{% load combo %}
3

  
4
{# Move nav block into header-content block #}
5
{% block header-content %}
6
  {% block nav %}{% endblock %}
7
  {{ block.super }}
8
{% endblock %}
9
{% block after-header %}{% endblock %}
10

  
11
{# add Page title #}
12
{% block before-main-content %}
13
<div class="theme-page-header--wrapper">
14
  <header class="theme-page-header">
15
    {% placeholder "page-header" name="Entête de la page" %}
16
  </header>
17
</div>
18
{% endblock %}
19

  
20
{% block footer-pre %}
21
<div id="theme-gray-footer-wrapper">
22
  <div id="theme-gray-footer" class="clearfix">
23
    {% placeholder "gray-footer" name="Pied de page gris" %}
24
  </div>
25
</div>
26
{% endblock %}
templates/variants/meudon-2021/wcs/base.html
1
{% extends "wcs/base.html" %}
2
{% load static %}
3

  
4

  
5
{% block page-header %}
6
  {% if title %}
7
  <div class="theme-form-title">
8
    <h1>{{ title }}</h1>
9
  </div>
10
  {% endif %}
11
{% endblock %}
12

  
13
{# remove default title #}
14
{% block content %}
15
  {% with title=false %}
16
      {{ block.super }}
17
  {% endwith %}
18
{% endblock %}
0
-