jnj addition

This commit is contained in:
Norm Rasmussen
2022-04-11 09:08:52 -04:00
parent 983b07b14c
commit 7bc34f1c91
45 changed files with 4525 additions and 0 deletions

Binary file not shown.

View File

@ -0,0 +1,75 @@
<div class="np-card">
<div class="np-card-container">
<div class="np-card-image-content-top">
</div>
<img
class="np-card-image"
alt="{{ course.name }}"
src="{{ course.image_url }}"
>
</div>
<div class="np-card-content np-card-content-vertical np-card-padding course-card-content" style='padding: 1.5rem;'>
<p class="course-title-vision">
{{ course.name }}
</p>
<div class="np-card-content-footer">
{% capture course_path %}{% route course, id: course.id %}{% endcapture %}
{% if course.has_to_restart? %}
{% include "course_version_outdated_popup", path: course_path %}
{% endif %}
<a
class="np-top-button np-button-font-color np-button np-button-big" href="{% route course_enrollment, code: course.enrollment_code %}"
style='background: linear-gradient(90deg, #006161 0%, #006161 100%); border-radius: 8px;'
>
{% if course.enrolled? == false %}
{% t shared.enroll %}
{% elsif course.started? == false %}
{% t shared.start, key: current_school.course_vocabulary %}
{% elsif course.completed? %}
{% t shared.course.view, key: current_school.course_vocabulary %}
{% else %}
{% t shared.continue %}
{% endif %}
</a>
</div>
</div>
</div>
<style>
.fas.fa-star {
line-height: 1.15;
}
.course-card-content {
border-radius: 0 0 8px 8px;
}
.course-card-content {
color: black!important;
}
.np-card {
margin-bottom: 10px!important;
}
.np-card-content-title {
text-shadow: 1px 1px black;
}
.np-top-button.np-button-font-color.np-button:hover {
background: #006161!important;
color: white!important;
}
.np-top-button.np-button-font-color.np-button {
background: white!important;
color: #006161!important;
}
.course-title-vision {
height: 70px;
font-family: Lexend !important;
}
</style>

View File

@ -0,0 +1,111 @@
<div class="np-card np-no-horizontal-padding">
<div class="np-card-container">
<div class="np-learning-path np-featured-course">
<div class="np-featured-course-img-container">
<div class="np-card-image-content-top">
{% include "course_details" %}
</div>
<img
class="np-card-image"
alt="{{ course.name }}"
src="{{ course.image_url }}"
>
</div>
<div class="np-card-text-wrapper">
<div class="np-card-content np-card-padding np-card-content-vertical">
<h3 class="np-card-content-title">
{{ course.name }}
</h3>
<div class="np-card-content-description" style='font-size: 16px !important; line-height: 24px !important; color: black !important; font-family: Lexend !important;'>
{{ course.full_description }}
</div>
<div class="np-card-content-footer" style='display: flex; justify-content: space-between;'>
<div class='np-card-content-footer-left'style='display: flex; justify-content: left;'>
<a
class="np-top-button np-button-font-color np-button" href="{% route course_enrollment, code: course.enrollment_code %}" style='background: linear-gradient(90deg, #006161 0%, #006161 100%); font-weight: 800;
border-radius: 8px; margin-right: 24px;'
>
{% if course.enrolled? == false %}
{% t shared.enroll %}
{% elsif course.started? == false %}
{% t shared.start, key: current_school.course_vocabulary %}
{% elsif course.completed? %}
{% t shared.course.view, key: current_school.course_vocabulary %}
{% else %}
{% t shared.continue %}
{% endif %}
</a>
<div class="np-card-progress np-button-color" style='color: #006161; font-weight: 700; font-size: 12px; align-self: center; text-transform: uppercase;'>
{% t shared.progress, count: course.progress %}
</div>
</div>
<div class='course-detail-rating'>
<div class='course-detail-rating-stars'>
{% for i in (1..5) %}
{% if course.properties.np_course_rating >= i %}
<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10 0L12.5863 6.44033L19.5106 6.90983L14.1846 11.3597L15.8779 18.0902L10 14.4L4.12215 18.0902L5.81535 11.3597L0.489435 6.90983L7.41374 6.44033L10 0Z" fill="#006161"/>
</svg>
{% else %}
<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.25" d="M10 0L12.5863 6.44033L19.5106 6.90983L14.1846 11.3597L15.8779 18.0902L10 14.4L4.12215 18.0902L5.81535 11.3597L0.489435 6.90983L7.41374 6.44033L10 0Z" fill="#006161"/>
</svg>
{% endif %}
{% endfor %}
</div>
<span class="np-details-label" style= 'display: flex;'>
{{course.properties.np_course_rating}} <div style='font-weight: 500; padding-left: 5px;'>({{course.properties.np_course_rating_count}}) </div>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<style>
.np-card-content.np-card-padding.np-card-content-vertical {
border-radius: 0 8px 8px 0;
}
@media screen and (max-width: 1024px) {
.np-card-content.np-card-padding.np-card-content-vertical {
border-radius: 8px;
}
}
.np-card-image {
border-top-left-radius: 8px;
border-top-right-radius: 0;
border-bottom-left-radius: 8px;
}
@media screen and (max-width: 1024px) {
.np-card-image {
border-top-right-radius: 8px;
border-bottom-left-radius: 0;
}
}
.np-top-button.np-button-font-color.np-button:hover {
background: #006161!important;
color: white!important;
}
.np-top-button.np-button-font-color.np-button {
background: white!important;
color: #006161!important;
}
.np-card-content-title {
color: #006161!important;
}
</style>
<script>
$(".np-card-content-description").css('font-size','16px !important')
$(".np-card-content-description").css('color','white !important')
$(".np-card-content-description").css('font-family', 'Lexend !important')
</script>

View File

@ -0,0 +1,88 @@
<div class="np-card np-no-horizontal-padding">
<div class="np-card-container" style="border-radius: 8px;">
<div class="np-learning-path">
<img
alt="{{ learning_path.name }}"
class="np-card-image np-learning-path-image"
src="{{ learning_path.image_url }}"
/>
<div class="np-card-text-wrapper">
<div class="np-card-content np-card-padding np-card-content-vertical">
<h3 class="np-card-content-title">
{{ learning_path.name }}
</h3>
<div class="np-hidden-mobile np-card-content-description">
{{ learning_path.description }}
</div>
<div class="np-hidden-mobile np-card-content-progress
np-button-color" style='color: #006161;'>
{% t shared.progress, count: learning_path.progress %}
</div>
<div class="np-hidden-mobile np-card-progress-bar-container" style='border-radius: 40px;'>
<div
style="width: {{ learning_path.progress }}%; background: #006161; border-radius: 40px;"
class="np-button-background-color np-card-progress-bar">
</div>
</div>
<div class="np-card-content-footer">
<a
class="np-button"
{% if learning_path.enrolled? %}
{% if learning_path.current_item.course? %}
href="{% route learning_path, id: learning_path.id %}"
{% elsif learning_path.current_item.training_event? %}
href="{% route training_session, id: learning_path.current_item.id %}"
{% endif %}
{% else %}
href="{% route learning_path_enrollment, code: learning_path.enrollment_code %}"
{% endif %}
style='background: linear-gradient(90deg, #006161 0%, #006161 100%); font-weight: 800; border-radius: 8px;'
>
{% if learning_path.enrolled? == false %}
{% t shared.enroll %}
{% elsif learning_path.started? == false %}
{% t shared.learning_path.start %}
{% elsif learning_path.completed? %}
{% t shared.learning_path.view %}
{% else %}
{% t shared.continue %}
{% endif %}
</a>
<span class="np-hidden-mobile np-learning-path-items">
<span class="np-learning-path-items-count">
{{ learning_path.items.count }} {% t shared.course_vocabulary.plural, key: current_school.course_vocabulary %}
</span>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
<style>
.np-learning-path .np-card-content.np-card-padding.np-card-content-vertical {
border-radius: 0 8px 8px 0;
}
@media screen and (max-width: 768px) {
.np-learning-path .np-card-content.np-card-padding.np-card-content-vertical {
border-radius: 8px;
}
}
.np-learning-path .np-card-image {
border-top-left-radius: 8px;
border-top-right-radius: 0;
border-bottom-left-radius: 8px;
}
@media screen and (max-width: 768px) {
.np-learning-path .np-card-image {
border-top-right-radius: 8px;
border-bottom-left-radius: 0;
}
}
</style>

View File

@ -0,0 +1,46 @@
<div class="np-card np-event-card">
<div class="np-card-container">
<div class="np-card-content-training-event">
<h3 class="np-card-content-title">
{{ training_event.title }}
</h3>
<div class="np-card-content-subtitle">
{% t shared.event_types, key: training_event.event_type %}
</div>
<div class="np-card-training-session">
<span class="np-card-content-label" style='border-radius: 4px; opacity: 0.15;'>
{% t .next_session %}
</span>
<div class="np-card-training-session-date">
<div>
<div class="np-card-training-session-date-month">
{{ training_event.sessions.first.month }}
</div>
<div class="np-card-training-session-date-year np-opacity-50">
{{ training_event.sessions.first.year }}
</div>
</div>
<div class="np-card-training-session-date-day">
{% if training_event.sessions.first.day < 10 %}0{% endif %}{{ training_event.sessions.first.day }}
</div>
<div class="np-button-background-color np-card-training-session-date-bar" style='border-right: 16px solid #006161;'></div>
</div>
</div>
</div>
<div class="np-card-content np-card-content-vertical np-card-padding">
<div class="np-card-training-sessions">
<span class="np-card-training-sessions-label">
{% t .sessions, count: training_event.sessions.size %}
</span>
<a
class="np-button"
href="{% route training_session, id: training_event.sessions.first.id %}"
style='background: linear-gradient(90deg, #006161 0%, #006161 100%); border-radius: 8px;'
>
{% t shared.view %}
</a>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,62 @@
{% assign topic_classname = topic | split: " " %}
<div class="courses-carousel np-carousel" data-topic="{{ topic_classname | join: '-' | downcase }}">
{% if items.any? %}
{% assign sorted_items =items | sort: "name" %}
{% for course in sorted_items %}
{% comment %} USED FOR PROGRESS FILTER {% endcomment %}
{% assign course_status = "" %}
{% if course.started? == false %}
{% assign course_status = "not-started" %}
{% elsif course.completed? %}
{% assign course_status = "completed" %}
{% elsif course.started? %}
{% assign course_status = "in-progress" %}
{% endif %}
{% if topic == "Not Categorized" %}
<div class="np-carousel-card {{course_status}}"> {% include "cards_course" with course %}</div>
{% else %}
{% for category in course.categories %}
{% if category.name == topic %}
<div class="np-carousel-card {{course_status}}"> {% include "cards_course" with course %}</div>
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
</div>
<script>
$(document).ready(function(){
$(".courses-carousel").not('.slick-initialized').slick({
slidesToShow: 3,
cssEase: 'linear',
prevArrow: '<i class="fal fa-chevron-left"></i>',
nextArrow: '<i class="fal fa-chevron-right"></i>',
infinite: false,
responsive: [
{
breakpoint: 1170,
settings: {
slidesToShow: 2,
}
},
{
breakpoint: 768,
settings: {
slidesToShow: 1,
slidesToScroll: 1,
dots: false,
arrows: true,
}
}
]
});
});
</script>

