quantuvos

This commit is contained in:
Norm Rasmussen
2022-09-09 17:25:01 -04:00
parent e9274f46ab
commit 3b9126eac6
24 changed files with 2370 additions and 1 deletions

View File

@ -911,6 +911,11 @@ _Overall Deadline_
Everything before Q4, SSO, Frontend
Context, they want to have everything setup in Northpass by Q4 because they are working on sustainability titles and their launch can be really clean in Q4.
Single Course Analysis - because they wanted a dashboard
Course Completion - because they wanted to see who completed it
* Course completion NO should show up regardless of attempt start
*
## Tasks
- [ ] Need to Hide some courses for an offline assesment
@ -1273,6 +1278,17 @@ Next 6-8 Months:
* Integrations, Design, and any other changes should be completed by April of 2023
* Wait until November for New Conversations
## Meeting on 9/8/22
* They need to train sales people on the new product
* And all other employees later in the future, mostly customer-facing employees
* Combo of live meetings & LMS
* They also need to train their partner, Geographic Learning
* Throwing around the idea of using Northpass for this
* GL needs accountability - share recording, small quiz, check they are done
* Can we use sales training and track actual sales?
* Add ammo for Sophia's case
* Workflow: attend the live session > Test knowledge >
## Tasks
* [ ] /app/course, change text to: "Courses | Great Courses from the comfort of your home or classroom."
* [ ] Add personalized message to /app.
@ -1557,6 +1573,11 @@ Care center vs Pals
ADP Integration -
Okta SSO - Ted, Security Team
## Mapping Session with Mini, Lizzy, and Becca
*
# Nana
* [X] Send template blog, and academy screenshots

Binary file not shown.

View File

@ -2,6 +2,10 @@
{% include "homepage_recommended" %}
{% include 'homepage_courses_list' %}
{% comment %}<button data-tf-popup="nHcG5W6g" data-tf-open="time" data-tf-open-value="2000" data-tf-auto-close data-tf-iframe-props="title=Academy Brand names" data-tf-medium="snippet" style="all: unset;font-family :Helvetica,Arial,sans-serif; display: none; max-width: 100%; white-space: nowrap; overflow: hidden;text-overflow: ellipsis; background-color: #0445AF; color: #FFFFFF; font-size: 20px; border-radius: 25px;padding: 0 33px; font-weight: bold; height: 50px; cursor: pointer; line-height: 50px; text-align: center;margin: 0; text-decoration: none;">
Launch me
</button> {% endcomment %}
<div class="homepage">
{% include 'homepage_latest' %}
{% include "homepage_beginning" %}
@ -28,4 +32,5 @@
padding: 0 10%;
}
}
</style>
</style>
<script src="//embed.typeform.com/next/embed.js"></script>

View File

@ -0,0 +1,48 @@
{% include "header" %}
{% include "course_version_outdated_alert", courses: courses.enrolled %}
{% include "sub_navigation" %}
<main class="np-main np-dashboard np-subpage-container">
<div class="np-flex-center">
<div class="main-courses">
<div class="main-courses-headline">
<div class="main-courses-headline-title">
Our Most Popular Courses
</div>
<div class="main-courses-headline-subtitle">
10,000+ unique online course list designs
</div>
</div>
{% include 'dashboard_filter' %}
<div class="container">
<div class="main-courses-list row">
{% for course in courses.enrolled %}
{% include 'cards_course_dashboard' with course %}
{% endfor %}
</div>
</div>
</div>
</div>
</main>
{% include "footer" %}
<style>
.np-main.np-dashboard {
background: white;
}
.main-courses-headline {
text-align: center;
margin-bottom: 50px;
}
.main-courses-headline-title {
font-size: 1.8rem;
font-weight: 700;
color: rgb(86, 49, 80);
}
.main-courses-headline-subtitle {
font-size: 0.9rem;
margin-top: 10px;
font-weight: 400;
color: rgb(79, 84, 123);
}
</style>

View File

@ -0,0 +1,253 @@
<footer class="footer-wrapper">
<div class="footer">
<div class="footer-top">
<div class="footer-top-top">
<div class="footer-top-top-left">
Join more than <span style="color: #D4D85D;">8 million<br>learners</span> worldwide
</div>
<div class="footer-top-top-right">
Start Learning For Free
</div>
</div>
<div class="footer-top-bottom">
<img class="footer-top-bottom-left" src="{{ current_school.logo_url }}">
<div class="footer-top-bottom-right">
<span>Follow us on social media</span>
{% for social in website_footer.social_media_links %}
<a class="footer-social" href="{{ social.link }}">
<i class="fab fa-{{ social.name }}"></i>
</a>
{% endfor %}
</div>
</div>
</div>
<div class="footer-mid container">
<div class="row" style="width: 100%; justify-content: space-between;">
<div class="footer-mid-left col-7 row">
<div class="footer-mid-column col">
<div class="footer-mid-column-title">
About
</div>
<a class="footer-item" href="">
About Us
</a>
<a class="footer-item" href="">
Learner Stories
</a>
<a class="footer-item" href="">
Careers
</a>
<a class="footer-item" href="">
Press
</a>
<a class="footer-item" href="">
Leadership
</a>
<a class="footer-item" href="">
Contact Us
</a>
</div>
<div class="footer-mid-column col">
<div class="footer-mid-column-title">
Categories
</div>
<a class="footer-item" href="">
Development
</a>
<a class="footer-item" href="">
Business
</a>
<a class="footer-item" href="">
Finance & Accounting
</a>
<a class="footer-item" href="">
IT & Software
</a>
<a class="footer-item" href="">
Office Productivity
</a>
<a class="footer-item" href="">
Design
</a>
<a class="footer-item" href="">
Marketing
</a>
</div>
<div class="footer-mid-column col">
<div class="footer-mid-column-title"></div>
<a class="footer-item" href="">
Lifestyle
</a>
<a class="footer-item" href="">
Photography & Video
</a>
<a class="footer-item" href="">
Health & Fitness
</a>
<a class="footer-item" href="">
Music
</a>
<a class="footer-item" href="">
UX Design
</a>
<a class="footer-item" href="">
Seo
</a>
</div>
</div>
<div class="footer-mid-right col-5 row">
<div class="footer-mid-column col">
<div class="footer-mid-column-title">
Support
</div>
<a class="footer-item" href="">
Documentation
</a>
<a class="footer-item" href="">
FAQS
</a>
<a class="footer-item" href="">
Dashboard
</a>
<a class="footer-item" href="">
Contact
</a>
</div>
<div class="footer-mid-column col">
<div class="footer-mid-column-title">
Get in touch
</div>
<div class="footer-item">
We dont send spam so dont worry.
</div>
<form class="footer-form">
<input class="footer-input" placeholder="Email...">
<button class="footer-form-button">
Submit
</button>
</form>
</div>
</div>
</div>
</div>
<div class="footer-bottom">
<div class="footer-bottom-left">
© {{ "now" | date: "%Y" }} Educrat. All Right Reserved.
</div>
<div class="footer-bottom-right">
<a class="footer-item" href="">
Help
</a>
<a class="footer-item" href="">
Privacy Policy
</a>
<a class="footer-item" href="">
Cookie Notice
</a>
<a class="footer-item" href="">
Security
</a>
<a class="footer-item" href="">
Terms of Use
</a>
</div>
</div>
</div>
</footer>
<style>
.footer-wrapper {
background: #563150;
padding: 30px 0;
display: flex;
}
.footer {
width: 92%;
max-width: 1400px;
margin: auto;
}
.footer > * {
color: white;
}
.footer-top-top, .footer-top-bottom, .footer-mid, .footer-bottom {
display: flex;
justify-content: space-between;
padding: 30px 0;
}
.footer-top, .footer-mid {
border-bottom: 1px solid rgba(255,255,255,.15);
}
.footer-top-top-left {
margin: auto 0;
font-weight: 700;
font-size: 1.8rem;
}
.footer-top-top-right {
color: #563150;
background: #D4D85D;
border: 2px solid #D4D85D;
border-radius: 8px;
padding: 12px 20px;
height: min-content;
}
.footer-top-top-right:hover {
background: none;
color: #D4D85D;
}
.footer-top-bottom-right {
margin: auto 0;
}
.footer-top-bottom-right > * {
margin: auto 10px;
}
.footer-mid {
max-width: none;
}
.footer-mid-right.col-5.row, .footer-mid-right.col-5.row > .footer-mid-column.col:last-child {
padding-right: 0;
}
.footer-mid-column {
display: flex;
flex-direction: column;
}
.footer-mid-column .footer-item {
line-height: 1.6rem;
padding: 5px 0;
}
.footer-mid-column-title {
height: 50px;
text-transform: uppercase;
font-size: 1.1rem;
font-weight: 500;
}
.footer-form {
background: white;
border-radius: 100px;
display: flex;
flex-wrap: nowrap;
margin-top: 15px;
justify-content: space-between;
width: inherit;
}
.footer-input {
border: none;
padding-left: 22px;
background: none;
outline: none;
max-width: 180px;
width: inherit;
}
.footer-form-button {
border-radius: 100px;
padding: 8px 12px;
border: none;
background: #6440fb;
color: #fff;
margin: 8px;
}
.footer-bottom-right > .footer-item {
margin: auto 6px;
}
</style>

