Initialisation du plugin

master
JMarc_64 3 months ago
commit 7850bb6ba3

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

File diff suppressed because it is too large Load Diff

@ -0,0 +1,153 @@
/********************************************
* Personnalisation du thème html5up_txt
*
*Seuil des responsives
* - 1680px
* - 1280px
* - 980px
* - 840px
* - 736px
* - 480px
*
**********************************************/
/* Correctif html5up_TXT - SPIP
-----------------------------------------------*/
/* Force les margin du body à 0 */
body {
margin:0
}
/* Surchage l'image de fond de la bannière */
#header-wrapper {
background: url("<BOUCLE_doc(DOCUMENTS){tout}{id_document=#CONFIG{html5up_zerofour/doc_bandeau}}>#URL_DOCUMENT</BOUCLE_doc>");
background-size:cover;
background-position: center;
}
/* Bannière h1 devient span */
#header span {
position: absolute;
left: 1.75em;
top: 50%;
margin-top: -0.65em;
font-size: 1.5em;
color: #fff;
text-transform: uppercase;
font-weight: 800;
letter-spacing: 0.04em;
}
/* Bannière h2 devient h1 */
header h1, header h2 {
margin: 0 0 0.25em 0;
}
.box.feature1 header.first h1 {
font-size: 2.5em;
}
#banner h1 {
border: solid 1px rgba(255, 255, 255, 0.25);
border-left: 0;
border-right: 0;
color: #fff;
color: rgba(255, 255, 255, 0.75);
font-size: 2.35em;
font-weight: 700;
line-height: 1.3em;
margin: 0 0 1.5em 0;
}
#banner h1 strong {
font-weight: 800;
color: inherit;
}
#banner h1:before {
content: '';
display: block;
border-top: solid 1px;
border-color: #888;
border-color: rgba(255, 255, 255, 0.25);
margin: 10px 0 1.25em 0;
}
#banner h1:after {
content: '';
display: block;
border-bottom: solid 1px;
border-color: #888;
border-color: rgba(255, 255, 255, 0.25);
margin: 1.25em 0 10px 0;
}
#banner h1 strong {
font-weight: 800;
color: inherit;
}
#banner h1:before {
content: '';
display: block;
border-top: solid 1px;
border-color: #888;
border-color: rgba(255, 255, 255, 0.25);
margin: 10px 0 1.25em 0;
}
#banner h1:after {
content: '';
display: block;
border-bottom: solid 1px;
border-color: #888;
border-color: rgba(255, 255, 255, 0.25);
margin: 1.25em 0 10px 0;
}
@media screen and (max-width: 736px) {
#banner h1 {
font-size: 18pt !important;
}
}
/* Classe invisible */
span.texte-invisible {display:block;color:transparent;text-indent:-9999em;}
#banner h1.invisible, #banner h1.invisible:before, #banner h1.invisible:after {border:none}
/* Barre admin spip */
#spip-admin {bottom: 0;top: auto; z-index: 1001;}
/* Surcharge la feuille de style Typo */
.box {
margin: 0;
padding: 0 0 1em 0;
border: none;
}
/* inclure plugin newsletters */
#cta {
padding: 2em 0 0 0;
text-align: center;
}
#cta form {
margin: 0 auto;
width: 50%
}
/* Le portfolio */
#documents_portfolio a {margin:0;padding:0;border:0 !important;box-shadow:none;}
#documents_portfolio ul { list-style: none; padding: 0; }