View File

@ -0,0 +1,37 @@
<div class="events-carousel np-carousel np-carousel-bg-blue" id="events-carousel">
{% if items.any? %}
{% for training_event in items %}
<div class="np-carousel-card"> {% include "cards_training_event" with training_event %}</div>
{% endfor %}
{% endif %}
</div>
<script>
$(document).ready(function(){
$(".events-carousel").slick({
slidesToShow: 3,
prevArrow: '<i class="fal fa-chevron-left"></i>',
nextArrow: '<i class="fal fa-chevron-right"></i>',
infinite: false,
dots: false,
arrows: true,
responsive: [
{
breakpoint: 1170,
settings: {
slidesToShow: 2,
}
},
{
breakpoint: 768,
settings: {
slidesToShow: 1,
}
}
]
});
});
</script>

View File

@ -0,0 +1,124 @@
{% assign used_instructor_names = "" %}
<div class="instructors-carousel np-carousel" id="instructors-carousel">
<div class="np-carousel-card">
<div class="instructor-slide">
<div class="instructor-image" style='height:160px; width: 160px;'>
<img style='height: 136px; width: 136px;' src="https://s3.amazonaws.com/static.northpass.com/NorthpassAcademy/headshot_1.jpg" />
</div>
<div class="instructor-info">
<div class="instructor-name">Paula Naba</div>
<a href="mailto:paula@northpass.com" target="_blank" class="instructor-email" style='color: #006161;'>paula@northpass.com</a>
<div class="instructor-joined">Director of Customer Success</div>
</div>
</div>
</div>
<div class="np-carousel-card">
<div class="instructor-slide">
<div class="instructor-image" style='height:160px; width: 160px;'>
<img style='height: 136px; width: 136px;' src="https://s3.amazonaws.com/static.northpass.com/NorthpassAcademy/charlie+1.png" />
</div>
<div class="instructor-info">
<div class="instructor-name">Charlie Bencivenga</div>
<a href="mailto:cbencivenga@northpass.com" target="_blank" class="instructor-email" style='color: #006161;'>cbencivenga@northpass.com</a>
<div class="instructor-joined">Solutions Engineering Manager</div>
</div>
</div>
</div>
<div class="np-carousel-card">
<div class="instructor-slide">
<div class="instructor-image" style='height:160px; width: 160px;'>
<img style='height: 136px; width: 136px;' src="https://s3.amazonaws.com/static.northpass.com/NorthpassAcademy/headshot_4.jpg" />
</div>
<div class="instructor-info">
<div class="instructor-name">Rob Abrams</div>
<a href="mailto:paula@northpass.com" target="_blank" class="instructor-email" style='color: #006161;'>rabrams@northpass.com</a>
<div class="instructor-joined">Senior Implementation Manager</div>
</div>
</div>
</div>
<div class="np-carousel-card">
<div class="instructor-slide">
<div class="instructor-image" style='height:160px; width: 160px;'>
<img style='height: 136px; width: 136px;' src="https://s3.amazonaws.com/static.northpass.com/NorthpassAcademy/headshot_2.jpg" />
</div>
<div class="instructor-info">
<div class="instructor-name">Bridget Cafaro</div>
<a href="mailto:paula@northpass.com" target="_blank" class="instructor-email" style='color: #006161;'>bcafaro@northpass.com</a>
<div class="instructor-joined">Customer Success Manager</div>
</div>
</div>
</div>
<div class="np-carousel-card">
<div class="instructor-slide">
<div class="instructor-image" style='height:160px; width: 160px;'>
<img style='height: 136px; width: 136px;' src="https://s3.amazonaws.com/static.northpass.com/NorthpassAcademy/eric.png" />
</div>
<div class="instructor-info">
<div class="instructor-name">Eric Pavan</div>
<a href="mailto:epavan@northpass.com" target="_blank" class="instructor-email" style='color: #006161;'>epavan@northpass.com</a>
<div class="instructor-joined">Customer Success Manager</div>
</div>
</div>
</div>
<div class="np-carousel-card">
<div class="instructor-slide">
<div class="instructor-image" style='height:160px; width: 160px;'>
<img style='height: 136px; width: 136px;' src="https://s3.amazonaws.com/static.northpass.com/NorthpassAcademy/brian.png" />
</div>
<div class="instructor-info">
<div class="instructor-name">Brian Bastante</div>
<a href="mailto:paula@northpass.com" target="_blank" class="instructor-email" style='color: #006161;'>bbastante@northpass.com</a>
<div class="instructor-joined">Technical Support Specialist</div>
</div>
</div>
</div>
<div class="np-carousel-card">
<div class="instructor-slide">
<div class="instructor-image" style='height:160px; width: 160px;'>
<img style='height: 136px; width: 136px;' src="https://s3.amazonaws.com/static.northpass.com/NorthpassAcademy/headshot_3.png" />
</div>
<div class="instructor-info">
<div class="instructor-name">Kasia Cholewa</div>
<a href="mailto:paula@northpass.com" target="_blank" class="instructor-email" style='color: #006161;'>support@northpass.com</a>
<div class="instructor-joined">Technical Support Specialist</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$(".instructors-carousel").slick({
slidesToShow: 2.5,
prevArrow: '<i class="fal fa-chevron-left"></i>',
nextArrow: '<i class="fal fa-chevron-right"></i>',
infinite: false,
dots: false,
arrows: true,
responsive: [
{
breakpoint: 1170,
settings: {
slidesToShow: 2,
}
},
{
breakpoint: 768,
settings: {
slidesToShow: 1,
}
}
]
});
});
</script>
<style>
.instructors-carousel .fa-chevron-right:before {
right: -7px !important;
}
</style>

View File

@ -0,0 +1,4 @@
{% comment %} <i class="far fa-lock-alt np-course-outline-content-activity-icon-locked"></i> {% endcomment %}
<span class="np-course-outline-content-activity-link">
{{ activity.title }}
</span>

View File

@ -0,0 +1,9 @@
<a
href="{% route activity_viewer,
id: activity.id,
course_id: params.course_id,
learning_path_id: params.learning_path_id
%}" class="{{ class }}"
>
{{ activity.title }}
</a>

View File

@ -0,0 +1,21 @@
<div class="col-xs-12 np-top-image-spacing np-course-banner">
<div class="np-course-banner-overlay"></div>
<img
src="{{ course.image_url }}"
class="np-course-banner-image"
alt="{{ course.name }}"
/>
<div class="np-course-info np-course-banner-info">
<div class="np-course-title">{{ course.name }}</div>
{% include "course_details_review" %}
</div>
</div>
<style>
.fas.fa-star {
color: white;
}
.fas.fa-star {
line-height: 1.15;
}
</style>

View File

@ -0,0 +1,60 @@
<div class="np-card-container">
<div class="row np-course-content np-card-padding-dynamic" style='background: #00283D;'>
{% include "course_banner" %}
<div class="col-xs-12 col-sm-6">
{% include "course_description" %}
{% comment %} {% if course.categories.any? %}
<div class="np-card-content-divider">
{% include "course_categories" %}
</div>
{% endif %} {% endcomment %}
{% if course.instructors.any? %}
<div class="np-card-content-divider">
{% include "course_instructors" %}
</div>
{% endif %}
{% if course.events.any? %}
<div class="np-card-content-divider">
{% include "course_events" %}
</div>
{% endif %}
</div>
<div class="np-grid-spacing col-xs-12 col-sm-6">
<div class="np-top-cta">
{% include "course_progress_and_cta" %}
</div>
{% include "course_outline" %}
</div>
</div>
</div>
<style>
@media only screen and (min-width: 768px) {
body {
display: grid;
grid-template-columns: 1fr;
grid-template-areas: "header" "nav" "main" "footer" "powered";
grid-template-rows: 120px 50px 1fr 160px 60px;
}
header {
grid-area: header;
}
nav {
grid-area: nav;
margin-bottom: 17px;
}
main {
grid-area: main;
margin-top: 0 !important;
}
footer {
grid-area: footer;
}
.np-powered-by {
grid-area: powered;
}
}
</style>

View File

@ -0,0 +1,36 @@
{% assign activities_count = 0 %}
{% for course_section in course.sections %}
{% for course_activity in course_section.activities %}
{% assign activities_count = activities_count | plus: 1 %}
{% endfor %}
{% endfor %}
<div class="np-course-details">
<div class="np-course-detail">
<strong>{{ activities_count }}</strong>
<span class="np-details-label">
{% if activities_count == 1 %}Activity{% else %}Activities{% endif %}
</span>
</div>
<div class="np-course-detail">
</div>
<div class="np-course-detail">
{% if course.properties.course_length contains 'missing property' %}
missing property: course.properties.course_length
{% else %}
{% if course.properties.course_length %}
{% if course.properties.course_length > 0 %}
<strong>{{course.properties.course_length}}</strong> mins<span class="np-details-label">Duration</span>
{% else %}
<div>&nbsp;&nbsp;&nbsp;</div>
{% endif %}
{% endif %}
{% endif %}
</div>
</div>
<style>
.np-course-details {
text-shadow: 1px 1px black;
}
</style>

View File