View File

@ -0,0 +1,74 @@
{% capture course_path %}{% route course, id: course.id %}{% endcapture %}
{% assign activites_count = 0 %}
{% for section in course.sections %}
{% assign activites_count = activites_count | plus: section.activities.size %}
{% endfor %}
<a class="dashboard-course" categories="{{ course.categories | map: 'id' | join: ' ' }}" href="{{ course_path }}">
<div class="np-card-container">
{% if course.ribbon %}
<div class="np-card-ribbon">
{{ course.ribbon }}
</div>
{% endif %}
<img
class="np-card-image"
alt="{{ course.name }}"
src="{{ course.image_url }}"
>
<div class="np-card-content np-card-content-vertical np-card-padding">
<div class="dashboard-course-rating">
<div class="dashboard-course-rating-value">
{{ course.properties.np_course_rating }}
</div>
<div class="dashboard-course-rating-stars">
{% for i in (1..5) %}
{% if course.properties.np_course_rating >= i %}
<i class="fas fa-star"></i>
{% else %}
<i class="fal fa-star"></i>
{% endif %}
{% endfor %}
</div>
<div class="dashboard-course-rating-count">
({{ course.properties.np_course_rating_count }})
</div>
</div>
<h3 class="np-card-content-title">
{{ course.name }}
</h3>
<div class="dashboard-course-info-section">
<div class="dashboard-course-info">
<i class="fal fa-file-alt"></i>
{% if activites_count > 1 %}
{{ activites_count }} lessons
{% else %}
{{ activites_count }} lesson
{% endif %}
</div>
<div class="dashboard-course-info">
<i class="fal fa-clock"></i>
{{ course.properties.course_time | divided_by: 60 }}h {{ course.properties.course_time | modulo: 60 }}m
</div>
<div class="dashboard-course-info">
<i class="fal fa-signal-3"></i>
{{ course.properties.course_difficulty }}
</div>
</div>
<div class="dashboard-course-footer">
{% if course.instructors.size != 0 %}
<div class="dashboard-course-instructor">
<img class="dashboard-course-instructor-image" src="{{ course.instructors.first.avatar_url }}">
<div class="dashboard-course-instructor-name">
{{ course.instructors.first.name }}
</div>
</div>
{% endif %}
</div>
{% if course.has_to_restart? %}
{% include "course_version_outdated_popup", path: course_path %}
{% endif %}
</div>
</div>
</a>

View File

@ -0,0 +1,42 @@
{% capture course_path %}{% route course, id: course.id %}{% endcapture %}
{% assign activites_count = 0 %}
{% for section in course.sections %}
{% assign activites_count = activites_count | plus: section.activities.size %}
{% endfor %}
<a class="recent-course-card" href="{{ course_path }}">
<img class="recent-course-image" src="{{ course.image_url }}">
<div class="recent-course-content">
<div class="recent-course-title">
{{ course.name }}
</div>
<div class="recent-course-footer">
{% if course.instructors and course.instructors.size > 0 %}
<div class="recent-course-info">
<div class="recent-course-info-icon">
<img src="{{ course.instructors.first.avatar_url }}" />
</div>
<div class="recent-course-info-value">
{{ course.instructors.first.name }}
</div>
</div>
{% endif %}
<div class="recent-course-info">
<div class="recent-course-info-icon">
<i class="fal fa-file-alt"></i>
</div>
<div class="recent-course-info-value">
{{ activites_count }} lessons
</div>
</div>
<div class="recent-course-info">
<div class="recent-course-info-icon">
<i class="fal fa-clock"></i>
</div>
<div class="recent-course-info-value">
{{ course.properties.course_time | divided_by: 60 }}h {{ course.properties.course_time | modulo: 60 }}m
</div>
</div>
</div>
</div>
</a>

View File

@ -0,0 +1,16 @@
{% if courses.enrolled.any? %}
<div class="row row-with-thumbnails">
{% for course in courses.enrolled limit: 12 %}
<div class="{{ class }}">
{% include "cards_course" with course %}
</div>
{% endfor %}
</div>
{% else %}
{% capture message %}
{% t shared.zero_state.courses.index,
key: current_school.course_vocabulary
%}
{% endcapture %}
{% include "courses_zero_state", message: message %}
{% endif %}

View File

