Compare commits
10 Commits
1d0aa5ac9e
...
3dd3438f44
Author | SHA1 | Date | |
---|---|---|---|
|
3dd3438f44 | ||
|
46a331a153 | ||
|
90e6e11f76 | ||
|
2abeec7ddb | ||
|
61ddd1c876 | ||
|
5905ee4d17 | ||
|
9dd29d0441 | ||
|
69b8e21f94 | ||
|
05a668c659 | ||
|
014a400b5e |
26
LISEZMOI.md
Normal file
26
LISEZMOI.md
Normal file
@ -0,0 +1,26 @@
|
||||
SeaCMS Default Theme
|
||||
==================
|
||||
|
||||
- [English](README.md)
|
||||
|
||||
Ce paquet est le thème principal de SeaCMS.
|
||||
|
||||
**Attention : le nom SeaCMS va changer car il semble déjà utilisé dans d'autres pays**
|
||||
|
||||
## Auteurs
|
||||
|
||||
- Jérémy Dufraisse (2022-2023)
|
||||
- Thatoo (2022-2023)
|
||||
- Marion Bouder (2022-2023)
|
||||
- Association Defis (2022-2023)
|
||||
|
||||
## Documentation
|
||||
|
||||
Quelques brides de documentation sont disponibles dans le fichier [doc/en/dev.md](doc/en/dev.md)
|
||||
|
||||
## Licence et garanties
|
||||
|
||||
Voir le fichier [LICENCE](./LICENCE) (et sa traduction française [LICENCE_FR](./LICENCE_FR))
|
||||
|
||||
**IMPORTANT**: Le fichier LICENCE file ne couvre pas le contenu des dossiers `vendor`. Voir le fichier LICENCE fournis dans chaque sous-dossier concerné par la bibliothèque importée.
|
||||
|
32
README.md
32
README.md
@ -1,42 +1,24 @@
|
||||
SeaCMS Default Theme
|
||||
==================
|
||||
|
||||
- [Français](#Fran%C3%A7ais)
|
||||
- [English](#English)
|
||||
|
||||
## Français
|
||||
|
||||
Ce paquet est le thème principal de SeaCMS.
|
||||
|
||||
**Attention : le nom SeaCMS va changer car il semble déjà utilisé dans d'autres pays**
|
||||
|
||||
### Auteurs
|
||||
|
||||
- Jérémy Dufraisse (2022-2023)
|
||||
- Thatoo (2022-2023)
|
||||
- Marion Bouder (2022-2023)
|
||||
- Association Defis (2022-2023)
|
||||
|
||||
### Licence et garanties
|
||||
|
||||
Voir le fichier [LICENCE](./LICENCE) (et sa traduction française [LICENCE_FR](./LICENCE_FR))
|
||||
|
||||
**IMPORTANT**: Le fichier LICENCE file ne couvre pas le contenu des dossiers `vendor`. Voir le fichier LICENCE fournis dans chaque sous-dossier concerné par la bibliothèque importée.
|
||||
|
||||
## English
|
||||
- [Français](LISEZMOI.md)
|
||||
|
||||
This package is the main theme of SeaCMS.
|
||||
|
||||
**Warning : the name SeaCMS will change because it seems already uses in other countries**
|
||||
|
||||
### Authors
|
||||
## Authors
|
||||
|
||||
- Jérémy Dufraisse (2022-2023)
|
||||
- Thatoo (2022-2023)
|
||||
- Marion Bouder (2022-2023)
|
||||
- Association Defis (2022-2023)
|
||||
|
||||
### Licence and warranty
|
||||
## Documentation
|
||||
|
||||
Some documentation is available into [doc/en/dev.md](doc/en/dev.md)
|
||||
|
||||
## Licence and warranty
|
||||
|
||||
See [LICENCE](./LICENCE) file (and french translation [LICENCE_FR](./LICENCE_FR))
|
||||
|
||||
|
8
contact.twig
Normal file
8
contact.twig
Normal file
@ -0,0 +1,8 @@
|
||||
{# seacms-theme
|
||||
# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% extends "index.twig" %}
|
||||
|
||||
{% block content %}
|
||||
{% include "includes/_contact_content.twig" %}
|
||||
{% endblock content %}
|
@ -437,7 +437,7 @@ header nav .burger-button {
|
||||
#admin-bar #list-content i,
|
||||
#admin-bar #tutoriel i {
|
||||
cursor: pointer;
|
||||
color: color: var(--main-color);
|
||||
color: var(--main-color);
|
||||
}
|
||||
|
||||
#admin-bar #list-content i:hover,
|
||||
@ -2486,3 +2486,12 @@ text-transform: uppercase;
|
||||
#bottombar a:hover {
|
||||
text-decoration: 2px wavy underline var(--color-1);
|
||||
}
|
||||
|
||||
// less tests
|
||||
.first-editable-button {
|
||||
.btn();
|
||||
.hero-btn();
|
||||
.bg-glaz();
|
||||
.border-rounded();
|
||||
.no-decoration();
|
||||
}
|
25
doc/en/dev.md
Normal file
25
doc/en/dev.md
Normal file
@ -0,0 +1,25 @@
|
||||
# Documentation on development
|
||||
|
||||
## Using `yarn`
|
||||
|
||||
[`yarn`](https://yarnpkg.com) is a package manager running on [`nodejs`](https://nodejs.org). It is veru useful to manage `javascript` or `css` projects.
|
||||
|
||||
### Adding a new package
|
||||
|
||||
1. find the name of the wanted package on the website <https://www.npmjs.com>
|
||||
2. on command line interface, on the root folder of this project, type `yarn add --dev name-of-the-package`
|
||||
3. Identify the needed files into folder `node_modules/name-of-the-package` ; most of time, files are into folder `node_modules/name-of-the-package/dist`
|
||||
4. modifify the file `js/extract-files-from-node-modules` to a new line for each file to import in the theme :
|
||||
- `copySync('node_modules/name-of-the-package/dist/js/file.min.js','js/vendor/name-of-the-package/file.min.js',{ overwrite: true })` for `javascript` file
|
||||
- `copySync('node_modules/name-of-the-package/dist/css/file.min.css','css/vendor/name-of-the-package/file.min.css',{ overwrite: true })` for `css` file
|
||||
- do not forget `LICENCE` file of the package, `copySync('node_modules/name-of-the-package/dist/LICENCE','css/vendor/name-of-the-package/LICENCE',{ overwrite: true })` for `css` (and for `javascript`)
|
||||
5. type `yarn install` in commpand line interface to start this script
|
||||
6. add a new line in concerned `twig` file (example : `includes/_head.twig`) to use the new file (example : `<link href="{{ theme_url }}/css/vendor/name-of-the-package/file.min.css" rel="stylesheet" type="text/css" />`)
|
||||
|
||||
### Removing a new package
|
||||
|
||||
1. find the name of the wanted package into file `package.json`
|
||||
2. on command line interface, on the root folder of this project, type `yarn remove name-of-the-package`
|
||||
3. Identify the associated files into folders `js/vendor` and `css/vendor` and delete them
|
||||
4. modifify the file `js/extract-files-from-node-modules` to remove lines related to this package
|
||||
5. remove line in concerned `twig` file (example : `includes/_head.twig`) that uses the new file (example : `<link href="{{ theme_url }}/css/vendor/name-of-the-package/file.min.css" rel="stylesheet" type="text/css" />`)
|
8
home.twig
Normal file
8
home.twig
Normal file
@ -0,0 +1,8 @@
|
||||
{# seacms-theme
|
||||
# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% extends "index.twig" %}
|
||||
|
||||
{% block content %}
|
||||
{% include "includes/_home_content.twig" %}
|
||||
{% endblock content %}
|
192
includes/_contact_content.twig
Normal file
192
includes/_contact_content.twig
Normal file
@ -0,0 +1,192 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
<section id="contact">
|
||||
<div class="layout-contact layout-maxed">
|
||||
<div class="md:flex p-36">
|
||||
|
||||
<article class="contact-card border-rounded flex flex-col justify-between flex-grow bg-blue bg-section bg-overlay bg-glazient color-white sm:p-24 md:m-24">
|
||||
<div class="card-content-top">
|
||||
<h3 id="title-card" class="color-white mt-8">{{ meta.titlecard }}</h3>
|
||||
<?php h3('title-card', 'color-white mt-8')?>
|
||||
<?php txt('intro-card', 'text-bold md:mt-24')?>
|
||||
</div>
|
||||
<div class="card-content-bottom">
|
||||
<ul class="card-info is-unstyled text-smaller text-bold mt-24 md:mb-24">
|
||||
<li><?php txt('item-1', 'ml-8')?></li>
|
||||
<li><?php txt('item-2', 'ml-8')?></li>
|
||||
<li><?php txt('item-3', 'ml-8')?></li>
|
||||
</ul>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="contact-form sm:p-24 md:m-24">
|
||||
|
||||
<form id="form-contact">
|
||||
|
||||
<?php h2('title-form', 'color-blue')?>
|
||||
<?php txt('intro-form', 'mb-16')?>
|
||||
|
||||
<div class="editable-hidden">
|
||||
|
||||
<label for="email-to"><?php _e("Email to")?> (your@domain.com)<span class="color-red">*</span></label><br>
|
||||
<?input("email-to", array('name' => 'email-to', 'placeholder' => __("Email to"), 'class' => 'w100'));?>
|
||||
<?input("email-hash", array('name' => 'email-hash', 'type' => 'hidden', 'class' => 'hidden'));?>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="grid grid-cols-2 gap-36 mt-24">
|
||||
<div>
|
||||
<input type="text" name="name" id="name" placeholder="<?php _e("Name / Forname")?> *" class="w100" required>
|
||||
</div>
|
||||
<div>
|
||||
<input type="email" name="email-from" id="email-from" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+.[a-z]{2,3}$" autocomplete="email" placeholder="<?php _e("Email")?> *" class="w100" required>
|
||||
</div>
|
||||
<div class="col-span-full">
|
||||
<input type="text" name="subject" id="subject" placeholder="<?php _e("Subject")?> *" class="w100" required>
|
||||
</div>
|
||||
<div class="col-span-full">
|
||||
<textarea name="message" id="message" placeholder="<?php _e("Message")?> *" rows="5" cols="150" class="mb-8" required></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="">
|
||||
|
||||
<!-- Captcha -->
|
||||
<?
|
||||
$chiffre = array('zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten');
|
||||
$operators = array("+", "-");
|
||||
$operator = $operators[array_rand($operators)];
|
||||
$nb1 = rand(1, 5);//10
|
||||
$nb2 = ($operator === '-') ? mt_rand(1, $nb1) : mt_rand(1, 5);// on évite les résultats négatifs en cas de soustraction
|
||||
eval('$captcha = strval('.$nb1.$operator.$nb2.');');
|
||||
$captcha_hash = hash('sha256', $captcha.$GLOBALS['pub_hash']);
|
||||
// On change le signe "-" moins de calcul en "−" lisible en accessibilité
|
||||
?>
|
||||
<div>
|
||||
<label for="captcha">
|
||||
<?php _e("For security reasons please solve the following calculation")?><span class="color-red">*</span> :
|
||||
<?=(__($chiffre[$nb1])." ".($operator=='-'?'−':$operator)." ".__($chiffre[$nb2]));?> =
|
||||
</label>
|
||||
<input type="text" name="captcha" id="captcha" placeholder="?" class="text-center" autocomplete="off" required>
|
||||
|
||||
<input type="hidden" name="captcha_hash" value="<?=$captcha_hash;?>">
|
||||
</div>
|
||||
|
||||
<!-- RGPD -->
|
||||
<div class="mt-24">
|
||||
<label for="rgpdcheckbox" class="inline"><?php _e("Please verify your entry and check the box to accept the storage and processing of this information.")?><span class="color-red">*</span></label>
|
||||
<input type="checkbox" name="rgpdcheckbox" id="rgpdcheckbox" required>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Bouton envoyer -->
|
||||
<div class="foat-right mt-36">
|
||||
<button type="submit" id="send" class="btn btn--line border-rounded text-bold">
|
||||
<?php _e("Send")?>
|
||||
<i class="icon moon-arrow-right ml-24" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<?php txt('texte-rgpd', 'mt-36')?>
|
||||
|
||||
<input type="hidden" name="rgpd_text" value="<?=htmlspecialchars(@$GLOBALS['content']['rgpd']);?>">
|
||||
|
||||
<input type="hidden" name="nonce_contact" value="<?=nonce("nonce_contact");?>">
|
||||
|
||||
<input type="hidden" name="referer" value="<?=htmlspecialchars((isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:""));?>">
|
||||
|
||||
</form>
|
||||
|
||||
</article>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<script>
|
||||
// Titre de la page en cours
|
||||
// title = document.title;
|
||||
|
||||
// Pour rétablir le fonctionnement du formulaire
|
||||
function activation_form(){
|
||||
desactive = false;
|
||||
|
||||
$("#form-contact #send .moon-settings").removeClass("icon-spin moon-settings").addClass("moon-arrow-right");
|
||||
|
||||
// Activation des champs du formulaire
|
||||
$("#form-contact input, #form-contact textarea, #form-contact button").attr("readonly", false).removeClass("disabled");
|
||||
|
||||
// On peut soumettre le formulaire avec la touche entrée
|
||||
//$("#form-contact").on("submit", function(event) { send_mail(event) });
|
||||
$("#form-contact button").attr("disabled", false);
|
||||
}
|
||||
|
||||
desactive = false;
|
||||
function send_mail(event)
|
||||
{
|
||||
event.preventDefault();
|
||||
|
||||
if($("#captcha").val()=="" || $("#name").val()=="" || $("#subject").val()=="" || $("#message").val()=="" || $("#email-from").val()=="" || $("#rgpdcheckbox").prop("checked") == false)
|
||||
error(__("Thank you for completing all the required fields!"));
|
||||
else if(!desactive)
|
||||
{
|
||||
desactive = true;
|
||||
|
||||
// Icone envoi en cours
|
||||
$("#form-contact #send .moon-settings").removeClass("moon-settings").addClass("icon-spin moon-settings");
|
||||
|
||||
// Désactive le formulaire
|
||||
$("#form-contact input, #form-contact textarea, #form-contact button").attr("readonly", true).addClass("disabled");
|
||||
|
||||
// Désactive le bouton submit (pour les soumissions avec la touche entrée)
|
||||
//$("#form-contact").off("submit");
|
||||
//$("#form-contact button").attr("disabled", true);// => ne permet pas le focus sur le btn une fois envoyer
|
||||
|
||||
$.ajax(
|
||||
{
|
||||
type: "POST",
|
||||
url: path+"theme/"+theme+(theme?"/":"")+"tpl/contact.php?mode=send-mail",
|
||||
data: $("#form-contact").serializeArray(),
|
||||
success: function(html){ $("body").append(html); }
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$(function()
|
||||
{
|
||||
// Message d'erreur en cas de mauvaise saisie du mail. Pour l'accessibilité
|
||||
var email_from = document.getElementById("email-from");
|
||||
email_from.addEventListener("invalid", function() {
|
||||
email_from.setCustomValidity("<?_e("Invalid email")?>. <?_e("Expected format")?> : name@example.com")
|
||||
}, false);
|
||||
email_from.addEventListener("input", function() {
|
||||
email_from.setCustomValidity("");
|
||||
}, false);
|
||||
|
||||
// Soumettre le formulaire
|
||||
$("#form-contact").submit(function(event)
|
||||
{
|
||||
send_mail(event)
|
||||
});
|
||||
// Avant la sauvegarde
|
||||
before_save.push(function() {
|
||||
// Encode
|
||||
if(data["content"]["email-to"] != undefined)
|
||||
data["content"]["email-to"] = btoa(data["content"]["email-to"]);
|
||||
});
|
||||
|
||||
// Edit
|
||||
edit.push(function()
|
||||
{
|
||||
// Décode
|
||||
$("#email-to").val(function(index, value) {
|
||||
if(value) return atob(value);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
</script>
|
@ -1,8 +1,5 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% from "includes/markdown_by_paragraph.twig" import markdown_by_paragraph %}
|
||||
{% from "includes/actions.twig" import actions %}
|
||||
{% from "includes/video.twig" import video %}
|
||||
<!-- Content Section-->
|
||||
<section class="page-section content" id="content">
|
||||
<div class="container">
|
||||
@ -16,12 +13,12 @@
|
||||
<div class="divider-custom-line"></div>
|
||||
</div>
|
||||
{% if meta.video %}
|
||||
{{ video(meta.video, meta.image, "content") }}
|
||||
{{ include("includes/blocks/_video.twig",{video:meta.video,image:meta.image,mode:"content"}) }}
|
||||
{% elseif meta.image %}
|
||||
<img class="img-fluid rounded mb-5 d-block mx-auto" src="{{ meta.image|url }}" alt="{{ meta.image_alt }}" />
|
||||
{% endif %}
|
||||
{{ content }}
|
||||
{{ actions(meta.actions, "single_page") }}
|
||||
{{ include('includes/blocks/_actions.twig',{actions:meta.actions, mode:"single_page"}) }}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
@ -1,7 +1,5 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% from "includes/markdown_by_paragraph.twig" import markdown_by_paragraph %}
|
||||
{% from "includes/actions.twig" import actions %}
|
||||
{% if not (index.location.disabled and index.social.disabled and index.footer.disabled) %}
|
||||
<!-- Footer-->
|
||||
<footer role="contentinfo">
|
@ -21,7 +21,8 @@
|
||||
|
||||
<!-- Core theme CSS -->
|
||||
<link href="{{ theme_url }}/css/vendor/knacss/knacss.min.css" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ theme_url }}/css/style.css" rel="stylesheet" type="text/css" />
|
||||
{# <link href="{{ theme_url }}/css/style.css" rel="stylesheet" type="text/css" /> #}
|
||||
<link href="{{ theme_url }}/css/style.less" rel="stylesheet/less" type="text/css" />
|
||||
|
||||
{{ include('@PicoContentEditor/head-styles.twig') }}
|
||||
|
||||
@ -29,6 +30,7 @@
|
||||
<script src="{{ theme_url }}/js/vendor/modernizr/modernizr.min.js" type="text/javascript"></script>
|
||||
<script src="{{ theme_url }}/js/utils.js" type="text/javascript"></script>
|
||||
<script src="{{ theme_url }}/js/pico.js" type="text/javascript"></script>
|
||||
<script src="{{ theme_url }}/js/vendor/less/less.min.js" type="text/javascript"></script>
|
||||
|
||||
{{ include('@PicoContentEditor/head-scripts.twig') }}
|
||||
|
@ -7,13 +7,11 @@
|
||||
<div class="navbar sticky shadow inside flex lg:pl-36">
|
||||
|
||||
<!-- Masthead Logo-->
|
||||
{% if pages["_meta"].meta.logo %}
|
||||
<div class="site-logo flex align-items-center py-24 mx-36">
|
||||
<a href="{{ "index"|link }}">
|
||||
<img height="50" width="200" src="{{ pages["_meta"].meta.logo|url }}" alt="" />
|
||||
<img height="50" width="200" src="{{ pages["header"].meta.logo|url }}" alt="" />
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- Nav bar-->
|
||||
<nav role="navigation" class="menu flex" aria-label="{{ index.header.Browsing_menu }}">
|
||||
@ -33,9 +31,7 @@
|
||||
|
||||
<!-- Github Repo-->
|
||||
<div class="holder-panel tablet-hidden">
|
||||
{% if pages["_meta"].meta.icon0 %}
|
||||
<div class="holder-contact bg-glaz text-bold"><a class="btn" href="">{{ pages["_meta"].meta.icon0_txt }}</a><i class="icon icon-{{ pages["_meta"].meta.icon0 }} color-white"></i></div>
|
||||
{% endif %}
|
||||
<div class="holder-contact bg-glaz text-bold"><a class="btn" href="">{{ pages["header"].meta.iconGit_txt }}</a><i class="icon icon-{{ pages["header"].meta.iconGit }} color-white"></i></div>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
@ -1,8 +1,5 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% from "includes/markdown_by_paragraph.twig" import markdown_by_paragraph %}
|
||||
{% from "includes/actions.twig" import actions %}
|
||||
{% from "includes/video.twig" import video %}
|
||||
<section id="hero" class="layout-maxed bg-blue">
|
||||
<div class="layout-hero bg-section bg-overlay bg-gradient sm:py-36 py-8" <?php bg('bg-hero')?>>
|
||||
<div class="hero-content grid md:grid-cols-2 flex flex-wrap sm:my-36 my-8 sm:py-36 py-8">
|
||||
@ -11,12 +8,12 @@
|
||||
<h1 id="hero-title" class="hero-title color-light">{{ site_title }}</h1>
|
||||
<div id="hero-desc" class="editable hero-desc color-light py-20 mb-16">
|
||||
<hr>
|
||||
<em class="color-2">Editable text with icon <i class="icon icon-{{ pages["_meta"].meta.icon2 }}" aria-hidden="true"></i></em>
|
||||
<em class="color-2">Editable text with icon <i class="icon icon-{{ meta.icon1 }}" aria-hidden="true"></i></em>
|
||||
</div>
|
||||
|
||||
<div class="hero-action grid lg:grid-cols-2">
|
||||
{% for button in pages["_meta"].meta.button %}
|
||||
<a class="btn hero-btn bg-glaz border-rounded no-decoration" href="{{ "index"|link }}">Editable button with icon<i class="icon icon-{{ button.icon }} ml-8"></i></a>
|
||||
{% for button in meta.button %}
|
||||
<a class="first-editable-button" href="{{ "index"|link }}">Editable button with icon<i class="icon icon-{{ button.icon }} ml-8"></i></a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
@ -24,10 +21,10 @@
|
||||
<div class="flex flex-col flex-grow justify-center mx-24 py-12">
|
||||
<div class="hero-card bg-white border-rounded shadow text-center animation slide-right fire">
|
||||
<span id="hero-card-icon" class="editable-media" data-width="80" data-height="80" style="max-width:80px; max-height:80px">
|
||||
<img class="" src="{{ pages["_meta"].meta.image1.url|url }}" style="max-width: 80px; max-height: 80px;" alt="{{ pages["_meta"].meta.image1.alt }}">
|
||||
<img class="" src="{{ meta.image1.url|url }}" style="max-width: 80px; max-height: 80px;" alt="{{ meta.image1.alt }}">
|
||||
</span>
|
||||
<h3 id="hero-card-title" class="editable hero-card-title color-blue my-16">{{ pages["_meta"].meta.image1.title }}</h3>
|
||||
<div id="hero-card-desc" class="editable hero-card-desc mb-0">{{ pages["_meta"].meta.image1.txt }}</div>
|
||||
<h3 id="hero-card-title" class="editable hero-card-title color-blue my-16">{{ meta.image1.title }}</h3>
|
||||
<div id="hero-card-desc" class="editable hero-card-desc mb-0">{{ meta.image1.txt }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -47,7 +44,7 @@
|
||||
|
||||
<!-- module pour bien identifier que ce sont les elements à dupliquer et a sauvegardé-->
|
||||
<div id="features-card" class="module sm:grid md:grid-cols-2 lg:grid-cols-4 gap-36 sm:mx-20 mx-8 py-36 animation delay-1 fade-in">
|
||||
{% for module in pages["_meta"].meta.module %}
|
||||
{% for module in meta.module %}
|
||||
<div class="features-card bg-white shadow border-rounded flex flex-col my-16 md:my-24">
|
||||
<div class="features-card-icon">
|
||||
<span id="features-card-icon-{{ module.id }}" data-class="ml-0" data-width="70" data-height="70" style="max-width: 70px; max-height: 70px;">
|
||||
@ -78,17 +75,15 @@
|
||||
<h2 class="page-section-heading text-center text-uppercase color-blue mb-0">{{ current_page.title }}</h2>
|
||||
<h2 class="page-section-heading text-center text-uppercase text-secondary mb-0">{{ meta.title ? meta.title : current_page.id }}</h2>
|
||||
<!-- Icon Divider-->
|
||||
{% if pages["_meta"].meta.icon1 %}
|
||||
<a class="btn hero-btn bg-glaz border-rounded no-decoration" href="{{ "index"|link }}">Editable button with icon<i class="icon icon-{{ pages["_meta"].meta.icon1 }} ml-8"></i></a>
|
||||
{% endif %}
|
||||
<a class="btn hero-btn bg-glaz border-rounded no-decoration" href="{{ "index"|link }}">Editable button with icon<i class="icon icon-{{ meta.icon1 }} ml-8"></i></a>
|
||||
</div>
|
||||
<div class="layout-maxed py-36">
|
||||
{# {% if meta.video %}
|
||||
{{ video(meta.video, meta.image, "content") }}
|
||||
{{ include("includes/blocks/_video.twig",{video:meta.video,image:meta.image,mode:"content"}) }}
|
||||
{% elseif meta.image %}
|
||||
<img class="img-fluid rounded mb-5 d-block mx-auto" src="{{ meta.image|url }}" alt="{{ meta.image_alt }}" />
|
||||
{% endif %} #}
|
||||
{{ content }}
|
||||
{# {{ actions(meta.actions, "single_page") }} #}
|
||||
{# {{ include('includes/blocks/_actions.twig',{actions:meta.actions, mode:"single_page"}) }} #}
|
||||
</div>
|
||||
</section>
|
@ -1,23 +0,0 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% from "includes/markdown_by_paragraph.twig" import markdown_by_paragraph %}
|
||||
{% from "includes/actions.twig" import actions %}
|
||||
<!-- About Section-->
|
||||
<section class="page-section bg-primary text-white mb-0" id="about">
|
||||
<div class="container">
|
||||
<!-- About Section Heading-->
|
||||
<h2 class="page-section-heading text-center text-uppercase text-white">{{ index.about.title ? index.about.title : "About" }}</h2>
|
||||
<!-- Icon Divider-->
|
||||
<div class="divider-custom divider-light">
|
||||
<div class="divider-custom-line"></div>
|
||||
<div class="divider-custom-icon"><i class="fas fa-{{ index.about.divider ? index.about.divider : 'star' }}"></i></div>
|
||||
<div class="divider-custom-line"></div>
|
||||
</div>
|
||||
<!-- About Section Content-->
|
||||
<div class="row">
|
||||
{{ markdown_by_paragraph(index.about.content ? index.about.content : config.theme_config.demo.about.content, "about") }}
|
||||
</div>
|
||||
<!-- About Section Buttons-->
|
||||
{{ actions(index.about.actions ? index.about.actions : not index.about.content ? config.theme_config.demo.about.actions, "about") }}
|
||||
</div>
|
||||
</section>
|
@ -1,53 +0,0 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% macro actions(actions, mode, include_close_button = true) %}
|
||||
{% set has_actions = actions ? true : false %}
|
||||
{{ has_actions ? '<div class="text-center mt-4">' }}
|
||||
{% if mode == "portfolio" and include_close_button %}
|
||||
{% set close_button = {"icon": "times", "content": "Close Window", "color": "primary", "outline": false, "close_button": true} %}
|
||||
{% set actions = actions ? actions|merge([close_button]) : [close_button] %}
|
||||
{% endif %}
|
||||
|
||||
{% for action in actions %}
|
||||
{% set classes = ["btn"] %}
|
||||
{% if mode == "social" %}
|
||||
{% set classes = classes|merge(["btn-social","mx-1"]) %}
|
||||
{% else %}
|
||||
{% set classes = classes|merge(["mx-1", "my-1"]) %}
|
||||
{% endif %}
|
||||
{% set size = "btn-xl" %}
|
||||
{% set color = mode in ["about", "social"] ? "light" : "primary" %}
|
||||
{% set outline = mode in ["about", "social"] ? true : false %}
|
||||
|
||||
{% if action.size in ["small", "large", "xlarge"] %}
|
||||
{% set size = action.size|replace({"small": "btn-sm", "large": "btn-lg", "xlarge": "btn-xl"}) %}
|
||||
{% endif %}
|
||||
|
||||
{% if action.color in ["primary", "secondary", "success", "danger", "warning", "info", "light", "dark"] %}
|
||||
{% set color = action.color %}
|
||||
{% endif %}
|
||||
|
||||
{% if action.outline is defined and action.outline in [true, false] %}
|
||||
{% set outline = action.outline %}
|
||||
{% endif %}
|
||||
|
||||
{% if mode != "social" and not action.close_button and action.size != "medium" %}{% set classes = classes|merge([size]) %}{% endif %}
|
||||
|
||||
{% set classes = classes|merge([["btn-", (outline ? "outline-"), color ]|join]) %}
|
||||
|
||||
{% if action.disabled %}{% set classes = classes|merge(["disabled"]) %}{% endif %}
|
||||
|
||||
{% if action.close_button %}
|
||||
{% set classes = classes|merge(["d-block", "mx-auto", "mt-4"]) %}
|
||||
{% endif %}
|
||||
|
||||
{{ action.close_button ? '<button data-bs-dismiss="modal"' : "<a" }} class="{{ classes|join(" ") }}" {% if action.link and not action.disabled %} href="{{ action.link|url }}" {% endif %}>
|
||||
{% if action.icon %}
|
||||
<i class="{{ [(action.brands ? 'fab' : 'fas'), 'fa-fw', ('fa-' ~ action.icon), (mode != 'social' ? 'me-2')]|join(' ')}}"></i>
|
||||
{% endif %}
|
||||
{{ mode != "social" ? action.content }}
|
||||
{{ action.close_button ? "</button>" : "</a>" }}
|
||||
|
||||
{% endfor %}
|
||||
{{ has_actions ? "</div>" }}
|
||||
{% endmacro %}
|
67
includes/blocks/_actions.twig
Normal file
67
includes/blocks/_actions.twig
Normal file
@ -0,0 +1,67 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
|
||||
{% if mode == "portfolio" and (not (include_close_button is defined) or (include_close_button is same as(true))) %}
|
||||
{% set actions = (actions ? actions : [])|merge([{
|
||||
"icon": "times",
|
||||
"content": "Close Window",
|
||||
"color": "primary",
|
||||
"outline": false,
|
||||
"close_button": true}]) %}
|
||||
{% endif %}
|
||||
|
||||
{% if actions %}
|
||||
<div class="text-center mt-4">
|
||||
{% block actionscontent %}
|
||||
{% for action in actions %}
|
||||
{% if action.close_button %}
|
||||
<button data-bs-dismiss="modal"
|
||||
|
||||
{% block attributes %}
|
||||
class="btn {{
|
||||
(mode == "social")
|
||||
? 'btn-social mx-1'
|
||||
: 'mx-1 my-1'
|
||||
}}
|
||||
{%- if mode != "social" and not action.close_button and action.size != "medium"
|
||||
%} {% if action.size in ["small", "large", "xlarge"] -%}
|
||||
{{- action.size|replace({"small": "btn-sm", "large": "btn-lg", "xlarge": "btn-xl"}) -}}
|
||||
{% else %}btn-xl
|
||||
{%- endif -%}
|
||||
{%- endif %} btn-{{
|
||||
(
|
||||
action.outline is same as(true) or
|
||||
mode in ["about", "social"]
|
||||
) ? 'outline-' }}{{
|
||||
(action.color in ["primary", "secondary", "success", "danger", "warning", "info", "light", "dark"])
|
||||
? action.color
|
||||
: (
|
||||
(mode in ["about", "social"])
|
||||
? 'light'
|
||||
: 'primary'
|
||||
)
|
||||
}}{% if action.disabled %} disabled{% endif %}
|
||||
{%- if action.close_button %} d-block mx-auto mt-4{% endif %}"
|
||||
{% if action.link and not action.disabled %} href="{{ action.link|url }}" {% endif %}
|
||||
{% endblock attributes %}
|
||||
>
|
||||
|
||||
{% block contentlink %}
|
||||
{% if action.icon %}
|
||||
<i class="{{ [(action.brands ? 'fab' : 'fas'), 'fa-fw', ('fa-' ~ action.icon), (mode != 'social' ? 'me-2')]|join(' ')}}"></i>
|
||||
{% endif %}
|
||||
{{ mode != "social" ? action.content }}
|
||||
{% endblock contentlink %}
|
||||
|
||||
</button>
|
||||
{% else %}
|
||||
<a {{ block('attributes') }}>
|
||||
{{ block('contentlink') }}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endblock actionscontent %}
|
||||
</div>
|
||||
{% else %}
|
||||
{{ block('actionscontent') }}
|
||||
{% endif %}
|
19
includes/blocks/_markdown_by_paragraph.twig
Normal file
19
includes/blocks/_markdown_by_paragraph.twig
Normal file
@ -0,0 +1,19 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% for paragraph in content|split("\n")|filter(e=>e is not empty) %} {# small mb-0 #}
|
||||
{% if mode == "about" %}
|
||||
<div class="col-lg-4{{ loop.first : " ms-auto" : "" }}{{ loop.last : " me-auto" : "" }}">
|
||||
{% block paragapheblock %}
|
||||
<p class="{{ (mode == "about") ? "lead" : (
|
||||
(mode == "footer") ? "lead mb-0" : (
|
||||
(mode == "copyright") ? "small mb-0" : ""
|
||||
)
|
||||
) }}">
|
||||
{{ paragraph|markdown(singleLine=true) }}
|
||||
</p>
|
||||
{% endblock paragapheblock %}
|
||||
</div>
|
||||
{% else %}
|
||||
{{ block('paragapheblock') }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
26
includes/blocks/_video.twig
Normal file
26
includes/blocks/_video.twig
Normal file
@ -0,0 +1,26 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% set known_video_types = {
|
||||
"3gp":"video/3gpp",
|
||||
"3g2":"video/3gpp2",
|
||||
"avi":"video/x-msvideo",
|
||||
"mpg":"video/mpeg",
|
||||
"mpeg":"video/mpeg",
|
||||
"mp4":"video/mp4",
|
||||
"mov":"video/quicktime",
|
||||
"ogv":"video/ogg",
|
||||
"ts":"video/mp2t",
|
||||
"qt":"video/quicktime",
|
||||
"webm":"video/webm",
|
||||
"wmv":"video/x-ms-wmv",
|
||||
} %}
|
||||
<video
|
||||
class="img-fluid rounded d-block mx-auto{% if mode == "content" %} mb-5{% endif %}"
|
||||
{% if image %} poster="{{ image|url }}" {% endif %}
|
||||
{% if mode == "portfolio" %} autoplay muted loop {% else %} controls {% endif %}>
|
||||
{% for source in (video is iterable and (not (video[1] starts with "video/") or ("." in video[1])) ? video : [video]) %}
|
||||
{% set mime = (source is iterable) ? source[1] : known_video_types[source|split(".")|last] %}
|
||||
<source src="{{ source is iterable ? source[0]|url : source|url }}" {% if mime %} type="{{ mime }}" {% endif %}>
|
||||
{% endfor %}
|
||||
Your browser does not support this video!
|
||||
</video>
|
@ -1,107 +0,0 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
<!-- Contact Section-->
|
||||
<section class="page-section" id="contact">
|
||||
<div class="container">
|
||||
<!-- Contact Section Heading-->
|
||||
<h2 class="page-section-heading text-center text-uppercase text-secondary mb-0">{{ index.contact.title ? index.contact.title : "Contact Me" }}</h2>
|
||||
<!-- Icon Divider-->
|
||||
<div class="divider-custom">
|
||||
<div class="divider-custom-line"></div>
|
||||
<div class="divider-custom-icon"><i class="fas fa-{{ index.contact.divider ? index.contact.divider : 'star' }}"></i></div>
|
||||
<div class="divider-custom-line"></div>
|
||||
</div>
|
||||
{% if index.contact.form.enabled %}
|
||||
<!-- Contact Section Form-->
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-8 col-xl-7">
|
||||
<form id="contactForm" class="needs-validation" {% if index.contact.form.action %} action="{{ index.contact.form.action|url }}" {% endif %} {% if index.contact.form.method %} method="{{ index.contact.form.method }}" {% endif %} novalidate>
|
||||
<!-- Name input-->
|
||||
<div class="form-floating mb-3">
|
||||
<input class="form-control" id="name" name="name" type="text" placeholder="Enter your name..." required />
|
||||
<label for="name">Full name</label>
|
||||
<div class="invalid-feedback">A name is required.</div>
|
||||
</div>
|
||||
<!-- Email address input-->
|
||||
<div class="form-floating mb-3">
|
||||
<input class="form-control" id="email" name="email" type="email" placeholder="name@example.com" required />
|
||||
<label for="email">Email address</label>
|
||||
<div class="invalid-feedback">An email is required.</div>
|
||||
<div class="invalid-feedback">Email is not valid.</div>
|
||||
</div>
|
||||
<!-- Phone number input-->
|
||||
<div class="form-floating mb-3">
|
||||
<input class="form-control" id="phone" name="phone" type="tel" placeholder="(123) 456-7890" required />
|
||||
<label for="phone">Phone number</label>
|
||||
<div class="invalid-feedback">A phone number is required.</div>
|
||||
</div>
|
||||
<!-- Message input-->
|
||||
<div class="form-floating mb-3">
|
||||
<textarea class="form-control" id="message" name="message" placeholder="Enter your message here..." style="height: 10rem" required></textarea>
|
||||
<label for="message">Message</label>
|
||||
<div class="invalid-feedback">A message is required.</div>
|
||||
</div>
|
||||
<!-- Submit success message-->
|
||||
<!---->
|
||||
<!-- This is what your users will see when the form-->
|
||||
<!-- has successfully submitted-->
|
||||
<div class="d-none" id="submitSuccessMessage">
|
||||
<div class="text-center mb-3">
|
||||
<div class="fw-bolder">Form submission successful!</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Submit error message-->
|
||||
<!---->
|
||||
<!-- This is what your users will see when there is-->
|
||||
<!-- an error submitting the form-->
|
||||
<div class="d-none" id="submitErrorMessage"><div class="text-center text-danger mb-3">Error sending message!</div></div>
|
||||
<!-- Submit Button-->
|
||||
<button class="btn btn-primary btn-xl" id="submitButton" type="submit">Send</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if index.contact.items or not index.contact.form.enabled %}
|
||||
{% if index.contact.form.enabled %}
|
||||
<!-- Contact Subsection Heading-->
|
||||
<h3 class="page-section-heading text-center text-uppercase text-secondary mb-0 mt-5 fs-2">{{ index.contact.subtitle ? index.contact.title : "Or reach me by" }}</h3>
|
||||
<!-- Icon Divider-->
|
||||
<div class="divider-custom">
|
||||
<div class="divider-custom-line"></div>
|
||||
<div class="divider-custom-icon"><i class="fas fa-{{ index.contact.subdivider ? index.contact.subdivider : 'star' }}"></i></div>
|
||||
<div class="divider-custom-line"></div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- Contact Section Content-->
|
||||
<div class="row justify-content-center">
|
||||
{% for item in index.contact.items ? index.contact.items : config.theme_config.demo.contact.items %}
|
||||
{% set classes = ["col-md-6", "col-lg-4"] %}
|
||||
{% if not loop.last %}
|
||||
{% set classes = classes|merge(["mb-5"]) %}
|
||||
{% if loop.revindex <= (loop.length - 1) % 3 + 1 %}
|
||||
{% if loop.revindex == 3 %}
|
||||
{% set classes = classes|merge(["mb-lg-0"]) %}
|
||||
{% elseif loop.revindex == 2 %}
|
||||
{% if loop.index == 2 %}
|
||||
{% set classes = classes|merge(["mb-lg-0"]) %}
|
||||
{% else %}
|
||||
{% set classes = classes|merge(["mb-md-0"]) %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% elseif loop.revindex == 2 and loop.index == 3 %}
|
||||
{% set classes = classes|merge(["mb-md-0","mb-lg-5"]) %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<div class="{{ classes|join(" ") }}">
|
||||
<div class="d-flex flex-column align-items-center">
|
||||
<div class="icon-contact mb-3"><i class="{{ item.brands ? "fab" : "fas" }} fa-{{ item.icon }}"></i></div>
|
||||
<div class="text-muted">{{ item.title }}</div>
|
||||
{% if item.link %}<a href="{{ item.link|url }}"{% else %}<div{% endif %} class="lead font-weight-bold">{{ item.content }}{{ item.link ? "</a>" : "</div>" }}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</section>
|
@ -1,30 +0,0 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% macro markdown_by_paragraph(content, mode) %}
|
||||
{% set content_array = [] %}
|
||||
{% for paragraph in content|split("\n") %}
|
||||
{% if paragraph %}
|
||||
{% set content_array = content_array|merge([paragraph]) %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% for paragraph in content_array %} {# small mb-0 #}
|
||||
{% set p_class = [] %}
|
||||
{% if mode == "footer" or mode == "about" %}{% set p_class = p_class|merge(["lead"]) %}{% endif %}
|
||||
{% if mode == "copyright" %}{% set p_class = p_class|merge(["small"]) %}{% endif %}
|
||||
{% if mode == "footer" or mode == "copyright" %}{% set p_class = p_class|merge(["mb-0"]) %}{% endif %}
|
||||
|
||||
{% if mode == "about" %}
|
||||
{% set div_class = ["col-lg-4"] %}
|
||||
{% if loop.first %}
|
||||
{% set div_class = div_class|merge(["ms-auto"]) %}
|
||||
{% endif %}
|
||||
{% if loop.last %}
|
||||
{% set div_class = div_class|merge(["me-auto"]) %}
|
||||
{% endif %}
|
||||
<div class="{{ div_class|join(" ") }}">
|
||||
{% endif %}
|
||||
<p class="{{ p_class|join(" ") }}">{{ paragraph|markdown(singleLine=true) }}</p>
|
||||
{{ mode == "about" ? "</div>" }}
|
||||
{% endfor %}
|
||||
{% endmacro %}
|
@ -1,53 +0,0 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% from "includes/video.twig" import video %}
|
||||
<!-- Portfolio Section-->
|
||||
<section class="page-section portfolio" id="portfolio">
|
||||
<div class="container">
|
||||
<!-- Portfolio Section Heading-->
|
||||
<h2 class="page-section-heading text-center text-uppercase text-secondary mb-0">{{ index.portfolio.title ? index.portfolio.title : "Portfolio" }}</h2>
|
||||
<!-- Icon Divider-->
|
||||
<div class="divider-custom">
|
||||
<div class="divider-custom-line"></div>
|
||||
<div class="divider-custom-icon"><i class="fas fa-{{ index.portfolio.divider ? index.portfolio.divider : 'star' }}"></i></div>
|
||||
<div class="divider-custom-line"></div>
|
||||
</div>
|
||||
<!-- Portfolio Grid Items-->
|
||||
<div class="row justify-content-center">
|
||||
{% for portfolio_item in portfolio_items %}
|
||||
{% set classes = ["col-md-6", "col-lg-4"] %}
|
||||
{% if not loop.last %}
|
||||
{% set classes = classes|merge(["mb-5"]) %}
|
||||
{% if loop.revindex <= (loop.length - 1) % 3 + 1 %}
|
||||
{% if loop.revindex == 3 %}
|
||||
{% set classes = classes|merge(["mb-lg-0"]) %}
|
||||
{% elseif loop.revindex == 2 %}
|
||||
{% if loop.index == 2 %}
|
||||
{% set classes = classes|merge(["mb-lg-0"]) %}
|
||||
{% else %}
|
||||
{% set classes = classes|merge(["mb-md-0"]) %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% elseif loop.revindex == 2 and loop.index == 3 %}
|
||||
{% set classes = classes|merge(["mb-md-0","mb-lg-5"]) %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<!-- {{ " Portfolio Item " ~ loop.index ~ " " }} -->
|
||||
<div class="{{ classes|join(" ") }}">
|
||||
<div class="portfolio-item mx-auto" data-bs-toggle="modal" data-bs-target="#portfolioModal{{ loop.index }}">
|
||||
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
|
||||
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
|
||||
</div>
|
||||
{% if portfolio_item.meta.thumbnail_video %}
|
||||
{{ video(portfolio_item.meta.video, portfolio_item.meta.thumbnail|url ?: portfolio_item.meta.image|url, "portfolio") }}
|
||||
{% else %}
|
||||
<img class="img-fluid d-block mx-auto" src="{{ portfolio_item.meta.thumbnail ? portfolio_item.meta.thumbnail|url : portfolio_item.meta.image ? portfolio_item.meta.image|url : random(config.theme_config.demo.portfolio_items).meta.image|url }}" alt="{{ portfolio_item.meta.thumbnail_alt ? portfolio_item.meta.thumbnail_alt : portfolio_item.meta.title }}" />
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
@ -1,41 +0,0 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
<!-- Portfolio Modals-->
|
||||
{% from "includes/actions.twig" import actions %}
|
||||
{% from "includes/video.twig" import video %}
|
||||
{% for portfolio_item in portfolio_items %}
|
||||
<!--{{ " Portfolio Modal " ~ loop.index ~ " " }}-->
|
||||
<div class="portfolio-modal modal fade" id="portfolioModal{{ loop.index }}" tabindex="-1" aria-labelledby="portfolioModal{{ loop.index }}" aria-hidden="true">
|
||||
<div class="modal-dialog modal-xl">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header border-0"><button class="btn-close" type="button" data-bs-dismiss="modal" aria-label="Close"></button></div>
|
||||
<div class="modal-body text-center pb-5">
|
||||
<div class="container">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-8">
|
||||
<!-- Portfolio Modal - Title-->
|
||||
<h2 class="portfolio-modal-title text-secondary text-uppercase mb-0">{{ portfolio_item.meta.title ? portfolio_item.meta.title : portfolio_item.id }}</h2>
|
||||
<!-- Icon Divider-->
|
||||
<div class="divider-custom">
|
||||
<div class="divider-custom-line"></div>
|
||||
<div class="divider-custom-icon"><i class="fas fa-{{portfolio_item.meta.divider ? portfolio_item.meta.divider : 'star' }}"></i></div>
|
||||
<div class="divider-custom-line"></div>
|
||||
</div>
|
||||
{% if portfolio_item.meta.video %}
|
||||
<!-- Portfolio Modal - Video-->
|
||||
{{ video(portfolio_item.meta.video, portfolio_item.meta.image, "portfolio_modal", loop.index) }}
|
||||
{% elseif portfolio_item.meta.image %}
|
||||
<!-- Portfolio Modal - Image-->
|
||||
<img class="img-fluid rounded mb-5 d-block mx-auto" src="{{ portfolio_item.meta.image|url }}" alt="{{ portfolio_item.meta.image_alt }}" />
|
||||
{% endif %}
|
||||
<!-- Portfolio Modal - Text-->
|
||||
{{ portfolio_item.meta.demo_content ? portfolio_item.meta.demo_content|markdown : portfolio_item.id|content }}
|
||||
{{ actions(portfolio_item.meta.actions, "portfolio", index.portfolio.disable_close_buttons ? false : true) }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
@ -1,37 +0,0 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% macro video(video, image, mode, loop_index=0) %}
|
||||
{% set known_video_types = {
|
||||
"3gp":"video/3gpp",
|
||||
"3g2":"video/3gpp2",
|
||||
"avi":"video/x-msvideo",
|
||||
"mpg":"video/mpeg",
|
||||
"mpeg":"video/mpeg",
|
||||
"mp4":"video/mp4",
|
||||
"mov":"video/quicktime",
|
||||
"ogv":"video/ogg",
|
||||
"ts":"video/mp2t",
|
||||
"qt":"video/quicktime",
|
||||
"webm":"video/webm",
|
||||
"wmv":"video/x-ms-wmv",
|
||||
} %}
|
||||
<video class="img-fluid rounded d-block mx-auto{% if mode == "content" %} mb-5{% endif %}" {% if image %} poster="{{ image|url }}" {% endif %} {% if mode == "portfolio" %} autoplay muted loop {% else %} controls {% endif %}>
|
||||
{% set sources = video is iterable and (not (video[1] starts with "video/") or ("." in video[1])) ? video : [video] %}
|
||||
{% for source in sources %}
|
||||
{% if source is iterable %}
|
||||
{% set mime = source[1] %}
|
||||
{% else %}
|
||||
{% set mime = known_video_types[source|split(".")|last] %}
|
||||
{% endif %}
|
||||
<source src="{{ source is iterable ? source[0]|url : source|url }}" {% if mime %} type="{{ mime }}" {% endif %}>
|
||||
{% endfor %}
|
||||
Your browser does not support this video!
|
||||
</video>
|
||||
{% if mode == "portfolio_modal" %}
|
||||
<script>
|
||||
jQuery('#portfolioModal{{ loop_index }}').on('hidden.bs.modal', function (e) {
|
||||
jQuery('#portfolioModal{{ loop_index }} video').trigger('pause');
|
||||
});
|
||||
</script>
|
||||
{% endif %}
|
||||
{% endmacro %}
|
@ -1,23 +0,0 @@
|
||||
{# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% set pages_with_error = [] %}
|
||||
{% for page in pages(depthOffset=-1,depth=null) %}
|
||||
{% if page.meta.YAML_ParseError %}
|
||||
{% set pages_with_error = pages_with_error|merge([{"id": page.id, "error": page.meta.YAML_ParseError}]) %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% for page in pages_with_error %}
|
||||
{% if loop.first %}
|
||||
<div class="fixed-top mt-5">
|
||||
<div class="container mt-5 pt-3">
|
||||
{% endif %}
|
||||
<div class="alert alert-danger">
|
||||
<h1 class="h6"><i class="fas fa-exclamation-triangle me-2"></i><strong>YAML Header Error</strong> in <a href="{{ page.id }}">{{ page.id }}</a>:</h1>
|
||||
<p class="mb-0">{{ page.error }}</p>
|
||||
</div>
|
||||
{% if loop.last %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
82
index.twig
82
index.twig
@ -1,68 +1,32 @@
|
||||
{#!
|
||||
# SeaCMS 1.0.0-alpha.2 (https://git.defis.info/SeaCMS/seacms)
|
||||
# Licensed under EUPL (https://git.defis.info/SeaCMS/seacms/src/branch/master/LICENCE)
|
||||
#}
|
||||
{% set index = pages["index"].meta %}
|
||||
|
||||
{% if current_page.id != "index" %}
|
||||
{% set single_page_mode = true %}
|
||||
{% endif %}
|
||||
|
||||
{% if not index.portfolio.disabled %}
|
||||
{% set portfolio_items = [] %}
|
||||
{% for page in pages() %}
|
||||
{% if not page.hidden %}
|
||||
{% set portfolio_items = portfolio_items|merge([page]) %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% if not portfolio_items or "Pico is a stupidly simple" in index.description %}
|
||||
{% set portfolio_items = config.theme_config.demo.portfolio_items %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{# seacms-theme
|
||||
# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
{% include "includes/head.twig" %}
|
||||
|
||||
{# TODO manage lang #}
|
||||
<html lang="fr">
|
||||
{% block head %}
|
||||
{% include "includes/_head.twig" %}
|
||||
{% endblock head %}
|
||||
|
||||
{% block body %}
|
||||
<body id="page-top">
|
||||
|
||||
{% include "includes/yaml_error.twig" %}
|
||||
{% block header %}
|
||||
{% include "includes/_header.twig" %}
|
||||
{% endblock header %}
|
||||
|
||||
{% include "includes/header.twig" %}
|
||||
{% block content %}
|
||||
{% include "includes/_content.twig" %}
|
||||
{% endblock content %}
|
||||
|
||||
{# {% if current_page.title == "Welcome" %} #}
|
||||
{% include "includes/home.twig" %}
|
||||
{# {% endif %} #}
|
||||
{% block footer %}
|
||||
{% include "includes/_footer.twig" %}
|
||||
{% endblock footer %}
|
||||
|
||||
{#!
|
||||
|
||||
{% if single_page_mode %}
|
||||
{% include "includes/content.twig" %}
|
||||
{% endif %}
|
||||
|
||||
{% if not index.portfolio.disabled and not single_page_mode %}
|
||||
{% include "includes/portfolio.twig" %}
|
||||
{% endif %}
|
||||
|
||||
{% if not index.about.disabled and not single_page_mode %}
|
||||
{% include "includes/about.twig" %}
|
||||
{% endif %}
|
||||
|
||||
{% if not index.contact.disabled and not single_page_mode %}
|
||||
{% include "includes/contact.twig" %}
|
||||
{% endif %}
|
||||
|
||||
{% if not index.portfolio.disabled and not single_page_mode %}
|
||||
{% include "includes/portfolio_modals.twig" %}
|
||||
{% endif %}
|
||||
|
||||
#}
|
||||
|
||||
{% include "includes/footer.twig" %}
|
||||
|
||||
{{ include('@PicoContentEditor/content.twig') }}
|
||||
{% block picocontenteditor %}
|
||||
{{ include('@PicoContentEditor/content.twig', ignore_missing = true) }}
|
||||
{% endblock picocontenteditor %}
|
||||
|
||||
</body>
|
||||
</html>
|
||||
{% endblock body %}
|
||||
</html>
|
@ -1,84 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html class="no-js">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
|
||||
|
||||
<title>{% if meta.title %}{{ meta.title }} | {% endif %}{{ site_title }}</title>
|
||||
{% if meta.description %}
|
||||
<meta name="description" content="{{ meta.description|striptags }}" />
|
||||
{% endif %}
|
||||
{% if meta.robots %}
|
||||
<meta name="robots" content="{{ meta.robots }}" />
|
||||
{% endif %}
|
||||
|
||||
{% if current_page %}
|
||||
<link rel="canonical" href="{{ current_page.url }}" />
|
||||
{% endif %}
|
||||
|
||||
<link rel="stylesheet" href="{{ theme_url }}/css/knaccs.css" type="text/css" />
|
||||
<link rel="stylesheet" href="{{ theme_url }}/css/style.css" type="text/css" />
|
||||
</head>
|
||||
<body{% if config.theme_config.widescreen %} class="widescreen"{% endif %}>
|
||||
|
||||
<div id="header" role="banner">
|
||||
<div class="container">
|
||||
<a id="nav-toggle" title="Toggle Menu" role="button" aria-controls="nav" aria-expanded="false" tabindex="1">
|
||||
<span class="icon-menu" aria-hidden="true"></span>
|
||||
<span class="sr-only">Toggle Menu</span>
|
||||
</a>
|
||||
{% if pages["_meta"].meta.logo %}
|
||||
<div id="logo" aria-hidden="true">
|
||||
<a href="{{ "index"|link }}">
|
||||
<img src="{{ pages["_meta"].meta.logo|url }}" alt="" />
|
||||
</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div id="title"{{ pages["_meta"].meta.tagline ? ' class="tagline"' }}>
|
||||
<a href="{{ "index"|link }}">
|
||||
<h1>{{ site_title }}</h1>
|
||||
{{ pages["_meta"].meta.tagline|markdown }}
|
||||
</a>
|
||||
</div>
|
||||
<div id="nav" role="navigation" tabindex="-1">
|
||||
<ul>
|
||||
{% for page in pages(depthOffset=-1) if page.title and not page.hidden %}
|
||||
<li{% if page.id == current_page.id %} class="active"{% endif %}>
|
||||
<a href="{{ page.url }}">{{ page.title }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="main" role="main">
|
||||
<div class="container">
|
||||
{{ content }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="footer">
|
||||
<div class="container">
|
||||
<div class="social">
|
||||
{% for social in pages["_meta"].meta.social %}
|
||||
<a href="{{ social.url }}" title="{{ social.title }}" role="button">
|
||||
<span class="icon-{{ social.icon }}" aria-hidden="true"></span>
|
||||
<span class="sr-only">{{ social.title }}</span>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<p>
|
||||
<a href="http://picocms.org/">Pico</a> was made by <a href="http://gilbert.pellegrom.me">Gilbert Pellegrom</a>
|
||||
and is maintained by <a href="https://github.com/picocms/Pico/graphs/contributors">The Pico Community</a>.
|
||||
Released under the <a href="https://github.com/picocms/Pico/blob/master/LICENSE.md">MIT license</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="{{ theme_url }}/js/vendor/modernizr/modernizr.min.js" type="text/javascript"></script>
|
||||
<script src="{{ theme_url }}/js/utils.js" type="text/javascript"></script>
|
||||
<script src="{{ theme_url }}/js/pico.js" type="text/javascript"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -115,10 +115,9 @@ fetch('https://www.luciole-vision.com/Fichiers/Luciole_webfonts.zip')
|
||||
const http = require('http');
|
||||
|
||||
|
||||
let src = 'node_modules/Luciole/'
|
||||
const importLucioleFont = () => {
|
||||
const importLucioleFont = (srcPath) => {
|
||||
copySync(
|
||||
'node_modules/Luciole/Luciole_webfonts/Read Me.txt',
|
||||
`${srcPath}/Luciole_webfonts/Read Me.txt`,
|
||||
'fonts/vendor/Luciole/Read Me.txt',
|
||||
{ overwrite: true }
|
||||
)
|
||||
@ -148,7 +147,7 @@ const importLucioleFont = () => {
|
||||
arr.forEach((data)=>{
|
||||
let name = data.name
|
||||
copySync(
|
||||
`node_modules/Luciole/Luciole_webfonts/${name}/${name}.woff`,
|
||||
`${srcPath}/Luciole_webfonts/${name}/${name}.woff`,
|
||||
`fonts/vendor/Luciole/${name}/${name}.woff`,
|
||||
{ overwrite: true }
|
||||
)
|
||||
@ -172,24 +171,53 @@ const importLucioleFont = () => {
|
||||
)
|
||||
}
|
||||
|
||||
const downloadLuciole = (destPath,src) => {
|
||||
const zipPath = path.join(destPath,'Luciole_webfonts.zip')
|
||||
const file = fs.createWriteStream(zipPath)
|
||||
const request = http.get("http://www.luciole-vision.com/Fichiers/Luciole_webfonts.zip", function(response) {
|
||||
response.pipe(file)
|
||||
response.on('end', () => {
|
||||
setTimeout(()=>{
|
||||
var AdmZip = require("adm-zip")
|
||||
var zip = new AdmZip(zipPath)
|
||||
zip.extractAllTo(/*target path*/ destPath, /*overwrite*/ true)
|
||||
importLucioleFont(src)
|
||||
},500)
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
const checkLucioleFile = (destPath) => {
|
||||
return fs.existsSync(path.join(destPath,'Luciole_webfonts.zip')) &&
|
||||
fs.existsSync(path.join(destPath,'Luciole_webfonts/Read Me.txt')) &&
|
||||
fs.existsSync(path.join(destPath,'Luciole_webfonts/Luciole-Regular/Luciole-Regular.woff')) &&
|
||||
fs.existsSync(path.join(destPath,'Luciole_webfonts/Luciole-Italic/Luciole-Italic.woff')) &&
|
||||
fs.existsSync(path.join(destPath,'Luciole_webfonts/Luciole-Bold/Luciole-Bold.woff')) &&
|
||||
fs.existsSync(path.join(destPath,'Luciole_webfonts/Luciole-BoldItalic/Luciole-BoldItalic.woff'))
|
||||
}
|
||||
|
||||
let src = 'node_modules/Luciole/'
|
||||
let currentPath = path.join(basePath, src)
|
||||
if (!fs.existsSync(currentPath)) {
|
||||
fs.mkdirSync(currentPath,{recursive :true})
|
||||
downloadLuciole(currentPath,src)
|
||||
} else if (!checkLucioleFile(currentPath)) {
|
||||
downloadLuciole(currentPath,src)
|
||||
} else {
|
||||
importLucioleFont(src)
|
||||
}
|
||||
const zipPath = path.join(currentPath,'Luciole_webfonts.zip')
|
||||
const file = fs.createWriteStream(zipPath)
|
||||
const request = http.get("http://www.luciole-vision.com/Fichiers/Luciole_webfonts.zip", function(response) {
|
||||
response.pipe(file)
|
||||
response.on('end', () => {
|
||||
setTimeout(()=>{
|
||||
var AdmZip = require("adm-zip")
|
||||
var zip = new AdmZip(zipPath)
|
||||
zip.extractAllTo(/*target path*/ currentPath, /*overwrite*/ true)
|
||||
importLucioleFont()
|
||||
},500)
|
||||
})
|
||||
});
|
||||
|
||||
// less
|
||||
copySync(
|
||||
'node_modules/less/dist/less.min.js',
|
||||
'js/vendor/less/less.min.js',
|
||||
{ overwrite: true }
|
||||
)
|
||||
copySync(
|
||||
'node_modules/less/package.json',
|
||||
'js/vendor/less/package.json',
|
||||
{ overwrite: true }
|
||||
)
|
||||
|
||||
// example
|
||||
// mergeFilesSync(
|
||||
|
11
js/vendor/less/less.min.js
vendored
Normal file
11
js/vendor/less/less.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
137
js/vendor/less/package.json
vendored
Normal file
137
js/vendor/less/package.json
vendored
Normal file
@ -0,0 +1,137 @@
|
||||
{
|
||||
"name": "less",
|
||||
"version": "4.1.3",
|
||||
"description": "Leaner CSS",
|
||||
"homepage": "http://lesscss.org",
|
||||
"author": {
|
||||
"name": "Alexis Sellier",
|
||||
"email": "self@cloudhead.net"
|
||||
},
|
||||
"contributors": [
|
||||
"The Core Less Team"
|
||||
],
|
||||
"bugs": {
|
||||
"url": "https://github.com/less/less.js/issues"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/less/less.js.git"
|
||||
},
|
||||
"master": {
|
||||
"url": "https://github.com/less/less.js/blob/master/",
|
||||
"raw": "https://raw.githubusercontent.com/less/less.js/master/"
|
||||
},
|
||||
"license": "Apache-2.0",
|
||||
"bin": {
|
||||
"lessc": "./bin/lessc"
|
||||
},
|
||||
"main": "index",
|
||||
"module": "./lib/less-node/index",
|
||||
"directories": {
|
||||
"test": "./test"
|
||||
},
|
||||
"browser": "./dist/less.js",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "grunt test",
|
||||
"grunt": "grunt",
|
||||
"build": "npm-run-all clean compile",
|
||||
"clean": "shx rm -rf ./lib tsconfig.tsbuildinfo",
|
||||
"compile": "tsc -p tsconfig.json",
|
||||
"copy:root": "shx cp -rf ./dist ../../",
|
||||
"dev": "tsc -p tsconfig.json -w",
|
||||
"prepublishOnly": "grunt dist"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"errno": "^0.1.1",
|
||||
"graceful-fs": "^4.1.2",
|
||||
"image-size": "~0.5.0",
|
||||
"make-dir": "^2.1.0",
|
||||
"mime": "^1.4.1",
|
||||
"needle": "^3.1.0",
|
||||
"source-map": "~0.6.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@less/test-data": "^4.1.0",
|
||||
"@less/test-import-module": "^4.0.0",
|
||||
"@rollup/plugin-commonjs": "^17.0.0",
|
||||
"@rollup/plugin-json": "^4.1.0",
|
||||
"@rollup/plugin-node-resolve": "^11.0.0",
|
||||
"@typescript-eslint/eslint-plugin": "^4.28.0",
|
||||
"@typescript-eslint/parser": "^4.28.0",
|
||||
"benny": "^3.6.12",
|
||||
"bootstrap-less-port": "0.3.0",
|
||||
"chai": "^4.2.0",
|
||||
"cross-env": "^7.0.3",
|
||||
"diff": "^3.2.0",
|
||||
"eslint": "^7.29.0",
|
||||
"fs-extra": "^8.1.0",
|
||||
"git-rev": "^0.2.1",
|
||||
"globby": "^10.0.1",
|
||||
"grunt": "^1.0.4",
|
||||
"grunt-cli": "^1.3.2",
|
||||
"grunt-contrib-clean": "^1.0.0",
|
||||
"grunt-contrib-connect": "^1.0.2",
|
||||
"grunt-eslint": "^23.0.0",
|
||||
"grunt-saucelabs": "^9.0.1",
|
||||
"grunt-shell": "^1.3.0",
|
||||
"html-template-tag": "^3.2.0",
|
||||
"jit-grunt": "^0.10.0",
|
||||
"less-plugin-autoprefix": "^1.5.1",
|
||||
"less-plugin-clean-css": "^1.5.1",
|
||||
"minimist": "^1.2.0",
|
||||
"mocha": "^6.2.1",
|
||||
"mocha-headless-chrome": "^2.0.3",
|
||||
"mocha-teamcity-reporter": "^3.0.0",
|
||||
"nock": "^11.8.2",
|
||||
"npm-run-all": "^4.1.5",
|
||||
"performance-now": "^0.2.0",
|
||||
"phin": "^2.2.3",
|
||||
"promise": "^7.1.1",
|
||||
"read-glob": "^3.0.0",
|
||||
"resolve": "^1.17.0",
|
||||
"rollup": "^2.52.2",
|
||||
"rollup-plugin-terser": "^5.1.1",
|
||||
"rollup-plugin-typescript2": "^0.29.0",
|
||||
"semver": "^6.3.0",
|
||||
"shx": "^0.3.2",
|
||||
"time-grunt": "^1.3.0",
|
||||
"ts-node": "^9.1.1",
|
||||
"typescript": "^4.3.4",
|
||||
"uikit": "2.27.4"
|
||||
},
|
||||
"keywords": [
|
||||
"compile less",
|
||||
"css nesting",
|
||||
"css variable",
|
||||
"css",
|
||||
"gradients css",
|
||||
"gradients css3",
|
||||
"less compiler",
|
||||
"less css",
|
||||
"less mixins",
|
||||
"less",
|
||||
"less.js",
|
||||
"lesscss",
|
||||
"mixins",
|
||||
"nested css",
|
||||
"parser",
|
||||
"preprocessor",
|
||||
"bootstrap css",
|
||||
"bootstrap less",
|
||||
"style",
|
||||
"styles",
|
||||
"stylesheet",
|
||||
"variables in css",
|
||||
"css less"
|
||||
],
|
||||
"rawcurrent": "https://raw.github.com/less/less.js/v",
|
||||
"sourcearchive": "https://github.com/less/less.js/archive/v",
|
||||
"dependencies": {
|
||||
"copy-anything": "^2.0.1",
|
||||
"parse-node-version": "^1.0.1",
|
||||
"tslib": "^2.3.0"
|
||||
}
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
{
|
||||
"license": "EUPL-1.2",
|
||||
"scripts": {
|
||||
"postinstall": "node ./js/extract-files-from-node-modules.js"
|
||||
"postinstall": "node ./js/extract-files-from-node-modules.js",
|
||||
"run-lessc": "node node_modules/less/bin/lessc css/style.less css/main-style.css"
|
||||
},
|
||||
"dependencies": {},
|
||||
"devDependencies": {
|
||||
@ -8,6 +10,7 @@
|
||||
"fs-extra": "^11.1.0",
|
||||
"icomoon-free-npm": "^0.0.0",
|
||||
"knacss": "https://github.com/alsacreations/KNACSS",
|
||||
"less": "^4.1.3",
|
||||
"modernizr": "^3.12.0",
|
||||
"ttf2woff": "^3.0.0"
|
||||
}
|
||||
|
8
page2.twig
Normal file
8
page2.twig
Normal file
@ -0,0 +1,8 @@
|
||||
{# seacms-theme
|
||||
# SPDX-License-Identifier: EUPL-1.2 #}
|
||||
|
||||
{% extends "index.twig" %}
|
||||
|
||||
{% block content %}
|
||||
{{ content }}
|
||||
{% endblock content %}
|
@ -1,4 +1,4 @@
|
||||
api_version: 3 # Use Pico's latest API version for themes
|
||||
api_version: 4 # Use Pico's latest API version for themes
|
||||
|
||||
meta: # Register meta headers used by this theme
|
||||
Logo: logo # The URL to your website's logo (value is passed to Pico's "url" Twig filter)
|
||||
|
178
yarn.lock
178
yarn.lock
@ -48,6 +48,14 @@ argparse@^2.0.1:
|
||||
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
|
||||
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
|
||||
|
||||
array-buffer-byte-length@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz#fabe8bc193fea865f317fe7807085ee0dee5aead"
|
||||
integrity sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
is-array-buffer "^3.0.1"
|
||||
|
||||
array.prototype.reduce@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz#6b20b0daa9d9734dd6bc7ea66b5bbce395471eac"
|
||||
@ -135,9 +143,9 @@ caniuse-api@^3.0.0:
|
||||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001449:
|
||||
version "1.0.30001454"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001454.tgz#033f6df4452643a64173d02543902caa158dfd9a"
|
||||
integrity sha512-4E63M5TBbgDoA9dQoFRdjL6iAmzTrz3rwYWoKDlvnvyvBxjCZ0rrUoX3THhEMie0/RYuTCeMbeTYLGAWgnLwEg==
|
||||
version "1.0.30001466"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001466.tgz#c1e6197c540392e09709ecaa9e3e403428c53375"
|
||||
integrity sha512-ewtFBSfWjEmxUgNBSZItFSmVtvk9zkwkl1OfRZlKA8slltRN+/C/tuGVrF9styXkN36Yu3+SeJ1qkXxDEyNZ5w==
|
||||
|
||||
chalk@^2.4.1:
|
||||
version "2.4.2"
|
||||
@ -206,6 +214,13 @@ color@^3.0.0:
|
||||
color-convert "^1.9.3"
|
||||
color-string "^1.6.0"
|
||||
|
||||
copy-anything@^2.0.1:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480"
|
||||
integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==
|
||||
dependencies:
|
||||
is-what "^3.14.1"
|
||||
|
||||
cosmiconfig@^5.0.0:
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-5.2.1.tgz#040f726809c591e77a17c0a3626ca45b4f168b1a"
|
||||
@ -345,6 +360,13 @@ csso@^4.0.2:
|
||||
dependencies:
|
||||
css-tree "^1.1.2"
|
||||
|
||||
debug@^3.2.6:
|
||||
version "3.2.7"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
|
||||
integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
|
||||
dependencies:
|
||||
ms "^2.1.1"
|
||||
|
||||
decamelize@^1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
|
||||
@ -399,9 +421,9 @@ dot-prop@^5.2.0:
|
||||
is-obj "^2.0.0"
|
||||
|
||||
electron-to-chromium@^1.4.284:
|
||||
version "1.4.301"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.301.tgz#175d9fa1509a5b062752c6db321051e610fe2eae"
|
||||
integrity sha512-bz00ASIIDjcgszZKuEA1JEFhbDjqUNbQ/PEhNEl1wbixzYpeTp2H2QWjsQvAL2T1wJBdOwCF5hE896BoMwYKrA==
|
||||
version "1.4.328"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.328.tgz#b4565ffa502542b561cea16086d6d9b916c7095a"
|
||||
integrity sha512-DE9tTy2PNmy1v55AZAO542ui+MLC2cvINMK4P2LXGsJdput/ThVG9t+QGecPuAZZSgC8XoI+Jh9M1OG9IoNSCw==
|
||||
|
||||
emoji-regex@^8.0.0:
|
||||
version "8.0.0"
|
||||
@ -418,6 +440,13 @@ entities@~2.1.0:
|
||||
resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5"
|
||||
integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==
|
||||
|
||||
errno@^0.1.1:
|
||||
version "0.1.8"
|
||||
resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f"
|
||||
integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==
|
||||
dependencies:
|
||||
prr "~1.0.1"
|
||||
|
||||
error-ex@^1.3.1:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"
|
||||
@ -426,17 +455,17 @@ error-ex@^1.3.1:
|
||||
is-arrayish "^0.2.1"
|
||||
|
||||
es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4:
|
||||
version "1.21.1"
|
||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.1.tgz#e6105a099967c08377830a0c9cb589d570dd86c6"
|
||||
integrity sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==
|
||||
version "1.21.2"
|
||||
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.21.2.tgz#a56b9695322c8a185dc25975aa3b8ec31d0e7eff"
|
||||
integrity sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==
|
||||
dependencies:
|
||||
array-buffer-byte-length "^1.0.0"
|
||||
available-typed-arrays "^1.0.5"
|
||||
call-bind "^1.0.2"
|
||||
es-set-tostringtag "^2.0.1"
|
||||
es-to-primitive "^1.2.1"
|
||||
function-bind "^1.1.1"
|
||||
function.prototype.name "^1.1.5"
|
||||
get-intrinsic "^1.1.3"
|
||||
get-intrinsic "^1.2.0"
|
||||
get-symbol-description "^1.0.0"
|
||||
globalthis "^1.0.3"
|
||||
gopd "^1.0.1"
|
||||
@ -444,8 +473,8 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4:
|
||||
has-property-descriptors "^1.0.0"
|
||||
has-proto "^1.0.1"
|
||||
has-symbols "^1.0.3"
|
||||
internal-slot "^1.0.4"
|
||||
is-array-buffer "^3.0.1"
|
||||
internal-slot "^1.0.5"
|
||||
is-array-buffer "^3.0.2"
|
||||
is-callable "^1.2.7"
|
||||
is-negative-zero "^2.0.2"
|
||||
is-regex "^1.1.4"
|
||||
@ -453,11 +482,12 @@ es-abstract@^1.17.2, es-abstract@^1.19.0, es-abstract@^1.20.4:
|
||||
is-string "^1.0.7"
|
||||
is-typed-array "^1.1.10"
|
||||
is-weakref "^1.0.2"
|
||||
object-inspect "^1.12.2"
|
||||
object-inspect "^1.12.3"
|
||||
object-keys "^1.1.1"
|
||||
object.assign "^4.1.4"
|
||||
regexp.prototype.flags "^1.4.3"
|
||||
safe-regex-test "^1.0.0"
|
||||
string.prototype.trim "^1.2.7"
|
||||
string.prototype.trimend "^1.0.6"
|
||||
string.prototype.trimstart "^1.0.6"
|
||||
typed-array-length "^1.0.4"
|
||||
@ -592,7 +622,7 @@ gopd@^1.0.1:
|
||||
dependencies:
|
||||
get-intrinsic "^1.1.3"
|
||||
|
||||
graceful-fs@^4.1.6, graceful-fs@^4.2.0:
|
||||
graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
|
||||
version "4.2.10"
|
||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
|
||||
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
|
||||
@ -658,6 +688,18 @@ icomoon-free-npm@^0.0.0:
|
||||
resolved "https://registry.yarnpkg.com/icomoon-free-npm/-/icomoon-free-npm-0.0.0.tgz#991417a58727e4053d89edd6717370cbe4e19206"
|
||||
integrity sha512-pfrVhde2E2tt6+oJ7WdvdOz7x9GbMpBzlaScAYFVkD2RTehZE9Xqdn5QaBbtTJrl8fG4ZgKqHxc9sAtKLNgFoA==
|
||||
|
||||
iconv-lite@^0.6.3:
|
||||
version "0.6.3"
|
||||
resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501"
|
||||
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
|
||||
dependencies:
|
||||
safer-buffer ">= 2.1.2 < 3.0.0"
|
||||
|
||||
image-size@~0.5.0:
|
||||
version "0.5.5"
|
||||
resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
|
||||
integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
|
||||
|
||||
import-fresh@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546"
|
||||
@ -671,7 +713,7 @@ indexes-of@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607"
|
||||
integrity sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==
|
||||
|
||||
internal-slot@^1.0.4:
|
||||
internal-slot@^1.0.5:
|
||||
version "1.0.5"
|
||||
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.5.tgz#f2a2ee21f668f8627a4667f309dc0f4fb6674986"
|
||||
integrity sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==
|
||||
@ -685,13 +727,13 @@ is-absolute-url@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/is-absolute-url/-/is-absolute-url-2.1.0.tgz#50530dfb84fcc9aa7dbe7852e83a37b93b9f2aa6"
|
||||
integrity sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==
|
||||
|
||||
is-array-buffer@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.1.tgz#deb1db4fcae48308d54ef2442706c0393997052a"
|
||||
integrity sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==
|
||||
is-array-buffer@^3.0.1, is-array-buffer@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.2.tgz#f2653ced8412081638ecb0ebbd0c41c6e0aecbbe"
|
||||
integrity sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
get-intrinsic "^1.1.3"
|
||||
get-intrinsic "^1.2.0"
|
||||
is-typed-array "^1.1.10"
|
||||
|
||||
is-arrayish@^0.2.1:
|
||||
@ -822,6 +864,11 @@ is-weakref@^1.0.2:
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
|
||||
is-what@^3.14.1:
|
||||
version "3.14.1"
|
||||
resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1"
|
||||
integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==
|
||||
|
||||
js-yaml@^3.13.1:
|
||||
version "3.14.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
|
||||
@ -852,6 +899,23 @@ jsonfile@^6.0.1:
|
||||
cssnano "^4.1.10"
|
||||
postcss-combine-media-query "^1.0.1"
|
||||
|
||||
less@^4.1.3:
|
||||
version "4.1.3"
|
||||
resolved "https://registry.yarnpkg.com/less/-/less-4.1.3.tgz#175be9ddcbf9b250173e0a00b4d6920a5b770246"
|
||||
integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==
|
||||
dependencies:
|
||||
copy-anything "^2.0.1"
|
||||
parse-node-version "^1.0.1"
|
||||
tslib "^2.3.0"
|
||||
optionalDependencies:
|
||||
errno "^0.1.1"
|
||||
graceful-fs "^4.1.2"
|
||||
image-size "~0.5.0"
|
||||
make-dir "^2.1.0"
|
||||
mime "^1.4.1"
|
||||
needle "^3.1.0"
|
||||
source-map "~0.6.0"
|
||||
|
||||
linkify-it@^3.0.1:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e"
|
||||
@ -881,6 +945,14 @@ lodash@^4.17.21:
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
|
||||
make-dir@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5"
|
||||
integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
|
||||
dependencies:
|
||||
pify "^4.0.1"
|
||||
semver "^5.6.0"
|
||||
|
||||
markdown-it@^12.3.2:
|
||||
version "12.3.2"
|
||||
resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90"
|
||||
@ -907,6 +979,11 @@ mdurl@^1.0.1:
|
||||
resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e"
|
||||
integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==
|
||||
|
||||
mime@^1.4.1:
|
||||
version "1.6.0"
|
||||
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
|
||||
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
|
||||
|
||||
minimist@^1.2.5, minimist@^1.2.6:
|
||||
version "1.2.8"
|
||||
resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
|
||||
@ -939,6 +1016,20 @@ modernizr@^3.12.0:
|
||||
requirejs "^2.3.6"
|
||||
yargs "^15.4.1"
|
||||
|
||||
ms@^2.1.1:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||
|
||||
needle@^3.1.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/needle/-/needle-3.2.0.tgz#07d240ebcabfd65c76c03afae7f6defe6469df44"
|
||||
integrity sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==
|
||||
dependencies:
|
||||
debug "^3.2.6"
|
||||
iconv-lite "^0.6.3"
|
||||
sax "^1.2.4"
|
||||
|
||||
node-releases@^2.0.8:
|
||||
version "2.0.10"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f"
|
||||
@ -966,7 +1057,7 @@ num2fraction@^1.2.2:
|
||||
resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede"
|
||||
integrity sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==
|
||||
|
||||
object-inspect@^1.12.2, object-inspect@^1.9.0:
|
||||
object-inspect@^1.12.3, object-inspect@^1.9.0:
|
||||
version "1.12.3"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
|
||||
integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
|
||||
@ -1037,6 +1128,11 @@ parse-json@^4.0.0:
|
||||
error-ex "^1.3.1"
|
||||
json-parse-better-errors "^1.0.1"
|
||||
|
||||
parse-node-version@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b"
|
||||
integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==
|
||||
|
||||
path-exists@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
|
||||
@ -1052,6 +1148,11 @@ picocolors@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
|
||||
integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==
|
||||
|
||||
pify@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231"
|
||||
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
|
||||
|
||||
postcss-calc@^7.0.1:
|
||||
version "7.0.5"
|
||||
resolved "https://registry.yarnpkg.com/postcss-calc/-/postcss-calc-7.0.5.tgz#f8a6e99f12e619c2ebc23cf6c486fdc15860933e"
|
||||
@ -1340,6 +1441,11 @@ postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.21, postcss@^7.0.27, postcss@^7.0.3
|
||||
picocolors "^0.2.1"
|
||||
source-map "^0.6.1"
|
||||
|
||||
prr@~1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476"
|
||||
integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==
|
||||
|
||||
q@^1.1.2:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7"
|
||||
@ -1393,11 +1499,21 @@ safe-regex-test@^1.0.0:
|
||||
get-intrinsic "^1.1.3"
|
||||
is-regex "^1.1.4"
|
||||
|
||||
sax@~1.2.4:
|
||||
"safer-buffer@>= 2.1.2 < 3.0.0":
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
|
||||
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
||||
|
||||
sax@^1.2.4, sax@~1.2.4:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9"
|
||||
integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
|
||||
|
||||
semver@^5.6.0:
|
||||
version "5.7.1"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
|
||||
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
||||
|
||||
set-blocking@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||
@ -1419,7 +1535,7 @@ simple-swizzle@^0.2.2:
|
||||
dependencies:
|
||||
is-arrayish "^0.3.1"
|
||||
|
||||
source-map@^0.6.1:
|
||||
source-map@^0.6.1, source-map@~0.6.0:
|
||||
version "0.6.1"
|
||||
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||
@ -1443,6 +1559,15 @@ string-width@^4.1.0, string-width@^4.2.0:
|
||||
is-fullwidth-code-point "^3.0.0"
|
||||
strip-ansi "^6.0.1"
|
||||
|
||||
string.prototype.trim@^1.2.7:
|
||||
version "1.2.7"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz#a68352740859f6893f14ce3ef1bb3037f7a90533"
|
||||
integrity sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==
|
||||
dependencies:
|
||||
call-bind "^1.0.2"
|
||||
define-properties "^1.1.4"
|
||||
es-abstract "^1.20.4"
|
||||
|
||||
string.prototype.trimend@^1.0.6:
|
||||
version "1.0.6"
|
||||
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz#c4a27fa026d979d79c04f17397f250a462944533"
|
||||
@ -1508,6 +1633,11 @@ timsort@^0.3.0:
|
||||
resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4"
|
||||
integrity sha512-qsdtZH+vMoCARQtyod4imc2nIJwg9Cc7lPRrw9CzF8ZKR0khdr8+2nX80PBhET3tcyTtJDxAffGh2rXH4tyU8A==
|
||||
|
||||
tslib@^2.3.0:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf"
|
||||
integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==
|
||||
|
||||
ttf2woff@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ttf2woff/-/ttf2woff-3.0.0.tgz#bd0fc0157e428b7a9a30340f78adf72fb741962a"
|
||||
|
Loading…
x
Reference in New Issue
Block a user