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 102 additions and 458 deletions
/**
* Truncates the text content of a DOM node and its child nodes to a specified limit.
*
* @param {Node} node - The DOM node whose text content is to be truncated.
* @param {number} limit - The maximum number of characters to retain in the text content.
* @returns {number} - The remaining number of characters that can be truncated.
*/
export default function truncate(node, limit) {
if (node.nodeType === Node.TEXT_NODE && node.textContent) {
node.textContent = node.textContent.substring(0, limit);
return limit - node.textContent.length;
}
let remaining = limit;
for (const child of [...node.childNodes]) {
remaining = truncate(child, limit);
}
return remaining;
}
import convertStringToBoolean from "@helpers/convertStringToBoolean";
import generateUniq from "@helpers/generateUniq";
import generateUrl from "@helpers/generateUrl";
import getComponent from "@helpers/getComponent";
import getComponentFromRoute from "@helpers/getComponentFromRoute";
import getDefaultRoute from "@helpers/getDefaultRoute";
import getRoute from "@helpers/getRoute";
import importCore from "@helpers/importCore";
import truncate from "@helpers/truncate";
import Swal from "sweetalert2";
export {
convertStringToBoolean,
generateUniq,
generateUrl,
getComponent,
getComponentFromRoute,
getDefaultRoute,
getRoute,
importCore,
truncate,
Swal,
};
<svg class="alien" fill="#A59D9D" width="135.47mm" height="135.51mm" version="1.1" viewBox="0 0 135.47 135.51" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="translate(-38.096 -81.081)">
<g transform="matrix(.26458 0 0 .26458 38.081 81.081)">
<path d="m179.41 71.671c23.202-13.388 49.715-20.471 76.664-20.471 26.982 0 53.513 7.1 76.732 20.514 1.348 0.785 2.816 1.152 4.267 1.152 2.953 0 5.82-1.536 7.398-4.267 2.364-4.079 0.964-9.301-3.115-11.657-25.813-14.925-55.296-22.81-85.282-22.81-29.943 0-59.4 7.868-85.197 22.758-4.087 2.355-5.487 7.578-3.132 11.657 2.364 4.08 7.586 5.471 11.665 3.124z"/>
<path d="m256.07 187.73c-9.412 0-17.067 7.654-17.067 17.067 0 9.412 7.654 17.067 17.067 17.067 9.412 0 17.067-7.654 17.067-17.067-1e-3 -9.412-7.655-17.067-17.067-17.067z"/>
<path d="m329.97 162.13c-2.355-4.087-7.586-5.495-11.665-3.123l-7.936 4.582c-3.755-4.932-8.158-9.335-13.09-13.09l4.582-7.945c2.364-4.079 0.964-9.301-3.123-11.656-4.079-2.355-9.301-0.956-11.656 3.123l-4.531 7.851c-5.641-2.372-11.674-3.959-17.946-4.753v-9.122c0-4.71-3.814-8.533-8.533-8.533s-8.533 3.823-8.533 8.533v9.122c-6.272 0.794-12.305 2.381-17.946 4.753l-4.531-7.851c-2.364-4.087-7.586-5.487-11.657-3.132-4.087 2.364-5.487 7.578-3.123 11.665l4.582 7.945c-4.932 3.755-9.336 8.149-13.09 13.09l-7.945-4.591c-4.079-2.364-9.301-0.956-11.657 3.132-2.364 4.079-0.956 9.293 3.123 11.656l7.859 4.531c-3.439 8.149-5.35 17.092-5.35 26.479 0 37.641 30.626 68.267 68.267 68.267s68.267-30.626 68.267-68.267c0-9.378-1.911-18.321-5.342-26.47l7.859-4.54c4.071-2.363 5.479-7.577 3.115-11.656zm-73.898 93.867c-28.237 0-51.2-22.963-51.2-51.2s22.963-51.2 51.2-51.2 51.2 22.963 51.2 51.2-22.964 51.2-51.2 51.2z"/>
<path d="m510.9 451.96c-2.295-8.585-7.723-15.795-15.317-20.378l-47.027-37.606c-0.222-0.145-21.82-14.967-21.82-35.575v-153.6c0-46.541-18.97-90.863-52.335-122.98l32.862-33.169c3.328 1.587 7.006 2.551 10.94 2.551 14.114 0 25.6-11.486 25.6-25.6s-11.486-25.6-25.6-25.6-25.6 11.486-25.6 25.6c0 3.951 0.973 7.654 2.586 11l-39.159 39.518c-1.664 1.681-2.56 3.977-2.466 6.34 0.094 2.355 1.161 4.574 2.944 6.118 33.783 29.235 53.163 71.595 53.163 116.22v153.6c0 29.824 28.203 48.964 28.8 49.331l46.925 37.555c0.341 0.273 0.691 0.512 1.067 0.734 3.951 2.278 6.775 5.956 7.962 10.359 1.178 4.403 0.572 9.003-1.715 12.945-4.702 8.166-15.155 10.957-23.142 6.349l-106.66-64.827c-3.234-1.963-7.356-1.579-10.155 0.947s-3.61 6.588-1.988 9.993l22.545 47.548c2.372 4.087 3.14 9.003 2.133 13.491-0.998 4.429-3.618 8.064-7.373 10.232-8.875 5.12-19.396 9e-3 -24.499-6.98l-46.165-72.525c-1.929-3.012-5.504-4.506-9.003-3.763-3.49 0.759-6.144 3.601-6.647 7.134l-8.533 59.733c-0.06 0.401-0.085 0.811-0.085 1.212 0 9.412-7.654 17.067-17.067 17.067-9.412 0-17.067-7.654-17.067-17.067 0-0.401-0.026-0.811-0.085-1.212l-8.533-59.733c-0.503-3.533-3.157-6.383-6.647-7.134-3.516-0.751-7.091 0.751-9.003 3.772l-45.815 72.124c-6.135 8.516-17.545 11.742-25.378 7.194-4.292-2.475-6.067-6.238-6.793-8.96-1.271-4.719-0.478-10.027 2.483-15.223l21.76-46.225c1.613-3.405 0.794-7.45-1.997-9.976-2.79-2.517-6.912-2.91-10.121-0.964l-106.13 64.04c-8.149 4.685-18.611 1.911-23.313-6.238-2.287-3.951-2.893-8.55-1.715-12.954 1.186-4.403 4.011-8.081 7.962-10.359 0.367-0.213 0.717-0.461 1.05-0.725l46.541-37.146c1.195-0.802 29.201-19.942 29.201-49.749v-153.6c0-44.809 19.507-87.287 53.513-116.52 1.801-1.545 2.876-3.78 2.961-6.161 0.094-2.381-0.828-4.685-2.509-6.357l-39.45-39.219c1.596-3.328 2.552-7.014 2.552-10.94 0-14.114-11.486-25.6-25.6-25.6s-25.6 11.486-25.6 25.6 11.486 25.6 25.6 25.6c3.951 0 7.646-0.973 10.991-2.577l33.109 32.905c-33.562 32.137-52.634 76.561-52.634 123.27v153.6c0 20.625-21.453 35.447-22.212 35.994l-46.626 37.188c-7.595 4.582-13.03 11.793-15.326 20.378-2.372 8.806-1.152 18.014 3.405 25.907 9.412 16.299 30.336 21.897 46.78 12.407l82.15-49.579-9.446 20.096c-4.881 8.439-6.289 18.483-3.866 27.546 2.21 8.243 7.441 15.113 14.746 19.319 15.488 8.96 36.497 3.686 48.034-12.416l33.715-53.043 5.188 36.318c0.34 18.525 15.521 33.484 34.124 33.484s33.783-14.959 34.125-33.485l5.188-36.352 34.091 53.521c7.723 10.615 19.396 16.461 30.899 16.461 5.615 0 11.187-1.391 16.23-4.309 7.936-4.582 13.431-12.134 15.488-21.274 1.971-8.747 0.546-17.903-3.678-25.156l-10.035-21.188 82.483 50.142c16.29 9.395 37.222 3.806 46.635-12.493 4.556-7.902 5.777-17.101 3.404-25.908zm-92.697-434.89c4.71 0 8.533 3.831 8.533 8.533s-3.823 8.533-8.533 8.533c-2.278 0-4.318-0.922-5.845-2.372-0.06-0.068-0.077-0.154-0.145-0.222-0.06-0.06-0.137-0.068-0.188-0.119-1.442-1.536-2.355-3.558-2.355-5.82 0-4.702 3.822-8.533 8.533-8.533zm-317.93 14.114c-0.145 0.12-0.333 0.171-0.469 0.307-0.136 0.137-0.179 0.316-0.307 0.461-1.493 1.314-3.413 2.185-5.564 2.185-4.71 0-8.533-3.831-8.533-8.533s3.823-8.533 8.533-8.533 8.533 3.831 8.533 8.533c1e-3 2.149-0.878 4.078-2.193 5.58z"/>
<path d="m154.89 311.36c-2.423 4.036-1.109 9.276 2.918 11.691 1.826 1.101 45.303 26.82 98.261 26.82s96.435-25.719 98.261-26.82c4.028-2.415 5.342-7.654 2.918-11.691-2.406-4.036-7.629-5.367-11.699-2.944-0.41 0.239-41.387 24.388-89.481 24.388s-89.071-24.149-89.481-24.388c-4.068-2.424-9.282-1.093-11.697 2.944z"/>
</g>
</g>
</svg>
src/images/favicon.png