@ -0,0 +1,139 @@
<div class="dashboard-categories">
<div class="dashboard-categories-header">
<div class="dashboard-categories-title">
Top Categories
</div>
<div class="dashboard-categories-subtitle">
Lorem ipsum dolor sit amet, consectur.
</div>
</div>
<div class="categories-carousel">
{% for category in categories.enrolled %}
<div class="category-card-wrapper">
<a class="category-card" href="">
<div class="category-card-name">
{{ category.name }}
</div>
</a>
</div>
{% endfor %}
</div>
<div class="categories-carousel-control"></div>
</div>
<style>
.dashboard-categories {
padding: 60px 16px;
max-width: 1320px;
margin: auto;
}
.dashboard-categories-header {
margin: 0 auto 32px;
text-align: center;
}
.dashboard-categories-title {
font-size: 1.9rem;
font-weight: 700;
color: #563150;
margin-bottom: 6px;
}
.dashboard-categories-subtitle {
}
.categories-carousel.tns-slider {
display:flex;
}
.category-card-wrapper {
padding: 0 10px;
}
.category-card {
background: #EEF2F6;
height: 100%;
width: 100%;
display: block;
padding: 26px 24px;
border-radius: 8px;
text-align:center;
transition: all 0.1s;
/*min-height: 104px; */
}
.category-card:hover {
background: #563150;
}
.category-card:hover .category-card-name {
color: #fff;
}
.category-card-name {
text-align: center;
font-size: 17px;
font-weight: 500;
line-height: 26px;
color: #563150;
}
.dashboard-categories .tns-nav {
text-align: center;
max-width: 230px;
margin: 20px auto 0;
}
.dashboard-categories .tns-nav button {
border-radius: 50%;
height: 10px;
width: 10px;
padding: 0;
border: 0;
margin: 0 8px;
}
.dashboard-categories .tns-controls {
text-align: center;
display: flex;
justify-content: space-between;
max-width: 275px;
margin: auto;
margin-top:-30px;
}
.dashboard-categories .tns-controls button {
border: none;
background: none;
font-size: 25px;
}
.dashboard-categories .tns-controls button.tns-nav-active {
background: #563150;
}
</style>
<script>
window.addEventListener('DOMContentLoaded', function() {
var filtersSlider = tns({
container: '.categories-carousel',
controls: true,
controlsText: ['<i class="fal fa-long-arrow-left"></i>','<i class="fal fa-long-arrow-right"></i>'],
mouseDrag: true,
swipeAngle: false,
items: 6,
controlsPosition:'bottom',
navPosition: 'bottom,',
slideBy: 1,
responsive: {
640: {
items: 2
},
768: {
items: 3
},
992: {
items: 4
},
1200: {
items: 6
}
}
});
})
</script>

View File

@ -0,0 +1,104 @@
<div class="main-courses-filter-wrapper">
<div class="main-courses-filters" id="filters-carousel">
<div class="main-courses-filter-item main-courses-filter-item-active" onclick="switchCategory('ALL', this)">
All Categories
</div>
{% for category in categories.enrolled %}
<div class="main-courses-filter-item" onclick="switchCategory('{{ category.id }}', this)">
{{ category.name }}
</div>
{% endfor %}
</div>
</div>
<style>
.main-courses-filter-wrapper {
width: 90%;
margin: 0 auto 30px;
position: relative;
}
.main-courses-filters {
display: flex;
margin-top: 0;
width: fit-content;
}
.main-courses-filter-item {
margin: auto 8px;
padding: 5px 8px;
text-align: center;
-webkit-touch-callout: none; /* iOS Safari */
-webkit-user-select: none; /* Safari */
-khtml-user-select: none; /* Konqueror HTML */
-moz-user-select: none; /* Old versions of Firefox */
-ms-user-select: none; /* Internet Explorer/Edge */
user-select: none;
}
.main-courses-filter-item-active {
background: #F4F1FE;
border-radius: 6px;
}
.tns-controls {
position: absolute;
width: 110%;
top: -10%;
z-index: 10;
height: 120%;
left: -5%;
display: flex;
justify-content: space-between;
pointer-events: none;
}
.tns-controls > * {
visibility: hidden;
width: 15%;
position: relative;
}
.tns-controls > *:after {
visibility: visible;
height: 100%;
position: absolute;
border: none;
content: '';
width: 100% ;
background: linear-gradient(to right, rgba(255,255,255, 0), rgba(255, 255, 255, 0.8) 50% );
right: 0;
top: 0;
}
.tns-controls > *:first-child:after {
transform: rotate(180deg);
left: 0;
}
.tns-controls > *:disabled:after {
visibility: hidden !important;
}
.hidden-course {
display: none;
}
</style>
<script>
function switchCategory(categoryID, buttonElement) {
document.querySelector('.main-courses-filter-item-active').classList.remove('main-courses-filter-item-active');
buttonElement.classList.add('main-courses-filter-item-active');
document.querySelectorAll('.dashboard-course.hidden-course').forEach(element => {
element.classList.remove('hidden-course');
})
if (categoryID != 'ALL') {
document.querySelectorAll(`.dashboard-course:not([categories*="${categoryID}"])`).forEach(element => {
element.classList.add('hidden-course');
})
}
}
window.addEventListener('DOMContentLoaded', function() {
var filtersSlider = tns({
container: '#filters-carousel',
controls: true,
loop: false,
mouseDrag: true,
swipeAngle: false,
items: 5,
nav: false
});
})
</script>

View File

@ -0,0 +1,192 @@
{% assign courses_completed = 0 %}
{% assign hourses_completed = 0 %}
{% for course in courses.enrolled %}
{% if course.completed? %}
{% assign courses_completed = courses_completed | plus: 1 %}
{% assign hourses_completed = hourses_completed | plus: course.properties.course_time %}
{% endif %}
{% endfor %}
{% assign hourses_completed = hourses_completed | divided_by: 60 %}
<div class="dashboard-header container">
<div class="row">
<div class="dashboard-header-left col">
<div class="dashboard-header-left-title">
Welcome back, {{ current_person.first_name }}
</div>
<div class="dashboard-header-left-subtitle">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<br>
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
</div>
<div class="dashboard-header-left-widgets row">
<div class="col-12 col-md-6">
<div class="dashboard-header-left-widget">
<div class="dashboard-header-left-widget-left">
<div class="dashboard-header-left-widget-title">
Courses Completed
</div>
<div class="dashboard-header-left-widget-value">
{{ courses_completed }}
</div>
</div>
<div class="dashboard-header-left-widget-icon">
<i class="far fa-tags"></i>
</div>
</div>
</div>
<div class="col-12 col-md-6">
<div class="dashboard-header-left-widget">
<div class="dashboard-header-left-widget-left">
<div class="dashboard-header-left-widget-title">
Hours of Learning
</div>
<div class="dashboard-header-left-widget-value">
{{ hourses_completed }}
</div>
</div>
<div class="dashboard-header-left-widget-icon">
<i class="far fa-tags"></i>
</div>
</div>
</div>
</div>
</div>
<div class="dashboard-header-right col-12 col-sm-6">
<div class="dashboard-header-right-header">
<div class="dashboard-header-right-header-title">
Recent Courses
</div>
<a class="dashboard-header-right-header-link" href="">
View All
</a>
</div>
{% assign recent_course_count = 0 %}
<div class="dashboard-header-right-courses">
{% for course in courses.enrolled limit: 2 %}
{% assign recent_course_count = recent_course_count | plus: 1 %}
{% include 'cards_course_recent' %}
{% endfor %}
</div>
</div>
</div>
</div>
{% if recent_course_count == 0 %}
<style>
.dashboard-header-right-courses {
display: none !important;
}
</style>
{% endif %}
<style>
.dashboard-header {
display: flex;
margin-bottom: 30px;
max-width: none;
}
.dashboard-header-left-title {
font-size: 2rem;
font-weight: 700;
color: rgb(86, 49, 80);
margin-bottom: 0.5rem;
}
.dashboard-header-left-subtitle {
margin-bottom: 1rem;
color: #3d4371;
}
.dashboard-header-left-widgets {
display: flex;
}
.dashboard-header-left-widget {
display: flex;
padding: 30px;
justify-content: space-between;
background: white;
border-radius: 12px;
box-shadow:0 1px 4px 0 #14034212;
}
.dashboard-header-left-widget-title {
color: #3d4371;
margin-bottom: 10px;
font-weight: 500;
}
.dashboard-header-left-widget-value {
font-size: 2rem;
font-weight: 500;
color: rgb(86, 49, 80);
}
.dashboard-header-left-widget-icon {
align-self: center;
font-size: 2rem;
color: rgb(86, 49, 80);
}
.dashboard-header-right {
padding: 20px;
margin-left: 15px;
border-radius: 12px;
background: white;
box-shadow:0 1px 4px 0 #14034212;
}
.dashboard-header-right-header {
display: flex;
justify-content: space-between;
padding-bottom: 20px;
border-bottom: 1px solid lightgray;
}
.dashboard-header-right-courses {
margin-top: 20px;
}
.dashboard-header-right-header-title {
color: rgb(86, 49, 80);
font-size: 1.2rem;
font-weight: 500;
}
.dashboard-header-right-header-link {
text-decoration: underline !important;
color: rgb(86, 49, 80) !important;
text-decoration-color: rgb(86, 49, 80) !important;
}
/* recent course card styles */
.recent-course-card {
display: flex;
padding: 15px 0;
}
.recent-course-card:last-child:not(.recent-course-card:first-child) {
border-top: 1px solid lightgray;
}
.recent-course-image {
width: auto;
height: 70px;
margin: auto 20px auto 0;
}
.recent-course-title {
color: rgb(86, 49, 80);
font-weight: 500;
}
.recent-course-footer {
display: flex;
color: #3d4371;
}
.recent-course-info {
display: flex;
margin-right: 16px;
}
.recent-course-info-icon {
margin-right: 10px;
width: 20px;
height: 20px;
}
.recent-course-info-icon img {
max-width:100%;
}
@media (min-width: 768px) {
}
</style>