@ -0,0 +1,60 @@
{% assign activities_count = 0 %}
{% for course_section in course.sections %}
{% for course_activity in course_section.activities %}
{% assign activities_count = activities_count | plus: 1 %}
{% endfor %}
{% endfor %}
<div class="np-course-details">
<div class="np-course-detail" id='hideable'>
<strong>{{ activities_count }}</strong>
<span class="np-details-label">
{% if activities_count == 1 %}Activity{% else %}Activities{% endif %}
</span>
</div>
<div class="np-course-detail">
{% if course.properties.course_length contains 'missing property' %}
missing property: course.properties.course_length
{% else %}
{% if course.properties.course_length %}
{% if course.properties.course_length > 0 %}
<strong>{{course.properties.course_length}}</strong> mins<span class="np-details-label">Duration</span>
{% else %}
<div>&nbsp;&nbsp;&nbsp;</div>
{% endif %}
{% endif %}
{% endif %}
</div>
<div class="np-course-detail course-detail-rating">
<div class='course-detail-rating-stars' style='display: flex; flex-wrap: nowrap;'>
{% for i in (1..5) %}
{% if course.properties.np_course_rating >= i %}
<svg width="20" height="19" viewBox="0 0 20 19" preserveAspectRatio fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M10 0L12.5863 6.44033L19.5106 6.90983L14.1846 11.3597L15.8779 18.0902L10 14.4L4.12215 18.0902L5.81535 11.3597L0.489435 6.90983L7.41374 6.44033L10 0Z" fill="#006161"/>
</svg>
{% else %}
<svg width="20" height="19" viewBox="0 0 20 19" preserveAspectRatio fill="none" xmlns="http://www.w3.org/2000/svg">
<path opacity="0.25" d="M10 0L12.5863 6.44033L19.5106 6.90983L14.1846 11.3597L15.8779 18.0902L10 14.4L4.12215 18.0902L5.81535 11.3597L0.489435 6.90983L7.41374 6.44033L10 0Z" fill="#006161"/>
</svg>
{% endif %}
{% endfor %}
</div>
<span class="np-details-label" style= 'display: flex;'>
{{course.properties.np_course_rating}} <div style='font-weight: 500; padding-left: 5px;'>({{course.properties.np_course_rating_count}}) </div>
</span>
</div>
</div>
<style>
.course-detail-rating {
align-self: flex-end;
}
.course-detail-rating-stars {
margin-bottom: 5px;
}
@media screen and (max-width: 768px) {
.course-detail-rating-stars {
margin-bottom: 0;
}
}
</style>

View File

@ -0,0 +1,52 @@
<h3 class="np-card-heading">
Meet the Instructor
</h3>
<div class='np-flex'>
{% for instructor in course.instructors limit: 2 %}
<div class="np-content-instructors-content-item">
<div class="instructor-image">
<img
src="{{ instructor.avatar_url }}"
class="np-content-instructors-content-image"
alt="{{ instructor.name }}"
style='border-radius: 50%;'
/>
</div>
<div class="np-content-instructors-content-description" style='margin: auto 1rem;'>
<div class="np-content-instructors-content-name">
{{ instructor.name }}
</div>
<div class="np-content-instructors-content-info">
{{ instructor.title }}
</div>
</div>
</div>
{% endfor %}
</div>
<style>
.instructor-image {
background: #555269;
border-radius: 50%;
width: 100px;
height: 100px;
display: flex;
justify-content: center;
align-items: center;
min-width: 100px;
}
.instructor-image img {
border-radius: 50%;
width: 80px;
height: 80px;
}
@media only screen and (min-width: 768px) and ( max-width: 920px) {
.np-flex {
flex-direction: column;
}
}
@media only screen and ( max-width: 630px) {
.np-flex {
flex-direction: column;
}
}
</style>

View File

@ -0,0 +1,73 @@
<div class="np-card-container np-card-padding-large">
{% include "course_banner" %}
<div class="np-top-cta">
{% include "course_progress_and_cta" %}
</div>
</div>
{% if course.progress == 0 %}
<div class="np-card-container np-card-padding np-card-spacing">
{% include "course_description" %}
</div>
<div class="np-card-container np-card-padding np-card-spacing">
{% include "course_outline" %}
</div>
{% else %}
<div class="np-card-container np-card-padding np-card-spacing">
{% include "course_outline" %}
</div>
<div class="np-card-container np-card-padding np-card-spacing">
{% include "course_description" %}
</div>
{% endif %}
{% comment %} {% if course.categories.any? %}
<div class="np-card-container np-card-padding np-card-spacing">
{% include "course_categories" %}
</div>
{% endif %} {% endcomment %}
{% if course.instructors.any? %}
<div class="np-card-container np-card-padding np-card-spacing">
{% include "course_instructors" %}
</div>
{% endif %}
{% if course.events.any? %}
<div class="np-card-container np-card-padding np-card-spacing">
{% include "course_events" %}
</div>
{% endif %}
<style>
.np-card-container {
background: #00283D !important;
}
@media only screen and (max-width: 630px) {
.np-course-info.np-course-banner-info {
position: absolute;
bottom: 1.5rem;
left: 1.5rem;
display: flex;
flex-direction: column;
justify-content: space-between;
width: 90%;
height: 80%;
}
}
@media only screen and (max-width: 360px) {
#hideable {
display: none;
}
.np-course-details {
justify-content: space-between;
}
.np-course-info.np-course-banner-info {
left: 0;
margin: auto 1rem;
}
.np-course-banner .np-course-title {
margin-bottom: 2.5rem;
}
}
</style>

View File

@ -0,0 +1,38 @@
<div class="np-course-outline">
<div class="np-text-title np-course-outline-title" style='color: #FFFFFF; opacity: 0.5;'>
{% t .header, key: current_school.course_vocabulary %}
</div>
<div class="np-course-outline-content">
<ol class="np-course-outline-content-section">
{% for section in course.sections %}
<li class="np-course-outline-content-section-list">
<div class="np-course-outline-content-section-name np-text-title-bold np-text-title-bold">
{{ section.name }}
</div>
<ol class="np-course-outline-content-activity">
{% for activity in section.activities %}
<li class="np-course-outline-content-activity-list">
{% if activity.completed? %}
<i class="fas fa-check np-course-outline-content-activity-icon"></i>
{% if activity.locked? %}
{% include "course_activity_locked" %}
{% else %}
{% include "course_activity_unlocked", class: "np-course-outline-content-activity-link-completed" %}
{% endif %}
{% else %}
<i class="icon-course-not-started np-course-outline-content-activity-icon"></i>
{% if activity.locked? %}
{% include "course_activity_locked" %}
{% else %}
{% include "course_activity_unlocked", class: "np-course-outline-content-activity-link" %}
{% endif %}
{% endif %}
</li>
{% endfor %}
</ol>
</li>
{% endfor %}
</ol>
</div>
</div>

View File

@ -0,0 +1,47 @@
<div class="np-top-cta-progress-content">
<div class="np-top-cta-progress-title np-text-title">
{% t .header %}
</div>
<div class="np-progress-bar-container" style='border-radius: 40px;'>
<div
style="width: {{ course.progress }}%; background: #006161; border-radius: 40px;"
class="np-button-background-color np-card-progress-bar">
</div>
</div>
<div class="np-top-cta-progress-text
{% if course.completed? %} np-color-success {% else %} np-button-color {% endif %}
"
style='color: #006161;'>
{% t shared.progress, count: course.progress %}
</div>
</div>
{% if course.learner_can_retake? %}
<form action="{% route course_retake, id: course.id %}" method="POST">
{% form_authenticity_token %}
<button type="submit" class="np-top-button np-button-font-color np-button np-button-big" style='background: linear-gradient(90deg, #006161 0%, #006161 100%); font-weight: 800; border-radius: 8px;'>
{% t .retake, key: current_school.course_vocabulary %}
</button>
</form>
{% else %}
<a
class="np-top-button np-button-font-color np-button np-button-big"
style='background: linear-gradient(90deg, #006161 0%, #006161 100%); font-weight: 800; border-radius: 8px; margin-right: 24px;'
{% if course.enrolled? %}
href="{% route course_viewer, course_id: course.id, learning_path_id: params.learning_path_id %}"
{% else %}
href="{% route course_enrollment, code: course.enrollment_code %}"
{% endif %}
>
{% if course.enrolled? == false %}
{% t shared.enroll %}
{% elsif course.started? == false %}
{% t shared.course.start, key: current_school.course_vocabulary %}
{% elsif course.completed? %}
{% t shared.course.view, key: current_school.course_vocabulary %}
{% else %}
{% t shared.continue %}
{% endif %}
</a>
{% endif %}

View File

