Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • applications/etuc/hubl
  • applications/hubl
  • decentral1se/hubl
  • rngadam/hubl
  • jvtrudel/hubl
  • 3wc/hubl
6 results
Show changes
Showing
with 131 additions and 851 deletions
include hubl-user-avatar.pug
sib-widget(name='hubl-project-team')
template
sib-display.user-thumb(
data-src='${await value}'
fields='user.account.picture, sup(user.name, isadmin), sub(user.profile.city, name)'
value-isadmin='${await value.is_admin}'
class-user.account.picture='avatar user-thumb__picture'
class-user.name='user-thumb__name'
class-isadmin='user-thumb__admin'
class-user.profile.city='user-thumb__city'
class-name='user-thumb__lead'
widget-user.account.picture='hubl-user-avatar'
widget-isadmin='hubl-project-user-admin'
)
sib-widget(name='hubl-project-user-admin')
template ${(await value) == "false" ? "" : "Administrateur"}
sib-widget(name='hubl-user-avatar')
template ${await value ? `<img src="${await value}" style="max-width:100%; max-height: 100%;" />` : `<object type="image/svg+xml" data="/images/alien.svg"></object>`}
div.content-box__info.flex
sib-link(class="backlink right", next='admin-circle-list') Retour
h1.centered Créer un canal
sib-form.form.button-register(
data-src=`${endpoints.circles || endpoints.post.circles}`
fields='status, name, description'
label-status='Statut du canal'
widget-status='hubl-status'
<<<<<<< HEAD
class-name='form-label is-light is-full-width'
class-description='form-label is-light is-full-width'
class-status='form-label is-light is-full-width member-select color'
=======
class-name='form-label is-light is-full-width input-text-like'
class-description='form-label is-light is-full-width input-text-like'
>>>>>>> 013eeda... update: label for form reviewed + class added for input
label-name='Nom du canal *'
label-description='Sous-titre du canal *'
next='admin-circle-list'
submit-button='Enregistrer'
)
.content-box.flex.full-width.with-form
sib-router(default-route='admin-circle-list', hidden)
sib-route(name='admin-circle-list')
sib-route(name='admin-circle-create')
sib-route(name='circle-left')
div.content-box__header
h1.without-margin Administration
include ../circle/page-circle-left.pug
#admin-circle-list(hidden)
include ../../templates/hubl-user-avatar.pug
sib-widget(name='hubl-circle-owner')
template
sib-display.user-thumb.is-spaced(
data-src='${await value}'
fields='account.picture, sup(name), sub(username)'
class-account.picture='avatar user-thumb__picture'
class-name='user-thumb__name'
class-username='user-thumb__username'
widget-account.picture='hubl-user-avatar'
)
div.content-box__info.flex
div.admin-header.flex
h3 Canaux
sib-link(
class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus'
next='admin-circle-create'
) Créer un canal
.table
div.table-header.grey-color
div.w33 Nom
div.w33 Administrateurs
div.w33 Rejoindre
sib-widget(name='hubl-admin-circle-leave-button')
template
sib-delete(
class='button text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
data-src="${src}"
data-label='Quitter'
)
sib-display(
class='table-body'
bind-user
nested-field='circles'
fields='circle.name, circle.owner, leaveButton'
class-circle.name='w33 cell border cell-with-name'
class-circle.owner='w33 cell border cell-with-id-card'
class-leaveButton='w33 cell border cell-with-buttons'
action-leaveButton="joinButton"
widget-leaveButton="hubl-admin-circle-leave-button"
widget-circle.owner='hubl-circle-owner'
order-by="circle.name"
)
sib-widget(name='hubl-admin-circle-join-button')
template
sib-form.button.text-bold.text-uppercase.reversed.button-primary.bordered.with-icon.icon-arrow-right-circle.flex(
data-src='${value}'
fields='user.username'
value-user.username='hubl-workaround-493'
widget-user.username='sib-form-hidden'
submit-button='Rejoindre'
)
sib-display(
class='table-body'
data-src=`${endpoints.circles || endpoints.get.circles}joinable/`
fields='name, owner, members'
class-name='w33 cell border cell-with-name'
class-owner='w33 cell border cell-with-id-card'
widget-owner='hubl-circle-owner'
class-members='w33 cell border cell-with-buttons'
widget-members="hubl-admin-circle-join-button"
order-by="name"
)
#admin-circle-create(hidden)
include page-admin-circles-create.pug
sib-widget(name='hubl-template-project-title')
template
p ${value}
div.content-box__info.flex
sib-link(class="backlink right" next='admin-project-list') Retour
sib-widget(name="hubl-admin-project-add-user")
template
sib-form(
data-holder
fields='user, project'
range-user=`${endpoints.users || endpoints.get.users}`
value-project='${src}'
widget-project='sib-form-hidden'
naked
)
h1.centered Créer un projet
sib-form.form.button-register(
data-src=`${endpoints.projects || endpoints.post.projects}`
fields='line-1(customer, name), line-3(project.description), fieldset-fee, line-4(businessProvider.name, businessProvider.fee), fieldset-captain, line-10(captain)'
class-fieldset-fee='fieldset'
value-fieldset-fee='Contributions'
widget-fieldset-fee='hubl-template-project-title'
class-fieldset-captain='fieldset'
value-fieldset-captain='Capitaine'
widget-fieldset-captain='hubl-template-project-title'
label-customer='Nom du client*'
class-customer='member-select form-label is-light is-half-width'
range-customer=`${endpoints.customers || endpoints.get.customers}`
widget-customer='sib-form-auto-completion'
label-name='Nom du projet*'
class-name='form-label is-light is-half-width input-text-like'
label-project.description='Description du projet'
class-project.description='form-label is-light is-full-width input-text-like'
widget-project.description='sib-form-textarea'
label-businessProvider.name='Apporteur d\'affaire*'
class-businessProvider.name='form-label is-light is-half-width input-text-like'
label-businessProvider.fee='Contribution'
class-businessProvider.fee='form-label is-light is-half-width input-text-like'
label-captain='Capitaine du projet'
range-captain=`${endpoints.users || endpoints.get.users}`
class-captain='member-select form-label is-light is-half-width'
widget-captain='sib-form-auto-completion'
next='admin-project-list'
submit-button='Enregistrer'
)
.content-box.flex.full-width.with-form
sib-router(default-route='admin-project-list', hidden)
sib-route(name='admin-project-list')
sib-route(name='admin-project-create')
sib-route(name='project-left')
div.content-box__header
h1.without-margin Administration
#project-left(hidden)
include ../project/page-project-left.pug
#admin-project-list(hidden)
include ../../templates/hubl-user-avatar.pug
div.content-box__info.flex
div.admin-header.flex
h3 Projets
sib-link(
class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus'
next='admin-project-create'
) Créer un projet
.table
div.table-header.grey-color
div Nom
div Administrateurs
div Capitaines
div Accès
sib-widget(name="hubl-admin-project-leave-button")
template
sib-delete(
class='button text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
data-src="${src}"
data-label='Quitter'
)
sib-widget(name='hubl-project-captain')
template
sib-display.user-thumb.is-spaced(
data-src='${await value}'
fields='account.picture, sup(name), sub(username)'
class-account.picture='avatar user-thumb__picture'
class-name='user-thumb__name'
class-username='user-thumb__username'
widget-account.picture='hubl-user-avatar'
)
sib-widget(name='hubl-project-admins')
template
sib-display(
data-src='${value}'
fields='user'
search-fields='is_admin'
search-value-is_admin='true'
search-widget-is_admin='sib-form-hidden'
widget-user='hubl-project-captain'
)
sib-widget(name="hubl-admin-project-buttons")
template
sib-display(
data-src='${src}'
nested-field='members'
fields='relation'
action-relation='relation'
widget-relation='hubl-admin-project-leave-button'
search-fields='user'
search-widget-user='sib-form-hidden'
search-value-user="-"
hubl-inherit-user-id="search-value-user"
)
sib-display(
class='table-body'
data-src=`${endpoints.projects || endpoints.get.projects}`
fields='name, members, captain, buttons'
class-name='w25 cell border cell-with-name hashtag'
class-members='w25 cell border'
class-captain='w25 cell border cell-with-id-card'
class-buttons='w25 cell border cell-with-buttons'
widget-buttons="admin-project-buttons"
action-buttons="buttons"
widget-captain='hubl-project-captain'
widget-members='hubl-project-admins'
)
#admin-project-create(hidden)
include page-admin-projects-create.pug
\ No newline at end of file
div.content-box__info.flex
sib-link(class='backlink right', next='admin-users-list') Retour
h1.centered Ajouter un utilisateur à la plateforme
sib-form.form.button-register(
data-src=`${endpoints.users || endpoints.post.users}`
fields='line-1(first_name, last_name), line-2(username, email), line-3(password)'
class-first_name='form-label is-light is-half-width input-text-like'
class-last_name='form-label is-light is-half-width input-text-like'
class-username='form-label is-light is-half-width input-text-like'
class-email='form-label is-light is-half-width input-text-like'
label-first_name='Prénom *'
label-last_name='Nom *'
label-username='Nom d\'utilisateur *'
label-email='E-mail *'
value-password=''
widget-password='sib-form-hidden'
next='admin-users-list'
submit-button='Enregistrer'
)
div.content-box__info.flex
sib-link(class='backlink right', next='admin-users-list') Retour
h1.centered
span Modifier un utilisateur
sib-display(
bind-resources=''
fields='name'
)
sib-form.form.button-register(
bind-resources=''
fields='line-1(first_name, last_name), line-2(username, email)'
class-first_name='form-label is-light is-half-width input-text-like'
class-last_name='form-label is-light is-half-width input-text-like'
class-username='form-label is-light is-half-width input-text-like'
class-email='form-label is-light is-half-width input-text-like'
label-first_name='Prénom *'
label-last_name='Nom *'
label-username='Nom d\'utilisateur *'
label-email='E-mail *'
next='admin-user-list'
submit-button='Enregistrer'
)
.content-box.flex.full-width.with-form
sib-router(default-route='admin-users-list', hidden)
sib-route(name='admin-users-list')
sib-route(name='admin-users-create')
sib-route(name='admin-users-edit')
div.content-box__header
h1.without-margin Administration
sib-widget(name='hubl-sib-action-custom')
template
sib-ac-checker(data-src="${src}", permission='acl:Write')
sib-link(
class='button rounded reversed button-primary bordered icon-pencil'
data-src="${src}"
next="${value}"
)
#admin-users-list(hidden)
div.content-box__info.flex
div.admin-header
h3 Utilisateurs
sib-ac-checker(data-src=`${endpoints.users || endpoints.post.users}`, permission='acl:Append')
sib-link(
class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-plus'
next='admin-users-create'
) Ajouter un utilisateur
.table
div.table-header.grey-color
div.w75 Nom
div.w25
sib-display(
class='table-body'
data-src=`${endpoints.users || endpoints.get.users}`
fields='cell-1(user-thumb(account.picture, sup(name), sub(username))), actions'
class-account.picture='avatar user-thumb__picture'
class-name='user-thumb__name'
class-username='user-thumb__username'
class-profile.city='user-thumb__city'
widget-account.picture='hubl-user-avatar'
label-actions='Edit'
action-actions='admin-users-edit'
class-actions='w25 cell border cell-with-buttons'
widget-actions='hubl-sib-action-custom'
order-by='username'
)
#admin-users-create(hidden)
include page-admin-users-create.pug
#admin-users-edit(hidden)
include page-admin-users-edit.pug
.chat-view
sib-chat(
data-authentication='login',
data-auto-login='true',
data-bosh-service-url=`${xmpp}`,
data-i18n='en',
bind-resources
)
\ No newline at end of file
div.content-box__info.flex
include ../../templates/hubl-user-avatar.pug
sib-widget(name='hubl-team-template-edit')
template
sib-display.user-thumb(
class='w66 cell border cell-with-id-card user-thumb'
data-src='${await value.user}'
fields='account.picture, sup(name), sub(profile.city)'
class-account.picture='avatar user-thumb__picture'
class-name='user-thumb__name'
class-profile.city='user-thumb__city'
widget-account.picture='hubl-user-avatar'
)
sib-ac-checker(
class='w33 cell border'
permission="acl:Delete"
data-src="${value['@id']}"
)
sib-delete(
class='button text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
data-src="${value['@id']}"
data-label='Retirer'
)
//- Only to show the table grid
sib-ac-checker(
class='w33 cell border'
no-permission="acl:Delete"
data-src="${value['@id']}"
)
sib-link(class="backlink right", bind-resources, next='circle-profile') Retour
sib-ac-checker(permission='acl:Write', bind-resources)
h1 Modifie ton canal
sib-form.form.button-register(
bind-resources
fields='status, block-circle__info(name, owner), description'
range-owner=`${endpoints.users || endpoints.get.users}`
label-status='Statut du canal'
widget-status='hubl-status'
label-name='Nom du canal'
label-owner='Administrateur ou administratrice'
label-description='Sous-titre du canal *'
class-name='form-label is-light is-half-width input-text-like'
class-owner='form-label is-light is-half-width member-select color'
class-description='form-label is-light is-full-width input-text-like'
widget-owner='sib-form-auto-completion'
partial=''
submit-button='Enregistrer'
next='circle-information'
)
h2 Liste des membres:
sib-ac-checker(permission='acl:Append', bind-resources, nested-field='members')
sib-form.block.select-add.button-add(
bind-resources
nested-field='members'
fields='user'
range-user=`${endpoints.users || endpoints.get.users}`
class-user='team form-label is-dark'
label-user=''
widget-user='sib-form-auto-completion'
submit-button='Ajouter un membre'
)
.table
div.table-header.grey-color
div.w66 Nom
div.w33 Accès
//-class='table-body'
sib-display(
class='table-body'
bind-resources
fields='members'
multiple-members=''
widget-members='hubl-team-template-edit'
)
#circle-left(hidden)
div.content-box__info.flex(style="padding: 15px")
p Tu as quitté ce canal.
p Pour le rejoindre à nouveau, rends-toi dans le panneau <sib-link next="admin-circle-list">administration</sib-link> ou contacte un administrateur.
sib-router(default-route='circle-profile', hidden)
sib-route(name='circle-profile')
sib-route(name='circle-edit')
#circle-profile(hidden)
include ../../templates/hubl-circle-team.pug
.content-box__info.flex
.flex.space-between
sib-display(
bind-resources
fields='creationDateSet(title, creationDate)'
class-title='word-spacing-right'
value-title='Date de création : '
widget-creationDate='sib-display-date'
)
sib-ac-checker(permission='acl:Append', bind-resources, nested-field='members')
sib-link(class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='circle-edit' bind-resources) Modifier et ajouter un membre
h2 Membres :
sib-display.block(
bind-resources
fields='members'
multiple-members=''
widget-members='hubl-circle-team-template'
)
div.flex.button-end
sib-ac-checker(permission='acl:Delete', bind-resources)
sib-delete(
class='button text-bold text-uppercase button-primary bordered with-icon icon-trash'
bind-resources
data-label='Supprimer le canal'
)
sib-widget(name='hubl-circle-leave-button')
template
sib-delete(
class='button btn-margin-left text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
data-src="${src}"
data-label='Quitter le canal'
)
sib-widget(name='hubl-circle-join-button')
template
button.button.btn-margin-left.text-bold.text-uppercase.reversed.button-primary.bordered.with-icon.icon-arrow-right-circle.flex
sib-form(
data-src=''
nested-field='members'
fields='user.@id'
label-user.@id=''
value-user.@id=''
widget-user.@id='sib-form-hidden'
hubl-inherit-bind-user2input="input[name='user.@id']"
submit-button='Rejoindre le canal'
)
sib-display(
bind-resources
nested-field='members'
fields='relation'
action-relation='relation'
widget-relation='hubl-circle-leave-button'
search-fields='user'
search-widget-user='sib-form-hidden'
search-value-user=""
empty-widget='hubl-circle-join-button'
hubl-inherit-bind-resources='hubl-circle-join-button'
hubl-inherit-user-id="search-value-user"
)
h2 Membres :
sib-display.block(
bind-resources
fields='members'
multiple-members=''
widget-members='hubl-circle-team-template'
)
#circle-edit(hidden)
include page-circle-edit.pug
.content-box.with-padding.with-form
h1 Post a new job offer
sib-form(
data-src=`${endpoints.joboffers || endpoints.post.joboffers}`
range-skills=`${endpoints.skills || endpoints.get.skills}`
fields='title, description, skills, closingDate'
class-title='field form-label is-light is-expanded'
label-title='Title*'
class-description='field form-label is-light is-expanded'
label-description='Description*'
widget-description='sib-form-textarea'
class-skills='form-label is-dark select-skills'
label-skills='The required skills for this mission:*'
multiple-skills='sib-multiple-select'
widget-skills='sib-form-auto-completion'
class-closingDate='form-label is-dark'
label-closingDate='Publication end date:*'
widget-closingDate='sib-form-date'
next='job-offers'
)
.content-box.with-padding.with-form
h1 Edit your job offer
sib-form(
bind-resources
range-skills=`${endpoints.skills || endpoints.get.skills}`
fields='title, description, skills, closingDate'
class-title='field form-label is-light is-expanded'
label-title='Title*'
class-description='field form-label is-light is-expanded'
label-description='Description*'
widget-description='sib-form-textarea'
class-skills='form-label is-dark select-skills'
label-skills='The required skills for this mission:*'
multiple-skills='sib-multiple-select'
widget-skills='sib-form-auto-completion'
class-closingDate='form-label is-dark'
label-closingDate='Publication end date:*'
widget-closingDate='sib-form-date'
next='job-offers'
)
.content-box.flex.full-width.chat-view
sib-chat(
data-authentication='login',
data-auto-login='true',
data-bosh-service-url=`${xmpp}`,
data-i18n='en',
bind-resources
)
div.content-box__info.flex
include ../../templates/hubl-user-avatar.pug
sib-widget(name='hubl-fieldset-title')
template
label ${label}
sib-link(class='backlink right', bind-resources, next='project-profile') Retour
h1 Modifie ton projet
sib-form.form.button-register(
bind-resources
fields='fieldset-info, block-project__info(customer, name, description), fieldset-fee, block-project__fee(businessProvider, businessProviderFee)'
class-customer='member-select form-label is-light is-half-width'
widget-customer='sib-form-auto-completion'
class-name='form-label is-light is-half-width input-text-like'
class-description='form-label is-light is-full-width input-text-like'
label-fieldset-info=''
label-customer='Client*'
range-customer=`${endpoints.customers || endpoints.get.customers}`
label-name='Nom du projet*'
label-description='Description du projet'
widget-fieldset-info='hubl-fieldset-title'
widget-description='sib-form-textarea'
class-fieldset-fee='fieldset'
class-businessprovider='form-label is-light is-half-width input-text-like'
class-businessproviderfee='form-label is-light is-half-width input-text-like'
label-fieldset-fee='Contributions'
label-businessprovider='Apporteur d\'affaire'
label-businessproviderfee='Montant de la contribution'
widget-fieldset-fee='hubl-fieldset-title'
submit-button='Enregistrer'
)
h2 Liste des membres :
sib-form.block.select-add.button-add(
bind-resources
nested-field='members'
fields='user'
range-user=`${endpoints.users || endpoints.get.users}`
class-user='team form-label is-dark'
label-user=''
widget-user='sib-form-auto-completion'
submit-button='Ajouter un membre'
)
.table
div.table-header.grey-color
div Nom
div Accès
//-class='table-body'
sib-display(
class='table-body'
bind-resources
fields='members'
multiple-members=''
widget-members='hubl-team-template-edit'
)
#project-left
div.content-box__info.flex(style="padding: 15px")
p Tu as quitté ce projet.
p Ceci est un groupe privé. Pour le rejoindre, rends-toi dans le panneau <sib-link next="admin-project-list">administration</sib-link> et demande une invitation.
sib-router(default-route='project-profile', hidden)
sib-route(name='project-profile')
sib-route(name='project-edit')
#project-profile(hidden)
include ../../templates/hubl-captain.pug
include ../../templates/hubl-circle-team.pug
include ../../templates/hubl-project-team.pug
.content-box__info.flex
.flex.space-between
sib-display(
bind-resources
fields='creationDateSet(title, creationDate)'
class-title='word-spacing-right'
value-title='Date de création : '
widget-creationDate='sib-display-date'
)
sib-ac-checker(permission='acl:Append', bind-resources, nested-field='members')
sib-link(class='button text-bold text-uppercase reversed button-primary bordered with-icon icon-pencil' next='project-edit' bind-resources) Modifier et ajouter un membre
.flex.space-between
sib-display(
bind-resources
fields='label-captain, captain'
value-label-captain='Capitaine :'
class-label-captain='h2-like'
widget-captain='hubl-captain'
)
sib-display(
class='customer-logo'
bind-resources
fields='customer.logo'
widget-customer.logo='sib-display-img'
)
h2 Equipe :
sib-display(
bind-resources
fields='members'
widget-members='hubl-project-team'
multiple-members
)
sib-widget(name='hubl-project-leave-button')
template
sib-delete(
class='button btn-margin-left text-bold text-uppercase reversed button-secondary bordered with-icon icon-close'
data-src="${src}"
data-label='Quitter le groupe'
)
sib-display(
class='flex button-end'
bind-resources
nested-field='members'
fields='relation'
action-relation='relation'
widget-relation='hubl-project-leave-button'
search-fields='user'
search-widget-user='sib-form-hidden'
search-value-user=""
hubl-inherit-user-id="search-value-user"
)
#project-edit(hidden)
include page-project-edit.pug
import { resolve } from "node:path";
import { createHtmlPlugin } from 'vite-plugin-html'
import { defineConfig } from "vite";
import { VitePWA } from "vite-plugin-pwa";
import Handlebars from "handlebars";
import handlebars from "vite-plugin-handlebars";
import config from "./vite/generateConfig.mjs";
// Workaround for https://github.com/alexlafroscia/vite-plugin-handlebars/issues/192
function handlebarsOverride(options) {
const plugin = handlebars(options);
plugin.handleHotUpdate = async ({ server, file }) => {
if (file.endsWith(".html") || file.endsWith(".hbs"))
server.ws.send({
type: "full-reload",
});
};
return plugin;
}
export default defineConfig({
build: {
rollupOptions: {
input: {
app: resolve(__dirname, "index.html"),
},
},
},
css: {
preprocessorOptions: {
scss: {
quietDeps: true,
api: "modern-compiler"
},
},
},
define: config,
plugins: [
handlebarsOverride({
helpers: {
json: (value) => JSON.stringify(value),
year: () => new Date().getFullYear(),
isArray: (value) => Array.isArray(value),
mergeAttributes: (attributes) => {
let result = "";
for (const key in attributes) {
if (attributes.hasOwnProperty(key) && attributes[key] !== null) {
result += ` ${key}="${attributes[key]}"`;
}
}
return new Handlebars.SafeString(result);
},
hasComponent: (...component) =>
component.slice(0, -1).some((e) => config.componentSet.includes(e)),
hasComponentAll: (...component) =>
component.slice(0, -1).every((e) => config.componentSet.includes(e)),
hasNpmPackage: (...packages) =>
packages.slice(0, -1).every((e) => config.npm.filter(n => n.package === e).length > 0),
getComponent: (component) =>
config.components.find((c) => c.type === component),
getComponentFromRoute: (route) =>
config.components.find((c) => c.route === route),
getDefaultRoute: config.helpers.getDefaultRoute,
getRoute: config.helpers.getRoute,
get_legacy_view: (...name) => `legacy/${name.slice(0, -1).join('')}`,
is: (cond1, cond2) => cond1 === cond2,
any_are: (value, ...cond) => cond.slice(0, -1)?.includes(value),
includes: (arr, cond) => arr?.includes(cond),
},
partialDirectory: [resolve(__dirname, "src/partials")],
context: config,
}),
VitePWA({
devOptions: {
enabled: false,
},
injectRegister: "auto",
sourcemap: true,
manifest: {
lang: config.client.i18n.lang,
name: config.client.name,
short_name: config.client.shortName || config.client.name,
...config.client.pwa,
},
workbox: {
maximumFileSizeToCacheInBytes: 5000000,
runtimeCaching: [
{
urlPattern: /^https:\/\/fonts\.googleapis\.com\/.*/i,
handler: "CacheFirst",
options: {
cacheName: "google-fonts-cache",
expiration: {
maxEntries: 10,
maxAgeSeconds: 60 * 60 * 24 * 365,
},
cacheableResponse: {
statuses: [0, 200],
},
},
},
{
urlPattern: /^https:\/\/fonts\.gstatic\.com\/.*/i,
handler: "CacheFirst",
options: {
cacheName: "gstatic-fonts-cache",
expiration: {
maxEntries: 10,
maxAgeSeconds: 60 * 60 * 24 * 365,
},
cacheableResponse: {
statuses: [0, 200],
},
},
},
],
},
}),
createHtmlPlugin({
minify: true,
}),
],
resolve: {
alias: {
"@helpers": "/src/helpers",
"@partials": "/src/partials",
"@styles": "/src/styles",
},
},
});