View File

@ -0,0 +1,175 @@
<div class="top-courses">
<div class="top-courses-header">
<div class="top-courses-header-left">
<div class="top-courses-header-left-title">
Top courses
</div>
<div class="top-courses-header-left-subtitle">
10,000+ unique online course list designs
</div>
</div>
<a class="top-courses-header-button" href="">
All Courses <i class="fal fa-arrow-up" style="transform: rotate(45deg); margin-left: 8px;"></i>
</a>
</div>
<div class="top-courses-carousel-wrapper">
<div class="top-courses-carousel">
{% for course in courses.enrolled %}
{% if course.properties.top_course %}
{% include 'cards_course_dashboard' %}
{% endif %}
{% endfor %}
</div>
</div>
</div>
<style>
.top-courses {
max-width:1320px;
margin:auto;
}
.top-courses-carousel.tns-slider {
display:flex;
}
.top-courses-header {
display: flex;
justify-content: space-between;
align-items: center;
margin: 50px 0;
}
.top-courses-header-left-title {
font-size: 2rem;
color: rgb(86, 49, 80);
font-weight: 600;
}
.top-courses-header-left-subtitle {
color: #3d4371;
}
.top-courses-header-left {
margin-bottom: 20px;
}
.top-courses-header-button {
padding: 16px 32px;
background: #ebeaff;
color: #724b6b !important;
font-weight: 500;
border-radius: 8px;
}
.top-courses-carousel-wrapper {
position: relative;
margin:0 32px;
}
.top-courses .tns-controls {
position: absolute;
top: 50%;
transform: translate(0, -50%);
z-index: 10;
display: flex;
justify-content: space-between;
width: 100%;
}
.top-courses .tns-controls button {
background: none;
border: 1px solid #563150;
border-radius:50px;
font-size: 20px;
width: 36px;
height: 36px;
display: flex;
justify-content: center;
align-content: center;
position:relative;
transition: all 0.1s;
}
.top-courses .tns-controls button:hover {
background: #563150;
border: 1px solid #563150;
color:#fff;
}
.top-courses .tns-controls button[data-controls='next'] {
left:43px;
}
.top-courses .tns-controls button[data-controls='prev'] {
right:43px;
}
.top-courses .tns-controls button:disabled {
opacity:0;
}
.top-courses .tns-controls button i {
align-self: center;
}
@media (min-width:850px) {
.top-courses .tns-controls button {
font-size: 22px;
width: 40px;
height: 40px;
}
.top-courses .tns-controls button[data-controls='next'] {
left:55px;
}
.top-courses .tns-controls button[data-controls='prev'] {
right:55px;
}
}
@media (min-width:1200px) {
.top-courses .tns-controls button {
font-size: 27px;
width: 50px;
height: 50px;
}
.top-courses .tns-controls button[data-controls='next'] {
left:70px;
}
.top-courses .tns-controls button[data-controls='prev'] {
right:70px;
}
}
</style>
<script>
window.addEventListener('DOMContentLoaded', function() {
var filtersSlider = tns({
container: '.top-courses-carousel',
controls: true,
controlsText: ['<i class="fal fa-long-arrow-left"></i>','<i class="fal fa-long-arrow-right"></i>'],
loop: false,
mouseDrag: true,
swipeAngle: false,
items: 1,
nav: false,
gutter: 30,
responsive: {
640: {
items: 2
},
850: {
items: 3
},
1200: {
items: 4
}
}
});
})
</script>

View File

@ -0,0 +1,50 @@
<footer class="footer np-subpage-container">
<div class="footer-left">
© {{ "now" | date: "%Y" }} Quantuvos Inc. All Right Reserved.
</div>
<div class="footer-right">
<a class="footer-element" href="">
Help
</a>
<a class="footer-element" href="">
Privacy Policy
</a>
<a class="footer-element" href="">
Cookie Notice
</a>
<a class="footer-element" href="">
Security
</a>
<a class="footer-element" href="">
Terms of Use
</a>
</div>
</footer>
<style>
.footer {
justify-content: space-between;
background: #f2f4f5;
padding-top: 20px;
padding-bottom: 20px;
text-align:center;
}
.footer-right {
display: flex;
flex-wrap:wrap;
margin-top:16px;
}
.footer-element {
padding: 4px;
margin: auto 8px 8px;
}
@media (min-width:768px) {
.footer {
display: flex;
text-align:left;
}
}
</style>

View File

@ -0,0 +1,8 @@
{% styles default %}
{% styles colors %}
{% styles custom %}
<script src="https://kit.fontawesome.com/41a3aee3ad.js" crossorigin="anonymous"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/tiny-slider/2.9.4/tiny-slider.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/tiny-slider/2.9.2/min/tiny-slider.js"></script>

View File