@ -0,0 +1,103 @@
<?php
/**
* Fichier généré par la Fabrique de plugin v7
* le 2023-09-01 11:24:33
*
* Ce fichier de sauvegarde peut servir à recréer
* votre plugin avec le plugin «Fabrique» qui a servi à le créer.
*
* Bien évidemment, les modifications apportées ultérieurement
* par vos soins dans le code de ce plugin généré
* NE SERONT PAS connues du plugin «Fabrique» et ne pourront pas
* être recréées par lui !
*
* La «Fabrique» ne pourra que régénerer le code de base du plugin
* avec les informations dont il dispose.
*
**/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$data = array (
'fabrique' =>
array (
'version' => 7,
),
'paquet' =>
array (
'prefixe' => 'html5up_zerofour',
'nom' => 'Html5Up Zerofour',
'slogan' => 'Squelette adapté du thème TXT de HTML5 Zerofour',
'description' => '',
'logo' =>
array (
0 => '',
),
'credits' =>
array (
'logo' =>
array (
'texte' => '',
'url' => '',
),
),
'version' => '1.0.0',
'auteur' => 'JMarc_64',
'auteur_lien' => '',
'licence' => 'GNU/GPL',
'etat' => 'dev',
'compatibilite' => '[4.0;4.2.*]',
'documentation' => '',
'administrations' => '',
'schema' => '1.0.0',
'formulaire_config' => 'on',
'formulaire_config_titre' => 'html5up_txt:html5up_txt_titre',
'inserer' =>
array (
'paquet' => '',
'administrations' =>
array (
'maj' => '',
'desinstallation' => '',
'fin' => '',
),
'base' =>
array (
'tables' =>
array (
'fin' => '',
),
),
),
'scripts' =>
array (
'pre_copie' => '',
'post_creation' => '',
),
'exemples' => '',
'saisies_mode' => 'html',
),
'objets' =>
array (
),
'images' =>
array (
'paquet' =>
array (
'logo' =>
array (
0 =>
array (
'extension' => 'svg',
'contenu' => 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhLS0gQ3JlYXRlZCB3aXRoIElua3NjYXBlIChodHRwOi8vd3d3Lmlua3NjYXBlLm9yZy8pIC0tPgoKPHN2ZwogICB3aWR0aD0iNjQiCiAgIGhlaWdodD0iNjQiCiAgIHZpZXdCb3g9IjAgMCAxNi45MzMzMzMgMTYuOTMzMzMzIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcxODUiCiAgIGlua3NjYXBlOnZlcnNpb249IjEuMi4xICg5YzZkNDFlNDEwLCAyMDIyLTA3LTE0KSIKICAgc29kaXBvZGk6ZG9jbmFtZT0iemVyb2ZvdXItNjQuc3ZnIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxzb2RpcG9kaTpuYW1lZHZpZXcKICAgICBpZD0ibmFtZWR2aWV3MTg3IgogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzAwMDAwMCIKICAgICBib3JkZXJvcGFjaXR5PSIwLjI1IgogICAgIGlua3NjYXBlOnNob3dwYWdlc2hhZG93PSIyIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgICAgaW5rc2NhcGU6cGFnZWNoZWNrZXJib2FyZD0iMCIKICAgICBpbmtzY2FwZTpkZXNrY29sb3I9IiNkMWQxZDEiCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9Im1tIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAgICBpbmtzY2FwZTp6b29tPSIxMC4yMDczODEiCiAgICAgaW5rc2NhcGU6Y3g9IjMyLjE4MjU5NCIKICAgICBpbmtzY2FwZTpjeT0iMzEuNzQxNzM3IgogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI5NzQiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii0xMSIKICAgICBpbmtzY2FwZTp3aW5kb3cteT0iLTExIgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIiAvPgogIDxkZWZzCiAgICAgaWQ9ImRlZnMxODIiIC8+CiAgPGcKICAgICBpbmtzY2FwZTpsYWJlbD0iQ2FscXVlIDEiCiAgICAgaW5rc2NhcGU6Z3JvdXBtb2RlPSJsYXllciIKICAgICBpZD0ibGF5ZXIxIj4KICAgIDxyZWN0CiAgICAgICBzdHlsZT0iZmlsbDojNTM2YzY3O3N0cm9rZS13aWR0aDowLjI2NDU4MyIKICAgICAgIGlkPSJyZWN0MTAzMyIKICAgICAgIHdpZHRoPSIxNy4wMzAwOTYiCiAgICAgICBoZWlnaHQ9IjE3LjA1NDI4NyIKICAgICAgIHg9Ii0wLjA0ODM4MDk1MiIKICAgICAgIHk9Ii0wLjA5Njc2MTkwNSIKICAgICAgIGlua3NjYXBlOmxhYmVsPSJmb25kIiAvPgogICAgPHRleHQKICAgICAgIHhtbDpzcGFjZT0icHJlc2VydmUiCiAgICAgICBzdHlsZT0iZm9udC1zaXplOjkuNTQ5MzlweDtmb250LWZhbWlseTonQ291cmllciBOZXcnOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0NvdXJpZXIgTmV3LCBOb3JtYWwnO2ZpbGw6I2RiZTNlMjtzdHJva2Utd2lkdGg6MC4yNjQ1ODMiCiAgICAgICB4PSIxLjM5OTcyMjMiCiAgICAgICB5PSI1LjAyODYzMjYiCiAgICAgICBpZD0idGV4dDIyOTgiPjx0c3BhbgogICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgogICAgICAgICBpZD0idHNwYW4yMjk2IgogICAgICAgICBzdHlsZT0ic3Ryb2tlLXdpZHRoOjAuMjY0NTgzO2ZpbGw6I2RiZTNlMiI+PC90c3Bhbj48L3RleHQ+CiAgICA8dGV4dAogICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgICAgIHN0eWxlPSJmb250LXNpemU6MjcuNjg5NnB4O2ZvbnQtZmFtaWx5OidDb3VyaWVyIE5ldyc7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjonQ291cmllciBOZXcsIE5vcm1hbCc7ZmlsbDojOTNhY2E3O3N0cm9rZS13aWR0aDowLjc2NzE5IgogICAgICAgeD0iLTAuNzk5MTYzMSIKICAgICAgIHk9IjE3LjUzNTgxNiIKICAgICAgIGlkPSJ0ZXh0MjM1NCIKICAgICAgIHRyYW5zZm9ybT0ic2NhbGUoMS4xMTI2OTAxLDAuODk4NzIyODQpIj48dHNwYW4KICAgICAgICAgc29kaXBvZGk6cm9sZT0ibGluZSIKICAgICAgICAgaWQ9InRzcGFuMjM1MiIKICAgICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjc2NzE5O2ZpbGw6IzkzYWNhNyIKICAgICAgICAgeD0iLTAuNzk5MTYzMSIKICAgICAgICAgeT0iMTcuNTM1ODE2Ij5aPC90c3Bhbj48L3RleHQ+CiAgPC9nPgo8L3N2Zz4K',
),
),
),
'objets' =>
array (
),
),
);

