From 93072b1998764b1a1384108154ee609d96b5c234 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?s=C3=A9bastien=20poilvert?= Date: Thu, 12 Sep 2019 12:16:45 +0200 Subject: [PATCH 1/3] =?UTF-8?q?Mise=20=C3=A0=20jour=20du=20readme=20pour?= =?UTF-8?q?=20le=20workflow=20git?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- readme.txt | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/readme.txt b/readme.txt index a41aa81..badc710 100644 --- a/readme.txt +++ b/readme.txt @@ -11,26 +11,23 @@ License URI: LICENSE A starter theme called pixelsbretzels. -== Description == +== Workflow Git == + +- je me positionne sur develop (git checkout develop) +- Je créer une branch basée sur develop (git branch feature/project-init) +- Je me positionne sur cette nouvelle branch (git checkout feature/project-init) +- Je fais les modifications, concernant l’initialisation technique (ajout des fichiers de base, ajout de la structure de fichier scss, ajout des dossiers d’aoutput des styles et de js) +- Je commit et pousse sur le repo (git commit -m"J'ai cassé internet" && push) +- Une fois que j’ai poussé toutes mes modifs, je récupère le lien de PR que retourne la console et je complète le descriptif de cette PR (je fais attention à la branch de destination qui doit rester develop pour l’instant), puis j’ajoute toute l’équipe en reviewer pour obtenir au moins une à deux validations des co-équipiers. +Une fois les malidations obtenues, je merge la branch dans develop : +- Je me positionne sur develop: git checkout develop +- Je merge la branche : git merge feature/project-init +- Je supprime la branche git branch -d feature/project (on oublie pas de vérifier avant si les changements sont visibles sur le site :clin_d'œil: ) +- On pousse sur le repo la version à jour de develop (git push) +- J’ouvre une :bière: et je fête ce nouvel ajout de qualité +---- +Une bonne resource : https://www.atlassian.com/git/tutorials/syncing (modifié) -Description - -== Installation == - -1. In your admin panel, go to Appearance > Themes and click the Add New button. -2. Click Upload Theme and Choose File, then select the theme's .zip file. Click Install Now. -3. Click Activate to use your new theme right away. - -== Frequently Asked Questions == - -= Does this theme support any plugins? = - -pixelsbretzels includes support for Infinite Scroll in Jetpack. - -== Changelog == - -= 1.0 - May 12 2015 = -* Initial release == Credits == From e3297a3cc4abe622702be496eea3f23707d7ff59 Mon Sep 17 00:00:00 2001 From: akkolad Date: Thu, 12 Sep 2019 12:48:33 +0200 Subject: [PATCH 2/3] Ajout des fichiers SASS de underscores --- sass/_normalize.scss | 341 +++++++++++++++++++++++ sass/elements/_elements.scss | 33 +++ sass/elements/_lists.scss | 25 ++ sass/elements/_tables.scss | 4 + sass/forms/_buttons.scss | 22 ++ sass/forms/_fields.scss | 33 +++ sass/forms/_forms.scss | 3 + sass/layout/_content-sidebar.scss | 22 ++ sass/layout/_no-sidebar.scss | 11 + sass/layout/_sidebar-content.scss | 22 ++ sass/media/_captions.scss | 16 ++ sass/media/_galleries.scss | 21 ++ sass/media/_media.scss | 30 ++ sass/mixins/_mixins-master.scss | 29 ++ sass/modules/_accessibility.scss | 38 +++ sass/modules/_alignments.scss | 16 ++ sass/modules/_clearings.scss | 23 ++ sass/modules/_infinite-scroll.scss | 10 + sass/navigation/_links.scss | 19 ++ sass/navigation/_menus.scss | 107 +++++++ sass/navigation/_navigation.scss | 9 + sass/shop/_checkout.scss | 21 ++ sass/shop/_components.scss | 264 ++++++++++++++++++ sass/shop/_products.scss | 63 +++++ sass/shop/_single-product.scss | 83 ++++++ sass/shop/_tables.scss | 79 ++++++ sass/shop/_widgets.scss | 64 +++++ sass/site/_site.scss | 12 + sass/site/primary/_comments.scss | 6 + sass/site/primary/_posts-and-pages.scss | 23 ++ sass/site/secondary/_widgets.scss | 8 + sass/style.scss | 106 +++++++ sass/typography/_copy.scss | 45 +++ sass/typography/_headings.scss | 3 + sass/typography/_typography.scss | 15 + sass/variables-site/_colors.scss | 20 ++ sass/variables-site/_columns.scss | 13 + sass/variables-site/_structure.scss | 2 + sass/variables-site/_typography.scss | 5 + sass/variables-site/_variables-site.scss | 4 + sass/woocommerce.scss | 48 ++++ 41 files changed, 1718 insertions(+) create mode 100755 sass/_normalize.scss create mode 100755 sass/elements/_elements.scss create mode 100755 sass/elements/_lists.scss create mode 100755 sass/elements/_tables.scss create mode 100755 sass/forms/_buttons.scss create mode 100755 sass/forms/_fields.scss create mode 100755 sass/forms/_forms.scss create mode 100755 sass/layout/_content-sidebar.scss create mode 100755 sass/layout/_no-sidebar.scss create mode 100755 sass/layout/_sidebar-content.scss create mode 100755 sass/media/_captions.scss create mode 100755 sass/media/_galleries.scss create mode 100755 sass/media/_media.scss create mode 100755 sass/mixins/_mixins-master.scss create mode 100755 sass/modules/_accessibility.scss create mode 100755 sass/modules/_alignments.scss create mode 100755 sass/modules/_clearings.scss create mode 100755 sass/modules/_infinite-scroll.scss create mode 100755 sass/navigation/_links.scss create mode 100755 sass/navigation/_menus.scss create mode 100755 sass/navigation/_navigation.scss create mode 100755 sass/shop/_checkout.scss create mode 100755 sass/shop/_components.scss create mode 100755 sass/shop/_products.scss create mode 100755 sass/shop/_single-product.scss create mode 100755 sass/shop/_tables.scss create mode 100755 sass/shop/_widgets.scss create mode 100755 sass/site/_site.scss create mode 100755 sass/site/primary/_comments.scss create mode 100755 sass/site/primary/_posts-and-pages.scss create mode 100755 sass/site/secondary/_widgets.scss create mode 100755 sass/style.scss create mode 100755 sass/typography/_copy.scss create mode 100755 sass/typography/_headings.scss create mode 100755 sass/typography/_typography.scss create mode 100755 sass/variables-site/_colors.scss create mode 100755 sass/variables-site/_columns.scss create mode 100755 sass/variables-site/_structure.scss create mode 100755 sass/variables-site/_typography.scss create mode 100755 sass/variables-site/_variables-site.scss create mode 100755 sass/woocommerce.scss diff --git a/sass/_normalize.scss b/sass/_normalize.scss new file mode 100755 index 0000000..c5ad67a --- /dev/null +++ b/sass/_normalize.scss @@ -0,0 +1,341 @@ +/*! normalize.css v8.0.0 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type="button"], +[type="reset"], +[type="submit"] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type="button"]::-moz-focus-inner, +[type="reset"]::-moz-focus-inner, +[type="submit"]::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type="button"]:-moz-focusring, +[type="reset"]:-moz-focusring, +[type="submit"]:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type="checkbox"], +[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type="number"]::-webkit-inner-spin-button, +[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type="search"] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/sass/elements/_elements.scss b/sass/elements/_elements.scss new file mode 100755 index 0000000..2f68814 --- /dev/null +++ b/sass/elements/_elements.scss @@ -0,0 +1,33 @@ +html { + box-sizing: border-box; +} + +*, +*:before, +*:after { /* Inherit box-sizing to make it easier to change the property for components that leverage other behavior; see https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */ + box-sizing: inherit; +} + +body { + background: $color__background-body; /* Fallback for when there is no custom background color defined. */ +} + +hr { + background-color: $color__background-hr; + border: 0; + height: 1px; + margin-bottom: 1.5em; +} + +@import "lists"; + +img { + height: auto; /* Make sure images are scaled correctly. */ + max-width: 100%; /* Adhere to container width. */ +} + +figure { + margin: 1em 0; /* Extra wide images within figure tags don't overflow the content area. */ +} + +@import "tables"; diff --git a/sass/elements/_lists.scss b/sass/elements/_lists.scss new file mode 100755 index 0000000..fcda0c1 --- /dev/null +++ b/sass/elements/_lists.scss @@ -0,0 +1,25 @@ +ul, ol { + margin: 0 0 1.5em 3em; +} + +ul { + list-style: disc; +} + +ol { + list-style: decimal; +} + +li > ul, +li > ol { + margin-bottom: 0; + margin-left: 1.5em; +} + +dt { + font-weight: bold; +} + +dd { + margin: 0 1.5em 1.5em; +} diff --git a/sass/elements/_tables.scss b/sass/elements/_tables.scss new file mode 100755 index 0000000..acd5b33 --- /dev/null +++ b/sass/elements/_tables.scss @@ -0,0 +1,4 @@ +table { + margin: 0 0 1.5em; + width: 100%; +} diff --git a/sass/forms/_buttons.scss b/sass/forms/_buttons.scss new file mode 100755 index 0000000..cc54f95 --- /dev/null +++ b/sass/forms/_buttons.scss @@ -0,0 +1,22 @@ +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + border: 1px solid; + border-color: $color__border-button; + border-radius: 3px; + background: $color__background-button; + color: rgba(0, 0, 0, .8); + @include font-size(0.75); + line-height: 1; + padding: .6em 1em .4em; + + &:hover { + border-color: $color__border-button-hover; + } + + &:active, + &:focus { + border-color: $color__border-button-focus; + } +} diff --git a/sass/forms/_fields.scss b/sass/forms/_fields.scss new file mode 100755 index 0000000..122c073 --- /dev/null +++ b/sass/forms/_fields.scss @@ -0,0 +1,33 @@ +input[type="text"], +input[type="email"], +input[type="url"], +input[type="password"], +input[type="search"], +input[type="number"], +input[type="tel"], +input[type="range"], +input[type="date"], +input[type="month"], +input[type="week"], +input[type="time"], +input[type="datetime"], +input[type="datetime-local"], +input[type="color"], +textarea { + color: $color__text-input; + border: 1px solid $color__border-input; + border-radius: 3px; + padding: 3px; + + &:focus { + color: $color__text-input-focus; + } +} + +select { + border: 1px solid $color__border-input; +} + +textarea { + width: 100%; +} diff --git a/sass/forms/_forms.scss b/sass/forms/_forms.scss new file mode 100755 index 0000000..2036ef9 --- /dev/null +++ b/sass/forms/_forms.scss @@ -0,0 +1,3 @@ +@import "buttons"; + +@import "fields"; diff --git a/sass/layout/_content-sidebar.scss b/sass/layout/_content-sidebar.scss new file mode 100755 index 0000000..507cc59 --- /dev/null +++ b/sass/layout/_content-sidebar.scss @@ -0,0 +1,22 @@ +.content-area { + float: left; + margin: 0 (-$size__site-sidebar) 0 0; + width: $size__site-main; +} + +.site-main { + margin: 0 $size__site-sidebar 0 0; +} + +.site-content .widget-area { + float: right; + overflow: hidden; + width: $size__site-sidebar; +} + +.site-footer { + clear: both; + width: $size__site-main; +} + +@import "no-sidebar"; diff --git a/sass/layout/_no-sidebar.scss b/sass/layout/_no-sidebar.scss new file mode 100755 index 0000000..ae44e48 --- /dev/null +++ b/sass/layout/_no-sidebar.scss @@ -0,0 +1,11 @@ +.no-sidebar { + .content-area { + float: none; + margin-left: auto; + margin-right: auto; + } + + .site-main { + margin-right: 0; + } +} diff --git a/sass/layout/_sidebar-content.scss b/sass/layout/_sidebar-content.scss new file mode 100755 index 0000000..e765590 --- /dev/null +++ b/sass/layout/_sidebar-content.scss @@ -0,0 +1,22 @@ +.content-area { + float: right; + margin: 0 0 0 (-$size__site-sidebar); + width: $size__site-main; +} + +.site-main { + margin: 0 0 0 $size__site-sidebar; +} + +.site-content .widget-area { + float: left; + overflow: hidden; + width: $size__site-sidebar; +} + +.site-footer { + clear: both; + width: $size__site-main; +} + +@import "no-sidebar"; diff --git a/sass/media/_captions.scss b/sass/media/_captions.scss new file mode 100755 index 0000000..c299bfe --- /dev/null +++ b/sass/media/_captions.scss @@ -0,0 +1,16 @@ +.wp-caption { + margin-bottom: 1.5em; + max-width: 100%; + + img[class*="wp-image-"] { + @include center-block; + } + + .wp-caption-text { + margin: 0.8075em 0; + } +} + +.wp-caption-text { + text-align: center; +} diff --git a/sass/media/_galleries.scss b/sass/media/_galleries.scss new file mode 100755 index 0000000..c1773b8 --- /dev/null +++ b/sass/media/_galleries.scss @@ -0,0 +1,21 @@ +.gallery { + margin-bottom: 1.5em; +} + +.gallery-item { + display: inline-block; + text-align: center; + vertical-align: top; + width: 100%; + + // Loops to enumerate the classes for gallery columns. + @for $i from 2 through 9 { + .gallery-columns-#{$i} & { + max-width: map-get( $columns, $i ); + } + } +} + +.gallery-caption { + display: block; +} diff --git a/sass/media/_media.scss b/sass/media/_media.scss new file mode 100755 index 0000000..b46086d --- /dev/null +++ b/sass/media/_media.scss @@ -0,0 +1,30 @@ +.page-content .wp-smiley, +.entry-content .wp-smiley, +.comment-content .wp-smiley { + border: none; + margin-bottom: 0; + margin-top: 0; + padding: 0; +} + +/* Make sure embeds and iframes fit their containers. */ +embed, +iframe, +object { + max-width: 100%; +} + +/* Make sure logo link wraps around logo image. */ +.custom-logo-link { + display: inline-block; +} + +/*-------------------------------------------------------------- +## Captions +--------------------------------------------------------------*/ +@import "captions"; + +/*-------------------------------------------------------------- +## Galleries +--------------------------------------------------------------*/ +@import "galleries"; diff --git a/sass/mixins/_mixins-master.scss b/sass/mixins/_mixins-master.scss new file mode 100755 index 0000000..2578a21 --- /dev/null +++ b/sass/mixins/_mixins-master.scss @@ -0,0 +1,29 @@ +// Rem output with px fallback +@mixin font-size($sizeValue: 1) { + font-size: ($sizeValue * 16) * 1px; + font-size: $sizeValue * 1rem; +} + +// Center block +@mixin center-block { + display: block; + margin-left: auto; + margin-right: auto; +} + +// Clearfix +@mixin clearfix() { + content: ""; + display: table; + table-layout: fixed; +} + +// Clear after (not all clearfix need this also) +@mixin clearfix-after() { + clear: both; +} + +// Column width with margin +@mixin column-width($numberColumns: 3) { + width: map-get( $columns, $numberColumns ) - ( ( $columns__margin * ( $numberColumns - 1 ) ) / $numberColumns ); +} diff --git a/sass/modules/_accessibility.scss b/sass/modules/_accessibility.scss new file mode 100755 index 0000000..469887c --- /dev/null +++ b/sass/modules/_accessibility.scss @@ -0,0 +1,38 @@ +/* Text meant only for screen readers. */ +.screen-reader-text { + border: 0; + clip: rect(1px, 1px, 1px, 1px); + clip-path: inset(50%); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute !important; + width: 1px; + word-wrap: normal !important; /* Many screen reader and browser combinations announce broken words as they would appear visually. */ + + &:focus { + background-color: $color__background-screen; + border-radius: 3px; + box-shadow: 0 0 2px 2px rgba(0, 0, 0, 0.6); + clip: auto !important; + clip-path: none; + color: $color__text-screen; + display: block; + @include font-size(0.875); + font-weight: bold; + height: auto; + left: 5px; + line-height: normal; + padding: 15px 23px 14px; + text-decoration: none; + top: 5px; + width: auto; + z-index: 100000; /* Above WP toolbar. */ + } +} + +/* Do not show the outline on the skip link target. */ +#content[tabindex="-1"]:focus { + outline: 0; +} diff --git a/sass/modules/_alignments.scss b/sass/modules/_alignments.scss new file mode 100755 index 0000000..5db6ab4 --- /dev/null +++ b/sass/modules/_alignments.scss @@ -0,0 +1,16 @@ +.alignleft { + display: inline; + float: left; + margin-right: 1.5em; +} + +.alignright { + display: inline; + float: right; + margin-left: 1.5em; +} + +.aligncenter { + clear: both; + @include center-block; +} diff --git a/sass/modules/_clearings.scss b/sass/modules/_clearings.scss new file mode 100755 index 0000000..444b6b6 --- /dev/null +++ b/sass/modules/_clearings.scss @@ -0,0 +1,23 @@ +.clear:before, +.clear:after, +.entry-content:before, +.entry-content:after, +.comment-content:before, +.comment-content:after, +.site-header:before, +.site-header:after, +.site-content:before, +.site-content:after, +.site-footer:before, +.site-footer:after { + @include clearfix; +} + +.clear:after, +.entry-content:after, +.comment-content:after, +.site-header:after, +.site-content:after, +.site-footer:after { + @include clearfix-after; +} diff --git a/sass/modules/_infinite-scroll.scss b/sass/modules/_infinite-scroll.scss new file mode 100755 index 0000000..1172137 --- /dev/null +++ b/sass/modules/_infinite-scroll.scss @@ -0,0 +1,10 @@ +/* Globally hidden elements when Infinite Scroll is supported and in use. */ +.infinite-scroll .posts-navigation, /* Older / Newer Posts Navigation (always hidden) */ +.infinite-scroll.neverending .site-footer { /* Theme Footer (when set to scrolling) */ + display: none; +} + +/* When Infinite Scroll has reached its end we need to re-display elements that were hidden (via .neverending) before. */ +.infinity-end.neverending .site-footer { + display: block; +} diff --git a/sass/navigation/_links.scss b/sass/navigation/_links.scss new file mode 100755 index 0000000..95a5b4d --- /dev/null +++ b/sass/navigation/_links.scss @@ -0,0 +1,19 @@ +a { + color: $color__link; + + &:visited { + color: $color__link-visited; + } + &:hover, + &:focus, + &:active { + color: $color__link-hover; + } + &:focus { + outline: thin dotted; + } + &:hover, + &:active { + outline: 0; + } +} diff --git a/sass/navigation/_menus.scss b/sass/navigation/_menus.scss new file mode 100755 index 0000000..1a2b040 --- /dev/null +++ b/sass/navigation/_menus.scss @@ -0,0 +1,107 @@ +.main-navigation { + clear: both; + display: block; + float: left; + width: 100%; + + ul { + display: none; + list-style: none; + margin: 0; + padding-left: 0; + + ul { + box-shadow: 0 3px 3px rgba(0, 0, 0, 0.2); + float: left; + position: absolute; + top: 100%; + left: -999em; + z-index: 99999; + + ul { + left: -999em; + top: 0; + } + + li { + &:hover > ul, + &.focus > ul { + left: 100%; + } + } + + a { + width: 200px; + } + + :hover > a, + .focus > a { + } + + a:hover, + a.focus { + } + } + + li:hover > ul, + li.focus > ul { + left: auto; + } + } + + li { + float: left; + position: relative; + + &:hover > a, + &.focus > a { + } + } + + a { + display: block; + text-decoration: none; + } + + .current_page_item > a, + .current-menu-item > a, + .current_page_ancestor > a, + .current-menu-ancestor > a { + } +} + +/* Small menu. */ +.menu-toggle, +.main-navigation.toggled ul { + display: block; +} + +@media screen and (min-width: 37.5em) { + .menu-toggle { + display: none; + } + .main-navigation ul { + display: block; + } +} + +.comment-navigation, +.posts-navigation, +.post-navigation { + + .site-main & { + margin: 0 0 1.5em; + overflow: hidden; + } + + .nav-previous { + float: left; + width: 50%; + } + + .nav-next { + float: right; + text-align: right; + width: 50%; + } +} diff --git a/sass/navigation/_navigation.scss b/sass/navigation/_navigation.scss new file mode 100755 index 0000000..2e774b2 --- /dev/null +++ b/sass/navigation/_navigation.scss @@ -0,0 +1,9 @@ +/*-------------------------------------------------------------- +## Links +--------------------------------------------------------------*/ +@import "links"; + +/*-------------------------------------------------------------- +## Menus +--------------------------------------------------------------*/ +@import "menus"; diff --git a/sass/shop/_checkout.scss b/sass/shop/_checkout.scss new file mode 100755 index 0000000..3aebbcc --- /dev/null +++ b/sass/shop/_checkout.scss @@ -0,0 +1,21 @@ +/** + * Checkout + */ +@media screen and (min-width: 768px) { + .col2-set { + .form-row-first { + float: left; + margin-right: $columns__margin; + } + + .form-row-last { + float: right; + margin-right: 0; + } + + .form-row-first, + .form-row-last { + @include column-width(2); + } + } +} diff --git a/sass/shop/_components.scss b/sass/shop/_components.scss new file mode 100755 index 0000000..996116a --- /dev/null +++ b/sass/shop/_components.scss @@ -0,0 +1,264 @@ +/** + * Header cart + */ +.site-header-cart { + position: relative; + margin: 0; + padding: 0; + @include clearfix; + + .cart-contents { + text-decoration: none; + } + + .widget_shopping_cart { + display: none; + } + + .product_list_widget { + margin: 0; + padding: 0; + } +} + +/** + * Star rating + */ +.star-rating { + overflow: hidden; + position: relative; + height: 1.618em; + line-height: 1.618; + font-size: 1em; + width: 5.3em; + font-family: 'star'; + font-weight: 400; + + &:before { + content: "\53\53\53\53\53"; + opacity: .25; + float: left; + top: 0; + left: 0; + position: absolute; + } + + span { + overflow: hidden; + float: left; + top: 0; + left: 0; + position: absolute; + padding-top: 1.5em; + } + + span:before { + content: "\53\53\53\53\53"; + top: 0; + position: absolute; + left: 0; + color: $color__link; + } +} + +p.stars { + a { + position: relative; + height: 1em; + width: 1em; + text-indent: -999em; + display: inline-block; + text-decoration: none; + margin-right: 1px; + font-weight: 400; + + &:before { + display: block; + position: absolute; + top: 0; + left: 0; + width: 1em; + height: 1em; + line-height: 1; + font-family: "star"; + content: "\53"; + color: $color__text-main; + text-indent: 0; + opacity: .25; + } + + &:hover { + ~ a:before { + content: "\53"; + color: $color__text-main; + opacity: .25; + } + } + } + + &:hover { + a { + &:before { + content: "\53"; + color: $color__link; + opacity: 1; + } + } + } + + &.selected { + a.active { + &:before { + content: "\53"; + color: $color__link; + opacity: 1; + } + + ~ a:before { + content: "\53"; + color: $color__text-main; + opacity: .25; + } + } + + a:not(.active) { + &:before { + content: "\53"; + color: $color__link; + opacity: 1; + } + } + } +} + +/** + * Tabs + */ +.woocommerce-tabs { + ul.tabs { + list-style: none; + margin: 0; + padding: 0; + text-align: left; + + li { + display: block; + margin: 0; + position: relative; + + a { + padding: 1em 0; + display: block; + } + } + } + + .panel { + h2:first-of-type { + margin-bottom: 1em; + } + } +} + +/** + * Password strength meter + */ +.woocommerce-password-strength { + text-align: right; + + &.strong { + color: $woocommerce__color-success; + } + + &.short { + color: $woocommerce__color-error; + } + + &.bad { + color: $woocommerce__color-error; + } + + &.good { + color: $woocommerce__color-info; + } +} + +/** + * Forms + */ +.form-row { + &.woocommerce-validated { + input.input-text { + box-shadow: inset 2px 0 0 $woocommerce__color-success; + } + } + + &.woocommerce-invalid { + input.input-text { + box-shadow: inset 2px 0 0 $woocommerce__color-error; + } + } +} + +.required { + color: red; +} + +/** + * Notices + */ +.woocommerce-message, +.woocommerce-info, +.woocommerce-error, +.woocommerce-noreviews, +p.no-comments { + @include clearfix; + background-color: $woocommerce__color-success; + clear: both; +} + +.woocommerce-info, +.woocommerce-noreviews, +p.no-comments { + background-color: $woocommerce__color-info; +} + +.woocommerce-error { + background-color: $woocommerce__color-error; +} + +.demo_store { + position: fixed; + left: 0; + bottom: 0; + right: 0; + margin: 0; + padding: 1em; + background-color: $woocommerce__color-info; + z-index: 9999; +} + +@media screen and (min-width: 48em) { + /** + * Header cart + */ + .site-header-cart { + .widget_shopping_cart { + position: absolute; + top: 100%; + width: 100%; + z-index: 999999; + left: -999em; + display: block; + box-shadow: 0 3px 3px rgba(0, 0, 0, 0.2); + } + + &:hover, + &.focus { + .widget_shopping_cart { + left: 0; + display: block; + } + } + } +} diff --git a/sass/shop/_products.scss b/sass/shop/_products.scss new file mode 100755 index 0000000..3d4dd98 --- /dev/null +++ b/sass/shop/_products.scss @@ -0,0 +1,63 @@ +/** + * Products + */ +ul.products { + @include clearfix; + margin: 0; + padding: 0; + + li.product { + list-style: none; + position: relative; + margin-bottom: 2em; + + .woocommerce-loop-product__title { + font-size: 1rem; + } + + img { + display: block; + } + + .button { + display: block; + } + } +} + +@media screen and (min-width: 48em) { + ul.products { + li.product { + @include column-width(3); + float: left; + margin-right: $columns__margin; + + &.first { + clear: both; + } + + &.last { + margin-right: 0; + } + } + } + + .columns-1 { + ul.products { + li.product { + float: none; + width: 100%; + } + } + } + + @for $i from 2 through 6 { + .columns-#{$i} { + ul.products { + li.product { + @include column-width( $i ); + } + } + } + } +} diff --git a/sass/shop/_single-product.scss b/sass/shop/_single-product.scss new file mode 100755 index 0000000..7c0fe1c --- /dev/null +++ b/sass/shop/_single-product.scss @@ -0,0 +1,83 @@ +/** + * Single Product + */ +.single-product { + div.product { + @include clearfix; + position: relative; + + .woocommerce-product-gallery { + position: relative; + + .woocommerce-product-gallery__trigger { + position: absolute; + top: 1em; + right: 1em; + display: block; + z-index: 99; + } + + .flex-viewport { + margin-bottom: 1em; + } + + .flex-control-thumbs { + @include clearfix; + margin: 0; + padding: 0; + + li { + list-style: none; + cursor: pointer; + float: left; + + img { + opacity: .5; + + &.flex-active { + opacity: 1; + } + } + + &:hover { + img { + opacity: 1; + } + } + } + } + + @for $i from 2 through 5 { + &.woocommerce-product-gallery--columns-#{$i} { + .flex-control-thumbs { + li { + @include column-width($i); + + &:nth-child(#{$i}n) { + margin-right: 0; + } + + &:nth-child(#{$i}n+1) { + clear: both; + } + } + } + } + } + } + } +} + +.stock { + &:empty:before { + display: none; + } + + &.in-stock { + color: $woocommerce__color-success; + } + + &.out-of-stock { + color: $woocommerce__color-error; + } +} diff --git a/sass/shop/_tables.scss b/sass/shop/_tables.scss new file mode 100755 index 0000000..0b28281 --- /dev/null +++ b/sass/shop/_tables.scss @@ -0,0 +1,79 @@ +/** + * Shop tables + */ +table.shop_table_responsive { + thead { + display: none; + } + + tbody { + th { + display: none; + } + } + + tr { + td { + display: block; + text-align: right; + clear: both; + + &:before { + content: attr(data-title) ': '; + float: left; + } + + &.product-remove { + a { + text-align: left; + } + + &:before { + display: none; + } + } + + &.actions, + &.download-actions { + &:before { + display: none; + } + } + + &.download-actions { + .button { + display: block; + text-align: center; + } + } + } + } +} + +@media screen and (min-width: 48em) { + table.shop_table_responsive { + thead { + display: table-header-group; + } + + tbody { + th { + display: table-cell; + } + } + + tr { + th, td { + text-align: left; + } + + td { + display: table-cell; + + &:before { + display: none; + } + } + } + } +} diff --git a/sass/shop/_widgets.scss b/sass/shop/_widgets.scss new file mode 100755 index 0000000..63324b2 --- /dev/null +++ b/sass/shop/_widgets.scss @@ -0,0 +1,64 @@ +/** + * WooCommerce Price Filter + */ +.widget_price_filter { + .price_slider { + margin-bottom: 1.5em; + } + + .price_slider_amount { + text-align: right; + line-height: 2.4em; + + .button { + float: left; + } + } + + .ui-slider { + position: relative; + text-align: left; + } + + .ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1em; + height: 1em; + cursor: ew-resize; + outline: none; + background: $color__link; + box-sizing: border-box; + margin-top: -.25em; + opacity: 1; + + &:last-child { + margin-left: -1em; + } + + &:hover, + &.ui-state-active { + box-shadow: 0 0 0 .25em rgba(#000, 0.1); + } + } + + .ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + display: block; + border: 0; + background: $color__link; + } + + .price_slider_wrapper .ui-widget-content { + background: rgba(0,0,0,0.1); + } + + .ui-slider-horizontal { + height: .5em; + } + + .ui-slider-horizontal .ui-slider-range { + height: 100%; + } +} diff --git a/sass/site/_site.scss b/sass/site/_site.scss new file mode 100755 index 0000000..23408f0 --- /dev/null +++ b/sass/site/_site.scss @@ -0,0 +1,12 @@ +// @import "../layout/content-sidebar"; +// @import "../layout/sidebar-content"; + +/*-------------------------------------------------------------- +## Posts and pages +--------------------------------------------------------------*/ +@import "primary/posts-and-pages"; + +/*-------------------------------------------------------------- +## Comments +--------------------------------------------------------------*/ +@import "primary/comments"; diff --git a/sass/site/primary/_comments.scss b/sass/site/primary/_comments.scss new file mode 100755 index 0000000..13760c5 --- /dev/null +++ b/sass/site/primary/_comments.scss @@ -0,0 +1,6 @@ +.comment-content a { + word-wrap: break-word; +} +.bypostauthor { + display: block; +} diff --git a/sass/site/primary/_posts-and-pages.scss b/sass/site/primary/_posts-and-pages.scss new file mode 100755 index 0000000..9d6100d --- /dev/null +++ b/sass/site/primary/_posts-and-pages.scss @@ -0,0 +1,23 @@ +.sticky { + display: block; +} + +.post, +.page { + margin: 0 0 1.5em; +} + +.updated:not(.published) { + display: none; +} + +.page-content, +.entry-content, +.entry-summary { + margin: 1.5em 0 0; +} + +.page-links { + clear: both; + margin: 0 0 1.5em; +} diff --git a/sass/site/secondary/_widgets.scss b/sass/site/secondary/_widgets.scss new file mode 100755 index 0000000..09b3d74 --- /dev/null +++ b/sass/site/secondary/_widgets.scss @@ -0,0 +1,8 @@ +.widget { + margin: 0 0 1.5em; + + /* Make sure select elements fit in widgets. */ + select { + max-width: 100%; + } +} diff --git a/sass/style.scss b/sass/style.scss new file mode 100755 index 0000000..1d5190d --- /dev/null +++ b/sass/style.scss @@ -0,0 +1,106 @@ +/*! +Theme Name: _s +Theme URI: https://underscores.me/ +Author: Automattic +Author URI: https://automattic.com/ +Description: Hi. I'm a starter theme called _s, or underscores, if you like. I'm a theme meant for hacking so don't use me as a Parent Theme. Instead try turning me into the next, most awesome, WordPress theme out there. That's what I'm here for. +Version: 1.0.0 +License: GNU General Public License v2 or later +License URI: LICENSE +Text Domain: _s +Tags: custom-background, custom-logo, custom-menu, featured-images, threaded-comments, translation-ready + +This theme, like WordPress, is licensed under the GPL. +Use it to make something cool, have fun, and share what you've learned with others. + +_s is based on Underscores https://underscores.me/, (C) 2012-2017 Automattic, Inc. +Underscores is distributed under the terms of the GNU GPL v2 or later. + +Normalizing styles have been helped along thanks to the fine work of +Nicolas Gallagher and Jonathan Neal https://necolas.github.io/normalize.css/ +*/ + +/*-------------------------------------------------------------- +>>> TABLE OF CONTENTS: +---------------------------------------------------------------- +# Normalize +# Typography +# Elements +# Forms +# Navigation + ## Links + ## Menus +# Accessibility +# Alignments +# Clearings +# Widgets +# Content + ## Posts and pages + ## Comments +# Infinite scroll +# Media + ## Captions + ## Galleries +--------------------------------------------------------------*/ +@import "variables-site/variables-site"; +@import "mixins/mixins-master"; + +/*-------------------------------------------------------------- +# Normalize +--------------------------------------------------------------*/ +@import "normalize"; + +/*-------------------------------------------------------------- +# Typography +--------------------------------------------------------------*/ +@import "typography/typography"; + +/*-------------------------------------------------------------- +# Elements +--------------------------------------------------------------*/ +@import "elements/elements"; + +/*-------------------------------------------------------------- +# Forms +--------------------------------------------------------------*/ +@import "forms/forms"; + +/*-------------------------------------------------------------- +# Navigation +--------------------------------------------------------------*/ +@import "navigation/navigation"; + +/*-------------------------------------------------------------- +# Accessibility +--------------------------------------------------------------*/ +@import "modules/accessibility"; + +/*-------------------------------------------------------------- +# Alignments +--------------------------------------------------------------*/ +@import "modules/alignments"; + +/*-------------------------------------------------------------- +# Clearings +--------------------------------------------------------------*/ +@import "modules/clearings"; + +/*-------------------------------------------------------------- +# Widgets +--------------------------------------------------------------*/ +@import "site/secondary/widgets"; + +/*-------------------------------------------------------------- +# Content +--------------------------------------------------------------*/ +@import "site/site"; + +/*-------------------------------------------------------------- +# Infinite scroll +--------------------------------------------------------------*/ +@import "modules/infinite-scroll"; + +/*-------------------------------------------------------------- +# Media +--------------------------------------------------------------*/ +@import "media/media"; diff --git a/sass/typography/_copy.scss b/sass/typography/_copy.scss new file mode 100755 index 0000000..db7411f --- /dev/null +++ b/sass/typography/_copy.scss @@ -0,0 +1,45 @@ +p { + margin-bottom: 1.5em; +} + +dfn, cite, em, i { + font-style: italic; +} + +blockquote { + margin: 0 1.5em; +} + +address { + margin: 0 0 1.5em; +} + +pre { + background: $color__background-pre; + font-family: $font__pre; + @include font-size(0.9375); + line-height: $font__line-height-pre; + margin-bottom: 1.6em; + max-width: 100%; + overflow: auto; + padding: 1.6em; +} + +code, kbd, tt, var { + font-family: $font__code; + @include font-size(0.9375); +} + +abbr, acronym { + border-bottom: 1px dotted $color__border-abbr; + cursor: help; +} + +mark, ins { + background: $color__background-ins; + text-decoration: none; +} + +big { + font-size: 125%; +} diff --git a/sass/typography/_headings.scss b/sass/typography/_headings.scss new file mode 100755 index 0000000..8333692 --- /dev/null +++ b/sass/typography/_headings.scss @@ -0,0 +1,3 @@ +h1, h2, h3, h4, h5, h6 { + clear: both; +} diff --git a/sass/typography/_typography.scss b/sass/typography/_typography.scss new file mode 100755 index 0000000..b25e6cc --- /dev/null +++ b/sass/typography/_typography.scss @@ -0,0 +1,15 @@ +body, +button, +input, +select, +optgroup, +textarea { + color: $color__text-main; + font-family: $font__main; + @include font-size(1); + line-height: $font__line-height-body; +} + +@import "headings"; + +@import "copy"; diff --git a/sass/variables-site/_colors.scss b/sass/variables-site/_colors.scss new file mode 100755 index 0000000..f2dba39 --- /dev/null +++ b/sass/variables-site/_colors.scss @@ -0,0 +1,20 @@ +$color__background-body: #fff; +$color__background-screen: #f1f1f1; +$color__background-hr: #ccc; +$color__background-button: #e6e6e6; +$color__background-pre: #eee; +$color__background-ins: #fff9c0; + +$color__text-screen: #21759b; +$color__text-input: #666; +$color__text-input-focus: #111; +$color__link: royalblue; +$color__link-visited: purple; +$color__link-hover: midnightblue; +$color__text-main: #404040; + +$color__border-button: #ccc #ccc #bbb; +$color__border-button-hover: #ccc #bbb #aaa; +$color__border-button-focus: #aaa #bbb #bbb; +$color__border-input: #ccc; +$color__border-abbr: #666; diff --git a/sass/variables-site/_columns.scss b/sass/variables-site/_columns.scss new file mode 100755 index 0000000..27918b3 --- /dev/null +++ b/sass/variables-site/_columns.scss @@ -0,0 +1,13 @@ +$columns: ( + 1: 100%, + 2: 50%, + 3: 33.33%, + 4: 25%, + 5: 20%, + 6: 16.66%, + 7: 14.28%, + 8: 12.5%, + 9: 11.11% +); + +$columns__margin: 3.8%; diff --git a/sass/variables-site/_structure.scss b/sass/variables-site/_structure.scss new file mode 100755 index 0000000..d24a84e --- /dev/null +++ b/sass/variables-site/_structure.scss @@ -0,0 +1,2 @@ +$size__site-main: 100%; +$size__site-sidebar: 25%; diff --git a/sass/variables-site/_typography.scss b/sass/variables-site/_typography.scss new file mode 100755 index 0000000..302891e --- /dev/null +++ b/sass/variables-site/_typography.scss @@ -0,0 +1,5 @@ +$font__main: sans-serif; +$font__code: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace; +$font__pre: "Courier 10 Pitch", Courier, monospace; +$font__line-height-body: 1.5; +$font__line-height-pre: 1.6; diff --git a/sass/variables-site/_variables-site.scss b/sass/variables-site/_variables-site.scss new file mode 100755 index 0000000..1b23d51 --- /dev/null +++ b/sass/variables-site/_variables-site.scss @@ -0,0 +1,4 @@ +@import "colors"; +@import "typography"; +@import "structure"; +@import "columns"; diff --git a/sass/woocommerce.scss b/sass/woocommerce.scss new file mode 100755 index 0000000..e8b987e --- /dev/null +++ b/sass/woocommerce.scss @@ -0,0 +1,48 @@ +/* +Theme Name: _s + +WooCommerce styles override +*/ + +/** + * WooCommerce color variables + */ +$woocommerce__color-error: #e2401c; +$woocommerce__color-success: #0f834d; +$woocommerce__color-info: #3D9CD2; + +/** + * Imports + */ +@import "variables-site/variables-site"; +@import "mixins/mixins-master"; + +/** + * Shop tables + */ +@import "shop/tables"; + +/** + * Products + */ +@import "shop/products"; + +/** + * Single product + */ +@import "shop/single-product"; + +/** + * Checkout + */ +@import "shop/checkout"; + +/** + * General WooCommerce components + */ +@import "shop/components"; + +/** + * WooCommerce widgets + */ +@import "shop/widgets"; From 60bdf60205de1acbbc1fd74a9b112df639644244 Mon Sep 17 00:00:00 2001 From: akkolad Date: Thu, 12 Sep 2019 13:04:11 +0200 Subject: [PATCH 3/3] Ajout du logo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pour l'aperçu du thème --- screenshot.png | Bin 264 -> 29292 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/screenshot.png b/screenshot.png index 5bddc87ca3f27b55706acd9e8d8b4a51cce84ec7..6cdd4445192e461db5d098cf327cdf31a1e0f958 100644 GIT binary patch literal 29292 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