@ -0,0 +1,149 @@
<header class="np-header np-header-color">
<div class="np-header-content">
<div class="header-left">
{% if current_school.logo_url %}
<h1 class="np-header-logo">
<a href="https://quantuvos.com/">
<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="tablet-hidden" id="header-explore-button" onclick="toggleExploreDropdown()">
<i class="fal fa-bars"></i> Explore
</div>
</div>
<div class="header-middle tablet-hidden">
{% include 'header_desktop_top_menu' %}
</div>
<div class="header-right">
{% if current_person.signed_in? %}
<div class="header-search-button" onclick="toggleSearch()">
<i class="far fa-search"></i>
</div>
<div class="np-header-font-color tablet-visible" onclick="toggleSideMenu()" id="side-menu-open-button">
<i class="far fa-bars" style="pointer-events: none;"></i>
</div>
<div class="tablet-hidden 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">
{% 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 %}
<div class="header-desktop-login tablet-hidden">
<a href="{% route login %}">
Log in
</a>
</div>
<div class="header-desktop-signup tablet-hidden">
<a href="">
Sign up
</a>
</div>
{% endif %}
</div>
</div>
</header>
{% comment %} <div class="header-blank-space"></div> {% endcomment %}
<div class="np-hidden" id="gray-background"></div>
<div id="header-desktop-dropdown" class="np-hidden"></div>
{% include "header_mobile_side_menu" %}
{% include "header_search" %}
{% comment %}{% include "header_desktop_explore" %}{% endcomment %}
{% include "messages" %}
<style>
header.np-header {
position: fixed;
top: 0px;
height: 90px;
}
.header-left, .header-middle, .header-right {
display: flex;
align-items: center;
}
.header-blank-space {
height: 120px;
}
.header-right {
font-size: 1.3rem;
}
#header-explore-button {
display: none !important;
color: rgb(212, 216, 93);
margin-left: 50px;
padding: 4px 12px;
border-radius: 8px;
}
#header-explore-button:hover {
background: rgba(255,255,255,.15);
}
.header-search-button .fa-search {
color: white;
margin-right: 16px;
}
#header-explore-button .fa-bars {
margin-right: 8px;
}
header.np-header, .header-blank-space {
height: 90px;
}
.np-header-logo {
flex-grow: 0;
margin: 0;
}
.np-header-content {
flex-direction: row;
justify-content: space-between;
}
#gray-background {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 99;
background-color: rgba(24,24,26,.7);
}
</style>

View File

@ -0,0 +1,222 @@
<div class="np-hidden" id="header-explore-dropdown">
<ul class="header-explore-list">
<li class="header-explore-item" onclick="expandExploreDropdown('architecture')">
<span class="header-explore-item-text">
Architecture
</span>
<i class="far fa-angle-right"></i>
</li>
<li class="header-explore-item" onclick="expandExploreDropdown('business')">
<span class="header-explore-item-text">
Business
</span>
<i class="far fa-angle-right"></i>
</li>
<li class="header-explore-item">
<span class="header-explore-item-text">
Computer Programming
</span>
</li>
<li class="header-explore-item">
<span class="header-explore-item-text">
Data Analysis
</span>
</li>
<li class="header-explore-item" onclick="expandExploreDropdown('design')">
<span class="header-explore-item-text">
Design
</span>
<i class="far fa-angle-right"></i>
</li>
<li class="header-explore-item">
<span class="header-explore-item-text">
Education
</span>
</li>
</ul>
<ul class="np-hidden" id="header-explore-extension"></ul>
</div>
<style>
#header-explore-dropdown {
position: fixed;
z-index: 50;
display: flex;
background: white;
border-radius: 8px;
box-shadow: rgba(1, 33, 58, 0.07) 0px 25px 70px 0px;
padding: 20px 0;
}
.header-explore-list {
list-style: none;
padding: 0 20px;
margin-bottom: 0;
}
#header-explore-extension {
list-style: none;
margin-bottom: 0;
padding: 0 20px;
}
.header-explore-item, .header-explore-extension-item {
display: flex;
justify-content: space-between;
color: rgb(86, 49, 80);
font-weight: 400;
padding: 2px 0;
margin: 4px 0;
}
.header-explore-item .fa-angle-right {
margin-left: 10px;
display: flex;
margin: auto 0;
}
.header-explore-item-text {
margin-right: 30px;
}
</style>
<script>
var exploreDropdownOpen = false
var openExploreExtension = ''
function toggleExploreDropdown() {
let dropdownElement = document.getElementById('header-explore-dropdown');
let dropdownExtension = document.getElementById('header-explore-extension');
if (exploreDropdownOpen) {
dropdownElement.classList.add('np-hidden');
dropdownExtension.classList.add('np-hidden');
openExploreExtension = '';
exploreDropdownOpen = false;
}
else {
repositionExplore()
exploreDropdownOpen = true;
document.getElementById('header-explore-dropdown').classList.remove('np-hidden');
}
}
function expandExploreDropdown(name) {
let dropdownExtension = document.getElementById('header-explore-extension');
if (openExploreExtension == '') {
dropdownExtension.classList.remove('np-hidden');
}
if (name != openExploreExtension) {
dropdownExtension.innerHTML = exploreDropdowns[name];
openExploreExtension = name;
}
}
function repositionExplore() {
let dropdown = document.getElementById('header-explore-dropdown');
let parentButton = document.getElementById('header-explore-button')
let buttonPosition = parentButton.getBoundingClientRect();
dropdown.style.top = `${buttonPosition.bottom + 15}px`;
dropdown.style.left = `${buttonPosition.left}px`;
}
addEventListener('resize', function() {
if (exploreDropdownOpen) {
if (window.innerWidth <= 1200 ) {
document.getElementById('header-explore-dropdown').classList.add('np-hidden');
exploreDropdownOpen = '';
}
else {
repositionExplore();
}
}
});
document.addEventListener('click', function(event) {
if (exploreDropdownOpen &&
!document.getElementById('header-explore-dropdown').contains(event.target) &&
!document.getElementById('header-explore-button').contains(event.target)
) {
toggleExploreDropdown()
}
})
exploreDropdowns = {};
exploreDropdowns.architecture = `
<li class="header-explore-extension-item">
<a href="">
Architecture
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
Graphic Design
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
Design Tool
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
User Experience Design
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
Game Design
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
3D & Animation
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
Fashion Design
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
Interior Design
</a>
</li>`
exploreDropdowns.business = `
<li class="header-explore-extension-item">
<a href="">
Architecture 2
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
Graphic Design 2
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
Design Tool 2
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
User Experience Design 2
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
Game Design 2
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
3D & Animation 2
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
Fashion Design 2
</a>
</li>
<li class="header-explore-extension-item">
<a href="">
Interior Design 2
</a>
</li>`
exploreDropdowns.design = exploreDropdowns.architecture;
</script>

View File