@ -0,0 +1,71 @@
<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
<h3 class="titrem"><:html5up_zerofour:cfg_titre_parametrages:/></h3>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
<form method="post" action="#ENV{action}">
<div>
#ACTION_FORMULAIRE
#SET{fl,html5_zerofour}
<fieldset>
<legend><:html5up_zerofour:legend:></legend>
<div class="editer">
<label><:html5up_zerofour:label_config_contenu:></label>
<div class="text"><:html5up_zerofour:explication_config_contenu:></div>
</div>
</fieldset>
<!-- page sommaire -->
<fieldset>
<legend><:html5up_zerofour:legend_sommaire:></legend>
<ul>
<li>
[(#SAISIE{
checkbox,
config_titre,
explication=<:html5up_zerofour:explication_config_titre:>,
label=<:html5up_zerofour:label_config_titre:>,
default=on,
datas=#ARRAY{0,<:html5up_zerofour:texte_config_titre:>}})]
</li>
<li>[(#SAISIE{input,doc_bandeau,explication=<:html5up_zerofour:explication_doc_bandeau:>,label=<:html5up_zerofour:label_doc_bandeau:>,class=multilang,obligatoire=non})]</li>
<li>[(#SAISIE{input,text_sommaire,explication=<:html5up_zerofour:explication_text_sommaire:>,label=<:html5up_zerofour:label_text_sommaire:>,class=multilang,obligatoire=non})]</li>
<li>[(#SAISIE{input,long_intro,explication=<:html5up_zerofour:explication_long_intro:>,label=<:html5up_zerofour:label_long_intro:>,class=multilang,obligatoire=non,defaut=150})]</li>
<li>[(#SAISIE{input,articles_home_avant,explication=<:html5up_zerofour:explication_articles_home_avant:>,label=<:html5up_zerofour:label_articles_home_avant:>,class=multilang,obligatoire=non})]</li>
<li>[(#SAISIE{input,articles_home_apres,explication=<:html5up_zerofour:explication_articles_home_apres:>,label=<:html5up_zerofour:label_articles_home_apres:>,class=multilang,obligatoire=non})]</li>
<li>[(#SAISIE{input,text_blog,explication=<:html5up_zerofour:explication_text_blog:>,label=<:html5up_zerofour:label_text_blog:>,class=multilang,obligatoire=non})]</li>
<li>[(#SAISIE{input,rubrique_blog,explication=<:html5up_zerofour:explication_rubrique_blog:>,label=<:html5up_zerofour:label_rubrique_blog:>,class=multilang,obligatoire=non})]</li>
</ul>
</fieldset>
<!-- page rubrique -->
<fieldset>
<legend><:html5up_zerofour:legend_rubrique:></legend>
<ul>
<li>[(#SAISIE{input,text_sous_rubrique,explication=<:html5up_zerofour:explication_text_sous_rubrique:>,label=<:html5up_zerofour:label_text_sous_rubrique:>,class=multilang,obligatoire=non})]</li>
<li>[(#SAISIE{input,text_rubrique,explication=<:html5up_zerofour:explication_text_rubrique:>,label=<:html5up_zerofour:label_text_rubrique:>,class=multilang,obligatoire=non})]</li>
</ul>
</fieldset>
<!-- page article -->
<fieldset>
<legend><:html5up_zerofour:legend_article:></legend>
<ul>
<li>[(#SAISIE{input,text_article,explication=<:html5up_zerofour:explication_text_article:>,label=<:html5up_zerofour:label_text_article:>,class=multilang,obligatoire=non})]</li>
</ul>
</fieldset>
<input type="hidden" name="_meta_casier" value="html5up_zerofour" />
<p class="boutons"><span class="image_loading">&nbsp;</span><input type="submit" class="submit" value="<:bouton_enregistrer|attribut_html:/>" /></p>
</div>
</form>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

@ -0,0 +1,49 @@
[(#REM)
Head standard de toutes les pages ;
les elements specifiques (title, description) figurent dans chaque squelette
]
<meta http-equiv="Content-Type" content="text/html; charset=#CHARSET" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
[(#REM) Lien vers le flux RSS du site ]
[<link rel="alternate" type="application/rss+xml" title="<:syndiquer_site:>" href="(#URL_PAGE{backend})" />]
[(#REM)
On appelle les feuilles de style
dans l'ordre de la methode daisy http://daisy.tetue.net/img/daisy-nomenclature.png
1. Base CSS http://tinytypo.tetue.net/ ][
<link rel="stylesheet" href="(#CHEMIN{css/typo.css}|direction_css)" type="text/css" />][
<link rel="stylesheet" href="(#CHEMIN{css/media.css}|direction_css)" type="text/css" />]
[(#REM) 2. Style SPIP et ses plugins ]
[<link rel="stylesheet" href="(#CHEMIN{css/spip.css}|direction_css)" type="text/css" />]
#INSERT_HEAD_CSS
[(#REM) 3. Vos feuilles de style pour l'habillage du site a) theme, b) variante, c) specifique ]
[<link rel="stylesheet" href="(#CHEMIN{css/main.css}|direction_css)" type="text/css" />]
[<link rel="stylesheet" href="(#PRODUIRE{fond=css/zerofour.spip.css}|direction_css|timestamp)" type="text/css" media="all" />]
[<link rel="stylesheet" href="(#CHEMIN{css/perso.css}|direction_css)" type="text/css" />]
[(#REM)
Balise permettant aux plugins d'inserer des appels javascript ;
4. C'est ici que SPIP va inserer l'appel de la librairie jQuery
5. Et appeler a la fin compacte_head pour agreger et compacter tout le head dans des fichiers statiques si l'option est cochee dans Configuration
]
#INSERT_HEAD
[(#REM) 6. Vos scripts ]
[<script src="(#CHEMIN{js/script.js}|timestamp)" type="text/javascript"></script>]
[(#REM) Fierement fabrique avec SPIP ]
[<meta name="generator" content="SPIP (#SPIP_VERSION|header_silencieux)" />]
[(#REM) Favicon ]
[<link rel="icon" type="image/x-icon" href="(#CHEMIN{favicon.ico})" />
[<link rel="shortcut icon" type="image/x-icon" href="(#CHEMIN{favicon.ico})" />]]
[(#REM) meta robots ]
[<meta name="robots" content="(#ENV{robots})" />]

@ -0,0 +1,37 @@
<!-- Header -->
<header id="header">
<div class="inner">
<!-- Logo -->
<span>#NOM_SITE_SPIP</span>
<!-- Nav -->
<nav id="nav">
<ul>
<li class="current_page_item"><a href="index.html">Home</a></li>
<li>
<a href="#">Dropdown</a>
<ul>
<li><a href="#">Lorem ipsum dolor</a></li>
<li><a href="#">Magna phasellus</a></li>
<li>
<a href="#">Phasellus consequat</a>
<ul>
<li><a href="#">Lorem ipsum dolor</a></li>
<li><a href="#">Phasellus consequat</a></li>
<li><a href="#">Magna phasellus</a></li>
<li><a href="#">Etiam dolore nisl</a></li>
</ul>
</li>
<li><a href="#">Veroeros feugiat</a></li>
</ul>
</li>
<li><a href="left-sidebar.html">Left Sidebar</a></li>
<li><a href="right-sidebar.html">Right Sidebar</a></li>
<li><a href="no-sidebar.html">No Sidebar</a></li>
</ul>
</nav>
</div>
</header>

@ -0,0 +1,2 @@
/* breakpoints.js v1.0 | @ajlkn | MIT licensed */
var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e<t.events.length;e++)n=t.events[e],t.active(n.query)?n.state||(n.state=!0,n.handler()):n.state&&(n.state=!1)}};return e._=t,e.on=function(e,n){t.on(e,n)},e.active=function(e){return t.active(e)},e}();!function(e,t){"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?module.exports=t():e.breakpoints=t()}(this,function(){return breakpoints});

2
js/browser.min.js vendored

@ -0,0 +1,2 @@
/* browser.js v1.0.1 | @ajlkn | MIT licensed */
var browser=function(){"use strict";var t={name:null,version:null,os:null,osVersion:null,touch:null,mobile:null,_canUse:null,canUse:function(e){t._canUse||(t._canUse=document.createElement("div"));var n=t._canUse.style,r=e.charAt(0).toUpperCase()+e.slice(1);return e in n||"Moz"+r in n||"Webkit"+r in n||"O"+r in n||"ms"+r in n},init:function(){for(var e=navigator.userAgent,n="other",r=0,i=[["firefox",/Firefox\/([0-9\.]+)/],["bb",/BlackBerry.+Version\/([0-9\.]+)/],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/],["opera",/OPR\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)/],["edge",/Edge\/([0-9\.]+)/],["safari",/Version\/([0-9\.]+).+Safari/],["chrome",/Chrome\/([0-9\.]+)/],["ie",/MSIE ([0-9]+)/],["ie",/Trident\/.+rv:([0-9]+)/]],o=0;o<i.length;o++)if(e.match(i[o][1])){n=i[o][0],r=parseFloat(RegExp.$1);break}for(t.name=n,t.version=r,n="other",i=[["ios",/([0-9_]+) like Mac OS X/,function(e){return e.replace("_",".").replace("_","")}],["ios",/CPU like Mac OS X/,function(e){return 0}],["wp",/Windows Phone ([0-9\.]+)/,null],["android",/Android ([0-9\.]+)/,null],["mac",/Macintosh.+Mac OS X ([0-9_]+)/,function(e){return e.replace("_",".").replace("_","")}],["windows",/Windows NT ([0-9\.]+)/,null],["bb",/BlackBerry.+Version\/([0-9\.]+)/,null],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/,null],["linux",/Linux/,null],["bsd",/BSD/,null],["unix",/X11/,null]],o=r=0;o<i.length;o++)if(e.match(i[o][1])){n=i[o][0],r=parseFloat(i[o][2]?i[o][2](RegExp.$1):RegExp.$1);break}"mac"==n&&"ontouchstart"in window&&(1024==screen.width&&1366==screen.height||834==screen.width&&1112==screen.height||810==screen.width&&1080==screen.height||768==screen.width&&1024==screen.height)&&(n="ios"),t.os=n,t.osVersion=r,t.touch="wp"==t.os?0<navigator.msMaxTouchPoints:!!("ontouchstart"in window),t.mobile="wp"==t.os||"android"==t.os||"ios"==t.os||"bb"==t.os}};return t.init(),t}();!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?module.exports=n():e.browser=n()}(this,function(){return browser});

File diff suppressed because one or more lines are too long

2
js/jquery.min.js vendored

File diff suppressed because one or more lines are too long

@ -0,0 +1,67 @@
/*
ZeroFour by HTML5 UP
html5up.net | @ajlkn
Free for personal and commercial use under the CCA 3.0 license (html5up.net/license)
*/
(function($) {
var $window = $(window),
$body = $('body');
// Breakpoints.
breakpoints({
xlarge: [ '1281px', '1680px' ],
large: [ '981px', '1280px' ],
medium: [ '737px', '980px' ],
small: [ null, '736px' ]
});
// Play initial animations on page load.
$window.on('load', function() {
window.setTimeout(function() {
$body.removeClass('is-preload');
}, 100);
});
// Dropdowns.
$('#nav > ul').dropotron({
offsetY: -22,
mode: 'fade',
noOpenerFade: true,
speed: 300,
detach: false
});
// Nav.
// Title Bar.
$(
'<div id="titleBar">' +
'<a href="#navPanel" class="toggle"></a>' +
'<span class="title">' + $('#logo').html() + '</span>' +
'</div>'
)
.appendTo($body);
// Panel.
$(
'<div id="navPanel">' +
'<nav>' +
$('#nav').navList() +
'</nav>' +
'</div>'
)
.appendTo($body)
.panel({
delay: 500,
hideOnClick: true,
hideOnSwipe: true,
resetScroll: true,
resetForms: true,
side: 'left',
target: $body,
visibleClass: 'navPanel-visible'
});
})(jQuery);

@ -0,0 +1,587 @@
(function($) {
/**
* Generate an indented list of links from a nav. Meant for use with panel().
* @return {jQuery} jQuery object.
*/
$.fn.navList = function() {
var $this = $(this);
$a = $this.find('a'),
b = [];
$a.each(function() {
var $this = $(this),
indent = Math.max(0, $this.parents('li').length - 1),
href = $this.attr('href'),
target = $this.attr('target');
b.push(
'<a ' +
'class="link depth-' + indent + '"' +
( (typeof target !== 'undefined' && target != '') ? ' target="' + target + '"' : '') +
( (typeof href !== 'undefined' && href != '') ? ' href="' + href + '"' : '') +
'>' +
'<span class="indent-' + indent + '"></span>' +
$this.text() +
'</a>'
);
});
return b.join('');
};
/**
* Panel-ify an element.
* @param {object} userConfig User config.
* @return {jQuery} jQuery object.
*/
$.fn.panel = function(userConfig) {
// No elements?
if (this.length == 0)
return $this;
// Multiple elements?
if (this.length > 1) {
for (var i=0; i < this.length; i++)
$(this[i]).panel(userConfig);
return $this;
}
// Vars.
var $this = $(this),
$body = $('body'),
$window = $(window),
id = $this.attr('id'),
config;
// Config.
config = $.extend({
// Delay.
delay: 0,
// Hide panel on link click.
hideOnClick: false,
// Hide panel on escape keypress.
hideOnEscape: false,
// Hide panel on swipe.
hideOnSwipe: false,
// Reset scroll position on hide.
resetScroll: false,
// Reset forms on hide.
resetForms: false,
// Side of viewport the panel will appear.
side: null,
// Target element for "class".
target: $this,
// Class to toggle.
visibleClass: 'visible'
}, userConfig);
// Expand "target" if it's not a jQuery object already.
if (typeof config.target != 'jQuery')
config.target = $(config.target);
// Panel.
// Methods.
$this._hide = function(event) {
// Already hidden? Bail.
if (!config.target.hasClass(config.visibleClass))
return;
// If an event was provided, cancel it.
if (event) {
event.preventDefault();
event.stopPropagation();
}
// Hide.
config.target.removeClass(config.visibleClass);
// Post-hide stuff.
window.setTimeout(function() {
// Reset scroll position.
if (config.resetScroll)
$this.scrollTop(0);
// Reset forms.
if (config.resetForms)
$this.find('form').each(function() {
this.reset();
});
}, config.delay);
};
// Vendor fixes.
$this
.css('-ms-overflow-style', '-ms-autohiding-scrollbar')
.css('-webkit-overflow-scrolling', 'touch');
// Hide on click.
if (config.hideOnClick) {
$this.find('a')
.css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)');
$this
.on('click', 'a', function(event) {
var $a = $(this),
href = $a.attr('href'),
target = $a.attr('target');
if (!href || href == '#' || href == '' || href == '#' + id)
return;
// Cancel original event.
event.preventDefault();
event.stopPropagation();
// Hide panel.
$this._hide();
// Redirect to href.
window.setTimeout(function() {
if (target == '_blank')
window.open(href);
else
window.location.href = href;
}, config.delay + 10);
});
}
// Event: Touch stuff.
$this.on('touchstart', function(event) {
$this.touchPosX = event.originalEvent.touches[0].pageX;
$this.touchPosY = event.originalEvent.touches[0].pageY;
})
$this.on('touchmove', function(event) {
if ($this.touchPosX === null
|| $this.touchPosY === null)
return;
var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX,
diffY = $this.touchPosY - event.originalEvent.touches[0].pageY,
th = $this.outerHeight(),
ts = ($this.get(0).scrollHeight - $this.scrollTop());
// Hide on swipe?
if (config.hideOnSwipe) {
var result = false,
boundary = 20,
delta = 50;
switch (config.side) {
case 'left':
result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta);
break;
case 'right':
result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta));
break;
case 'top':
result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta);
break;
case 'bottom':
result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta));
break;
default:
break;
}
if (result) {
$this.touchPosX = null;
$this.touchPosY = null;
$this._hide();
return false;
}
}
// Prevent vertical scrolling past the top or bottom.
if (($this.scrollTop() < 0 && diffY < 0)
|| (ts > (th - 2) && ts < (th + 2) && diffY > 0)) {
event.preventDefault();
event.stopPropagation();
}
});
// Event: Prevent certain events inside the panel from bubbling.
$this.on('click touchend touchstart touchmove', function(event) {
event.stopPropagation();
});
// Event: Hide panel if a child anchor tag pointing to its ID is clicked.
$this.on('click', 'a[href="#' + id + '"]', function(event) {
event.preventDefault();
event.stopPropagation();
config.target.removeClass(config.visibleClass);
});
// Body.
// Event: Hide panel on body click/tap.
$body.on('click touchend', function(event) {
$this._hide(event);
});
// Event: Toggle.
$body.on('click', 'a[href="#' + id + '"]', function(event) {
event.preventDefault();
event.stopPropagation();
config.target.toggleClass(config.visibleClass);
});
// Window.
// Event: Hide on ESC.
if (config.hideOnEscape)
$window.on('keydown', function(event) {
if (event.keyCode == 27)
$this._hide(event);
});
return $this;
};
/**
* Apply "placeholder" attribute polyfill to one or more forms.
* @return {jQuery} jQuery object.
*/
$.fn.placeholder = function() {
// Browser natively supports placeholders? Bail.
if (typeof (document.createElement('input')).placeholder != 'undefined')
return $(this);
// No elements?
if (this.length == 0)
return $this;
// Multiple elements?
if (this.length > 1) {
for (var i=0; i < this.length; i++)
$(this[i]).placeholder();
return $this;
}
// Vars.
var $this = $(this);
// Text, TextArea.
$this.find('input[type=text],textarea')
.each(function() {
var i = $(this);
if (i.val() == ''
|| i.val() == i.attr('placeholder'))
i
.addClass('polyfill-placeholder')
.val(i.attr('placeholder'));
})
.on('blur', function() {
var i = $(this);
if (i.attr('name').match(/-polyfill-field$/))
return;
if (i.val() == '')
i
.addClass('polyfill-placeholder')
.val(i.attr('placeholder'));
})
.on('focus', function() {
var i = $(this);
if (i.attr('name').match(/-polyfill-field$/))
return;
if (i.val() == i.attr('placeholder'))
i
.removeClass('polyfill-placeholder')
.val('');
});
// Password.
$this.find('input[type=password]')
.each(function() {
var i = $(this);
var x = $(
$('<div>')
.append(i.clone())
.remove()
.html()
.replace(/type="password"/i, 'type="text"')
.replace(/type=password/i, 'type=text')
);
if (i.attr('id') != '')
x.attr('id', i.attr('id') + '-polyfill-field');
if (i.attr('name') != '')
x.attr('name', i.attr('name') + '-polyfill-field');
x.addClass('polyfill-placeholder')
.val(x.attr('placeholder')).insertAfter(i);
if (i.val() == '')
i.hide();
else
x.hide();
i
.on('blur', function(event) {
event.preventDefault();
var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
if (i.val() == '') {
i.hide();
x.show();
}
});
x
.on('focus', function(event) {
event.preventDefault();
var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']');
x.hide();
i
.show()
.focus();
})
.on('keypress', function(event) {
event.preventDefault();
x.val('');
});
});
// Events.
$this
.on('submit', function() {
$this.find('input[type=text],input[type=password],textarea')
.each(function(event) {
var i = $(this);
if (i.attr('name').match(/-polyfill-field$/))
i.attr('name', '');
if (i.val() == i.attr('placeholder')) {
i.removeClass('polyfill-placeholder');
i.val('');
}
});
})
.on('reset', function(event) {
event.preventDefault();
$this.find('select')
.val($('option:first').val());
$this.find('input,textarea')
.each(function() {
var i = $(this),
x;
i.removeClass('polyfill-placeholder');
switch (this.type) {
case 'submit':
case 'reset':
break;
case 'password':
i.val(i.attr('defaultValue'));
x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
if (i.val() == '') {
i.hide();
x.show();
}
else {
i.show();
x.hide();
}
break;
case 'checkbox':
case 'radio':
i.attr('checked', i.attr('defaultValue'));
break;
case 'text':
case 'textarea':
i.val(i.attr('defaultValue'));
if (i.val() == '') {
i.addClass('polyfill-placeholder');
i.val(i.attr('placeholder'));
}
break;
default:
i.val(i.attr('defaultValue'));
break;
}
});
});
return $this;
};
/**
* Moves elements to/from the first positions of their respective parents.
* @param {jQuery} $elements Elements (or selector) to move.
* @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations.
*/
$.prioritize = function($elements, condition) {
var key = '__prioritize';
// Expand $elements if it's not already a jQuery object.
if (typeof $elements != 'jQuery')
$elements = $($elements);
// Step through elements.
$elements.each(function() {
var $e = $(this), $p,
$parent = $e.parent();
// No parent? Bail.
if ($parent.length == 0)
return;
// Not moved? Move it.
if (!$e.data(key)) {
// Condition is false? Bail.
if (!condition)
return;
// Get placeholder (which will serve as our point of reference for when this element needs to move back).
$p = $e.prev();
// Couldn't find anything? Means this element's already at the top, so bail.
if ($p.length == 0)
return;
// Move element to top of parent.
$e.prependTo($parent);
// Mark element as moved.
$e.data(key, $p);
}
// Moved already?
else {
// Condition is true? Bail.
if (condition)
return;
$p = $e.data(key);
// Move element back to its original location (using our placeholder).
$e.insertAfter($p);
// Unmark element as moved.
$e.removeData(key);
}
});
};
})(jQuery);

@ -0,0 +1,78 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// A
'accueil' => 'Accueil',
'archives' => 'Archives',
// B
'bouton_subscribe' => 'S\'abonner',
// C
'contact' => 'Contact',
'cfg_exemple' => 'Exemple',
'cfg_exemple_explication' => 'Explication de cet exemple',
'cfg_titre_parametrages' => 'Paramétrages',
// E
'explication_articles_home_avant' => "La page sommaire affiche les rubriques de premier niveau. Vous pouvez avoir besoin d'ajouter un ou des articles AVANT cette liste de rubriques. Saisissez le (ou les) numéro(s) d'article(s) ou de page(s) unique(s) séparés par une virgule. Pour les mettre dans l'ordre voulu ajouter un 1. 2. dans le titre de l'article (les articles sont triés par num titre)." ,
'explication_articles_home_apres' => "La page sommaire affiche les rubriques de premier niveau. Vous pouvez avoir besoin d'ajouter un ou des articles APRES cette liste de rubriques. Saisissez le (ou les) numéro(s) d'article(s) ou de page(s) unique(s) séparés par une virgule. Pour les mettre dans l'ordre voulu ajouter un 1. 2. dans le titre de l'article (les articles sont triés par num titre)." ,
'explication_config_contenu' => "Le squelette utilise les sous titres pour les articles, n'oubliez pas de les activer dans <a href='?exec=configurer_contenu'>configurer contenu</a>",
'explication_config_titre' => "Nom du site apparait dans l'image sur fond",
'explication_doc_bandeau' => "L'id du document qui sera utilisé pour l'image du bandeau. Le thème original utilise une image de taille <b>2000 × 656 pixels</b> ",
'explication_text_sommaire' => "Texte du surtitre des rubriques (qui prendra la balise H2). 'Rubriques' par défaut",
'explication_text_blog' => "Texte du surtitre du blog (qui prendra la balise H2). 'Articles les plus récents' par défaut",
'explication_text_sous_rubrique' => "Texte du surtitre des sous-rubriques (qui prendra la balise H2). 'Rubriques' par défaut",
'explication_text_rubrique' => "Texte du surtitre des articles (qui prendra la balise H2). 'Articles' par défaut",
'explication_text_article' => "Texte du surtitre des articles de la même rubrique (qui prendra la balise H2). 'Dans la même rubrique' par défaut",
'explication_long_intro' => "Longueur de l'introduction des articles dans les vignettes",
'explication_rubrique_blog' => "Rubrique(s) présentée(s) sous forme de blog dans le bas de la page. Saisissez le (ou les) numéro(s) de rubrique(s) séparés par une virgule.",
// H
'html5up_zerofour_titre' => 'Configurer html5up zerofour',
// L
'label_articles_home_avant' => "Id article(s) avant liste des secteurs",
'label_articles_home_apres' => "Id article(s) après liste des secteurs",
'label_config_contenu' => "Sous-titre",
'label_config_titre' => "Le nom apparait sur l'image",
'label_doc_bandeau' => "Id image bandeau",
'label_text_sommaire' => "Surtitre des rubriques",
'label_text_sous_rubrique' => "Surtitre des sous-rubriques",
'label_text_rubrique' => "Surtitre des articles",
'label_text_article' => "Surtitre des articles de la même rubrique",
'label_text_blog' => "Surtitre du blog",
'label_long_intro' => "Longueur de l'introduction",
'label_rubrique_blog' => "Id rubrique(s) du blog",
'legend' => "Préambule",
'legend_sommaire' => "Paramétrage page Sommaire ",
'legend_rubrique' => "Paramétrage page Rubrique ",
'legend_article' => "Paramétrage page Article ",
'lire_suite' => "Lire la suite",
// N
'nous_suivre' => 'Nous suivre',
// R
'read_more' => 'Lire la suite',
// T
'texte_calltoaction' => "Pour avoir des nouvelles régulières, inscrivez votre mail ",
'texte_config_titre' => "Le nom du site sur l'image de fond",
'titre_configurer_html5up_zerofour' => 'Configurer Html5up Zerofour',
'titre_page_configurer_html5up_zerofour' => 'Configurer Html5up Zerofour',
// H
'html5up_zerofour_titre' => 'Html5Up zerofour',
);

@ -0,0 +1,15 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = [
// H
'html5up_zerofour_description' => '',
'html5up_zerofour_nom' => 'Html5Up Zerofour',
'html5up_zerofour_slogan' => 'Squelette adapté du thème TXT de HTML5 Zerofour',
];

@ -0,0 +1,32 @@
<paquet
prefix="html5up_zerofour"
categorie="squelette"
version="1.1.2"
etat="test"
compatibilite="[4.0.0;4.2.*]"
logo="prive/themes/spip/images/html5up_zerofour-xx.svg"
documentation="https://contrib.spip.net/HTML5UP-zerofour"
demonstration=""
>
<!--
Paquet généré le 2023-08-11 05:42:42
-->
<nom>Html5Up zerofour</nom>
<!-- Squelette adapté du thème zerofour de HTML5 UP -->
<auteur>JMarc_64</auteur>
<auteur lien="http://html5up.net">html5up</auteur>
<licence lien="http://html5up.net/license">CCA 3.0 License</licence>
<licence>GNU/GPL</licence>
<necessite nom="saisies" compatibilite="[3.23.2;]" />
<utilise nom="pages" compatibilite="[1.3.0;[" />
<utilise nom="sociaux" compatibilite="[2.3.2;]"/>
<utilise nom="mailshot" compatibilite="[1.7.2;]"/>
<utilise nom="newsletters" compatibilite="[1.3.24;]"/>
<utilise nom="mailsubscribers" compatibilite="[1.7.14;]"/>
<utilise nom="centre_image" compatibilite="[0.10.6;]"/>
<menu nom="configurer_html5up_zerofour" titre="html5up_zerofour:html5up_zerofour_titre" parent="menu_squelette" icone="images/html5up_zerofour-xx.svg" />
</paquet>

@ -0,0 +1,7 @@
[(#AUTORISER{configurer,_html5up_zerofour}|sinon_interdire_acces)]
<h1 class="grostitre"><:html5up_zerofour:titre_page_configurer_html5up_zerofour:/></h1>
<div class="ajax">
#FORMULAIRE_CONFIGURER_HTML5UP_ZEROFOUR
</div>

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="64"
height="64"
viewBox="0 0 16.933333 16.933333"
version="1.1"
id="svg185"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
sodipodi:docname="zerofour-64.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview187"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="false"
inkscape:zoom="10.207381"
inkscape:cx="32.182594"
inkscape:cy="31.741737"
inkscape:window-width="1920"
inkscape:window-height="974"
inkscape:window-x="-11"
inkscape:window-y="-11"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" />
<defs
id="defs182" />
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:#536c67;stroke-width:0.264583"
id="rect1033"
width="17.030096"
height="17.054287"
x="-0.048380952"
y="-0.096761905"
inkscape:label="fond" />
<text
xml:space="preserve"
style="font-size:9.54939px;font-family:'Courier New';-inkscape-font-specification:'Courier New, Normal';fill:#dbe3e2;stroke-width:0.264583"
x="1.3997223"
y="5.0286326"
id="text2298"><tspan
sodipodi:role="line"
id="tspan2296"
style="stroke-width:0.264583;fill:#dbe3e2"></tspan></text>
<text
xml:space="preserve"
style="font-size:27.6896px;font-family:'Courier New';-inkscape-font-specification:'Courier New, Normal';fill:#93aca7;stroke-width:0.76719"
x="-0.7991631"
y="17.535816"
id="text2354"
transform="scale(1.1126901,0.89872284)"><tspan
sodipodi:role="line"
id="tspan2352"
style="stroke-width:0.76719;fill:#93aca7"
x="-0.7991631"
y="17.535816">Z</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

@ -0,0 +1,223 @@
// breakpoints.scss v1.0 | @ajlkn | MIT licensed */
// Vars.
/// Breakpoints.
/// @var {list}
$breakpoints: () !global;
// Mixins.
/// Sets breakpoints.
/// @param {map} $x Breakpoints.
@mixin breakpoints($x: ()) {
$breakpoints: $x !global;
}
/// Wraps @content in a @media block targeting a specific orientation.
/// @param {string} $orientation Orientation.
@mixin orientation($orientation) {
@media screen and (orientation: #{$orientation}) {
@content;
}
}
/// Wraps @content in a @media block using a given query.
/// @param {string} $query Query.
@mixin breakpoint($query: null) {
$breakpoint: null;
$op: null;
$media: null;
// Determine operator, breakpoint.
// Greater than or equal.
@if (str-slice($query, 0, 2) == '>=') {
$op: 'gte';
$breakpoint: str-slice($query, 3);
}
// Less than or equal.
@elseif (str-slice($query, 0, 2) == '<=') {
$op: 'lte';
$breakpoint: str-slice($query, 3);
}
// Greater than.
@elseif (str-slice($query, 0, 1) == '>') {
$op: 'gt';
$breakpoint: str-slice($query, 2);
}
// Less than.
@elseif (str-slice($query, 0, 1) == '<') {
$op: 'lt';
$breakpoint: str-slice($query, 2);
}
// Not.
@elseif (str-slice($query, 0, 1) == '!') {
$op: 'not';
$breakpoint: str-slice($query, 2);
}
// Equal.
@else {
$op: 'eq';
$breakpoint: $query;
}
// Build media.
@if ($breakpoint and map-has-key($breakpoints, $breakpoint)) {
$a: map-get($breakpoints, $breakpoint);
// Range.
@if (type-of($a) == 'list') {
$x: nth($a, 1);
$y: nth($a, 2);
// Max only.
@if ($x == null) {
// Greater than or equal (>= 0 / anything)
@if ($op == 'gte') {
$media: 'screen';
}
// Less than or equal (<= y)
@elseif ($op == 'lte') {
$media: 'screen and (max-width: ' + $y + ')';
}
// Greater than (> y)
@elseif ($op == 'gt') {
$media: 'screen and (min-width: ' + ($y + 1) + ')';
}
// Less than (< 0 / invalid)
@elseif ($op == 'lt') {
$media: 'screen and (max-width: -1px)';
}
<