7.47 KiB

src/images/logo.png

8.52 KiB

import.meta.glob("./components/**/*.js", { eager: true });
import.meta.glob("./scripts/**/*.js", { eager: true });
document.dispatchEvent(new CustomEvent("orbit-ready"));
include get_config.pug
doctype html
html(lang="en")
head
meta(charset="UTF-8")
title #{clientName || "My Personal Hubl"}
meta(name="viewport", content="width=device-width, initial-scale=1.0")
meta(http-equiv="X-UA-Compatible", content="ie=edge")
if clientFavicon
link(rel="icon" type="image/png" href=`${clientFavicon}`)
else
link(rel="icon" type="image/png" href="/images/favicon.png")
include dependencies.pug
if clientCSS
link(rel='stylesheet', href=`${clientCSS}`)
body
header#header.flex.is-spaced(role='banner')
include header.pug
main.notLoggedIn
include menu-left.pug
div#viewport
if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards)
#dashboard(hidden).no-sidebar.with-padding
include page-dashboard.pug
if publicDirectory && (endpoints.users || (endpoints.get && endpoints.get.users))
#members(hidden).no-sidebar.with-padding
include page-directory.pug
if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers)
#job-offers(hidden).no-sidebar.with-padding
include page-job-offers.pug
if endpoints.projects || (endpoints.get && endpoints.get.projects)
#project(hidden).with-sidebar
include page-project.pug
if endpoints.circles || (endpoints.get && endpoints.get.circles)
#circle(hidden).with-sidebar
include page-circle.pug
if endpoints.users || (endpoints.get && endpoints.get.users)
#messages(hidden).with-sidebar
include page-messages.pug
if endpoints.events || (endpoints.get && endpoints.get.events)
#events(hidden)
include page-events.pug
#admin(hidden).with-sidebar
include page-admin.pug
if (endpoints.skills || (endpoints.get && endpoints.get.skills)) && (endpoints.uploads || (endpoints.post && endpoints.post.uploads)) && (endpoints.users || (endpoints.post && endpoints.post.users))
#profile(hidden).no-sidebar
include page-profile.pug
if analytics
each provider in analytics
if provider.type && provider.url && provider.url
sib-analytics(
type=`${provider.type}`
url=`${provider.url}`
id=`${provider.id}`
)
\ No newline at end of file
sib-widget(name='hubl-counter')
template
sib-fix-badge(data-src="${value == 'badge' ? src : value}")
sib-widget(name='hubl-menu-jabberid')
template
div.hidden(
data-jabberID="${value}"
)
sib-widget(name='hubl-menu-publicprivate')
template
div ${value == 'Public' ? '#' : ''}
sib-widget(name='hubl-create')
template
p.create Tu ne fais partie d'aucun ${value}.
br
| Pour en créer un nouveau, tu peux te rendre dans le
sib-link(next='admin') panneau d'administration
sib-widget(name='hubl-menu-fix-url-circle')
template
sib-display(
data-src='${value}'
fields='status, name, jabberID, badge'
value-badge='${value}'
widget-status='hubl-menu-publicprivate'
widget-badge='hubl-counter'
widget-jabberID='hubl-menu-jabberid'
widget-name='sib-display-div'
order-by="name"
)
sib-widget(name='hubl-menu-fix-url-project')
template
sib-display(
data-src='${value}'
fields='status, project(customer.name, name, jabberID), badge'
class-name='project-name'
class-customer.name='project-customer'
value-badge='${value}'
widget-status='hubl-menu-publicprivate'
widget-jabberID='hubl-menu-jabberid'
widget-badge='hubl-counter'
widget-name='sib-display-div'
order-by="customer.name"
)
nav#main__menu.jsLeftMenu
sib-router#navbar-router(default-route='dashboard')
if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards)
sib-route.menu(name='dashboard')
div.menu-label Tableau de bord
div.menu-icon.icon-home
div.divider
if publicDirectory && (endpoints.users || (endpoints.get && endpoints.get.users))
sib-route.menu(name='members')
div.menu-label Annuaire des membres
div.menu-icon.icon-people
div.divider
if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers)
sib-route.menu(name='job-offers', rdf-type='hd:joboffer')
div.menu-label Offres de mission
div.menu-icon.icon-briefcase
div.divider
if endpoints.events || (endpoints.get && endpoints.get.events)
sib-route.menu(name='events')
div.menu-label Evènements
div.menu-icon.icon-calendar
div.divider
if endpoints.projects || (endpoints.get && endpoints.get.projects)
div
sib-link(next='admin-project-list')
div.menu
div.menu-chevron
div.menu-icon.icon-arrow-right-circle
div.menu-label Projets
div.menu-icon.icon-folder-alt
sib-route(name='project', rdf-type='hd:project', use-id='', hidden)
div.sub-menu.menu-notification
sib-display.project-tab(
bind-user
nested-field='projects'
fields='project'
empty-widget='hubl-create'
empty-value='projet'
widget-project='hubl-menu-fix-url-project'
order-by='project.customer.name'
next='project'
)
div.divider
if endpoints.circles || (endpoints.get && endpoints.get.circles)
div
sib-link(next='admin-circle-list')
div.menu
div.menu-chevron
div.menu-icon.icon-arrow-right-circle
div.menu-label Canaux
div.menu-icon.icon-folder-alt
sib-route(name='circle', rdf-type='hd:circle', use-id='', hidden)
div.sub-menu.menu-notification
sib-display(
bind-user
nested-field='circles'
fields='circle'
empty-widget='hubl-create'
empty-value='canal'
widget-circle='hubl-menu-fix-url-circle'
order-by='circle.name'
next='circle'
)
div.divider
if endpoints.users || (endpoints.get && endpoints.get.users)
div.menu-wrapper
div.menu
div.menu-chevron
div.menu-icon.icon-arrow-up
div.menu-label Messages
div.menu-icon.icon-envelope-letter
sib-route(name='messages', rdf-type='foaf:user', use-id='', hidden)
div.sub-menu.menu-notification
sib-display.nosub(
data-src=`${endpoints.users || (endpoints.get && endpoints.get.users)}`
fields='name, chatProfile.jabberID, badge'
search-fields="name"
search-label-name="Rechercher..."
search-widget-name="hubl-search-users"
widget-name='sib-display-div'
widget-badge='hubl-counter'
widget-chatProfile.jabberID='hubl-menu-jabberid'
action-badge='badge'
order-by='username'
next='messages'
paginate-by='10'
)
div.divider
sib-route(name='admin', hidden)
sib-route.menu(name='profile', hidden)
.views-container.sidebar-is-closed
if endpoints.circles || (endpoints.get && endpoints.get.circles)
#admin-circles(hidden)
include views/admin/page-admin-circles.pug
if endpoints.projects || (endpoints.get && endpoints.get.projects)
#admin-projects(hidden)
include views/admin/page-admin-projects.pug
if (endpoints.users || (endpoints.get && endpoints.get.users))
#admin-users(hidden)
include views/admin/page-admin-users.pug
nav.jsRightMenu(role='navigation')
sib-router(default-route='admin-circles')
ul
li.jsOffsiteToggle
a Fold menu
if (endpoints.users || (endpoints.get && endpoints.get.users))
sib-route.active-color(name='admin-users')
li
a Utilisateurs
if endpoints.circles || (endpoints.get && endpoints.get.circles)
sib-route(name='admin-circles')
li
a Canaux
if endpoints.projects || (endpoints.get && endpoints.get.projects)
sib-route(name='admin-projects')
li
a Projets
.views-container.sidebar-is-closed
.content-box.flex.full-width.with-form
div.content-box__header
sib-ac-checker(permission='acl:Read', bind-resources)
sib-display(
bind-resources
fields='name, description'
class-name='h1-like'
class-description='h1-aside description'
)
button.mobile-sidebar-button.jsMobileSidebarOpenButton.icon-arrow-left-circle MENU
div
sib-ac-checker(permission='acl:Read', bind-resources)
#circle-chat(hidden)
include views/circle/page-circle-chat.pug
#circle-information(hidden)
include views/circle/page-circle-profile.pug
nav.jsRightMenu(role='navigation')
sib-router(default-route='circle-chat')
ul
li.jsOffsiteToggle
a Replier le menu
sib-route(name='circle-chat')
li
a Chat
sib-route(name='circle-information')
li
a Information
.views-container
h2 Tableau de bord
sib-dashboard(
data-src=`${endpoints.dashboards || endpoints.get.dashboards}`
)
sib-directory(
data-src=`${endpoints.users || endpoints.get.users}`,
range-groups=`${endpoints.groups || endpoints.get.groups}`,
range-skills=`${endpoints.skills || endpoints.get.skills}`
)
.views-container
sib-event(data-src=`${endpoints.events || (endpoints.get && endpoints.get.events)}`
range-event-type=`${endpoints.typeevents || (endpoints.get && endpoints.get.typeevents)}`
upload-dir=`${endpoints.uploads || (endpoints.get && endpoints.get.uploads)}`
)
\ No newline at end of file
.content-box.full-width
#job-offer-board
.job-offers__container
sib-job-board(
data-src=`${endpoints.joboffers || endpoints.get.joboffers}`,
range-skills=`${endpoints.skills || endpoints.get.skills}`
)
div.job-offers__newoffer
sib-link(next="job-offer-create").plus-button
div.icon-plus
div Post a new offer
#job-offer-create(hidden)
sib-link(class="backlink", next="job-offers") Back
include views/job-offer/page-job-offer-create.pug
#job-offer-edit(hidden)
sib-link(class="backlink", next="job-offers") Back
include views/job-offer/page-job-offer-edit.pug
sib-router(default-route='job-offer-board')
sib-route(name='job-offer-board')
sib-route(name='job-offer-create')
sib-route(name='job-offer-edit')
\ No newline at end of file
.content-box.flex.full-width
sib-display.content-box__header(
bind-resources
fields='name, parenthesis, username, endParenthesis'
value-parenthesis=" ("
value-endParenthesis=")"
class-parenthesis='name'
class-endParenthesis='name'
class-name='name'
class-username='name'
)
.chat-view
sib-chat(
data-authentication='login',
data-auto-login='true',
data-bosh-service-url=`${xmpp}`,
data-i18n='en',
bind-resources
)
sib-profile(
bind-user
upload-src=`${endpoints.uploads || endpoints.post.uploads}`
range-skills=`${endpoints.skills || endpoints.get.skills}`
)
.views-container.sidebar-is-closed
.content-box.flex.full-width.with-form
div.content-box__header
sib-ac-checker(permission='acl:Read', bind-resources)
sib-display(
bind-resources
fields='const-title1, number, customer.name, name'
class-const-title1='h1-like'
class-number='h1-like word-spacing-right'
class-customer.name='h1-like'
class-name='h1-aside name'
value-const-title1='N°'
)
.mobile-sidebar-button.jsMobileSidebarOpenButton
button.icon-arrow-left-circle
span MENU
div
sib-ac-checker(permission='acl:Read', bind-resources)
#project-chat(hidden)
include views/project/page-project-chat.pug
#project-information(hidden)
include views/project/page-project-profile.pug
nav.jsRightMenu(role='navigation')
sib-router(default-route='project-chat')
ul
li.jsOffsiteToggle
a Replier le menu
sib-route(name='project-chat')
li
a Chat
sib-route(name='project-information')
li
a Information
sib-route(name='project-contributions-help')
\ No newline at end of file
include templates/hubl-groups.pug
.content-box.with-form.user-profile__container
.section.user-bio
sib-display.avatar-display(
bind-user=''
fields='account.picture'
label-account.picture=''
widget-account.picture='sib-display-img'
)
sib-display.name-diplay(
bind-user=''
fields='user-name-groups(name, groups), username'
class-name='name'
label-groups=''
multiple-groups=''
widget-groups='hubl-groups-name'
class-username='username'
)
sib-form.info-form(
bind-user=''
fields='profile.bio, inline-1(profile.city, email), inline-2(profile.phone, profile.website), inline-3(profile.available), account.picture, instruction'
class-profile.bio='form-label is-light'
label-profile.bio='short description'
class-profile.city='form-label is-light'
label-profile.city='your cell'
class-email='form-label is-light'
class-profile.phone='form-label is-light'
label-profile.phone='phone'
class-profile.website='form-label is-light'
label-profile.website='your website'
class-profile.available='form-label is-light'
label-profile.available='your availability'
class-account.picture='form-label is-light'
label-account.picture='your picture'
widget-instruction='hubl-instruction'
)
.section.user-skills
sib-form(
bind-user=''
range-skills=`${endpoints.skills || endpoints.get.skills}`
fields='skills'
class-skills='form-label is-dark'
label-skills='Your main skills (4 max.):'
multiple-skills='sib-multiple-select'
widget-skills='sib-form-auto-completion'
)
sib-widget(name='hubl-instruction')
template
span Show us your most beautiful smile
p Pictures help us to know ourselves and also to recognize ourselves, so don't be afraid to show your pretty face and avoid strange avatars.
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<title>{{@root.client.name}}</title>
{{#if @root.client.description}}
<meta name="description" content="{{@root.client.description}}" />
{{else}}
<meta name="description" content="{{@root.client.name}}" />
{{/if}}
<link rel="icon" href="{{#if @root.client.favicon}}{{@root.client.favicon}}{{else}}/pwa/favicon.ico{{/if}}" />
<link rel="apple-touch-icon" href="/apple-touch-icon.png" sizes="180x180" />
<link rel="mask-icon" href="/mask-icon.svg" color="#FFFFFF" />
<meta name="theme-color" content="#f6f6f6" />
<link rel="dns-prefetch" href="https://fonts.googleapis.com" />
<link rel="dns-prefetch" href="https://fonts.gstatic.com" />
<link rel="dns-prefetch" href="{{@root.client.server}}" />
<link rel="preconnect" crossorigin="anonymous" href="https://fonts.googleapis.com" />
<link rel="preconnect" crossorigin="anonymous" href="https://fonts.gstatic.com" />
<link rel="preconnect" href="{{@root.client.server}}" />
<link rel="stylesheet" crossorigin="anonymous" href="https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,600;0,700;0,800;1,300;1,400;1,600;1,700;1,800&display=swap" />
<link rel="stylesheet" href="src/styles/index.scss" />
<script data-default-context="" type="application/ld+json">{{{json context}}}</script>
{{#each @root.npm as |module|}}
{{#if module.path}}
<script type="module" src="{{module.path}}" defer=""{{mergeAttributes module.attributes}}></script>
{{else}}
<script type="module" src="https://cdn.jsdelivr.net/npm/{{module.package}}@{{module.version}}" defer=""{{mergeAttributes module.attributes}}></script>
{{/if}}
{{/each}}
<script type="module" src="/src/index.js"></script>
</head>
{{#if @root.client.css}}
{{#if (isArray @root.client.css)}}
{{#each @root.client.css as | css | }}
<link rel="stylesheet" href="{{css}}" />
{{/each}}
{{else}}
<link rel="stylesheet" href="{{@root.client.css}}" />
{{/if}}
{{/if}}
{{#with (getComponent "autoLogin")}}
{{#if (includes integration "replacement")}}
<{{parameters.replacement}}{{mergeAttributes attributes}}></{{parameters.replacement}}>
{{else}}
<sib-auth style="display: none !important" auto-login="">
<sib-auth-provider
data-authority="{{ parameters.authority }}"
data-id="{{ parameters.authorityName }}"
data-client-name="{{ @root.client.name }}"
>
</sib-auth-provider>
</sib-auth>
{{/if}}
{{/with}}