@ -0,0 +1,185 @@
<div class="header-desktop-menu tablet-hidden">
<ul class="header-desktop-menu-list">
{% comment %}
-- Comment from Norm:
This was the original menu layout with dropdowns as per their styling needs.
Last minute there were changes, so I edited the block below and saved this
for when they revert. Be sure to uncomment the script at the bottom too.
<li class="header-desktop-menu-item" dropdown-show="home">
Home <i class="far fa-angle-down"></i>
</li>
<li class="header-desktop-menu-item" dropdown-show="home">
Home <i class="far fa-angle-down"></i>
</li>
<li class="header-desktop-menu-item" dropdown-show="courses">
Courses <i class="far fa-angle-down"></i>
</li>
<li class="header-desktop-menu-item" dropdown-show="events">
Events <i class="far fa-angle-down"></i>
</li>
<li class="header-desktop-menu-item" dropdown-show="blog">
Blog <i class="far fa-angle-down"></i>
</li>
<li class="header-desktop-menu-item" dropdown-show="pages">
Pages <i class="far fa-angle-down"></i>
</li>
<li class="header-desktop-menu-link">
<a href="">
Contact
</a>
</li>
{% endcomment %}
<li class="header-desktop-menu-item">
<a href="https://www.quantuvos.com">
Home
</li>
<li class="header-desktop-menu-item" dropdown-show="courses">
<a href="https://www.quantuvos.com">
Courses
</li>
<li class="header-desktop-menu-link">
<a href="https://www.quantuvos.com">
Contact
</a>
</li>
</ul>
</div>
<style>
.header-desktop-menu-list {
list-style: none;
display: flex;
margin: auto;
}
.header-desktop-menu-item, .header-desktop-menu-link {
display: flex;
margin: 0 10px;
color: white;
}
.header-desktop-menu-item .fa-angle-down {
margin: auto 0 auto 5px;
}
#header-desktop-dropdown {
position: fixed;
z-index: 50;
}
.header-desktop-dropdown-list {
list-style: none;
background: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 25px 70px 0 #01213a12;
margin-bottom: 0;
min-width: 230px;
}
.header-desktop-dropdown-item {
padding: 3px 0;
margin: 3px auto;
}
</style>
{% comment %}
<script>
window.addEventListener('DOMContentLoaded', function() {
document.querySelectorAll('.header-desktop-menu-item[dropdown-show]').forEach(element => {
element.addEventListener('click', function() {
toggleMenuDropdown(element.getAttribute('dropdown-show'))
})
})
})
var openMenuDropdown = '';
function toggleMenuDropdown(name) {
let dropdown = document.getElementById('header-desktop-dropdown');
if (openMenuDropdown == name || !name) {
dropdown.classList.add('np-hidden');
openMenuDropdown = '';
}
else {
openMenuDropdown = name;
dropdown.innerHTML = menuDropdowns[name];
if (openMenuDropdown) {
dropdown.classList.remove('np-hidden');
}
repositionMenuDropdown();
}
}
function repositionMenuDropdown() {
let dropdown = document.getElementById('header-desktop-dropdown');
let parentButton = document.querySelector(`.header-desktop-menu-item[dropdown-show="${openMenuDropdown}"]`)
let buttonPosition = parentButton.getBoundingClientRect();
dropdown.style.top = `${buttonPosition.bottom + 15}px`;
dropdown.style.left = `${buttonPosition.left}px`;
}
document.addEventListener('click', function(event) {
if (openMenuDropdown &&
!document.querySelector('.header-desktop-menu').contains(event.target) &&
!document.getElementById('header-desktop-dropdown').contains(event.target)
) {
toggleMenuDropdown()
}
})
addEventListener('resize', function() {
if (openMenuDropdown) {
if (window.innerWidth <= 1200 ) {
document.getElementById('header-desktop-dropdown').classList.add('np-hidden');
openMenuDropdown = '';
}
else {
repositionMenuDropdown();
}
}
});
menuDropdowns = {};
menuDropdowns.home = `
<ul class="header-desktop-dropdown-list">
<li class="header-desktop-dropdown-item">
Home 1
</li>
<li class="header-desktop-dropdown-item">
Home 2
</li>
<li class="header-desktop-dropdown-item">
Home 3
</li>
<li class="header-desktop-dropdown-item">
Home 4
</li>
<li class="header-desktop-dropdown-item">
Home 5
</li>
<li class="header-desktop-dropdown-item">
Home 6
</li>
</ul>`
menuDropdowns.courses = `
<ul class="header-desktop-dropdown-list">
<li class="header-desktop-dropdown-item">
Course 1
</li>
<li class="header-desktop-dropdown-item">
Course 2
</li>
<li class="header-desktop-dropdown-item">
Course 3
</li>
<li class="header-desktop-dropdown-item">
Course 4
</li>
<li class="header-desktop-dropdown-item">
Course 5
</li>
<li class="header-desktop-dropdown-item">
Course 6
</li>
</ul>`
</script>
{% endcomment %}

View File