@ -0,0 +1,78 @@
{% assign rating = course.properties.np_course_rating %}
{% if isButton %}
<div class="np-ratings-container np-ratings-button" onclick='showPopup("ratingsModal")'>
{% else %}
<div class="np-ratings-container">
{% endif %}
<div class="rating-group-static">
<div class="fas fa-star-half {% if rating >= 0.5 %}star-gold{% endif %}"></div>
<div class="fas fa-star {% if rating >= 1.0 %}star-gold{% endif %}"></div>
<div class="fas fa-star-half {% if rating >= 1.5 %}star-gold{% endif %}"></div>
<div class="fas fa-star {% if rating >= 2.0 %}star-gold{% endif %}"></div>
<div class="fas fa-star-half {% if rating >= 2.5 %}star-gold{% endif %}"></div>
<div class="fas fa-star {% if rating >= 3.0 %}star-gold{% endif %}"></div>
<div class="fas fa-star-half {% if rating >= 3.5 %}star-gold{% endif %}"></div>
<div class="fas fa-star {% if rating >= 4.0 %}star-gold{% endif %}"></div>
<div class="fas fa-star-half {% if rating >= 4.5 %}star-gold{% endif %}"></div>
<div class="fas fa-star {% if rating == 5.0 %}star-gold{% endif %}"></div>
</div>
<div class="np-course-rating">{{ course.properties.np_course_rating }}</div>
<div class="np-course-rating-count">({{course.properties.np_course_rating_count}})</div>
</div>
<style>
.np-ratings-container {
display:flex;
align-items:center;
font-size:0.75rem;
color:#fff;
font-weight:500;
}
.np-ratings-button {
background:transparent;
outline:none;
border: 2px solid transparent;
transition:border-color 0.2s;
border-radius:4px;
cursor:pointer;
padding: 1px 6px;
}
.np-ratings-button:hover { border: 2px solid #E6E9EA; }
.np-course-rating-count {
color:#bec2c6;
margin-left:3px;
}
.rating-group-static {
margin-right:8px;
display: inline-flex;
}
.rating-group-static .fa-star,
.rating-group-static .fa-star-half {
color: #EBECED;
font-size: 1.15rem;
margin: 0 1px 3px;
}
.rating-group-static .fa-star-half {
position:relative;
z-index:10;
}
.rating-group-static .fa-star{
margin-left: -22px;
}
.rating-group-static .star-gold{ color: #F7BB17; }
@media (min-width:768px) {
.np-ratings-button { margin-right:24px; }
}
</style>

View File

@ -0,0 +1,112 @@
{% assign topic_classname = topic | split: " " %}
<div class="np-progress-filter-wrapper">
{% if label %}
<div class="np-progress-filter-label">{{ label }}</div>
{% endif %}
<div class="progress-filter filter-select-wrapper select-wrapper np-button" data-topic="{{ topic_classname | join: '-' | downcase }}" style="border-radius: 8px;">
<select >
<option selected disabled hidden>{{ default_option}}</option>
<option value="a">All Courses</option>
<option value="n">Not Started</option>
<option value="i">In Progress</option>
<option value="c">Completed</option>
</select>
</div>
</div>
<style>
.np-progress-filter-label {
color: rgba(255, 255, 255, 0.5);
padding-right: 7px;
text-transform: none;
font-weight:500;
font-size:0.812rem;
}
.np-progress-filter-wrapper {
display: flex;
justify-content: flex-end;
align-items: center;
}
.filter-select-wrapper {
position: relative;
padding:0;
border: 2px solid rgba(255, 255, 255, 0.25);
color: #fff;
height:auto;
text-transform: none;
background: transparent;
border-radius:0;
}
.filter-select-wrapper:hover {
background:transparent;
color:#fff;
}
.select-items {
position: absolute;
background-color: #062531;
top: 105%;
left: -2px;
z-index: 99;
width: 102%;
border: 2px solid rgba(255, 255, 255, 0.25);
border-top:none;
}
.select-items div {
color: rgba(255, 255, 255, 0.5);
border-top:none;
cursor: pointer;
width:100%;
padding: 12px 16px;
}
.select-items div:hover { color: rgba(255, 255, 255, 1); }
.select-selected {
width: 100%;
height: 100%;
padding: 9px 66px 9px 20px;
position: relative;
color:#fff;
}
.select-selected::after {
content:"\f078";
font-family: "Font Awesome 5 Pro";
position: absolute;
width:20px;
height:100%;
color:rgba(255, 255, 255, 0.5);
right:10px;
top:0;
display: flex;
justify-content: center;
align-items: center;
font-size:1rem;
}
.select-selected::before {
content:"";
position: absolute;
width:20px;
height:100%;
border-left:2px solid rgba(255, 255, 255, 0.25);
right:20px;
top:0;
}
.select-selected.select-arrow-active::after { transform: rotate(180deg); }
.same-as-selected,
.filter-select-wrapper select,
.select-hide {
display: none;
}
.mo-filter-wrapper {
display: flex;
justify-content: center;
list-style: none;
margin: 0;
padding: 0;
}
.select-items div:hover,
.same-as-selected {
background-color: #062531;
}
</style>

View File

@ -0,0 +1,108 @@
<footer class="np-footer">
<div class="np-footer-top">
{% if website_footer.show_navigation_links? %}
<div class="np-footer-navigation"'>
<ul class="np-footer-navigation-list">
{% for website_navigation in navigations.footer_navigations %}
{% if website_navigation.external? %}
<li class="np-footer-navigation-item">
<a
class="np-footer-navigation-link np-button-color"
href="{{ website_navigation.path }}"
{% if website_navigation.external? %} target="_blank" {% endif %}
style='color: white;opacity: 0.5;''
>
{{ website_navigation.name }}
</a>
</li>
{% endif %}
{% endfor %}
</ul>
</div>
{% endif %}
{% if current_school.logo_url %}
<h2 class="np-footer-logo">
<a href="{% route home %}">
<img
alt="{{ current_school.name }}"
class="np-footer-logo-image"
src="{{ current_school.logo_url }}"
/>
</a>
</h2>
{% else %}
<div class="np-school-name np-header-font-color">
{{ current_school.name }}
</div>
{% endif %}
</div>
<div class="np-footer-bottom">
<nav class="np-footer-social-links">
{% if website_footer.show_social_media_links? %}
<ul class="np-footer-social-links-list">
{% for social_media_link in website_footer.social_media_links %}
<li class="np-footer-social-links-item">
<a
class="np-footer-social-links-link np-button-color"
href="{{ social_media_link.link }}"
target="_blank" title="{{ social_media_link.name }}"
>
{% if social_media_link.name == 'linkedin' %}
<i class="np-footer-social-links-icon
fab fa-linkedin-in"
style='color: #006161;'
></i>
{% else %}
<i class="np-footer-social-links-icon
fab fa-{{ social_media_link.name }}"
style='color: #006161;'
></i>
{% endif %}
</a>
</li>
{% endfor %}
</ul>
{% endif %}
</nav>
{% if website_footer.show_customer_service_email? and
website_footer.school_customer_service_email
%}
<div class="np-footer-support">
<div class="np-footer-support-item np-footer-support-help np-fc-white np-opacity-50">
{% t .need_help %}
</div>
<div class="np-footer-support-item np-footer-support-email np-fc-white np-opacity-50">
{% t .email %}
</div>
<a
class="np-footer-support-item np-footer-support-link np-button-color"
href="mailto:{{ website_footer.school_customer_service_email }}"
>
{% comment %} {{ website_footer.school_customer_service_email }} {% endcomment %}
support@northpass.com
</a>
</div>
{% endif %}
</div>
</footer>
<style>
.np-footer {
background: #555269 !important;
}
.np-powered-by {
background: #555269 !important;
text-transform: uppercase !important;
font-size: 12px !important;
font-weight: bold;
}
.np-powered-by-link {
color: rgba(256,256,256,0.25) !important;
}
</style>
<script>
$(".np-footer-navigation-link[href='https://change_to_mail.com'").attr("href", "mailto:support@northpass.com")
</script>

View File

@ -0,0 +1,12 @@
{% styles default %}
{% styles colors %}
{% styles custom %}
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Lexend:wght@100;400;500;600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.css" integrity="sha512-wR4oNhLBHf7smjy0K4oqzdWumd+r5/+6QO/vDda76MW5iug4PT7v86FoEkySIJft3XA0Ae6axhIvHrqwm793Nw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js" type="text/javascript"></script>

View File

@ -0,0 +1,206 @@
<header class="np-header np-header-color" >
<div class="np-header-content">
<div class="np-hidden-desktop np-header-mobile-menu-nav">
{% if current_person.signed_in? %}
<button
data-toggle-class="np-hidden"
class="np-header-mobile-menu-nav-button fal fa-times np-hidden np-header-font-color"
data-toggle-target=".np-header-mobile-avatar-menu,
.np-header-mobile-menu-content, .np-main, .np-footer"
></button>
<button
data-test="open-mobile-menu"
data-toggle-class="np-hidden"
class="np-header-mobile-menu-nav-button np-header-mobile-avatar-menu"
data-toggle-target=".fa-times, .np-header-mobile-menu-content, .np-main, .np-footer"
>
<img
alt="{{ current_person.name }}"
class="np-header-avatar-image"
src="{{ current_person.avatar_url }}"
/>
</button>
{% endif %}
</div>
{% if current_school.logo_url %}
<h1 class="np-header-logo">
<a href="{% route home %}">
<img
alt="{{ current_school.name }}"
class="np-header-logo-image"
src="{{ current_school.logo_url }}"
/>
</a>
</h1>
{% else %}
<a href="{% route home %}" class="np-school-name np-header-font-color">
{{ current_school.name }}
</a>
{% endif %}
<div class="np-hidden-mobile np-header-desktop-nav">
<ul class="np-header-desktop-nav-list">
{% for website_navigation in navigations.header_navigations_external %}
<li class= "np-header-desktop-nav-item">
<a
href="{{ website_navigation.path }}"
class="np-header-desktop-nav-link np-header-font-color"
target="_blank"
>
{{ website_navigation.name }}
</a>
</li>
{% endfor %}
</ul>
</div>
{% if current_person.signed_in? %}
<div class="np-hidden-mobile np-header-search np-header-search-expanded">
<form action="{% route search %}" method="get" data-test="desktop-search">
<input
aria-label="{% t .search %}"
class="np-header-search-input np-header-font-background-color"
type="text"
name="q"
placeholder="{% t .search %}"
/>
<i class="np-header-search-icon far fa-search"></i>
</form>
</div>
<div class="np-hidden-mobile np-header-avatar">
<button
class="np-header-avatar-button"
data-test="open-desktop-menu"
data-toggle-class-on-target="np-hidden"
data-toggle-target=".np-header-avatar-tooltip"
data-toggle-outside
>
<img
alt="{{ current_person.name }}"
class="np-header-avatar-image"
src="{{ current_person.avatar_url }}"
>
</button>
<div class="np-header-avatar-tooltip np-hidden" role="tooltip">
<span class="np-header-avatar-tooltip-arrow-up"></span>
<div class="np-header-avatar-tooltip-learner">
<div class="np-header-avatar-tooltip-learner-name">
{{ current_person.name }}
</div>
<div class="np-header-avatar-tooltip-learner-email">
{{ current_person.email }}
</div>
</div>
<nav class="np-header-avatar-tooltip-navigation">
<a class="np-header-avatar-tooltip-navigation-link" onclick="buildURL(window.location.pathname)" style="cursor:pointer">
Default
</a>
{% unless current_school.sso_active? %}
<a
class="np-header-avatar-tooltip-navigation-link"
href="{% route account %}"
>
{% t .profile_settings %}
</a>
{% endunless %}
<a
class="np-header-avatar-tooltip-navigation-link np-danger"
href="{% route logout %}"
>
{% t .sign_out %}
</a>
</nav>
</div>
</div>
{% else %}
<a
class="np-header-sign-in np-header-desktop-nav-link np-header-font-color"
href="{% route login %}"
>
{% t shared.sign_in %}
</div>
{% endif %}
</div>
</header>
<div class="np-hidden-desktop">
<div class="np-header-mobile-menu-content np-hidden">
{% if current_person.signed_in? %}
<img
alt="{{ current_person.name }}"
class="np-header-mobile-menu-content-avatar"
src="{{ current_person.avatar_url }}"
/>
<div class="np-header-mobile-menu-content-name">
{{ current_person.name }}
</div>
{% endif %}
<div class="np-header-mobile-menu-content-nav">
<form
class="np-header-search"
data-test="mobile-search"
method="get"
action="{% route search %}"
>
<input
aria-label="{% t .search %}"
class="np-header-search-input"
type="text"
name="q"
placeholder="{% t .search %}"
/>
<i class="np-header-search-icon far fa-search"></i>
</form>
{% for website_navigation in navigations.header_navigations %}
<a
href="{{ website_navigation.path }}"
class="np-header-mobile-menu-content-button"
{% if website_navigation.external? %} target="_blank" {% endif %}
>
{{ website_navigation.name }}
</a>
{% endfor %}
<div class="np-header-mobile-menu-content-line"></div>
{% unless current_school.sso_active? %}
<a
class="np-header-mobile-menu-content-button"
href="{% route account %}"
>
{% t .profile_settings %}
</a>
{% endunless %}
<a
class="np-header-mobile-menu-content-button np-danger"
href="{% route logout %}"
>
{% t .sign_out %}
</a>
</div>
</div>
</div>
{% include "messages" %}
<script>
if (window.location.pathname === "/app") {
const headerTag = document.querySelector(".np-header");
headerTag.classList.add("np-header-absolute");
}
$(".np-header-desktop-nav-link[href='https://change_to_mail.com'").attr("href", "mailto:support@northpass.com")
/*
function buildURL(path) {
const url = "https://academy.getpixel.io" + path + "?first_name={{current_person.first_name}}&last_name={{current_person.last_name}}&email={{current_person.email}}"
window.location.href = url
}
*/
</script>
<style>
.np-header {
background: white!important;
}
</style>

View File

@ -0,0 +1,196 @@
<div class="homepage-hero-carousel">
<div class="np-homepage-hero custom-flex">
<img class="np-homepage-hero-image"
src="https://s3.amazonaws.com/static.northpass.com/J%26J/0d7c2557-b4c3-4cb7-a98d-320673e33812.jpeg"
alt="{{ homepage.headline }}" />
<div class="np-homepage-hero-content">
<div class="homepage-headline np-header-font-color">
{{ homepage.headline }}
</div>
<div class="np-homepage-subheadline np-header-font-color">
{{ homepage.subheadline }}
</div>
</div>
</div>
<div class="np-homepage-hero custom-flex">
<img class="np-homepage-hero-image"
src="https://s3.amazonaws.com/static.northpass.com/J%26J/2f537d7b-f756-492b-87e7-a62c2a4ed35c.jpeg"
alt="{{ homepage.headline }}" />
<div class="np-homepage-hero-content">
<div class="homepage-headline np-header-font-color">
{{ homepage.headline }}
</div>
<div class="np-homepage-subheadline np-header-font-color">
{{ homepage.subheadline }}
</div>
</div>
</div>
<div class="np-homepage-hero custom-flex">
<img class="np-homepage-hero-image"
src="https://s3.amazonaws.com/static.northpass.com/J%26J/4de5b8a6-6b5c-41f6-96a3-e2ef31cf00ad.jpeg"
alt="{{ homepage.headline }}" />
<div class="np-homepage-hero-content">
<div class="homepage-headline np-header-font-color">
{{ homepage.headline }}
</div>
<div class="np-homepage-subheadline np-header-font-color">
{{ homepage.subheadline }}
</div>
</div>
</div>
</div>
<script>
function initializeCarousel(slickContainerClass, visibleSlides) {
$(slickContainerClass).slick({
slidesToShow: visibleSlides,
slidesToScroll: 1,
dots: false,
infinite: true,
cssEase: 'linear',
prevArrow: '<svg viewBox="0 0 20 20" class="_1ycOA _left"><path d="M12 16a.997.997 0 0 1-.707-.293l-5-5a.999.999 0 0 1 0-1.414l5-5a.999.999 0 1 1 1.414 1.414L8.414 10l4.293 4.293A.999.999 0 0 1 12 16" fill-rule="evenodd"></path></svg>',
nextArrow: '<svg viewBox="0 0 20 20" class="_1ycOA _right"><path d="M8 16a.999.999 0 0 1-.707-1.707L11.586 10 7.293 5.707a.999.999 0 1 1 1.414-1.414l5 5a.999.999 0 0 1 0 1.414l-5 5A.997.997 0 0 1 8 16" fill-rule="evenodd"></path></svg>'
});
}
$(document).ready(function () {
initializeCarousel('.homepage-hero-carousel', 1)
})
</script>
<style>
.np-homepage-hero-content {
position: inherit;
}
.np-homepage-hero-content>* {
color: white !important;
opacity: 1;
}
.homepage-headline {
color: white !important;
}
.np-homepage-hero .homepage-headline {
font-size: 32px;
line-height: 48px;
}
@media screen and (min-width: 768px) {
.np-homepage-hero .homepage-headline {
font-size: 36px;
line-height: 45px;
}
}
@media screen and (min-width: 992px) {
.np-homepage-hero .homepage-headline {
font-size: 58px;
line-height: 72px;
}
}
@media screen and (min-width: 1200px) {
.np-homepage-hero .homepage-headline {
font-size: 66px;
line-height: 82px;
}
}
.custom-flex {
display: flex;
flex-direction: row;
background-color: #555269;
}
.custom-flex>img {
width: 35%;
}
.custom-flex>div {
width: 65%;
}
._1ycOA {
-webkit-font-smoothing: antialiased;
text-size-adjust: 100%;
--polaris-version-number: "4.27.0";
--polaris-animation-skeleton-shimmer: polaris-SkeletonShimmerAnimation;
--toast-translate-y-out: 15rem;
--toast-translate-y-in: 0;
--global-ribbon-height: 0px;
--p-text-subdued: #6d7175;
--p-card-shadow: 0 0.2rem 0.4rem #dfe3e8;
--top-bar-background: #00848e;
--top-bar-background-lighter: #1d9ba4;
--top-bar-color: #f9fafb;
--p-frame-offset: 0px;
font-family: -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI,
Roboto, Helvetica Neue, sans-serif;
cursor: pointer;
box-sizing: border-box;
fill: #292824;
vertical-align: middle;
width: 30px;
height: 30px;
border-radius: 50%;
background: #fff;
box-shadow: 0 0 1px rgba(66, 71, 76, 0.45), 0 2px 1px rgba(0, 0, 0, 0.05);
}
._left:before,
._right:before {
font-size: 30px;
background: black;
color: white;
border-radius: 50%;
font-style: normal;
font-feature-settings: normal;
font-variant: normal;
text-rendering: auto;
line-height: 1;
font-family: Font awesome\5 Pro;
font-weight: 900;
margin-bottom: 0;
-webkit-font-smoothing: antialiased;
}
._left,
._right {
top: 50%;
z-index: 1000;
-webkit-font-smoothing: antialiased;
user-select: none;
-webkit-tap-highlight-color: transparent;
box-sizing: border-box;
touch-action: manipulation;
margin: 0;
font-weight: inherit;
letter-spacing: 0.01em !important;
line-height: 0;
position: absolute;
width: 30px;
height: 30px;
padding: 0;
transform: translate(0, -50%);
cursor: pointer;
/* right: 30%; */
display: block;
}
._right {
right: 2%;
}
._left {
left: 2%;
}
.slick-initialized .slick-slide {
display: flex;
}
</style>

View File

@ -0,0 +1,28 @@
{% if learning_path.instructors.any? %}
<div class="np-card-content-divider">
<h3 class="np-card-heading">
{% t shared.instructors %}
</h3>
<div class="np-content-instructors-content row">
{% for instructor in learning_path.instructors %}
<div class="np-content-instructors-content-item col-xs-12 col-lg">
<div class='instructor-image'>
<img
src="{{ instructor.avatar_url }}"
class="np-content-instructors-content-image"
alt="{{ instructor.name }}"
>
</div>
<div class="np-content-instructors-content-description">
<div class="np-content-instructors-content-name">
{{ instructor.name }}
</div>
<div class="np-content-instructors-content-info np-text-light">
{{ instructor.title }}
</div>
</div>
</div>
{% endfor %}
</div>
</div>
{% endif %}

View File

@ -0,0 +1,43 @@
{% if learning_path.enrolled? %}
<div class="np-top-cta-progress-content">
<div class="np-top-cta-progress-title np-text-title">
{% t .progress %}
</div>
<div class="np-progress-bar-container" style='border-radius: 40px;'>
<div
style="width: {{ learning_path.progress }}%; background: #006161; border-radius: 40px;"
class="np-button-background-color np-card-progress-bar">
</div>
</div>
<div class="np-top-cta-progress-text
{% if learning_path.completed? %} np-color-success {% else %} np-button-color {% endif %}
"
style='color:#006161'>
{% t shared.progress, count: learning_path.progress %}
</div>
</div>
{% endif %}
<a
class="np-top-button np-button-font-color np-button np-button-big"
style='background: linear-gradient(90deg, #006161 0%, #006161 100%); border-radius: 8px;'
{% if learning_path.enrolled? %}
{% if learning_path.current_item.course? %}
href="{% route learning_path_course, id: learning_path.current_item.id, learning_path_id: learning_path.id %}"
{% elsif learning_path.current_item.training_event? %}
href="{% route training_session, id: learning_path.current_item.id %}"
{% endif %}
{% else %}
href="{% route learning_path_enrollment, code: learning_path.enrollment_code %}"
{% endif %}
>
{% if learning_path.enrolled? == false %}
{% t shared.enroll %}
{% elsif learning_path.started? == false %}
{% t shared.learning_path.start %}
{% elsif learning_path.completed? %}
{% t shared.learning_path.view %}
{% else %}
{% t shared.continue %}
{% endif %}
</a>

View File

@ -0,0 +1,80 @@
<div class="np-progress-ring-wrapper">
<svg
class="progress-ring"
width="{{ size }}"
height="{{ size }}">
<circle
class="progress-ring__circle circle-{{name}}"
stroke="#006161"
stroke-width="10"
fill="transparent"
r="52"
cx="60"
cy="60"/>
<circle
class="progress-ring__circle circle-bg"
stroke="{{ stroke_color_bg }}"
stroke-width="10"
fill="transparent"
r="52"
cx="60"
cy="60"/>
<text x="50%" y="50%" text-anchor="middle" stroke="t#fff" stroke-width="1px" fill="#fff" dy=".3em">{{count}}</text>
</svg>
<h3 class="np-card-content-title np-progress-circle-label">
{{name}}
</h3>
</div>
<script>
document.addEventListener("DOMContentLoaded", function() {
var circle = document.getElementsByClassName("circle-{{name}}")[0];
var radius = circle.r.baseVal.value;
var circumference = radius * 2 * Math.PI;
circle.style.strokeDasharray = `${circumference} ${circumference}`;
circle.style.strokeDashoffset = `${circumference}`;
function setProgress(percent) {
const offset = circumference - percent * circumference;
circle.style.strokeDashoffset = offset;
}
setProgress('{{ count | divided_by: total }}')
})
</script>
<style>
.np-progress-ring-wrapper {
flex: 0;
flex-direction: column;
display: flex;
width: 100%;
padding: 1.5rem 1rem 1rem 1rem;
align-items: center;
}
.progress-ring circle { stroke-linecap: round; }
.progress-ring text { font-size:2rem; }
.progress-ring__circle {
transition: stroke-dashoffset 0.35s;
transform: rotate(-90deg);
transform-origin: center;
}
.np-progress-circle-label {
color:#fff;
text-transform: uppercase;
opacity:0.35;
font-size:0.875rem;
margin-top:1rem;
}
@media (min-width:768px) {
.np-progress-ring-wrapper { padding: 1.5rem 0.4rem 1rem 0.4rem;}
}
@media (min-width:1170px) {
.progress-ring text { font-size:2.5rem; }
.np-progress-ring-wrapper { padding: 1.5rem 1rem 1rem 1rem;}
}
</style>

View File

@ -0,0 +1,106 @@
<div class="np-homepage-featured np-faq np-max-width">
<div class="np-homepage-featured-text">
<div class="np-homepage-headline">
Frequently Asked Questions
</div>
</div>
<div class="row np-faqs" style='margin:0;'>
<div class="col-md-6">
<div class="np-accordion">
<div class="accordion-btn">
<i class="fal fa-plus"></i>
<div class="accordion-title"><strong>Q:</strong> Do I need to be a customer before creating a course on Northpass?</div>
</div>
<div class="accordion-panel">
<div class="accordion-panel-content">
<p><strong>A:</strong> Absolutely not! We often set up trials for folks shopping for an LMS. To set up your trial, click the following link and youll be introd to the correct reps to get started.</p>
</div>
</div>
</div>
<div class="np-accordion">
<div class="accordion-btn">
<i class="fal fa-plus"></i>
<div class="accordion-title"><strong>Q:</strong> Do I need to sign up for an advanced package option?</div>
</div>
<div class="accordion-panel">
<div class="accordion-panel-content">
<p><strong>A:</strong> No, Northpass product packages have a variety of services. Our Essentials package is great to get started, especially with internal training. Looking for something more, both our Premium and Enterprise packages allow for advanced options including custom design and data connections via webhooks and API. To learn more, please contact your rep or support@northpass.com.</p>
</div>
</div>
</div>
<div class="np-accordion">
<div class="accordion-btn">
<i class="fal fa-plus"></i>
<div class="accordion-title"><strong>Q:</strong> There are a lot of courses, which one should I start with as a new admin?</div>
</div>
<div class="accordion-panel">
<div class="accordion-panel-content">
<p><strong>A:</strong> We recommend starting with the Getting Started with Northpass Learning Path. It has all the foundational information needed to become familiar with our platform. Even more, you can pick and choose which information youd like to view in the Learning Path.</p>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="np-accordion">
<div class="accordion-btn">
<i class="fal fa-plus"></i>
<div class="accordion-title"><strong>Q:</strong> I cannot find a course on a topic, how should I share this feedback?</div>
</div>
<div class="accordion-panel">
<div class="accordion-panel-content">
<p><strong>A:</strong> Thank you for letting us know that youd like to learn something more. Please reach out to our support team at support@northpass.com and our service team is happy to assist.</p>
</div>
</div>
</div>
<div class="np-accordion">
<div class="accordion-btn">
<i class="fal fa-plus"></i>
<div class="accordion-title"><strong>Q:</strong> I'm having a billing issue, who should I contact?</div>
</div>
<div class="accordion-panel">
<div class="accordion-panel-content">
<p><strong>A:</strong> Great question and happy to help! For all billing inquiries, please reach out to billing@northpass.com, and our finance and operations team is happy to assist.</p>
</div>
</div>
</div>
<div class="np-accordion">
<div class="accordion-btn">
<i class="fal fa-plus"></i>
<div class="accordion-title"><strong>Q:</strong> I'm interested in setting up an integration that's not listed. What should I do?</div>
</div>
<div class="accordion-panel">
<div class="accordion-panel-content">
<p><strong>A:</strong> Excellent, we always look forward to new integrations. Please reach out to support@northpass.com and your assigned rep when applicable. They will be happy to help further and loop in the respective folks to scope out the integration further.</p>
</div>
</div>
</div>
</div>
</div>
</div>
<style>
.clicked {
border-bottom-right-radius: 0;
}
.accordion-panel {
border-radius: 0 0 8px 8px;
}
</style>
<script>
let accordions = document.getElementsByClassName("accordion-btn");
for (let i = 0; i < accordions.length; i++) {
accordions[i].addEventListener("click", function() {
this.querySelector('.fal').classList.toggle("fa-plus");
this.querySelector('.fal').classList.toggle("fa-minus");
this.classList.toggle("clicked");
let panel = this.nextElementSibling;
panel.classList.toggle("panel-open");
if (panel.style.maxHeight) {
panel.style.maxHeight = null;
} else {
panel.style.maxHeight = panel.scrollHeight + "px";
}
});
}
</script>

View File

@ -0,0 +1,27 @@
<div class="np-homepage-featured np-homepage-topics np-max-width">
<div class="np-homepage-featured-text">
<div class="np-homepage-headline">
Popular Topics
</div>
</div>
<div class="np-topics-list row">
<div class="col-xs-12 np-stretch-content">
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/5119428-course-publishing">Course Publishing</a>
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/3725263-northpass-course-marketplace">Course Marketplace</a>
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/5469361-iorad-integration">Interactive Content</a>
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/3310302-what-is-a-learning-path-and-how-do-i-use-it">Learning Paths</a>
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/3310269-overview-of-authentication-options">Authentication</a>
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/3310239-edit-domain-name">Edit Domain Name</a>
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/collections/1919694-analytics">Analytics</a>
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/articles/3310282-instructor-led-training">Instructor Led Training</a>
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/collections/2428172-apps-integrations">Integrations</a>
<a class="np-top-button np-button np-button-secondary topic-button" href="https://support.northpass.com/en/collections/1919697-advanced-options">Advanced Options</a>
</div>
</div>
</div>
<style>
.topic-button {
border-radius: 8px;
}
</style>

View File

@ -0,0 +1,76 @@
{% capture quotes %}
<svg width="52" height="40" viewBox="0 0 52 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.656 39.76C9.072 39.76 6.048 38.3787 3.584 35.616C1.19467 32.7787 0 29.12 0 24.64C0 21.056 0.858667 17.584 2.576 14.224C4.29333 10.864 6.68267 7.91467 9.744 5.376C12.0458 3.46723 14.5797 1.98056 17.3458 0.916004C19.0264 0.269172 20.8915 0.900303 22.0271 2.29798C23.9806 4.70233 22.9585 8.2866 20.493 10.1624C19.6235 10.8239 18.8405 11.5431 18.144 12.32C16.2027 14.4853 15.232 16.3147 15.232 17.808C15.232 18.48 15.3813 19.2267 15.68 20.048C16.0533 20.7947 16.9493 21.5787 18.368 22.4C20.2347 23.5947 21.5413 24.9013 22.288 26.32C23.0347 27.664 23.408 29.232 23.408 31.024C23.408 33.712 22.4 35.84 20.384 37.408C18.368 38.976 15.792 39.76 12.656 39.76ZM40.32 39.76C36.736 39.76 33.712 38.3787 31.248 35.616C28.8587 32.7787 27.664 29.12 27.664 24.64C27.664 21.056 28.5227 17.584 30.24 14.224C31.9573 10.864 34.3467 7.91467 37.408 5.376C39.7098 3.46723 42.2437 1.98056 45.0098 0.916003C46.6904 0.269172 48.5555 0.900303 49.6911 2.29797C51.6446 4.70233 50.6225 8.2866 48.157 10.1624C47.2875 10.8239 46.5045 11.5431 45.808 12.32C43.8667 14.4853 42.896 16.3147 42.896 17.808C42.896 18.48 43.0453 19.2267 43.344 20.048C43.7173 20.7947 44.6133 21.5787 46.032 22.4C47.8987 23.5947 49.2053 24.9013 49.952 26.32C50.6987 27.664 51.072 29.232 51.072 31.024C51.072 33.712 50.064 35.84 48.048 37.408C46.032 38.976 43.456 39.76 40.32 39.76Z" fill="url(#paint0_linear_2_541)"/>
<defs>
<linearGradient id="paint0_linear_2_541" x1="1.24909e-07" y1="19.88" x2="53.648" y2="19.88" gradientUnits="userSpaceOnUse">
<stop stop-color="#006161"/>
<stop offset="1" stop-color="#006161"/>
</linearGradient>
</defs>
</svg>
{% endcapture %}
<div class="np-homepage-featured np-homepage-tips-tricks np-max-width">
<div class="np-homepage-featured-text">
<div class="np-homepage-headline">
Testimonials From Our Customers
</div>
</div>
<div class="tips-tricks-carousel np-carousel" id="tips-tricks-carousel">
<div class="np-carousel-card">
<div class="quote-block np-carousel-bg-blue">
<i class="quotes-left"> {{quotes}} </i>
<div class="quote">
Northpass is an easy-to-manage LMS with the freedom to create and scale learning programs the way we want. Ultra-fast authoring and intelligent administration, along with integrated learning experiences. Plus, responsive support.
</div>
</div>
<div class="quote-author-info">
Administrator in Real Estate<br>
<span>&gt; 1000 employees</span>
</div>
</div>
<div class="np-carousel-card">
<div class="quote-block np-carousel-bg-blue">
<i class="quotes-left"> {{quotes}} </i>
<div class="quote ">
Northpass is an LMS with the learner experience front and center. Their UI principles lead to a clean and focused learner experience that removes the typical distractions of finding and beginning courses in an LMS. They have over the years made significant investments into the admin experience and platform integrations which have helped it grow into areas where other established players would have had a leg up. Their customer success management approach is excellent and one that I routinely use as the bar with other software vendors we utilize.
</div>
</div>
<div class="quote-author-info">
Executive Sponsor in Retail<br>
<span>&gt; 1000 employees</span>
</div>
</div>
<div class="np-carousel-card">
<div class="quote-block np-carousel-bg-blue">
<i class="quotes-left"> {{quotes}} </i>
<div class="quote ">
The ability to build a learning management for both internal employees and external clients is harder to find than I would have thought. Because Northpass is focused solely on the ability to build on-demand training, it's simplicity allows you to use those courses in whatever way you want/need.
</div>
</div>
<div class="quote-author-info">
Client Enablement Manager Mid-Market<br>
<span>51-1000 employees</span>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function(){
$("#tips-tricks-carousel").slick({
slidesToShow: 1,
slidesToScroll: 1,
cssEase: 'linear',
prevArrow: '<i class="fal fa-chevron-left"></i>',
nextArrow: '<i class="fal fa-chevron-right"></i>',
infinite: true,
adaptiveHeight: true
});
});
</script>

View File

@ -0,0 +1,26 @@
<nav class="np-sub-navigation">
<div class="np-sub-navigation-content">
{% for link in navigations.sub_navigation %}
<div class="np-sub-navigation-content-item {{ link.active_class }}">
<div class="np-sub-navigation-content-item-bar np-button-background-color"></div>
<a class="np-sub-navigation-content-item-link" href="{{ link.url }}">
{{ link.label }}
</a>
</div>
{% endfor %}
</div>
</nav>
<style>
.np-sub-navigation {
background: white!important;
color: #006161!important;
}
</style>
<script>
$(".np-sub-navigation-content-item-link[href='/app/catalog']").parent().remove()
$(".np-sub-navigation-content-item-link:contains('Home')").attr('href', '/app/homepage')
$(".np-sub-navigation-content-item-link:contains('Courses')").attr('href', '/app/new-dashboard')
$(".np-sub-navigation-content-item-link:contains('Courses')").text('Dashboard')
</script>

View File

@ -0,0 +1,60 @@
{% if training_session.approved? %}
<div class="np-training-session-cta-note">
<i class="far fa-check np-training-session-icon"></i>
{% t .registered %}
</div>
{% elsif training_session.pending? %}
<div class="np-training-session-cta-note np-training-session-cta-note-error">
{% t .pending %}
</div>
{% elsif training_session.denied? %}
<div class="np-training-session-cta-note np-training-session-cta-note-error">
{% t .denied %}
</div>
{% elsif training_session.too_late? %}
<div class="np-training-session-cta-note np-training-session-cta-note-error">
{% t .too_late %}
</div>
{% elsif training_session.no_seats? %}
<div class="np-training-session-cta-note np-training-session-cta-note-error">
{% t .no_seats %}
</div>
{% endif %}
<div class="np-training-session-cta">
<div class="np-training-session-cta-buttons">
<form
action="{% route training_session_registration, id: training_session.id %}"
method="post"
>
{% form_authenticity_token %}
{% if training_session.internal? and training_session.approved? %}
{% if features.training_events_google_calendar? %}
{% include "training_session_calendars" %}
<button type="submit" class="np-top-button np-button np-button-big np-button-secondary">
{% t .unregister %}
</button>
{% else %}
<button type="submit" class="np-top-button np-button-font-color np-button np-button-big">
{% t .unregister %}
</button>
{% endif %}
<input type="hidden" name="_method" value="delete" />
{% endif %}
{% if training_session.not_registered? %}
<button type="submit" class="np-top-button np-button np-button-big">
{% t .register %}
</button>
{% endif %}
</form>
</div>
</div>
<style>
.np-button-big {
background: linear-gradient(90deg, #006161 0%, #006161 100%) !important;
border-radius: 8px !important;
}
</style>

View File

@ -0,0 +1,14 @@
<div class="np-card-training-session-date">
<div class="np-button-background-color np-card-training-session-date-bar"></div>
<div class="np-card-training-session-date-day" style='margin-right: 5px;'>
{{ training_session.day }}
</div>
<div>
<div class="np-card-training-session-date-month">
{{ training_session.month }}
</div>
<div class="np-card-training-session-date-year">
{{ training_session.year }}
</div>
</div>
</div>

View File

@ -0,0 +1,24 @@
<div class="np-card-spacing-large">
{% include "training_session_date" %}
<div class="np-training-session-time">
<i class="fal fa-clock np-button-color np-training-session-icon" style='color: #006161;'></i>
{{ training_session.time_period }} {{ training_session.time_zone }}
</div>
{% if training_session.location %}
<div class="np-training-session-location">
<i class="fal fa-map-marker-alt np-button-color np-training-session-icon"></i>
{{ training_session.location }}
</div>
{% endif %}
{% if training_session.session_url %}
<div class="np-training-session-location">
<i class="fal fa-map-marker-alt np-button-color np-training-session-icon"></i>
<a href="{{ training_session.session_url }}" class="np-button-color" target="_blank" >
{{ training_session.session_url }}
</a>
</div>
{% endif %}
</div>

View File

@ -0,0 +1,10 @@
<div class="np-top-vocabulary np-text-title">
{% t shared.event_types, key: training_event.event_type %}
<i class="fal fa-users-class np-button-color np-training-session-icon" style='color: #006161;'></i>
</div>
<div class="np-top-title">
<a href="{% route home %}" class="np-back-button" aria-label="{% t shared.go_back %}">
<i class="far fa-arrow-left np-hidden-mobile np-icon-back"></i>
</a>
{{ training_event.title }}
</div>

View File

@ -0,0 +1,88 @@
<div class="np-dashboard-resources progress-card" style="padding-bottom: 0;">
<div class="np-card" style="display:inline-flex; margin: auto; padding: 0px !important;">
<div class="np-card-container np-card-content" style="border-radius: 8px; display: inline-block; margin: auto;">
{% if courses.enrolled.any? %}
{% assign countComplete = 0 %}
{% assign countInProgress = 0 %}
{% assign countNotStarted = 0 %}
{% assign countTotal = 0 | times: 1.0 %}
{% for course in courses.enrolled %}
{% assign countTotal = countTotal | plus: 1 %}
{% if course.progress == 100 %}
{% assign countComplete = countComplete | plus: 1 %}
{% endif %}
{% if course.progress > 0 and course.progress < 100 %}
{% assign countInProgress = countInProgress | plus: 1 %}
{% endif %}
{% if course.progress == 0 %}
{% assign countNotStarted = countNotStarted | plus: 1 %}
{% endif %}
{% endfor %}
<ul class="progress-circle-list">
<li>
{%
include "progress_circle",
name:'Completed' ,
count: countComplete ,
total: countTotal,
size: "120",
stroke_color: "rgba(43, 178, 76, 1)",
stroke_color_bg: "rgba(255, 255, 255, 0.15)"
%}
</li>
<li>
{%
include "progress_circle",
name:'In Progress' ,
count: countInProgress ,
total: countTotal,
size: "120",
stroke_color: "rgba(43, 178, 76, 1)",
stroke_color_bg: "rgba(255, 255, 255, 0.15)"
%}
</li>
</ul>
{% else %}
{% capture message %}
{% t shared.zero_state.courses.index,
key: current_school.course_vocabulary
%}
{% endcapture %}
{% include "courses_zero_state", message: message %}
{% endif %}
</div>
</div>
</div>
<style>
.progress-circle-list {
padding: 0;
list-style-type: none !important;
justify-content: space-around;
display: inline-flex;
align-items: center;
max-width: 400px;
margin: auto;
}
.progress-card {
border-radius: 8px;
background: #555269;
height: 260px;
padding: 0;
display: inline-flex;
}
.np-progress-ring-wrapper {
padding: 0 0.5rem;
}
@media screen and (max-width: 1023px) {
.progress-card {
height: 190px;
margin-bottom: 2.187rem;
display: flex;
}
.progress-circle-list {
display: flex;
}
}
</style>

View File

@ -0,0 +1,53 @@
{% include "header" %}
{% include "sub_navigation" %}
<main class="np-main np-max-width np-page-container">
<div class="np-hidden-mobile" id="course-desktop">
{% include "course_desktop_view" %}
</div>
<div class="np-hidden-desktop" id="course-mobile">
{% include "course_mobile_view" %}
</div>
</main>
{% include "footer" %}
<style>
.course-detail-rating-stars svg > * {
fill: white;
}
.course-detail-rating-stars svg {
scale: 1.2;
margin: 0 3px;
}
.course-detail-rating-stars {
margin-bottom: 9px;
}
.np-course-banner-image {
border-radius: 8px;
}
.np-course-banner-overlay {
border-radius: 8px;
}
.np-top-cta {
border-radius: 8px;
}
@media screen and (max-width: 1170px) {
.course-detail-rating-stars {
margin-bottom: 5px;
margin-left: -2px;
}
.course-detail-rating-stars svg {
scale: 1;
margin: 0;
}
}
@media screen and (max-width: 768px) {
.course-detail-rating-stars {
margin-bottom: 3px;
margin-left: -1px;
}
.course-detail-rating-stars svg {
scale: 0.8;
margin: 0 -1px;
}
}
</style>

View File

@ -0,0 +1,3 @@
<script>
window.location.replace('/app/homepage');
</script>

View File

@ -0,0 +1,74 @@
{% include "header" %}
{% include "course_version_outdated_alert", courses: courses.featured %}
<main class="np-main np-homepage">
{% include "homepage_hero_carousel" %}
{% include "sub_navigation" %}
<div class="row">
<div class="col-3 courses-left-small">
{% include "courses_index", class: "col-xs-12 col-sm-6 np-stretch-content" %}
</div>
<div class="col-8">
<div class="np-homepage-featured np-max-width">
<div class="np-homepage-featured-text">
<div class="np-homepage-headline">
{{ homepage.featured_courses_headline }}
</div>
<div class="np-homepage-subheadline" style='opacity: 50%'>
{{ homepage.featured_courses_subheadline }}
</div>
</div>
{% if courses.featured.any? %}
<div class="np-homepage-featured-courses row">
{% for course in courses.featured %}
<div class="col-xs-12 col-sm-8 col-md-12" style="margin:auto;">
{% include "cards_featured_course" with course %}
</div>
{% endfor %}
</div>
{% else %}
<div class="np-homepage-featured-empty">
<div class="np-zero-state-text">
{% t .empty, key: current_school.course_vocabulary %}
</div>
<img
class="np-zero-state-courses"
alt="{% t .empty, key: current_school.course_vocabulary %}"
/>
</div>
{% endif %}
</div>
</div>
</div>
{% include "section_faqs" %}
</main>
{% include "footer" %}
<script>
$(".np-sub-navigation-content-item-link:contains('Home')").parent().addClass("np-sub-navigation-content-item-active")
</script>
<style>
.np-homepage-headline {
color: black!important;
}
.np-card-content {
background: GhostWhite!important;
border-color: black;
}
.np-card-content-title {
shadow: 0!important;
}
.courses-left-small {
padding-top: 190px;
margin-left: 25px;
margin-right: 25px;
}
</style>

View File

@ -0,0 +1,54 @@
{% include "header" %}
{% include "sub_navigation" %}
<main class="np-main np-max-width np-page-container">
<div class="np-hidden-mobile" id="learning-path-desktop">
{% include "learning_path_desktop_view" %}
</div>
<div class="np-hidden-desktop" id="learning-path-mobile">
{% include "learning_path_mobile_view" %}
</div>
</main>
{% include "footer" %}
<style>
.np-top-image, .np-learning-path-outline-course-image {
border-radius: 8px;
}
@media only screen and (min-width: 768px) {
.np-top-image, .np-learning-path-outline-course-image {
border-radius: 8px 8px 0 0;
}
body {
display: grid;
grid-template-columns: 1fr;
grid-template-areas: "header" "nav" "main" "footer" "powered";
grid-template-rows: 120px 50px 1fr 160px 60px;
}
nav {
grid-area: nav;
margin-bottom: 17px;
}
header {
grid-area: header;
}
main {
grid-area: main;
margin-top: 0 !important;
}
footer {
grid-area: footer;
}
.np-powered-by {
grid-area: powered;
}
}
.np-top-cta {
border-radius: 8px;
}
.np-card-container, .np-card-container-training-session {
border-radius: 8px;
}
.np-card-content {
border-radius: 8px;
}
</style>

View File

@ -0,0 +1,41 @@
{% include "header" %}
{% include "sub_navigation" %}
<main class="np-main np-learning-paths np-subpage-container np-max-width">
<div class="np-learning-paths-main">
<div class="np-resource-title">
{% t shared.learning_paths %}
</div>
<div class="np-resource-subtitle">
{% t .subtitle %}.
</div>
{% include "learning_paths_index", items: learning_paths.available %}
</div>
</main>
{% include "footer" %}
<style>
@media only screen and (min-width: 768px) {
body {
display: grid;
grid-template-columns: 1fr;
grid-template-areas: "header" "subnav" "main" "footer" "powered";
grid-template-rows: 120px 50px 1fr 160px 60px;
}
header {
grid-area: header;
}
nav {
grid-area: subnav;
margin-top: 0 !important;
}
main {
grid-area: main;
}
footer {
grid-area: footer;
}
.np-powered-by {
grid-area: powered;
}
}
</style>

View File

@ -0,0 +1,230 @@
{% include "header" %}
{% include "course_version_outdated_alert", courses: courses.enrolled %}
{% include "sub_navigation" %}
<main class="np-main np-dashboard np-subpage-container np-max-width" style='background: #00283D;'>
<div class="np-dashboard-header">
<div class="np-resource-title">Hi {{current_person.first_name}}! &#128075;</div>
<div class="np-resource-subtitle">This is what's relevant to you right now in Northpass Academy.</div>
</div>
<div class="row np-flex-center">
<div class="col-xs-12 col-md-8">
{% if features.learning_paths? %}
<div class="np-dashboard-resources-title">
{% t shared.learning_paths %}
</div>
{% include "learning_paths_index", items: learning_paths.enrolled %}
{% endif %}
</div>
<div class="np-grid-spacing col-xs-12 col-md-4 progress-section">
<div class="np-dashboard-resources-title">Course Progress</div>
{% include "widget_course_progress" %}
</div>
</div>
<div class="row dashboard-section-courses">
<div class="col-xs-12">
{% if courses.enrolled.any? %}
{% if categories.enrolled.any? %}
{% assign all_categories = categories.enrolled | map: "name" %}
{% for enrolled_category in all_categories %}
<div class="np-md-flex-wrapper">
<div>
<div class="np-dashboard-resources-title">
Topic
</div>
<div class="np-dashboard-resources-category">
{{ enrolled_category }}
</div>
</div>
{%
include "filter_by_progress",
label: "Filter by Progress:",
default_option: "All Courses",
topic: enrolled_category,
%}
</div>
{%
include "carousel_courses",
items: courses.enrolled,
topic: enrolled_category,
%}
{% endfor %}
{% else %}
{% assign enrolled_category = "Not Categorized" %}
<div class="np-md-flex-wrapper">
<div>
<div class="np-dashboard-resources-title">
Topic
</div>
<div class="np-dashboard-resources-category">
{{ enrolled_category }}
</div>
</div>
{%
include "filter_by_progress",
label: "Filter by Progress:",
default_option: "All Courses",
topic: enrolled_category,
%}
</div>
{%
include "carousel_courses",
items: courses.enrolled,
topic: enrolled_category,
%}
{% endif %}
{% else %}
<div class="np-dashboard-resources-title" style="margin-bottom:19px;">
Courses
</div>
{% capture message %}
{% t shared.zero_state.courses.index,
key: current_school.course_vocabulary
%}
{% endcapture %}
<div style="margin-bottom:3rem;">
{% include "courses_zero_state", message: message %}
</div>
{% endif %}
</div>
</div>
<div class="row dashboard-section-events">
<div class="col-xs-12">
<div class="np-dashboard-resources-title" style="margin-bottom: 5px;">
Training Events
</div>
<div class="np-dashboard-resources-category" style="margin-bottom: 19px;">
Discover online events to maximize your learning
</div>
{% if training_events.enrolled.any? %}
{%
include "carousel_events",
items: training_events.enrolled,
%}
{% else %}
<div style="margin-bottom:3rem;">
{% include "training_events_zero_state" %}
</div>
{% endif %}
</div>
</div>
<div class="row dashboard-section-instructors">
<div class="col-xs-12">
<div class="np-dashboard-resources-title">
Meet the Team
</div>
{%
include "carousel_instructors",
%}
</div>
</div>
</main>
{% include "footer" %}
<style>
@media screen and (max-width: 1024px) {
.progress-section {
padding-left: 0.5rem
}
}
</style>
<script>
// Creates the custom dropdown and dropdown functionality
var x, i, j, l, ll, selElmnt, a, b, c;
/* Look for any elements with the class “select-wrapper”: */
x = document.getElementsByClassName("progress-filter");
l = x.length;
for (i = 0; i < l; i++) {
selElmnt = x[i].getElementsByTagName("select")[0];
ll = selElmnt.length;
a = document.createElement("DIV");
a.setAttribute("class", "select-selected");
a.innerHTML = selElmnt.options[selElmnt.selectedIndex].innerHTML;
x[i].appendChild(a);
b = document.createElement("DIV");
b.setAttribute("class", "select-items select-hide");
for (j = 1; j < ll; j++) {
c = document.createElement("DIV");
c.innerHTML = selElmnt.options[j].innerHTML;
c.addEventListener("click", function(e) {
var y, i, k, s, h, sl, yl;
s = this.parentNode.parentNode.getElementsByTagName("select")[0];
sl = s.length;
h = this.parentNode.previousSibling;
for (i = 0; i < sl; i++) {
if (s.options[i].innerHTML == this.innerHTML) {
s.selectedIndex = i;
h.innerHTML = this.innerHTML;
y = this.parentNode.getElementsByClassName("same-as-selected");
yl = y.length;
for (k = 0; k < yl; k++) {
y[k].removeAttribute("class");
}
this.setAttribute("class", "same-as-selected");
break;
}
}
filterCourses(this);
h.click();
});
b.appendChild(c);
}
x[i].appendChild(b);
a.addEventListener("click", function(e) {
e.stopPropagation();
closeAllSelect(this);
this.nextSibling.classList.toggle("select-hide");
this.classList.toggle("select-arrow-active");
});
}
function closeAllSelect(elmnt) {
var x, y, i, xl, yl, arrNo = [];
x = document.getElementsByClassName("select-items");
y = document.getElementsByClassName("select-selected");
xl = x.length;
yl = y.length;
for (i = 0; i < yl; i++) {
if (elmnt == y[i]) {
arrNo.push(i)
} else {
y[i].classList.remove("select-arrow-active");
}
}
for (i = 0; i < xl; i++) {
if (arrNo.indexOf(i)) {
x[i].classList.add("select-hide");
}
}
}
/* If the user clicks anywhere outside the select box,
then close all select boxes: */
document.addEventListener("click", closeAllSelect);
$(".select-items div").each(function() {
if($( this ).text() == $(".select-selected").text()) {
$(this).addClass("same-as-selected");
}
});
function filterCourses(selectedItem) {
let filterGroup = $(selectedItem).closest(".progress-filter").data("topic");
let selectedFilter = $(selectedItem).text().replace(" ", "-").toLowerCase();
let carouselGroup = $('.courses-carousel[data-topic="' + filterGroup + '"]');
carouselGroup.slick('slickUnfilter');
if (selectedFilter != "all-courses") {
carouselGroup.slick('slickFilter', `.${selectedFilter}`);
}
}
$(".np-sub-navigation-content-item-link:contains('Dashboard')").parent().addClass("np-sub-navigation-content-item-active")
</script>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,46 @@
{% include "header" %}
{% include "sub_navigation" %}
<main class="np-main np-training-events np-subpage-container np-max-width">
<div class="row">
<div class="col-xs-12 col-sm-10">
<div class="np-resource-title">
{% t .title %}
</div>
<div class="np-resource-subtitle">
{% t .subtitle %}.
</div>
</div>
<div class="col-xs-12 col-sm-2">
{% include "training_events_filter" %}
</div>
</div>
{% include "training_events_index" %}
</main>
{% include "footer" %}
<style>
@media only screen and (min-width: 768px) {
body {
display: grid;
grid-template-columns: 1fr;
grid-template-areas: "header" "subnav" "main" "footer" "powered";
grid-template-rows: 120px 50px 1fr 160px 60px;
}
header {
grid-area: header;
}
nav {
grid-area: subnav;
}
main {
grid-area: main;
margin-top: 0 !important;
}
footer {
grid-area: footer;
}
.np-powered-by {
grid-area: powered;
}
}
</style>

View File

@ -0,0 +1,34 @@
{% include "header" %}
<main class="np-main np-training-session np-max-width np-page-container">
<div class="np-hidden-mobile" id="training-session-desktop">
{% include "training_session_desktop_view" %}
</div>
<div class="np-hidden-desktop" id="training-session-mobile">
{% include "training_session_mobile_view" %}
</div>
</main>
{% include "footer" %}
<style>
@media only screen and (min-width: 768px) {
body {
display: grid;
grid-template-columns: 1fr;
grid-template-areas: "header" "main" "footer" "powered";
grid-template-rows: 120px 1fr 160px 60px;
}
header {
grid-area: header;
}
main {
grid-area: main;
margin-top: 0 !important;
}
footer {
grid-area: footer;
}
.np-powered-by {
grid-area: powered;
}
}
</style>