@ -0,0 +1,362 @@
<div class="side-menu-wrapper np-hidden tablet-visible" id="side-menu">
<div class="side-menu">
<div class="side-menu-header">
{% if current_person.signed_in? %}
<div class="side-menu-header-logged">
<a class="side-menu-header-name" href="">
{{ current_person.name }}
</a>
<img class="side-menu-header-image" src="{{current_person.avatar_url}}">
</div>
{% else %}
<div class="side-menu-header-not-logged">
<a class="side-menu-login" href="">
Log in
</a>
<a class="side-menu-login" href="">
Sign up
</a>
</div>
{% endif %}
</div>
<div class="side-menu-body-wrapper" id="side-menu-body">
<ul class="side-menu-body">
<li class="side-menu-body-element-strong"><a href="https://www.quantuvos.com/">
Home
{% comment %}<i class="fal fa-angle-right side-menu-body-arrow"></i>{% endcomment %}
</li>
<li class="side-menu-body-element-strong"><a href="https://www.quantuvos.com/">
Courses
{% comment %}<i class="fal fa-angle-right side-menu-body-arrow"></i>{% endcomment %}
</li>
{% comment %} <li class="side-menu-body-element-strong">
Events
<i class="fal fa-angle-right side-menu-body-arrow"></i>
</li>
<li class="side-menu-body-element-strong">
Blog
<i class="fal fa-angle-right side-menu-body-arrow"></i>
</li>
<li class="side-menu-body-element-strong">
Pages
<i class="fal fa-angle-right side-menu-body-arrow"></i>
</li>{% endcomment %}
<li class="side-menu-body-element-strong">
<a href="https://www.quantuvos.com/">
Contact
</a>
</li>
</ul>
</div>
<div class="side-menu-footer">
<div class="side-menu-footer-top">
Call Us<br>800 388 80 90
</div>
<div class="side-menu-footer-mid">
info@quantuvos.com
</div>
<div class="side-menu-footer-bottom">
{% for social in website_footer.social_media_links %}
<a class="side-menu-footer-social" href="{{ social.link }}">
<i class="fab fa-{{ social.name }}"></i>
</a>
{% endfor %}
</div>
</div>
</div>
</div>
<div class="np-hidden" id="side-menu-close-button" onclick="toggleSideMenu()">
<i class="fal fa-times" style="margin: auto;"></i>
</div>
<style>
.side-menu-wrapper {
width: 50%;
max-width: 700px;
background: white;
height: 100%;
position: absolute;
top: 0;
left: 0;
z-index: 100;
height: 100vh;
}
.side-menu {
padding: 20px;
display: flex;
flex-direction: column;
height: 100%;
width: 100%;
justify-content: space-between;
}
.side-menu-header {
border-bottom: 1px solid #ededed;
padding-bottom: 16px;
}
.side-menu-header-logged {
display: flex;
justify-content: end;
color: rgb(86, 49, 80);
}
.side-menu-header-image {
height: 42px;
width: auto;
border-radius: 50%;
}
.side-menu-header-name {
align-self: center;
margin-right: 32px;
color: #563150;
}
.side-menu-body-wrapper {
overflow-y: scroll;
flex: 1;
}
.side-menu-body {
list-style: none;
padding: 0;
}
.side-menu-body-element, .side-menu-body-element-strong {
padding: 10px 0;
display: flex;
justify-content: space-between;
color: rgb(86, 49, 80);
}
.side-menu-body-element-strong {
margin: 20px;
}
.side-menu-body-arrow {
margin: auto 0;
font-size: 1.5rem;
}
.side-menu-body-return {
color: rgb(86, 49, 80);
padding: 12px 20px 12px 0;
border-radius: 8px;
background: rgb(244, 241, 254);
margin-top: 10px;
}
.side-menu-body-return .fa-chevron-left {
margin-left: 20px;
margin-right: 10px;
}
.side-menu-body-element {
font-size: 0.9rem;
font-weight: 400;
margin: 10px 20px;
}
.side-menu-footer {
border-top: 1px solid #ededed;
flex: 0 0 auto;
}
.side-menu-footer-top {
font-size: 1.1rem;
color: rgb(86, 49, 80);
font-weight: 500;
margin-top: 12px;
}
.side-menu-footer-mid {
color: rgb(79, 84, 123);
font-size: 0.9rem;
padding: 20px 0;
}
.side-menu-footer-bottom {
color: rgb(79, 84, 123);
font-weight: 400;
}
.side-menu-footer-social {
margin: auto 10px;
}
.side-menu-footer-social:first-child {
margin-left: 0;
}
.side-menu-footer-social:last-child {
margin-right: 0;
}
#side-menu-close-button {
color: black;
background-color: white;
position: absolute;
right: 2%;
top: 2%;
z-index: 101;
border-radius: 50%;
font-size: 20px;
font-weight: 500;
width: 42px;
height: 42px;
display: flex;
}
@media only screen and (max-width: 768px) {
.side-menu {
min-width: 360px;
}
}
@media only screen and (max-width: 450px) {
.side-menu {
width: calc(100vw - 50px) !important;
min-width: 0;
}
#side-menu-close-button {
right: 4px;
}
}
</style>
<script>
addEventListener('resize', function() {
if (window.innerWidth > 1200 && menuOpen) {
toggleSideMenu()
}
})
var menuOpen = false
function toggleSideMenu() {
document.getElementById('side-menu').classList.toggle('np-hidden');
document.getElementById('gray-background').classList.toggle('np-hidden');
document.getElementById('side-menu-close-button').classList.toggle('np-hidden');
if (menuOpen) {
window.onscroll = function() {}
} else {
window.onscroll = function () { window.scrollTo(0, 0); };
}
menuOpen = !menuOpen
}
</script>
<script>
function changeSideMenuBody(name) {
document.getElementById('side-menu-body').innerHTML = sideMenuBodies[name]
}
let sideMenuBodies = {};
sideMenuBodies.main = `
<ul class="side-menu-body">
<li class="side-menu-body-element-strong" onclick="changeSideMenuBody('home')">
Home
<i class="fal fa-angle-right side-menu-body-arrow"></i>
</li>
<li class="side-menu-body-element-strong" onclick="changeSideMenuBody('courses')">
Courses
<i class="fal fa-angle-right side-menu-body-arrow"></i>
</li>
<li class="side-menu-body-element-strong">
Events
<i class="fal fa-angle-right side-menu-body-arrow"></i>
</li>
<li class="side-menu-body-element-strong">
Blog
<i class="fal fa-angle-right side-menu-body-arrow"></i>
</li>
<li class="side-menu-body-element-strong">
Pages
<i class="fal fa-angle-right side-menu-body-arrow"></i>
</li>
<li class="side-menu-body-element-strong">
<a href="">
Contact
</a>
</li>
</ul>`
sideMenuBodies.home = `
<ul class="side-menu-body">
<li class="side-menu-body-return" onclick="changeSideMenuBody('main')">
<i class="far fa-chevron-left"></i> Home
</li>
<li class="side-menu-body-element">
<a href="">
Home 1
</a>
</li>
<li class="side-menu-body-element">
<a href="">
Home 2
</a>
</li>
<li class="side-menu-body-element">
<a href="">
Home 3
</a>
</li>
<li class="side-menu-body-element">
<a href="">
Home 4
</a>
</li>
<li class="side-menu-body-element">
<a href="">
Home 5
</a>
</li>
<li class="side-menu-body-element">
<a href="">
Home 6
</a>
</li>
<li class="side-menu-body-element">
<a href="">
Home 7
</a>
</li>
<li class="side-menu-body-element">
<a href="">
Home 8
</a>
</li>
<li class="side-menu-body-element">
<a href="">
Home 9
</a>
</li>
<li class="side-menu-body-element">
<a href="">
Home 10
</a>
</li>
</ul>`
sideMenuBodies.courses = `
<ul class="side-menu-body">
<li class="side-menu-body-return" onclick="changeSideMenuBody('main')">
<i class="far fa-chevron-left"></i> Courses
</li>
<li class="side-menu-body-element" onclick="changeSideMenuBody('courses1')">
Course List Layouts
<i class="fal fa-angle-right side-menu-body-arrow"></i>
</li>
<li class="side-menu-body-element" onclick="changeSideMenuBody('courses2')">
Course Single Layouts
<i class="fal fa-angle-right side-menu-body-arrow"></i>
</li>
</ul>`
sideMenuBodies.courses1 = `
<ul class="side-menu-body">
<li class="side-menu-body-return" onclick="changeSideMenuBody('courses')">
<i class="far fa-chevron-left"></i> Course List Layouts
</li>
<li class="side-menu-body-element">
<a href="">
Course List v1
</a>
</li>
<li class="side-menu-body-element">
<a href="">
Course List v2
</a>
</li>
</ul>`
sideMenuBodies.courses2 = `
<ul class="side-menu-body">
<li class="side-menu-body-return" onclick="changeSideMenuBody('courses')">
<i class="far fa-chevron-left"></i> Course Single Layouts
</li>
<li class="side-menu-body-element">
<a href="">
Course Single v1
</a>
</li>
<li class="side-menu-body-element">
<a href="">
Course Single v2
</a>
</li>
</ul>`
</script>

View File

@ -0,0 +1,78 @@
<div class="header-search-popup np-hidden" id="search-popup">
<form class="header-search-popup-form">
<button class="header-search-popup-form-button">
<i class="far fa-search"></i>
</button>
<input class="header-search-popup-form-input" placeholder="What do you want to learn?" autocomplete="off">
<div class="header-search-popup-close" onclick="toggleSearch()">
<i class="fal fa-times" style="margin: auto;"></i>
</div>
</form>
</div>
<style>
.header-search-popup {
background: white;
padding: 100px 50px;
position: absolute;
top: 0;
left: 0;
margin: auto;
z-index: 100;
width: 100%;
min-height: 400px;
}
.header-search-popup-form {
display: flex;
border-bottom: 1px solid rgb(237, 237, 237);
margin: auto;
width: 70%;
max-width: 1000px;
padding: 10px 20px;
}
.header-search-popup-form-button {
background: none;
border: none;
}
.header-search-popup-close {
border-radius: 50%;
font-size: 20px;
font-weight: 500;
display: flex;
background: #F4F1FE;
color: blue;
padding: 20px;
position: relative;
}
.header-search-popup-close .fa-times {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
.header-search-popup-form-input::placeholder {
color: #563150;
opacity: 1;
}
.header-search-popup-form-input {
border: none;
outline: none;
width: 100%;
color: #563150;
}
</style>
<script>
var searchShowed = false
function toggleSearch() {
document.getElementById('search-popup').classList.toggle('np-hidden');
document.getElementById('gray-background').classList.toggle('np-hidden');
if (searchShowed) {
window.onscroll = function() {}
} else {
window.onscroll = function () { window.scrollTo(0, 0); };
}
searchShowed = !searchShowed
}
</script>

View File

@ -0,0 +1,32 @@
{% include "header" %}
<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>
.np-top-cta {
background: transparent;
}
@media (min-width:768px) {
.np-page-container {
margin: 90px auto 0;
}
.np-page-container .np-card-container {
box-shadow:none;
}
.np-top-vocabulary {
display:none;
}
}
</style>

View File

@ -0,0 +1,17 @@
{% include "header" %}
{% include "course_version_outdated_alert", courses: courses.enrolled %}
{% include "sub_navigation" %}
<main class="np-main np-dashboard np-subpage-container">
{% include 'dashboard_header' %}
{% include 'dashboard_top_courses' %}
{% include 'dashboard_recommended_courses' %}
</main>
{% include 'dashboard_categories' %}
{% include "footer" %}
<style>
.np-main.np-dashboard {
background-color:#F7F8FB;
}
</style>

View File

@ -0,0 +1,197 @@
@font-face {
font-family: GT Walsheim Pro;
src: url("https://s3.amazonaws.com/static.northpass.com/Qauntuvos/GTWalsheimPro-Thin.ttf");
font-weight: 100;
}
@font-face {
font-family: GT Walsheim Pro;
src: url("https://s3.amazonaws.com/static.northpass.com/Qauntuvos/GTWalsheimPro-ThinOblique.ttf");
font-style: italic;
font-weight: 100;
}
@font-face {
font-family: GT Walsheim Pro;
src: url("https://s3.amazonaws.com/static.northpass.com/Qauntuvos/GTWalsheimPro-Light.ttf");
font-weight: 300;
}
@font-face {
font-family: GT Walsheim Pro;
src: url("https://s3.amazonaws.com/static.northpass.com/Qauntuvos/GTWalsheimPro-LightOblique.ttf");
font-style: italic;
font-weight: 300;
}
@font-face {
font-family: GT Walsheim Pro;
src: url("https://s3.amazonaws.com/static.northpass.com/Qauntuvos/GTWalsheimPro-Regular.ttf");
font-weight: normal;
}
@font-face {
font-family: GT Walsheim Pro;
src: url("https://s3.amazonaws.com/static.northpass.com/Qauntuvos/GTWalsheimPro-RegularOblique.ttf");
font-style: italic;
font-weight: normal;
}
@font-face {
font-family: GT Walsheim Pro;
src: url("https://s3.amazonaws.com/static.northpass.com/Qauntuvos/GTWalsheimPro-Medium.ttf");
font-weight: 500;
}
@font-face {
font-family: GT Walsheim Pro;
src: url("https://s3.amazonaws.com/static.northpass.com/Qauntuvos/GTWalsheimPro-MediumOblique.ttf");
font-style: italic;
font-weight: 500;
}
@font-face {
font-family: GT Walsheim Pro;
src: url("https://s3.amazonaws.com/static.northpass.com/Qauntuvos/GT-Walsheim-Pro-Bold.woff2");
font-weight: 700;
}
@font-face {
font-family: GT Walsheim Pro;
src: url("https://s3.amazonaws.com/static.northpass.com/Qauntuvos/GT-Walsheim-Pro-Bold-Oblique.woff2");
font-style: italic;
font-weight: 700;
}
@font-face {
font-family: GT Walsheim Pro;
src: url("https://s3.amazonaws.com/static.northpass.com/Qauntuvos/GTWalsheimPro-UltraBold.ttf");
font-weight: 800;
}
@font-face {
font-family: GT Walsheim Pro;
src: url("https://s3.amazonaws.com/static.northpass.com/Qauntuvos/GTWalsheimPro-UltraBoldOblique.ttf");
font-style: italic;
font-weight: 800;
}
html > body {
font-family: "GT Walsheim Pro", sans-serif;
}
a {
color: inherit !important;
text-decoration: none !important;
}
a:hover {
color: inherit !important;
text-decoration: none !important;
}
.tablet-hidden {
display: block;
}
.tablet-visible {
display: none;
}
@media only screen and (max-width: 1200px) {
.tablet-hidden {
display: none;
}
.tablet-visible {
display: block;
}
}
.np-subpage-container {
padding: 60px 1.25rem 60px;
}
.np-button {
height: 60px;
font-weight: 500;
font-size: 16px;
line-height: 18px;
padding: 12px 55px;
border: 2px solid #563150;
transition: all 0.1s;
color: #fff !important;
}
.np-button:hover {
background: transparent;
color: #563150 !important;
}
/* course cards */
.dashboard-course .np-card-image {
border-radius: 8px;
}
.dashboard-course .np-card-container {
box-shadow: none;
border-radius: 8px;
border: 1px solid rgb(237, 237, 237);
background: #fff;
padding: 10px;
}
.dashboard-course .np-card-content {
padding: 8px;
flex: 0 1;
}
.dashboard-course-rating {
display: flex;
}
.dashboard-course-rating-value {
color: #e59819;
margin-right: 6px;
font-size: 0.8rem;
}
.dashboard-course-rating-stars {
margin: auto 6px auto 0;
font-size: 0.65rem;
}
.dashboard-course-rating-stars > * {
color: #e59819;
margin: auto;
}
.dashboard-course-rating-count {
font-size: 0.75rem;
color: rgb(79, 85, 123);
}
.dashboard-course .np-card-content-title {
font-weight: 500;
color: rgb(86, 49, 80);
font-size: 17px;
margin-bottom: 10px;
}
.dashboard-course-info {
margin: auto 6px;
color: rgb(79, 84, 123);
font-size: 14px;
}
.dashboard-course-info i {
font-size: 16px;
}
.dashboard-course-info:first-child {
margin-left: 0;
}
.dashboard-course-info:last-child {
margin-right: 0;
}
.dashboard-course-info-section {
display: flex;
}
.dashboard-course-instructor-image {
width: 30px;
border-radius: 50%;
}
.dashboard-course-instructor {
display: flex;
margin-top: 12px;
border-top: 1px solid #ededed;
padding-top: 8px;
}
.dashboard-course-instructor-name {
margin: auto 12px;
}
@media (min-width: 768px) {
.np-subpage-container {
padding: 150px 5% 90px;
}
}