28 |
29 |
30 |
Your main section here
31 |
32 |
33 |
34 |
35 | {% endblock content %}
36 |
37 |
38 | {% block javascripts %}{% endblock javascripts %}
39 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/_containers.scss:
--------------------------------------------------------------------------------
1 | // Container widths
2 | //
3 | // Set the container width, and override it for fixed navbars in media queries.
4 |
5 | @if $enable-grid-classes {
6 | // Single container class with breakpoint max-widths
7 | .container,
8 | // 100% wide container at all breakpoints
9 | .container-fluid {
10 | @include make-container();
11 | }
12 |
13 | // Responsive containers that are 100% wide until a breakpoint
14 | @each $breakpoint, $container-max-width in $container-max-widths {
15 | .container-#{$breakpoint} {
16 | @extend .container-fluid;
17 | }
18 |
19 | @include media-breakpoint-up($breakpoint, $grid-breakpoints) {
20 | %responsive-container-#{$breakpoint} {
21 | max-width: $container-max-width;
22 | }
23 |
24 | // Extend each breakpoint which is smaller or equal to the current breakpoint
25 | $extend-breakpoint: true;
26 |
27 | @each $name, $width in $grid-breakpoints {
28 | @if ($extend-breakpoint) {
29 | .container#{breakpoint-infix($name, $grid-breakpoints)} {
30 | @extend %responsive-container-#{$breakpoint};
31 | }
32 |
33 | // Once the current breakpoint is reached, stop extending
34 | @if ($breakpoint == $name) {
35 | $extend-breakpoint: false;
36 | }
37 | }
38 | }
39 | }
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/_progress.scss:
--------------------------------------------------------------------------------
1 | // Disable animation if transitions are disabled
2 |
3 | // scss-docs-start progress-keyframes
4 | @if $enable-transitions {
5 | @keyframes progress-bar-stripes {
6 | 0% { background-position-x: $progress-height; }
7 | }
8 | }
9 | // scss-docs-end progress-keyframes
10 |
11 | .progress {
12 | display: flex;
13 | height: $progress-height;
14 | overflow: hidden; // force rounded corners by cropping it
15 | @include font-size($progress-font-size);
16 | background-color: $progress-bg;
17 | @include border-radius($progress-border-radius);
18 | @include box-shadow($progress-box-shadow);
19 | }
20 |
21 | .progress-bar {
22 | display: flex;
23 | flex-direction: column;
24 | justify-content: center;
25 | overflow: hidden;
26 | color: $progress-bar-color;
27 | text-align: center;
28 | white-space: nowrap;
29 | background-color: $progress-bar-bg;
30 | @include transition($progress-bar-transition);
31 | }
32 |
33 | .progress-bar-striped {
34 | @include gradient-striped();
35 | background-size: $progress-height $progress-height;
36 | }
37 |
38 | @if $enable-transitions {
39 | .progress-bar-animated {
40 | animation: $progress-bar-animation-timing progress-bar-stripes;
41 |
42 | @if $enable-reduced-motion {
43 | @media (prefers-reduced-motion: reduce) {
44 | animation: none;
45 | }
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/_toasts.scss:
--------------------------------------------------------------------------------
1 | .toast {
2 | width: $toast-max-width;
3 | max-width: 100%;
4 | @include font-size($toast-font-size);
5 | color: $toast-color;
6 | pointer-events: auto;
7 | background-color: $toast-background-color;
8 | background-clip: padding-box;
9 | border: $toast-border-width solid $toast-border-color;
10 | box-shadow: $toast-box-shadow;
11 | @include border-radius($toast-border-radius);
12 |
13 | &.showing {
14 | opacity: 0;
15 | }
16 |
17 | &:not(.show) {
18 | display: none;
19 | }
20 | }
21 |
22 | .toast-container {
23 | width: max-content;
24 | max-width: 100%;
25 | pointer-events: none;
26 |
27 | > :not(:last-child) {
28 | margin-bottom: $toast-spacing;
29 | }
30 | }
31 |
32 | .toast-header {
33 | display: flex;
34 | align-items: center;
35 | padding: $toast-padding-y $toast-padding-x;
36 | color: $toast-header-color;
37 | background-color: $toast-header-background-color;
38 | background-clip: padding-box;
39 | border-bottom: $toast-border-width solid $toast-header-border-color;
40 | @include border-top-radius(subtract($toast-border-radius, $toast-border-width));
41 |
42 | .btn-close {
43 | margin-right: $toast-padding-x * -.5;
44 | margin-left: $toast-padding-x;
45 | }
46 | }
47 |
48 | .toast-body {
49 | padding: $toast-padding-x; // apply to both vertical and horizontal
50 | word-wrap: break-word;
51 | }
52 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/forms/_form-switch.scss:
--------------------------------------------------------------------------------
1 | .form-switch{
2 | .form-check-input{
3 | position: relative;
4 | background-color: $form-switch-bg-color;
5 | height: $form-switch-height;
6 | width: $form-switch-width;
7 |
8 | &:after {
9 | transition: transform $form-check-transition-time ease-in-out, background-color $form-check-transition-time ease-in-out;
10 | content: "";
11 | width: $form-switch-check-after-width;
12 | height: $form-switch-check-after-width;
13 | border-radius: 50%;
14 | border: 1px solid $form-switch-check-after-border-color;
15 | position: absolute;
16 | background-color: $white;
17 | transform: translateX($form-switch-translate-x-start);
18 | box-shadow: $form-switch-round-box-shadow;
19 | top: $form-switch-check-top;
20 | left: $form-switch-check-left;
21 | }
22 |
23 | &:checked:after {
24 | transform: translateX($form-switch-translate-x-end);
25 | border-color: $dark-gradient;
26 | }
27 |
28 | &:checked {
29 | border-color: $dark-gradient;
30 | background-color: $dark-gradient;
31 | &:active{
32 | &:after{
33 | box-shadow: $form-switch-check-active-checked-after-shadow;
34 | }
35 | }
36 | }
37 | &:active{
38 | &:after{
39 | box-shadow: $form-switch-check-active-after-shadow;
40 | }
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/variables/_social-buttons.scss:
--------------------------------------------------------------------------------
1 | // Social Buttons
2 |
3 | $facebook: #3b5998 !default;
4 | $facebook-states: darken($facebook, 5%) !default;
5 | $twitter: #55acee !default;
6 | $twitter-states: darken($twitter, 5%) !default;
7 | $instagram: #125688 !default;
8 | $instagram-states: darken($instagram, 6%) !default;
9 | $linkedin: #0077B5 !default;
10 | $linkedin-states: darken($linkedin, 5%) !default;
11 | $pinterest: #cc2127 !default;
12 | $pinterest-states: darken($pinterest, 6%) !default;
13 | $youtube: #e52d27 !default;
14 | $youtube-states: darken($youtube, 6%) !default;
15 | $dribbble: #ea4c89 !default;
16 | $dribbble-states: darken($dribbble, 6%) !default;
17 | $github: #24292E !default;
18 | $github-states: darken($github, 6%) !default;
19 | $reddit: #ff4500 !default;
20 | $reddit-states: darken($reddit, 6%) !default;
21 | $tumblr: #35465c !default;
22 | $tumblr-states: darken($tumblr, 6%) !default;
23 | $behance: #1769ff !default;
24 | $behance-states: darken($behance, 6%) !default;
25 | $vimeo: #1AB7EA !default;
26 | $vimeo-states: darken($vimeo, 6%) !default;
27 | $slack: #3aaf85 !default;
28 | $slack-states: darken($slack, 6%) !default;
29 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/plugins/pro/_highlight.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Highlight.js 10.7.2 (00233d63)
3 | * License: BSD-3-Clause
4 | * Copyright (c) 2006-2021, Ivan Sagalaev
5 | */
6 | .hljs {
7 | display: block;
8 | overflow-x: auto;
9 | padding: 0.5em;
10 | background: #f0f0f0;
11 | }
12 |
13 | .hljs,
14 | .hljs-subst {
15 | color: #444;
16 | }
17 |
18 | .hljs-comment {
19 | color: #888;
20 | }
21 |
22 | .hljs-attribute,
23 | .hljs-doctag,
24 | .hljs-keyword,
25 | .hljs-meta-keyword,
26 | .hljs-name,
27 | .hljs-selector-tag {
28 | font-weight: 700;
29 | }
30 |
31 | .hljs-deletion,
32 | .hljs-number,
33 | .hljs-quote,
34 | .hljs-selector-class,
35 | .hljs-selector-id,
36 | .hljs-string,
37 | .hljs-template-tag,
38 | .hljs-type {
39 | color: #800;
40 | }
41 |
42 | .hljs-section,
43 | .hljs-title {
44 | color: #800;
45 | font-weight: 700;
46 | }
47 |
48 | .hljs-link,
49 | .hljs-regexp,
50 | .hljs-selector-attr,
51 | .hljs-selector-pseudo,
52 | .hljs-symbol,
53 | .hljs-template-variable,
54 | .hljs-variable {
55 | color: #bc6060;
56 | }
57 |
58 | .hljs-literal {
59 | color: #78a960;
60 | }
61 |
62 | .hljs-addition,
63 | .hljs-built_in,
64 | .hljs-bullet,
65 | .hljs-code {
66 | color: #397300;
67 | }
68 |
69 | .hljs-meta {
70 | color: #1f7199;
71 | }
72 |
73 | .hljs-meta-string {
74 | color: #4d99bf;
75 | }
76 |
77 | .hljs-emphasis {
78 | font-style: italic;
79 | }
80 |
81 | .hljs-strong {
82 | font-weight: 700;
83 | }
84 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/_pagination.scss:
--------------------------------------------------------------------------------
1 | .page-item {
2 | &.active .page-link {
3 | box-shadow: $pagination-active-box-shadow;
4 | }
5 |
6 | .page-link,
7 | span {
8 | display: $page-link-display;
9 | align-items: $page-link-align-items;
10 | justify-content: $page-link-justify-content;
11 | color: $secondary;
12 | padding: 0;
13 | margin: $page-link-margin;
14 | border-radius: $page-link-radius !important;
15 | width: $page-link-width;
16 | height: $page-link-height;
17 | font-size: $font-size-sm;
18 | }
19 | }
20 |
21 | .pagination-lg {
22 | .page-item {
23 | .page-link,
24 | span {
25 | width: $page-link-width-lg;
26 | height: $page-link-height-lg;
27 | line-height: $page-link-line-height-lg;
28 | }
29 | }
30 | }
31 |
32 | .pagination-sm {
33 | .page-item {
34 | .page-link,
35 | span {
36 | width: $page-link-width-sm;
37 | height: $page-link-height-sm;
38 | line-height: $page-link-line-height-sm;
39 | }
40 | }
41 | }
42 |
43 |
44 | // Colors
45 | .pagination {
46 | @each $name, $value in $theme-gradient-colors {
47 | &.pagination-#{$name} {
48 | .page-item.active > .page-link {
49 | &,
50 | &:focus,
51 | &:hover {
52 | @include gradient-directional(nth($value, 1) 0%, nth($value, -1) 100%, $deg: 195deg);
53 | border: none;
54 | }
55 | }
56 | }
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/_floating-elements.scss:
--------------------------------------------------------------------------------
1 | .floating-man {
2 | width: $floating-man-width;
3 | }
4 |
5 | .fadeIn1 {
6 | animation-duration: $fade-in-1-animation-duration;
7 | }
8 | .fadeIn2 {
9 | animation-duration: $fade-in-2-animation-duration;
10 | }
11 | .fadeIn3 {
12 | animation-duration: $fade-in-3-animation-duration;
13 | }
14 | .fadeIn4 {
15 | animation-duration: $fade-in-4-animation-duration;
16 | }
17 | .fadeIn5 {
18 | animation-duration: $fade-in-5-animation-duration;
19 | }
20 | .fadeIn1,
21 | .fadeIn2,
22 | .fadeIn3,
23 | .fadeIn4,
24 | .fadeIn5 {
25 | animation-fill-mode: both;
26 | }
27 | .fadeInBottom {
28 | animation-name: $fade-in-animation-name;
29 | }
30 |
31 | @keyframes fadeInBottom {
32 | from {
33 | opacity: 0;
34 | transform: $fade-in-bottom-transform;
35 | }
36 | to {
37 | opacity: 1
38 | }
39 | }
40 |
41 |
42 |
43 |
44 | // Headers
45 |
46 | .header-rounded-images {
47 | .shape-1 {
48 | width: $shape-1-width;
49 | left: $shape-1-left;
50 | }
51 |
52 | .shape-2 {
53 | width: $shape-2-width;
54 | left: $shape-2-left;
55 | }
56 |
57 | .shape-3 {
58 | width: $shape-3-width;
59 | margin-top: $shape-3-left;
60 | }
61 |
62 | .img-1 {
63 | right: $shape-img-1-right;
64 | width: $shape-img-1-width;
65 | margin-top: $shape-img-1-margin-top;
66 | }
67 |
68 | .img-2 {
69 | left: $shape-img-2-left;
70 | width: $shape-img-2-width;
71 | margin-top: $shape-img-2-margin-top;
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/apps/static/assets/js/plugins/parallax.min.js:
--------------------------------------------------------------------------------
1 | var windowHeight = window.innerHeight;
2 |
3 | document.addEventListener('resize', function() {
4 | windowHeight = window.innerHeight;
5 | })
6 |
7 | function outerHeight(el) {
8 | var height = el.offsetHeight;
9 | var style = getComputedStyle(el);
10 |
11 | height += parseInt(style.marginTop) + parseInt(style.marginBottom);
12 | return height;
13 | }
14 |
15 | function parallax (el, speedFactor, outerHeight) {
16 | var foo = document.querySelectorAll(el);
17 |
18 | var getHeight;
19 | var firstTop;
20 | var paddingTop = 0;
21 |
22 | //get the starting position of each element to have parallax applied to it
23 | foo.forEach(function(subEl){
24 | firstTop = subEl.getBoundingClientRect().top;
25 | });
26 |
27 | if (outerHeight) {
28 | getHeight = function(el) {
29 | return outerHeight(el);
30 | };
31 | } else {
32 | getHeight = function(el) {
33 | return el.clientHeight;
34 | };
35 | }
36 |
37 | // function to be called whenever the window is scrolled or resized
38 | function update(){
39 | var pos = window.scrollY;
40 |
41 | foo.forEach(function(subEl){
42 | var element = subEl;
43 | var top = element.getBoundingClientRect().top;
44 | var height = getHeight(element);
45 |
46 | element.style.top = -(Math.round((firstTop - pos) * speedFactor)) + "px";
47 | });
48 | }
49 | document.addEventListener('scroll', update, true)
50 | document.addEventListener('resize', update)
51 | update()
52 | };
53 |
54 | parallax(".hero", -0.6);
55 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/variables/_utilities-extend.scss:
--------------------------------------------------------------------------------
1 | // Colores Shadow on cards
2 | $colored-shadow-top: 3.5% !default;
3 | $colored-shadow-blur: 12px !default;
4 | $colored-shadow-scale: .94 !default;
5 | $colored-shadow-scale-avatar: .87 !default;
6 |
7 | // Card Projects
8 | $card-project-transition: .4s cubic-bezier(.215,.61,.355,1) !default;
9 | $card-project-avatar-transform: scale(.8) translateY(-45px) !default;
10 | $card-project-hover-transform: translateY(-2px) !default;
11 |
12 | // Transform Perspective effect
13 | $transform-perspective: scale(1) perspective(1040px) rotateY(-11deg) rotateX(2deg) rotate(2deg) !default;
14 | $transform-perspective-inverse: scale(1) perspective(1040px) rotateY(11deg) rotateX(-2deg) rotate(-2deg) !default;
15 |
16 | // Z index
17 | $z-index2: 2 !default;
18 |
19 | // Width in PX
20 | $width-32-px: 32px !default;
21 | $width-48-px: 48px !default;
22 | $width-64-px: 64px !default;
23 |
24 | // Wizard variants
25 | $multistep-progress-primary-color: #f48aaa !default;
26 | $multistep-progress-success-color: #9ed1a0 !default;
27 | $multistep-progress-danger-color: #f79592 !default;
28 | $multistep-progress-warning-color: #ffc483 !default;
29 | $multistep-progress-info-color: #88d9e4 !default;
30 | $multistep-progress-dark-color: #848486 !default;
31 | $multistep-progress-secondary-color: #a4a9b2 !default;
32 | $multistep-progress-light-color: #ebeef1 !default;
33 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/_fixed-plugin.scss:
--------------------------------------------------------------------------------
1 | .fixed-plugin{
2 | .fixed-plugin-button{
3 | background: $white;
4 | border-radius: $fixed-plugin-radius;
5 | bottom: $fixed-plugin-bottom;
6 | right: $fixed-plugin-right;
7 | font-size: $font-size-xl;
8 | z-index: $fixed-plugin-button-z-index;
9 | box-shadow: $fixed-plugin-box-shadow;
10 | cursor: pointer;
11 | i{
12 | pointer-events: none;
13 | }
14 | }
15 | .card{
16 | position: fixed !important;
17 | right: -$fixed-plugin-card-width;
18 | top: 0;
19 | height: 100%;
20 | left: auto!important;
21 | transform: unset !important;
22 | width: $fixed-plugin-card-width;
23 | border-radius: 0;
24 | padding: 0 10px;
25 | transition: .2s ease;
26 | z-index: $fixed-plugin-card-z-index;
27 | }
28 |
29 | .badge{
30 | border: 1px solid $white;
31 | border-radius: 50%;
32 | cursor: pointer;
33 | display: inline-block;
34 | height: 23px;
35 | margin-right: 5px;
36 | position: relative;
37 | width: 23px;
38 | transition: $transition-base;
39 | &:hover,
40 | &.active{
41 | border-color: $dark;
42 | }
43 | }
44 |
45 | .btn.bg-gradient-dark:not(:disabled):not(.disabled) {
46 | border: 1px solid transparent;
47 | &:not(.active) {
48 | background-color: transparent;
49 | background-image: none;
50 | border: 1px solid $dark;
51 | color: $dark;
52 | }
53 | }
54 |
55 | &.show{
56 | .card{
57 | right: 0;
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/apps/templates/includes/scripts.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/_cards.scss:
--------------------------------------------------------------------------------
1 | .card {
2 | box-shadow: $card-box-shadow;
3 |
4 | &[data-animation="true"] {
5 | .card-header {
6 | @include transform-translate-y(0);
7 | -webkit-transition: $header-data-animation-transition;
8 | -moz-transition: $header-data-animation-transition;
9 | -o-transition: $header-data-animation-transition;
10 | -ms-transition: $header-data-animation-transition;
11 | transition: $header-data-animation-transition;
12 | }
13 | }
14 |
15 | @include hover {
16 | &[data-animation="true"] {
17 | .card-header {
18 | @include transform-translate-y(-50px);
19 | }
20 | }
21 | }
22 |
23 | .card-header {
24 | padding: $card-header-padding;
25 | }
26 |
27 | .card-body {
28 | font-family: $font-family-sans-serif;
29 | padding: $card-body-padding;
30 | }
31 |
32 | &.card-plain {
33 | background-color: $card-plain-bg-color;
34 | box-shadow: $card-plain-box-shadow;
35 | }
36 |
37 | .card-footer {
38 | padding: $card-footer-padding;
39 | background-color: transparent;
40 | }
41 | }
42 |
43 | .author {
44 | display: $card-author-display;
45 |
46 | .name > span {
47 | line-height: $card-author-name-line-height;
48 | font-weight: $font-weight-bold;
49 | font-size: $font-size-sm;
50 | color: $card-author-name-color;
51 | }
52 |
53 | .stats {
54 | font-size: $font-size-sm;
55 | font-weight: $font-weight-normal;
56 | }
57 | }
58 |
59 | @import 'cards/card-background';
60 | @import 'cards/card-rotate';
61 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/_rtl-extend.scss:
--------------------------------------------------------------------------------
1 | @include media-breakpoint-up(lg) {
2 | .rtl {
3 | .navbar-vertical {
4 | .navbar-nav {
5 | .collapse,
6 | .collapsing {
7 | .nav-item {
8 | .nav-link {
9 | &:before {
10 | right: $rtl-sidebar-bullet-right !important;
11 | left: auto !important;
12 | }
13 | }
14 |
15 | .collapse,
16 | .collapsing {
17 | .nav {
18 | padding-right: 0;
19 | }
20 | }
21 | }
22 | }
23 | }
24 | }
25 |
26 | &.g-sidenav-hidden {
27 | .navbar-vertical {
28 | .navbar-nav {
29 | .nav-item {
30 | .collapse,
31 | .collapsing {
32 | .nav {
33 | padding-right: 0;
34 | }
35 | }
36 | }
37 | }
38 |
39 | &:hover {
40 | .navbar-nav {
41 | > .nav-item {
42 | .collapse,
43 | .collapsing {
44 | .nav {
45 | padding-right: $rtl-sidebar-hover-padding-right;
46 |
47 | .nav-item {
48 | .collapse,
49 | .collapsing {
50 | .nav {
51 | padding-right: 0 !important;
52 | }
53 | }
54 | }
55 | }
56 | }
57 | }
58 | }
59 | }
60 | }
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/apps/static/assets/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@themesberg/pixel-lite-bootstrap-ui-kit",
3 | "version": "4.0.0",
4 | "description": "Open-source Bootstrap 5 UI Kit",
5 | "main": "gulpfile.js",
6 | "author": "Themesberg",
7 | "keywords": [
8 | "bootstrap",
9 | "bootstrap 5",
10 | "bootstrap 5 ui kit",
11 | "bootstrap ui kit",
12 | "ui kit",
13 | "components",
14 | "elements",
15 | "responsive",
16 | "front-end",
17 | "css",
18 | "sass",
19 | "gulp",
20 | "web"
21 | ],
22 | "homepage": "https://themesberg.com/product/ui-kit/pixel-free-bootstrap-5-ui-kit",
23 | "repository": {
24 | "type": "git",
25 | "url": "https://github.com/themesberg/pixel-bootstrap-ui-kit"
26 | },
27 | "bugs": {
28 | "email": "support@themesberg.com"
29 | },
30 | "license": "MIT License",
31 | "devDependencies": {
32 | "browser-sync": "^2.27.4",
33 | "del": "^6.0.0",
34 | "gulp": "^4.0.2",
35 | "gulp-autoprefixer": "^8.0.0",
36 | "gulp-clean-css": "^4.3.0",
37 | "gulp-cssbeautify": "^3.0.0",
38 | "node-sass": "^6.0.1",
39 | "gulp-file-include": "^2.3.0",
40 | "gulp-header": "^2.0.9",
41 | "gulp-htmlmin": "^5.0.1",
42 | "gulp-npm-dist": "^1.0.3",
43 | "gulp-plumber": "^1.2.1",
44 | "gulp-rename": "^2.0.0",
45 | "gulp-sass": "^5.0.0",
46 | "gulp-sourcemaps": "^3.0.0",
47 | "gulp-uglify": "^3.0.2",
48 | "gulp-wait": "^0.0.2",
49 | "merge-stream": "^2.0.0"
50 | }
51 | }
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/variables/_cards-extend.scss:
--------------------------------------------------------------------------------
1 | // Card Profile
2 | $card-profile-body-text-align: center !default;
3 | $card-profile-body-padding: 1.25rem 2rem !default;
4 | $card-profile-avatar-margin: 0 auto !default;
5 | $card-profile-img-mt: 32px !default;
6 | $card-profile-img-radius: 50% !default;
7 | $card-profile-img-width: 130px !default;
8 | $card-profile-btn-mt: 24px !default;
9 | $card-profile-p-line-height: 1.778 !default;
10 |
11 | // Card Pricing
12 | $card-pricing-body-padding: 2.25rem !default;
13 | $card-pricing-line-height: 1.111 !default;
14 | $card-pricing-title-mb: $card-bg-description-margin !default;
15 | $card-pricing-td-line-height: 1.429 !default;
16 | $card-pricing-icon-height: 4rem !default;
17 | $card-pricing-icon-width: $card-pricing-icon-height !default;
18 | $card-pricing-icon-position: absolute !default;
19 | $card-pricing-icon-top: -22px !default;
20 | $card-pricing-icon-font-size: 1.25rem !default;
21 | $card-pricing-icon-lg-font-size: 1.75rem !default;
22 | $card-pricing-i-padding: 18px !default;
23 | $card-pricing-badge-padding: 5px !default;
24 | $card-pricing-badge-font-size: 6px !default;
25 | $card-pricing-badge-position: relative !default;
26 | $card-pricing-badge-top: -2px !default;
27 | $card-pricing-border-color: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1), rgba(255, 255, 255, 0));
28 | $card-pricing-border-color-dark: linear-gradient(to right, rgba(0, 0, 0, 0), rgba(0, 0, 0, .4), rgba(0, 0, 0, 0));
29 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/bootstrap-grid.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | * Bootstrap Grid v5.1.1 (https://getbootstrap.com/)
3 | * Copyright 2011-2021 The Bootstrap Authors
4 | * Copyright 2011-2021 Twitter, Inc.
5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
6 | */
7 |
8 | $include-column-box-sizing: true !default;
9 |
10 | @import "functions";
11 | @import "variables";
12 |
13 | @import "mixins/lists";
14 | @import "mixins/breakpoints";
15 | @import "mixins/container";
16 | @import "mixins/grid";
17 | @import "mixins/utilities";
18 |
19 | @import "vendor/rfs";
20 |
21 | @import "root";
22 |
23 | @import "containers";
24 | @import "grid";
25 |
26 | @import "utilities";
27 | // Only use the utilities we need
28 | // stylelint-disable-next-line scss/dollar-variable-default
29 | $utilities: map-get-multiple(
30 | $utilities,
31 | (
32 | "display",
33 | "order",
34 | "flex",
35 | "flex-direction",
36 | "flex-grow",
37 | "flex-shrink",
38 | "flex-wrap",
39 | "justify-content",
40 | "align-items",
41 | "align-content",
42 | "align-self",
43 | "margin",
44 | "margin-x",
45 | "margin-y",
46 | "margin-top",
47 | "margin-end",
48 | "margin-bottom",
49 | "margin-start",
50 | "negative-margin",
51 | "negative-margin-x",
52 | "negative-margin-y",
53 | "negative-margin-top",
54 | "negative-margin-end",
55 | "negative-margin-bottom",
56 | "negative-margin-start",
57 | "padding",
58 | "padding-x",
59 | "padding-y",
60 | "padding-top",
61 | "padding-end",
62 | "padding-bottom",
63 | "padding-start",
64 | )
65 | );
66 |
67 | @import "utilities/api";
68 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/variables/_info-areas.scss:
--------------------------------------------------------------------------------
1 | $icon-shape-bg-image: linear-gradient(195deg,#7928CA,#FF0080) !default;
2 | $icon-shape-bg-position: center !default;
3 |
4 | $icon-striped-bg-md: 85px !default;
5 | $icon-striped-bg-lg: 111px !default;
6 | $icon-striped-bg-xl: 80px !default;
7 |
8 | $icon-striped-icon-mt: 25% !default;
9 | $icon-striped-icon-ml: -24% !default;
10 |
11 | $icon-shape-icon-opacity: .8 !default;
12 | $info-icon-top: 11px !default;
13 | $info-icon-top-xxs: -4px !default;
14 | $info-icon-top-xs: -1px !default;
15 | $info-icon-top-sm: 4px !default;
16 | $info-icon-top-md: 30% !default;
17 | $info-icon-top-lg: 31% !default;
18 | $info-icon-top-xl: 35% !default;
19 | $info-icon-position: relative !default;
20 |
21 | $icon-xxs-width: 20px !default;
22 | $icon-xxs-height: $icon-xxs-width !default;
23 | $icon-xs-width: 24px !default;
24 | $icon-xs-height: $icon-xs-width !default;
25 | $icon-sm-width: 32px !default;
26 | $icon-sm-height: $icon-sm-width !default;
27 | $icon-md-width: 48px !default;
28 | $icon-md-height: $icon-md-width !default;
29 | $icon-lg-width: 64px !default;
30 | $icon-lg-height: $icon-lg-width !default;
31 | $icon-xl-width: 100px !default;
32 | $icon-xl-height: $icon-xl-width !default;
33 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/badges/_badge.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Badge
3 | //
4 |
5 |
6 | // General styles
7 |
8 | .badge {
9 |
10 |
11 | a {
12 | color: $white;
13 | }
14 | }
15 |
16 |
17 | // Size variations
18 |
19 | .badge-sm{
20 | padding: $badge-sm-padding;
21 | font-size: $badge-sm-font-size;
22 | border-radius: $border-radius-md;
23 | }
24 |
25 | .badge-md {
26 | padding: $badge-md-padding;
27 | }
28 |
29 | .badge-lg {
30 | padding: $badge-lg-padding;
31 | }
32 |
33 |
34 | // Multiple inline badges
35 |
36 | .badge-inline {
37 | margin-right: $badge-inline-margin-right;
38 |
39 | + span {
40 | top: $badge-inline-span-top;
41 | position: relative;
42 |
43 | > a {
44 | text-decoration: underline;
45 | }
46 | }
47 | }
48 |
49 |
50 | // Color fixes
51 |
52 | .badge-default {
53 | color: $white;
54 | }
55 |
56 | .badge.badge-secondary {
57 | background-color: lighten($secondary, 32%);
58 | color: $gray-600;
59 | }
60 |
61 |
62 | // Badge spacing inside a btn with some text
63 |
64 | .btn {
65 | .badge {
66 | &:not(:first-child) {
67 | margin-left: $badge-btn-margin;
68 | }
69 | &:not(:last-child) {
70 | margin-right: $badge-btn-margin;
71 | }
72 | }
73 | }
74 |
75 | // Colors
76 | //
77 | // Contextual variations (linked badges get darker on :hover).
78 |
79 | @each $color, $value in $theme-colors {
80 | .badge-#{$color} {
81 | @include badge-variant($value);
82 | }
83 | }
84 |
85 |
86 |
87 | // card-pricing badge position
88 |
89 | .card {
90 | >.badge {
91 | margin-top: $card-badge-position !important;
92 | }
93 | }
94 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/variables/_ripple.scss:
--------------------------------------------------------------------------------
1 | // RIPPLE Effect
2 |
3 | $ripple-position: relative !default;
4 |
5 | $ripple-container-position: absolute !default;
6 | $ripple-container-top: 0 !default;
7 | $ripple-container-left: $ripple-container-top !default;
8 | $ripple-container-z-index: 1 !default;
9 | $ripple-container-width: 100% !default;
10 | $ripple-container-height: $ripple-container-width !default;
11 | $ripple-container-overflow: hidden !default;
12 | $ripple-container-pointer: none !default;
13 | $ripple-container-radius: inherit !default;
14 |
15 | $ripple-decorator-position: $ripple-container-position !default;
16 | $ripple-decorator-width: 20px !default;
17 | $ripple-decorator-height: $ripple-decorator-width !default;
18 | $ripple-decorator-mt: -10px !default;
19 | $ripple-decorator-ml: $ripple-decorator-mt !default;
20 | $ripple-decorator-pointer: $ripple-container-pointer !default;
21 | $ripple-decorator-bg-color: rgba($black, 0.05) !default;
22 | $ripple-decorator-radius: 100% !default;
23 | $ripple-decorator-opacity: 0 !default;
24 | $ripple-decorator-transform: scale(1) !default;
25 | $ripple-decorator-transform-origin: 50% !default;
26 |
27 | $ripple-on-opacity: .1 !default;
28 | $ripple-on-transition: opacity 0.15s ease-in 0s,
29 | transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s !default;
30 |
31 | $ripple-out-opacity: 0 !default;
32 | $ripple-out-transition: opacity 0.1s linear 0s !default;
33 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/theme.scss:
--------------------------------------------------------------------------------
1 | /*!
2 |
3 | =========================================================
4 | * Material Kit - v3.0.0
5 | =========================================================
6 |
7 | * Product Page: https://www.creative-tim.com/product/material-kit
8 | * Copyright 2021 Creative Tim (https://www.creative-tim.com)
9 | * Licensed under MIT (site.license)
10 |
11 | * Coded by www.creative-tim.com
12 |
13 | =========================================================
14 |
15 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
16 |
17 | */
18 |
19 | // {{ site.product.name }} components
20 |
21 | // Variables
22 | @import "variables/navbar-vertical";
23 | @import "variables/social-buttons";
24 | @import "variables/breadcrumb";
25 |
26 | // Mixin
27 | @import "mixins/mixins";
28 |
29 | // Core Components - extra styling
30 | @import "alert";
31 | @import "avatars";
32 | @import "badge";
33 | @import "buttons";
34 | @import "breadcrumbs";
35 | @import "cards";
36 | @import "dark-version";
37 | @import "dropdown";
38 | @import "dropup";
39 | @import "header";
40 | @import "fixed-plugin";
41 | @import "forms/forms";
42 | @import "footer";
43 | @import "gradients";
44 | @import "icons";
45 | @import "info-areas";
46 | @import "misc";
47 | @import "navbar";
48 | @import "navbar-vertical";
49 | @import "nav";
50 | @import "pagination";
51 | @import "popovers";
52 | @import "progress";
53 | @import "rtl";
54 | @import "ripple";
55 | @import "social-buttons";
56 | @import "tables";
57 | @import "timeline";
58 | @import "tilt";
59 | @import "tooltips";
60 | @import "typography";
61 |
62 | // Plugins
63 | @import "plugins/free/plugins";
64 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/cards/card-profile.scss:
--------------------------------------------------------------------------------
1 | .card {
2 | &.card-profile {
3 | .card-body {
4 | padding: $card-profile-body-padding;
5 | }
6 |
7 | .card-avatar {
8 | margin: $card-profile-avatar-margin;
9 |
10 | .img {
11 | margin-top: $card-profile-img-mt;
12 | border-radius: $card-profile-img-radius;
13 | width: $card-profile-img-width;
14 | }
15 | }
16 |
17 | p.lead {
18 | font-weight: $font-weight-bold;
19 | font-size: $h6-font-size;
20 | line-height: $card-profile-p-line-height;
21 | }
22 | .table {
23 | td {
24 | font-weight: $font-weight-light;
25 | font-size: $font-size-base;
26 | }
27 | }
28 |
29 | .card-before {
30 | &:before {
31 | position: absolute;
32 | bottom: 0;
33 | left: 0;
34 | width: 100%;
35 | height: 50%;
36 | display: block;
37 | z-index: 0;
38 | content: '';
39 | transition: opacity .65s cubic-bezier(.05,.2,.1,1);
40 | }
41 |
42 | &.mask-primary:before {
43 | background: linear-gradient(to bottom,rgba(15,15,15,0),$primary 100%);
44 | }
45 | &.mask-info:before {
46 | background: linear-gradient(to bottom,rgba(15,15,15,0),$info 100%);
47 | }
48 | &.mask-warning:before {
49 | background: linear-gradient(to bottom,rgba(15,15,15,0),$warning-gradient-state 100%);
50 | }
51 | &.mask-danger:before {
52 | background: linear-gradient(to bottom,rgba(15,15,15,0),$danger 100%);
53 | }
54 | &.mask-success:before {
55 | background: linear-gradient(to bottom,rgba(15,15,15,0),$success 100%);
56 | }
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/_alert.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Base styles
3 | //
4 |
5 | .alert {
6 | position: relative;
7 | padding: $alert-padding-y $alert-padding-x;
8 | margin-bottom: $alert-margin-bottom;
9 | border: $alert-border-width solid transparent;
10 | @include border-radius($alert-border-radius);
11 | }
12 |
13 | // Headings for larger alerts
14 | .alert-heading {
15 | // Specified to prevent conflicts of changing $headings-color
16 | color: inherit;
17 | }
18 |
19 | // Provide class for links that match alerts
20 | .alert-link {
21 | font-weight: $alert-link-font-weight;
22 | }
23 |
24 |
25 | // Dismissible alerts
26 | //
27 | // Expand the right padding and account for the close button's positioning.
28 |
29 | .alert-dismissible {
30 | padding-right: $alert-dismissible-padding-r;
31 |
32 | // Adjust close link position
33 | .btn-close {
34 | position: absolute;
35 | top: 0;
36 | right: 0;
37 | z-index: $stretched-link-z-index + 1;
38 | padding: $alert-padding-y * 1.25 $alert-padding-x;
39 | }
40 | }
41 |
42 |
43 | // scss-docs-start alert-modifiers
44 | // Generate contextual modifier classes for colorizing the alert.
45 |
46 | @each $state, $value in $theme-colors {
47 | $alert-background: shift-color($value, $alert-bg-scale);
48 | $alert-border: shift-color($value, $alert-border-scale);
49 | $alert-color: shift-color($value, $alert-color-scale);
50 | @if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) {
51 | $alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale));
52 | }
53 | .alert-#{$state} {
54 | @include alert-variant($alert-background, $alert-border, $alert-color);
55 | }
56 | }
57 | // scss-docs-end alert-modifiers
58 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/variables/_badge.scss:
--------------------------------------------------------------------------------
1 | // Badge
2 | $badge-sm-padding: .45em .775em !default;
3 | $badge-sm-font-size: .65em !default;
4 | $badge-md-padding: .65em 1em !default;
5 | $badge-lg-padding: .85em 1.375em !default;
6 | $badge-inline-margin-right: .625rem !default;
7 | $badge-inline-span-top: 2px !default;
8 | $badge-btn-margin: .5rem !default;
9 |
10 | // Badge Circle
11 | $badge-circle-border-radius: 50% !default;
12 | $badge-circle-width: 1.25rem !default;
13 | $badge-circle-height: 1.25rem !default;
14 | $badge-circle-font-size: .75rem !default;
15 | $badge-circle-font-weight: 600 !default;
16 |
17 | $badge-circle-md-width: 1.5rem !default;
18 | $badge-circle-md-height: 1.5rem !default;
19 |
20 | $badge-circle-lg-width: 2rem !default;
21 | $badge-circle-lg-height: 2rem !default;
22 |
23 | //Badge Dot
24 | $badge-dot-icon-width: .375rem !default;
25 | $badge-dot-icon-height: .375rem !default;
26 | $badge-dot-icon-radius: 50% !default;
27 | $badge-dot-icon-margin-right: .375rem !default;
28 |
29 | $badge-dot-md-icon-width: .5rem !default;
30 | $badge-dot-md-icon-height: .5rem !default;
31 |
32 | $badge-dot-lg-icon-width: .625rem !default;
33 | $badge-dot-lg-icon-height: .625rem !default;
34 |
35 | //Badge Floating
36 | $badge-floating-top: -50% !default;
37 | $badge-floating-border: 3px !default;
38 | $badge-floating-transform: translate(147%, 50%) !default;
39 |
40 | $card-badge-position: -.6875rem !default;
41 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/mixins/_vendor.scss:
--------------------------------------------------------------------------------
1 | @mixin transform-translate-y($value) {
2 | -webkit-transform: translate3d(0, $value, 0);
3 | -moz-transform: translate3d(0, $value, 0);
4 | -o-transform: translate3d(0, $value, 0);
5 | -ms-transform: translate3d(0, $value, 0);
6 | transform: translate3d(0, $value, 0);
7 | }
8 | @mixin perspective($value) {
9 | -webkit-perspective: $value;
10 | -moz-perspective: $value;
11 | -o-perspective: $value;
12 | -ms-perspective: $value;
13 | perspective: $value;
14 | }
15 | @mixin transitions($time, $type) {
16 | -webkit-transition: all $time $type;
17 | -moz-transition: all $time $type;
18 | -o-transition: all $time $type;
19 | -ms-transition: all $time $type;
20 | transition: all $time $type;
21 | }
22 | @mixin transitions-property($property, $time, $type) {
23 | -webkit-transition: $property $time $type;
24 | -moz-transition: $property $time $type;
25 | -o-transition: $property $time $type;
26 | -ms-transition: $property $time $type;
27 | transition: $property $time $type;
28 | }
29 | @mixin transform-style($type){
30 | -webkit-transform-style: $type;
31 | -moz-transform-style: $type;
32 | -o-transform-style: $type;
33 | -ms-transform-style: $type;
34 | transform-style: $type;
35 | }
36 |
37 | @mixin backface-visibility($type){
38 | -webkit-backface-visibility: $type;
39 | -moz-backface-visibility: $type;
40 | -o-backface-visibility: $type;
41 | -ms-backface-visibility: $type;
42 | backface-visibility: $type;
43 | }
44 |
45 | @mixin rotateY-180() {
46 | -webkit-transform: rotateY( 180deg );
47 | -moz-transform: rotateY( 180deg );
48 | -o-transform: rotateY( 180deg );
49 | -ms-transform: rotateY(180deg);
50 | transform: rotateY( 180deg );
51 | }
52 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/mixins/_caret.scss:
--------------------------------------------------------------------------------
1 | // scss-docs-start caret-mixins
2 | @mixin caret-down {
3 | border-top: $caret-width solid;
4 | border-right: $caret-width solid transparent;
5 | border-bottom: 0;
6 | border-left: $caret-width solid transparent;
7 | }
8 |
9 | @mixin caret-up {
10 | border-top: 0;
11 | border-right: $caret-width solid transparent;
12 | border-bottom: $caret-width solid;
13 | border-left: $caret-width solid transparent;
14 | }
15 |
16 | @mixin caret-end {
17 | border-top: $caret-width solid transparent;
18 | border-right: 0;
19 | border-bottom: $caret-width solid transparent;
20 | border-left: $caret-width solid;
21 | }
22 |
23 | @mixin caret-start {
24 | border-top: $caret-width solid transparent;
25 | border-right: $caret-width solid;
26 | border-bottom: $caret-width solid transparent;
27 | }
28 |
29 | @mixin caret($direction: down) {
30 | @if $enable-caret {
31 | &::after {
32 | display: inline-block;
33 | margin-left: $caret-spacing;
34 | vertical-align: $caret-vertical-align;
35 | content: "";
36 | @if $direction == down {
37 | @include caret-down();
38 | } @else if $direction == up {
39 | @include caret-up();
40 | } @else if $direction == end {
41 | @include caret-end();
42 | }
43 | }
44 |
45 | @if $direction == start {
46 | &::after {
47 | display: none;
48 | }
49 |
50 | &::before {
51 | display: inline-block;
52 | margin-right: $caret-spacing;
53 | vertical-align: $caret-vertical-align;
54 | content: "";
55 | @include caret-start();
56 | }
57 | }
58 |
59 | &:empty::after {
60 | margin-left: 0;
61 | }
62 | }
63 | }
64 | // scss-docs-end caret-mixins
65 |
--------------------------------------------------------------------------------
/apps/authentication/forms.py:
--------------------------------------------------------------------------------
1 | # -*- encoding: utf-8 -*-
2 | """
3 | Copyright (c) 2019 - present AppSeed.us
4 | """
5 |
6 | from django import forms
7 | from django.contrib.auth.forms import UserCreationForm
8 | from django.contrib.auth.models import User
9 |
10 |
11 | class LoginForm(forms.Form):
12 | username = forms.CharField(
13 | widget=forms.TextInput(
14 | attrs={
15 | "placeholder": "Username",
16 | "class": "form-control"
17 | }
18 | ))
19 | password = forms.CharField(
20 | widget=forms.PasswordInput(
21 | attrs={
22 | "placeholder": "Password",
23 | "class": "form-control"
24 | }
25 | ))
26 |
27 |
28 | class SignUpForm(UserCreationForm):
29 | username = forms.CharField(
30 | widget=forms.TextInput(
31 | attrs={
32 | "placeholder": "Username",
33 | "class": "form-control"
34 | }
35 | ))
36 | email = forms.EmailField(
37 | widget=forms.EmailInput(
38 | attrs={
39 | "placeholder": "Email",
40 | "class": "form-control"
41 | }
42 | ))
43 | password1 = forms.CharField(
44 | widget=forms.PasswordInput(
45 | attrs={
46 | "placeholder": "Password",
47 | "class": "form-control"
48 | }
49 | ))
50 | password2 = forms.CharField(
51 | widget=forms.PasswordInput(
52 | attrs={
53 | "placeholder": "Password check",
54 | "class": "form-control"
55 | }
56 | ))
57 |
58 | class Meta:
59 | model = User
60 | fields = ('username', 'email', 'password1', 'password2')
61 |
--------------------------------------------------------------------------------
/apps/authentication/views.py:
--------------------------------------------------------------------------------
1 | # -*- encoding: utf-8 -*-
2 | """
3 | Copyright (c) 2019 - present AppSeed.us
4 | """
5 |
6 | # Create your views here.
7 | from django.shortcuts import render, redirect
8 | from django.contrib.auth import authenticate, login
9 | from .forms import LoginForm, SignUpForm
10 |
11 |
12 | def login_view(request):
13 | form = LoginForm(request.POST or None)
14 |
15 | msg = None
16 |
17 | if request.method == "POST":
18 |
19 | if form.is_valid():
20 | username = form.cleaned_data.get("username")
21 | password = form.cleaned_data.get("password")
22 | user = authenticate(username=username, password=password)
23 | if user is not None:
24 | login(request, user)
25 | return redirect("/")
26 | else:
27 | msg = 'Invalid credentials'
28 | else:
29 | msg = 'Error validating the form'
30 |
31 | return render(request, "accounts/login.html", {"form": form, "msg": msg})
32 |
33 |
34 | def register_user(request):
35 | msg = None
36 | success = False
37 |
38 | if request.method == "POST":
39 | form = SignUpForm(request.POST)
40 | if form.is_valid():
41 | form.save()
42 | username = form.cleaned_data.get("username")
43 | raw_password = form.cleaned_data.get("password1")
44 | user = authenticate(username=username, password=raw_password)
45 |
46 | msg = 'User created - please login.'
47 | success = True
48 |
49 | # return redirect("/login/")
50 |
51 | else:
52 | msg = 'Form is not valid'
53 | else:
54 | form = SignUpForm()
55 |
56 | return render(request, "accounts/register.html", {"form": form, "msg": msg, "success": success})
57 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/plugins/pro/_sweetalert2-extend.scss:
--------------------------------------------------------------------------------
1 | .swal2-popup {
2 | border-radius: $card-border-radius;
3 | }
4 |
5 | .swal2-styled.swal2-confirm {
6 | background-image: linear-gradient(195deg, $info-gradient 0%, $info-gradient-state 100%);
7 | background-color: transparent;
8 | @include button-size($btn-padding-y, $btn-padding-x, $btn-font-size, $btn-border-radius);
9 |
10 | &:hover,
11 | &:focus {
12 | background-image: linear-gradient(195deg, $info-gradient 0%, $info-gradient-state 100%);
13 | outline: 0;
14 | box-shadow: $btn-focus-box-shadow;
15 | }
16 | }
17 |
18 | .swal2-confirm.btn.bg-gradient-success {
19 | margin-left: 10px;
20 | margin-right: 10px;
21 | }
22 |
23 | .swal2-image {
24 | border-radius: $border-radius-lg;
25 | margin-bottom: 0;
26 | }
27 |
28 | .swal2-close{
29 | outline: none;
30 | &:focus{
31 | outline: none;
32 | box-shadow: none;
33 | }
34 | }
35 |
36 | .swal2-input {
37 | padding: $input-padding-y $input-padding-x;
38 | font-family: $input-font-family;
39 | @include font-size($input-font-size);
40 | font-weight: $input-font-weight;
41 | line-height: $input-line-height;
42 | color: $input-color;
43 | background-color: $input-bg;
44 | background-clip: padding-box;
45 | border: $input-border-width solid $input-border-color;
46 | }
47 |
48 | .swal2-icon.swal2-success {
49 | border-color: $success;
50 | color: $success;
51 | }
52 |
53 | .swal2-icon.swal2-info {
54 | border-color: $info;
55 | color: $info;
56 | }
57 |
58 | .swal2-icon.swal2-warning {
59 | border-color: $warning;
60 | color: $warning;
61 | }
62 |
63 | .swal2-icon.swal2-question{
64 | border-color: $secondary;
65 | color: $secondary;
66 | }
67 |
68 | .swal2-icon.swal2-success [class^=swal2-success-line] {
69 | background-color: $success;
70 | }
71 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/_spinners.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Rotating border
3 | //
4 |
5 | // scss-docs-start spinner-border-keyframes
6 | @keyframes spinner-border {
7 | to { transform: rotate(360deg) #{"/* rtl:ignore */"}; }
8 | }
9 | // scss-docs-end spinner-border-keyframes
10 |
11 | .spinner-border {
12 | display: inline-block;
13 | width: $spinner-width;
14 | height: $spinner-height;
15 | vertical-align: $spinner-vertical-align;
16 | border: $spinner-border-width solid currentColor;
17 | border-right-color: transparent;
18 | // stylelint-disable-next-line property-disallowed-list
19 | border-radius: 50%;
20 | animation: $spinner-animation-speed linear infinite spinner-border;
21 | }
22 |
23 | .spinner-border-sm {
24 | width: $spinner-width-sm;
25 | height: $spinner-height-sm;
26 | border-width: $spinner-border-width-sm;
27 | }
28 |
29 | //
30 | // Growing circle
31 | //
32 |
33 | // scss-docs-start spinner-grow-keyframes
34 | @keyframes spinner-grow {
35 | 0% {
36 | transform: scale(0);
37 | }
38 | 50% {
39 | opacity: 1;
40 | transform: none;
41 | }
42 | }
43 | // scss-docs-end spinner-grow-keyframes
44 |
45 | .spinner-grow {
46 | display: inline-block;
47 | width: $spinner-width;
48 | height: $spinner-height;
49 | vertical-align: $spinner-vertical-align;
50 | background-color: currentColor;
51 | // stylelint-disable-next-line property-disallowed-list
52 | border-radius: 50%;
53 | opacity: 0;
54 | animation: $spinner-animation-speed linear infinite spinner-grow;
55 | }
56 |
57 | .spinner-grow-sm {
58 | width: $spinner-width-sm;
59 | height: $spinner-height-sm;
60 | }
61 |
62 | @if $enable-reduced-motion {
63 | @media (prefers-reduced-motion: reduce) {
64 | .spinner-border,
65 | .spinner-grow {
66 | animation-duration: $spinner-animation-speed * 2;
67 | }
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/apps/static/assets/gulpfile.js:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | =========================================================
4 | * AppSeed - Simple SCSS compiler via Gulp
5 | =========================================================
6 |
7 | */
8 |
9 | var autoprefixer = require('gulp-autoprefixer');
10 | var browserSync = require('browser-sync').create();
11 | var cleanCss = require('gulp-clean-css');
12 | var gulp = require('gulp');
13 | const npmDist = require('gulp-npm-dist');
14 | var sass = require('gulp-sass')(require('node-sass'));
15 | var wait = require('gulp-wait');
16 | var sourcemaps = require('gulp-sourcemaps');
17 | var rename = require("gulp-rename");
18 |
19 | // Define COMMON paths
20 |
21 | const paths = {
22 | src: {
23 | base: './',
24 | css: './css',
25 | scss: './scss',
26 | node_modules: './node_modules/',
27 | vendor: './vendor'
28 | }
29 | };
30 |
31 | // Compile SCSS
32 | gulp.task('scss', function() {
33 | return gulp.src([paths.src.scss + '/material-kit.scss'])
34 | .pipe(wait(500))
35 | .pipe(sourcemaps.init())
36 | .pipe(sass().on('error', sass.logError))
37 | .pipe(autoprefixer({
38 | overrideBrowserslist: ['> 1%']
39 | }))
40 | .pipe(sourcemaps.write('.'))
41 | .pipe(gulp.dest(paths.src.css))
42 | .pipe(browserSync.stream());
43 | });
44 |
45 | // Minify CSS
46 | gulp.task('minify:css', function() {
47 | return gulp.src([
48 | paths.src.css + '/material-kit.css'
49 | ])
50 | .pipe(cleanCss())
51 | .pipe(rename(function(path) {
52 | // Updates the object in-place
53 | path.extname = ".min.css";
54 | }))
55 | .pipe(gulp.dest(paths.src.css))
56 | });
57 |
58 | // Default Task: Compile SCSS and minify the result
59 | gulp.task('default', gulp.series('scss', 'minify:css'));
60 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/_type.scss:
--------------------------------------------------------------------------------
1 | //
2 | // Headings
3 | //
4 | .h1 {
5 | @extend h1;
6 | }
7 |
8 | .h2 {
9 | @extend h2;
10 | }
11 |
12 | .h3 {
13 | @extend h3;
14 | }
15 |
16 | .h4 {
17 | @extend h4;
18 | }
19 |
20 | .h5 {
21 | @extend h5;
22 | }
23 |
24 | .h6 {
25 | @extend h6;
26 | }
27 |
28 |
29 | .lead {
30 | @include font-size($lead-font-size);
31 | font-weight: $lead-font-weight;
32 | }
33 |
34 | // Type display classes
35 | @each $display, $font-size in $display-font-sizes {
36 | .display-#{$display} {
37 | @include font-size($font-size);
38 | font-weight: $display-font-weight;
39 | line-height: $display-line-height;
40 | }
41 | }
42 |
43 | //
44 | // Emphasis
45 | //
46 | .small {
47 | @extend small;
48 | }
49 |
50 | .mark {
51 | @extend mark;
52 | }
53 |
54 | //
55 | // Lists
56 | //
57 |
58 | .list-unstyled {
59 | @include list-unstyled();
60 | }
61 |
62 | // Inline turns list items into inline-block
63 | .list-inline {
64 | @include list-unstyled();
65 | }
66 | .list-inline-item {
67 | display: inline-block;
68 |
69 | &:not(:last-child) {
70 | margin-right: $list-inline-padding;
71 | }
72 | }
73 |
74 |
75 | //
76 | // Misc
77 | //
78 |
79 | // Builds on `abbr`
80 | .initialism {
81 | @include font-size($initialism-font-size);
82 | text-transform: uppercase;
83 | }
84 |
85 | // Blockquotes
86 | .blockquote {
87 | margin-bottom: $blockquote-margin-y;
88 | @include font-size($blockquote-font-size);
89 |
90 | > :last-child {
91 | margin-bottom: 0;
92 | }
93 | }
94 |
95 | .blockquote-footer {
96 | margin-top: -$blockquote-margin-y;
97 | margin-bottom: $blockquote-margin-y;
98 | @include font-size($blockquote-footer-font-size);
99 | color: $blockquote-footer-color;
100 |
101 | &::before {
102 | content: "\2014\00A0"; // em dash, nbsp
103 | }
104 | }
105 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/utilities/_api.scss:
--------------------------------------------------------------------------------
1 | // Loop over each breakpoint
2 | @each $breakpoint in map-keys($grid-breakpoints) {
3 |
4 | // Generate media query if needed
5 | @include media-breakpoint-up($breakpoint) {
6 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
7 |
8 | // Loop over each utility property
9 | @each $key, $utility in $utilities {
10 | // The utility can be disabled with `false`, thus check if the utility is a map first
11 | // Only proceed if responsive media queries are enabled or if it's the base media query
12 | @if type-of($utility) == "map" and (map-get($utility, responsive) or $infix == "") {
13 | @include generate-utility($utility, $infix);
14 | }
15 | }
16 | }
17 | }
18 |
19 | // RFS rescaling
20 | @media (min-width: $rfs-mq-value) {
21 | @each $breakpoint in map-keys($grid-breakpoints) {
22 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
23 |
24 | @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {
25 | // Loop over each utility property
26 | @each $key, $utility in $utilities {
27 | // The utility can be disabled with `false`, thus check if the utility is a map first
28 | // Only proceed if responsive media queries are enabled or if it's the base media query
29 | @if type-of($utility) == "map" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == "") {
30 | @include generate-utility($utility, $infix, true);
31 | }
32 | }
33 | }
34 | }
35 | }
36 |
37 |
38 | // Print utilities
39 | @media print {
40 | @each $key, $utility in $utilities {
41 | // The utility can be disabled with `false`, thus check if the utility is a map first
42 | // Then check if the utility needs print styles
43 | @if type-of($utility) == "map" and map-get($utility, print) == true {
44 | @include generate-utility($utility, "-print");
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/_pagination.scss:
--------------------------------------------------------------------------------
1 | .pagination {
2 | display: flex;
3 | @include list-unstyled();
4 | }
5 |
6 | .page-link {
7 | position: relative;
8 | display: block;
9 | color: $pagination-color;
10 | text-decoration: if($link-decoration == none, null, none);
11 | background-color: $pagination-bg;
12 | border: $pagination-border-width solid $pagination-border-color;
13 | @include transition($pagination-transition);
14 |
15 | &:hover {
16 | z-index: 2;
17 | color: $pagination-hover-color;
18 | text-decoration: if($link-hover-decoration == underline, none, null);
19 | background-color: $pagination-hover-bg;
20 | border-color: $pagination-hover-border-color;
21 | }
22 |
23 | &:focus {
24 | z-index: 3;
25 | color: $pagination-focus-color;
26 | background-color: $pagination-focus-bg;
27 | outline: $pagination-focus-outline;
28 | box-shadow: $pagination-focus-box-shadow;
29 | }
30 | }
31 |
32 | .page-item {
33 | &:not(:first-child) .page-link {
34 | margin-left: $pagination-margin-start;
35 | }
36 |
37 | &.active .page-link {
38 | z-index: 3;
39 | color: $pagination-active-color;
40 | @include gradient-bg($pagination-active-bg);
41 | border-color: $pagination-active-border-color;
42 | }
43 |
44 | &.disabled .page-link {
45 | color: $pagination-disabled-color;
46 | pointer-events: none;
47 | background-color: $pagination-disabled-bg;
48 | border-color: $pagination-disabled-border-color;
49 | }
50 | }
51 |
52 |
53 | //
54 | // Sizing
55 | //
56 | @include pagination-size($pagination-padding-y, $pagination-padding-x, null, $pagination-border-radius);
57 |
58 | .pagination-lg {
59 | @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $pagination-border-radius-lg);
60 | }
61 |
62 | .pagination-sm {
63 | @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $pagination-border-radius-sm);
64 | }
65 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/forms/_floating-labels.scss:
--------------------------------------------------------------------------------
1 | .form-floating {
2 | position: relative;
3 |
4 | > .form-control,
5 | > .form-select {
6 | height: $form-floating-height;
7 | line-height: $form-floating-line-height;
8 | }
9 |
10 | > label {
11 | position: absolute;
12 | top: 0;
13 | left: 0;
14 | height: 100%; // allow textareas
15 | padding: $form-floating-padding-y $form-floating-padding-x;
16 | pointer-events: none;
17 | border: $input-border-width solid transparent; // Required for aligning label's text with the input as it affects inner box model
18 | transform-origin: 0 0;
19 | @include transition($form-floating-transition);
20 | }
21 |
22 | // stylelint-disable no-duplicate-selectors
23 | > .form-control {
24 | padding: $form-floating-padding-y $form-floating-padding-x;
25 |
26 | &::placeholder {
27 | color: transparent;
28 | }
29 |
30 | &:focus,
31 | &:not(:placeholder-shown) {
32 | padding-top: $form-floating-input-padding-t;
33 | padding-bottom: $form-floating-input-padding-b;
34 | }
35 | // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
36 | &:-webkit-autofill {
37 | padding-top: $form-floating-input-padding-t;
38 | padding-bottom: $form-floating-input-padding-b;
39 | }
40 | }
41 |
42 | > .form-select {
43 | padding-top: $form-floating-input-padding-t;
44 | padding-bottom: $form-floating-input-padding-b;
45 | }
46 |
47 | > .form-control:focus,
48 | > .form-control:not(:placeholder-shown),
49 | > .form-select {
50 | ~ label {
51 | opacity: $form-floating-label-opacity;
52 | transform: $form-floating-label-transform;
53 | }
54 | }
55 | // Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
56 | > .form-control:-webkit-autofill {
57 | ~ label {
58 | opacity: $form-floating-label-opacity;
59 | transform: $form-floating-label-transform;
60 | }
61 | }
62 | // stylelint-enable no-duplicate-selectors
63 | }
64 |
--------------------------------------------------------------------------------
/apps/templates/home/page-403.html:
--------------------------------------------------------------------------------
1 | {% extends "layouts/base-fullscreen.html" %}
2 |
3 | {% block title %} Page 403 {% endblock %}
4 |
5 | {% block body_class %} sign-in-basic {% endblock %}
6 |
7 |
8 | {% block stylesheets %}{% endblock stylesheets %}
9 |
10 | {% block content %}
11 |
12 | {% include 'includes/navigation-transparent.html' %}
13 |
14 |
48 |
49 | {% endblock content %}
50 |
51 |
52 | {% block javascripts %}{% endblock javascripts %}
53 |
--------------------------------------------------------------------------------
/apps/templates/home/page-500.html:
--------------------------------------------------------------------------------
1 | {% extends "layouts/base-fullscreen.html" %}
2 |
3 | {% block title %} Page 500 {% endblock %}
4 |
5 | {% block body_class %} sign-in-basic {% endblock %}
6 |
7 |
8 | {% block stylesheets %}{% endblock stylesheets %}
9 |
10 | {% block content %}
11 |
12 | {% include 'includes/navigation-transparent.html' %}
13 |
14 |
48 |
49 | {% endblock content %}
50 |
51 |
52 | {% block javascripts %}{% endblock javascripts %}
53 |
--------------------------------------------------------------------------------
/apps/templates/home/page-404.html:
--------------------------------------------------------------------------------
1 | {% extends "layouts/base-fullscreen.html" %}
2 |
3 | {% block title %} Page 404 {% endblock %}
4 |
5 | {% block body_class %} sign-in-basic {% endblock %}
6 |
7 |
8 | {% block stylesheets %}{% endblock stylesheets %}
9 |
10 | {% block content %}
11 |
12 | {% include 'includes/navigation-transparent.html' %}
13 |
14 |
48 |
49 | {% endblock content %}
50 |
51 |
52 | {% block javascripts %}{% endblock javascripts %}
53 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/_root.scss:
--------------------------------------------------------------------------------
1 | :root {
2 | // Note: Custom variable values only support SassScript inside `#{}`.
3 |
4 | // Colors
5 | //
6 | // Generate palettes for full colors, grays, and theme colors.
7 |
8 | @each $color, $value in $colors {
9 | --#{$variable-prefix}#{$color}: #{$value};
10 | }
11 |
12 | @each $color, $value in $grays {
13 | --#{$variable-prefix}gray-#{$color}: #{$value};
14 | }
15 |
16 | @each $color, $value in $theme-colors {
17 | --#{$variable-prefix}#{$color}: #{$value};
18 | }
19 |
20 | @each $color, $value in $theme-colors-rgb {
21 | --#{$variable-prefix}#{$color}-rgb: #{$value};
22 | }
23 |
24 | --#{$variable-prefix}white-rgb: #{to-rgb($white)};
25 | --#{$variable-prefix}black-rgb: #{to-rgb($black)};
26 | --#{$variable-prefix}body-color-rgb: #{to-rgb($body-color)};
27 | --#{$variable-prefix}body-bg-rgb: #{to-rgb($body-bg)};
28 |
29 | // Fonts
30 |
31 | // Note: Use `inspect` for lists so that quoted items keep the quotes.
32 | // See https://github.com/sass/sass/issues/2383#issuecomment-336349172
33 | --#{$variable-prefix}font-sans-serif: #{inspect($font-family-sans-serif)};
34 | --#{$variable-prefix}font-monospace: #{inspect($font-family-monospace)};
35 | --#{$variable-prefix}gradient: #{$gradient};
36 |
37 | // Root and body
38 | // stylelint-disable custom-property-empty-line-before
39 | // scss-docs-start root-body-variables
40 | @if $font-size-root != null {
41 | --#{$variable-prefix}root-font-size: #{$font-size-root};
42 | }
43 | --#{$variable-prefix}body-font-family: #{$font-family-base};
44 | --#{$variable-prefix}body-font-size: #{$font-size-base};
45 | --#{$variable-prefix}body-font-weight: #{$font-weight-base};
46 | --#{$variable-prefix}body-line-height: #{$line-height-base};
47 | --#{$variable-prefix}body-color: #{$body-color};
48 | @if $body-text-align != null {
49 | --#{$variable-prefix}body-text-align: #{$body-text-align};
50 | }
51 | --#{$variable-prefix}body-bg: #{$body-bg};
52 | // scss-docs-end root-body-variables
53 | // stylelint-enable custom-property-empty-line-before
54 | }
55 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/mixins/_gradients.scss:
--------------------------------------------------------------------------------
1 | // Gradients
2 |
3 | // scss-docs-start gradient-bg-mixin
4 | @mixin gradient-bg($color: null) {
5 | background-color: $color;
6 |
7 | @if $enable-gradients {
8 | background-image: var(--#{$variable-prefix}gradient);
9 | }
10 | }
11 | // scss-docs-end gradient-bg-mixin
12 |
13 | // scss-docs-start gradient-mixins
14 | // Horizontal gradient, from left to right
15 | //
16 | // Creates two color stops, start and end, by specifying a color and position for each color stop.
17 | @mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {
18 | background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);
19 | }
20 |
21 | // Vertical gradient, from top to bottom
22 | //
23 | // Creates two color stops, start and end, by specifying a color and position for each color stop.
24 | @mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: null, $end-percent: null) {
25 | background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);
26 | }
27 |
28 | @mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {
29 | background-image: linear-gradient($deg, $start-color, $end-color);
30 | }
31 |
32 | @mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
33 | background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
34 | }
35 |
36 | @mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {
37 | background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
38 | }
39 |
40 | @mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {
41 | background-image: radial-gradient(circle, $inner-color, $outer-color);
42 | }
43 |
44 | @mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {
45 | background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
46 | }
47 | // scss-docs-end gradient-mixins
48 |
--------------------------------------------------------------------------------
/apps/home/views.py:
--------------------------------------------------------------------------------
1 | # -*- encoding: utf-8 -*-
2 | """
3 | Copyright (c) 2019 - present AppSeed.us
4 | """
5 |
6 | from django import template
7 | from django.contrib.auth.decorators import login_required
8 | from django.http import HttpResponse, HttpResponseRedirect
9 | from django.template import loader
10 | from django.urls import reverse
11 | from .models import Contact
12 | from django.contrib import messages
13 |
14 |
15 | @login_required(login_url="/login/")
16 | def index(request):
17 | context = {'segment': 'index'}
18 |
19 | html_template = loader.get_template('home/index.html')
20 | return HttpResponse(html_template.render(context, request))
21 |
22 | def contact(request):
23 | if request.method == 'POST':
24 | name = request.POST.get('name')
25 | email = request.POST.get('name')
26 | message = request.POST.get('name')
27 |
28 | new_contact = Contact(name=name,email=email,message=message)
29 | new_contact.save()
30 | messages.success(request,f"Message sent {name.split(' ')[0]} !")
31 |
32 | context = {'segment': 'contact-us.html'}
33 |
34 | html_template = loader.get_template('home/contact-us.html')
35 | return HttpResponse(html_template.render(context, request))
36 |
37 |
38 | @login_required(login_url="/login/")
39 | def pages(request):
40 | context = {}
41 | # All resource paths end in .html.
42 | # Pick out the html file name from the url. And load that template.
43 | try:
44 |
45 | load_template = request.path.split('/')[-1]
46 |
47 | if load_template == 'admin':
48 | return HttpResponseRedirect(reverse('admin:index'))
49 | context['segment'] = load_template
50 |
51 | html_template = loader.get_template('home/' + load_template)
52 | return HttpResponse(html_template.render(context, request))
53 |
54 | except template.TemplateDoesNotExist:
55 |
56 | html_template = loader.get_template('home/page-404.html')
57 | return HttpResponse(html_template.render(context, request))
58 |
59 | except:
60 | html_template = loader.get_template('home/page-500.html')
61 | return HttpResponse(html_template.render(context, request))
62 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/plugins/pro/_fullcalendar-extend.scss:
--------------------------------------------------------------------------------
1 | /*!
2 | FullCalendar v5.6.0
3 | Docs & License: https://fullcalendar.io/
4 | (c) 2020 Adam Shaw
5 | */
6 |
7 | // Creative Tim Changes
8 |
9 | .fc-theme-standard .fc-scrollgrid,
10 | .fc-scrollgrid {
11 | border: none;
12 | }
13 |
14 | .fc-theme-standard td,
15 | .fc-theme-standard th {
16 | border-color: $gray-200;
17 | }
18 |
19 | .fc-theme-standard thead tr th{
20 | border-right: none;
21 | border-left: none;
22 | }
23 |
24 | .fc-theme-standard td{
25 | &:last-child{
26 | border-right: none;
27 | }
28 | }
29 |
30 | .fc-theme-standard tr{
31 | &:last-child td{
32 | border-bottom: none;
33 | }
34 | }
35 |
36 | .fc-h-event{
37 | border: none;
38 | }
39 |
40 | .fc-daygrid-block-event .fc-event-time,
41 | .fc-daygrid-block-event .fc-event-title{
42 | font-weight: $font-weight-normal;
43 | font-size: $font-size-xs;
44 | line-height: $line-height-sm;
45 | padding: $fc-event-title-padding-y $fc-event-title-padding-x;
46 | }
47 |
48 | .fc .fc-daygrid-body-natural .fc-daygrid-day-events{
49 | margin-bottom: 0;
50 | }
51 |
52 | .fc .fc-col-header-cell-cushion{
53 | font-size: $font-size-sm;
54 | font-weight: $font-weight-bold;
55 | color: $gray-500;
56 | }
57 |
58 | .fc .fc-daygrid-day-number{
59 | color: $gray-700;
60 | font-size: $font-size-sm;
61 | font-weight: $font-weight-light;
62 | width: 100%;
63 | text-align: center;
64 | }
65 |
66 | .fc .fc-toolbar-title{
67 | font-size: $font-size-lg;
68 | }
69 |
70 | .fc .fc-button{
71 | font-size: $font-size-sm;
72 | padding-top: $spacer/4;
73 | box-shadow: $btn-box-shadow;
74 | transition: $btn-transition;
75 | .fc-icon{
76 | font-size: $font-size-sm;
77 | }
78 | }
79 |
80 | .fc .fc-button-primary{
81 | background-color: $primary;
82 | border-color: $primary;
83 | &:hover,
84 | &:focus,
85 | &:not(:disabled):active,
86 | &:not(:disabled):active:focus{
87 | transform: $btn-hover-transform;
88 | box-shadow: $btn-hover-box-shadow;
89 | background-color: $primary;
90 | border-color: $primary;
91 | }
92 | }
93 |
94 | .fc-event.fc-daygrid-event{
95 | border-radius: $fc-daygrid-event-border-radius;
96 | }
97 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/variables/_misc-extend.scss:
--------------------------------------------------------------------------------
1 | // Text Border
2 | $text-border-bg-color: rgba($secondary,.5) !default;
3 | $text-border-bg-color-before: linear-gradient(90deg,transparent,rgba(117,117,117,.4),rgba(117,117,117,.4)) !default;
4 | $text-border-bg-color-after: linear-gradient(90deg,rgba(117,117,117,.4),rgba(117,117,117,.4),transparent) !default;
5 | $text-border-display: inline-block !default;
6 | $text-border-width: 30% !default;
7 | $text-border-height: 1px !default;
8 | $text-border-position: relative !default;
9 | $text-border-vertical-align: middle !default;
10 | $text-border-before-right: .5em !default;
11 | $text-border-before-ml: -50% !default;
12 | $text-border-after-left: $text-border-before-right !default;
13 | $text-border-after-mr: $text-border-before-ml !default;
14 |
15 |
16 | // Header Shapes
17 |
18 | $shape-1-width: 55% !default;
19 | $shape-1-left: 15% !default;
20 | $shape-2-width: 35% !default;
21 | $shape-2-left: 20% !default;
22 | $shape-3-width: 50% !default;
23 | $shape-3-left: -28rem !default;
24 |
25 | $shape-img-1-right: 7% !default;
26 | $shape-img-1-width: 36% !default;
27 | $shape-img-1-margin-top: 12% !default;
28 |
29 | $shape-img-2-left: 24% !default;
30 | $shape-img-2-width: 27% !default;
31 | $shape-img-2-margin-top: 10% !default;
32 |
33 | // Comming Soon page
34 |
35 | $coming-rotate-transform: rotate(20deg) !default;
36 |
37 |
38 | // Tilt Animation
39 |
40 | $tilt-transform-style: preserve-3d !default;
41 | $tilt-transform-up-transform: translateZ(50px) scale(0.7) !default;
42 | $tilt-transform-up-transition: all 0.5s !default;
43 |
44 | // Round Slider
45 |
46 | $round-slider-m-width: 200px !default;
47 | $round-slider-scale-m-width: 300px !default;
48 | $round-slider-transition: all .5s ease-out 0s !default;
49 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/variables/_animations.scss:
--------------------------------------------------------------------------------
1 | // Waves Animation & Styling
2 |
3 | $waves-position: relative !default;
4 | $waves-width: 100% !default;
5 | $waves-height: 16vh !default;
6 | $waves-min-height: 100px !default;
7 | $waves-max-height: 150px !default;
8 | $waves-margin-bottom: -7px !default;
9 | $waves-height-sm: 50px !default;
10 | $waves-min-height-sm: $waves-height-sm !default;
11 | $waves-rotate: rotate(180deg) !default;
12 | $waves-mobile-height: 40px !default;
13 |
14 | $moving-waves-keyframe-0: translate3d(-90px,0,0) !default;
15 | $moving-waves-keyframe-100: translate3d(85px,0,0) !default;
16 | $moving-waves-animation: move-forever 40s cubic-bezier(.55,.5,.45,.5) infinite !default;
17 | $moving-waves-child-1-delay: -2s !default;
18 | $moving-waves-child-1-duration: 11s !default;
19 | $moving-waves-child-2-delay: -4s !default;
20 | $moving-waves-child-2-duration: 13s !default;
21 | $moving-waves-child-3-delay: -3s !default;
22 | $moving-waves-child-3-duration: 15s !default;
23 | $moving-waves-child-4-delay: -4s !default;
24 | $moving-waves-child-4-duration: 20s !default;
25 | $moving-waves-child-5-delay: -4s !default;
26 | $moving-waves-child-5-duration: 25s !default;
27 | $moving-waves-child-6-delay: -3s !default;
28 | $moving-waves-child-6-duration: 30s !default;
29 |
30 | // Fade In
31 |
32 | $fade-in-animation-name: fadeInBottom !default;
33 | $fade-in-animation-top-name: fadeInTop !default;
34 | $fade-in-bottom-transform: translateY(100%) !default;
35 | $fade-in-top-transform: translateY(-100%) !default;
36 |
37 |
38 | $fade-in-1-animation-duration: 1.5s !default;
39 | $fade-in-2-animation-duration: 1.75s !default;
40 | $fade-in-3-animation-duration: 2s !default;
41 | $fade-in-4-animation-duration: 2.25s !default;
42 | $fade-in-5-animation-duration: 2.5s !default;
43 |
44 |
45 | $floating-man-width: 350px !default;
46 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/_offcanvas.scss:
--------------------------------------------------------------------------------
1 | .offcanvas {
2 | position: fixed;
3 | bottom: 0;
4 | z-index: $zindex-offcanvas;
5 | display: flex;
6 | flex-direction: column;
7 | max-width: 100%;
8 | color: $offcanvas-color;
9 | visibility: hidden;
10 | background-color: $offcanvas-bg-color;
11 | background-clip: padding-box;
12 | outline: 0;
13 | @include box-shadow($offcanvas-box-shadow);
14 | @include transition(transform $offcanvas-transition-duration ease-in-out);
15 | }
16 |
17 | .offcanvas-backdrop {
18 | @include overlay-backdrop($zindex-offcanvas-backdrop, $offcanvas-backdrop-bg, $offcanvas-backdrop-opacity);
19 | }
20 |
21 | .offcanvas-header {
22 | display: flex;
23 | align-items: center;
24 | justify-content: space-between;
25 | padding: $offcanvas-padding-y $offcanvas-padding-x;
26 |
27 | .btn-close {
28 | padding: ($offcanvas-padding-y * .5) ($offcanvas-padding-x * .5);
29 | margin-top: $offcanvas-padding-y * -.5;
30 | margin-right: $offcanvas-padding-x * -.5;
31 | margin-bottom: $offcanvas-padding-y * -.5;
32 | }
33 | }
34 |
35 | .offcanvas-title {
36 | margin-bottom: 0;
37 | line-height: $offcanvas-title-line-height;
38 | }
39 |
40 | .offcanvas-body {
41 | flex-grow: 1;
42 | padding: $offcanvas-padding-y $offcanvas-padding-x;
43 | overflow-y: auto;
44 | }
45 |
46 | .offcanvas-start {
47 | top: 0;
48 | left: 0;
49 | width: $offcanvas-horizontal-width;
50 | border-right: $offcanvas-border-width solid $offcanvas-border-color;
51 | transform: translateX(-100%);
52 | }
53 |
54 | .offcanvas-end {
55 | top: 0;
56 | right: 0;
57 | width: $offcanvas-horizontal-width;
58 | border-left: $offcanvas-border-width solid $offcanvas-border-color;
59 | transform: translateX(100%);
60 | }
61 |
62 | .offcanvas-top {
63 | top: 0;
64 | right: 0;
65 | left: 0;
66 | height: $offcanvas-vertical-height;
67 | max-height: 100%;
68 | border-bottom: $offcanvas-border-width solid $offcanvas-border-color;
69 | transform: translateY(-100%);
70 | }
71 |
72 | .offcanvas-bottom {
73 | right: 0;
74 | left: 0;
75 | height: $offcanvas-vertical-height;
76 | max-height: 100%;
77 | border-top: $offcanvas-border-width solid $offcanvas-border-color;
78 | transform: translateY(100%);
79 | }
80 |
81 | .offcanvas.show {
82 | transform: none;
83 | }
84 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/forms/_form-check.scss:
--------------------------------------------------------------------------------
1 | .form-check:not(.form-switch) .form-check-input {
2 | float: initial !important;
3 | margin-left: auto !important;
4 |
5 | &[type="checkbox"],
6 | &[type="radio"] {
7 | border: 1px solid darken($gray-200, 10%);
8 | margin-top: $form-text-margin-top;
9 | position: relative;
10 |
11 | &:checked {
12 | border-color: $primary;
13 | }
14 | }
15 |
16 | &[type="checkbox"] {
17 | background-image: none;
18 | &:after {
19 | transition: opacity $form-check-transition-time ease-in-out;
20 | font-family: "FontAwesome";
21 | content: "\f00c";
22 | width: 100%;
23 | height: 100%;
24 | color: $form-check-input-checked-color;
25 | position: absolute;
26 | display: flex;
27 | justify-content: center;
28 | align-items: center;
29 | font-size: $font-size-sm - .205;
30 | opacity: 0;
31 | }
32 |
33 | &:checked{
34 | background: $primary;
35 | &:after {
36 | opacity: 1;
37 | }
38 | }
39 | }
40 |
41 | &[type="radio"] {
42 | transition: border 0s;
43 | background: transparent;
44 |
45 | &:after {
46 | transition: opacity $form-check-transition-time ease-in-out;
47 | content: "";
48 | position: absolute;
49 | width: $form-check-radio-after-width;
50 | height: $form-check-radio-after-width;
51 | border-radius: 50%;
52 | background-image: escape-svg($form-check-radio-checked-bg-image), var(--#{$variable-prefix}gradient);;
53 | opacity: 0;
54 | left: 0;
55 | right: 0;
56 | top: 0;
57 | bottom: 0;
58 | margin: auto;
59 | }
60 |
61 | &:checked {
62 | padding: 6px;
63 | }
64 |
65 | &:checked:after {
66 | opacity: 1;
67 | }
68 |
69 | &:active{
70 | box-shadow: $form-check-radio-after-shadow;
71 | border-radius: $border-radius-pill;
72 | transition: $form-check-radio-transition;
73 | }
74 | }
75 | }
76 |
77 | .form-check-label,
78 | .form-check-input[type="checkbox"] {
79 | cursor: pointer;
80 | }
81 |
82 | .form-check-label{
83 | font-size:$font-size-sm;
84 | font-weight: $font-weight-normal;
85 | }
86 |
87 | .form-check-input{
88 | -webkit-appearance: none;
89 | -moz-appearance: none;
90 | appearance: none;
91 | }
92 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/plugins/pro/_carousel-slick.scss:
--------------------------------------------------------------------------------
1 | .slick-slider {
2 | .btn.slick-next {
3 | margin-left: 10px;
4 | }
5 | }
6 | .slick-slide {
7 | margin: 0px 20px;
8 | }
9 |
10 | .slick-slide img {
11 | width: 200px;
12 | }
13 |
14 | .slick-slider {
15 | position: relative;
16 | display: block;
17 | box-sizing: border-box;
18 | -webkit-user-select: none;
19 | -moz-user-select: none;
20 | -ms-user-select: none;
21 | user-select: none;
22 | -webkit-touch-callout: none;
23 | -khtml-user-select: none;
24 | -ms-touch-action: pan-y;
25 | touch-action: pan-y;
26 | -webkit-tap-highlight-color: transparent;
27 | }
28 |
29 | .slick-list {
30 | position: relative;
31 | display: block;
32 | overflow: hidden;
33 | margin: 0;
34 | padding: 0;
35 | margin-top: 100px;
36 | }
37 | .slick-list:focus {
38 | outline: none;
39 | }
40 | .slick-list.dragging {
41 | cursor: pointer;
42 | cursor: hand;
43 | }
44 |
45 | .slick-slider .slick-track,
46 | .slick-slider .slick-list {
47 | -webkit-transform: translate3d(0, 0, 0);
48 | -moz-transform: translate3d(0, 0, 0);
49 | -ms-transform: translate3d(0, 0, 0);
50 | -o-transform: translate3d(0, 0, 0);
51 | transform: translate3d(0, 0, 0);
52 | }
53 |
54 | .slick-track {
55 | position: relative;
56 | top: 0;
57 | left: 0;
58 | display: block;
59 | }
60 | .slick-track:before,
61 | .slick-track:after {
62 | display: table;
63 | content: '';
64 | }
65 | .slick-track:after {
66 | clear: both;
67 | }
68 | .slick-loading .slick-track {
69 | visibility: hidden;
70 | }
71 |
72 | .slick-slide {
73 | float: left;
74 | height: 100%;
75 | min-height: 1px;
76 | }
77 | [dir='rtl'] .slick-slide {
78 | float: right;
79 | }
80 | .slick-slide img {
81 | display: block;
82 | }
83 | .slick-slide.slick-loading img {
84 | display: none;
85 | }
86 | .slick-slide.dragging img {
87 | pointer-events: none;
88 | }
89 | .slick-initialized .slick-slide {
90 | display: block;
91 | }
92 | .slick-loading .slick-slide {
93 | visibility: hidden;
94 | }
95 | .slick-vertical .slick-slide {
96 | display: block;
97 | height: auto;
98 | border: 1px solid transparent;
99 | }
100 | .slick-arrow.slick-hidden {
101 | display: none;
102 | }
103 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/cards/card-background.scss:
--------------------------------------------------------------------------------
1 | .card {
2 | &.card-background {
3 | align-items: $card-bg-align-items;
4 |
5 | .full-background {
6 | background-position: $card-full-bg-bg-position;
7 | background-size: $card-full-bg-bg-size;
8 | margin-bottom: $card-full-bg-mb;
9 | width: $card-full-bg-width;
10 | height: $card-full-bg-height;
11 | position: $card-full-bg-position;
12 | border-radius: $card-border-radius;
13 | }
14 |
15 | .card-body {
16 | color: $white;
17 | position: $card-bg-body-position;
18 | z-index: $card-bg-body-z-index;
19 |
20 | .content-center,
21 | .content-left {
22 | min-height: $card-bg-content-min-height;
23 | max-width: $card-bg-content-max-width;
24 | padding-top: $card-bg-content-pt;
25 | padding-bottom: $card-bg-content-pb;
26 | }
27 | .content-center {
28 | text-align: center;
29 | }
30 | &.body-left {
31 | width: $card-bg-body-left-width;
32 | }
33 |
34 | .author {
35 | .name {
36 | span,
37 | .stats {
38 | color: $white;
39 | }
40 | }
41 | }
42 | }
43 |
44 | &:after {
45 | position: $card-bg-filter-position;
46 | top: $card-bg-filter-top;
47 | bottom: $card-bg-filter-bottom;
48 | left: $card-bg-filter-left;
49 | height: $card-bg-filter-height;
50 | width: $card-bg-filter-width;
51 | z-index: $card-bg-filter-z-index;
52 | display: $card-bg-filter-display;
53 | content: $card-bg-filter-content;
54 | background: $card-bg-filter-bg;
55 | border-radius: $card-border-radius;
56 | }
57 |
58 | @each $name, $val in $theme-gradient-colors {
59 | &.card-background-mask-#{$name} {
60 | &:before {
61 | background: $card-bg-filter-mask-bg;
62 | }
63 |
64 | &:after {
65 | @include gradient-directional(nth($val, 1) 0%, nth($val, -1) 100%, $deg: 195deg);
66 | opacity: .85;
67 | }
68 | }
69 | }
70 |
71 | .card-category {
72 | font-size: $font-size-sm;
73 | font-weight: $font-weight-bold;
74 | }
75 |
76 | .card-description {
77 | margin-top: $card-bg-description-margin;
78 | margin-bottom: $card-bg-description-margin;
79 | }
80 | }
81 | }
82 |
--------------------------------------------------------------------------------
/apps/static/assets/scss/material-kit/bootstrap/mixins/_border-radius.scss:
--------------------------------------------------------------------------------
1 | // stylelint-disable property-disallowed-list
2 | // Single side border-radius
3 |
4 | // Helper function to replace negative values with 0
5 | @function valid-radius($radius) {
6 | $return: ();
7 | @each $value in $radius {
8 | @if type-of($value) == number {
9 | $return: append($return, max($value, 0));
10 | } @else {
11 | $return: append($return, $value);
12 | }
13 | }
14 | @return $return;
15 | }
16 |
17 | // scss-docs-start border-radius-mixins
18 | @mixin border-radius($radius: $border-radius, $fallback-border-radius: false) {
19 | @if $enable-rounded {
20 | border-radius: valid-radius($radius);
21 | }
22 | @else if $fallback-border-radius != false {
23 | border-radius: $fallback-border-radius;
24 | }
25 | }
26 |
27 | @mixin border-top-radius($radius: $border-radius) {
28 | @if $enable-rounded {
29 | border-top-left-radius: valid-radius($radius);
30 | border-top-right-radius: valid-radius($radius);
31 | }
32 | }
33 |
34 | @mixin border-end-radius($radius: $border-radius) {
35 | @if $enable-rounded {
36 | border-top-right-radius: valid-radius($radius);
37 | border-bottom-right-radius: valid-radius($radius);
38 | }
39 | }
40 |
41 | @mixin border-bottom-radius($radius: $border-radius) {
42 | @if $enable-rounded {
43 | border-bottom-right-radius: valid-radius($radius);
44 | border-bottom-left-radius: valid-radius($radius);
45 | }
46 | }
47 |
48 | @mixin border-start-radius($radius: $border-radius) {
49 | @if $enable-rounded {
50 | border-top-left-radius: valid-radius($radius);
51 | border-bottom-left-radius: valid-radius($radius);
52 | }
53 | }
54 |
55 | @mixin border-top-start-radius($radius: $border-radius) {
56 | @if $enable-rounded {
57 | border-top-left-radius: valid-radius($radius);
58 | }
59 | }
60 |
61 | @mixin border-top-end-radius($radius: $border-radius) {
62 | @if $enable-rounded {
63 | border-top-right-radius: valid-radius($radius);
64 | }
65 | }
66 |
67 | @mixin border-bottom-end-radius($radius: $border-radius) {
68 | @if $enable-rounded {
69 | border-bottom-right-radius: valid-radius($radius);
70 | }
71 | }
72 |
73 | @mixin border-bottom-start-radius($radius: $border-radius) {
74 | @if $enable-rounded {
75 | border-bottom-left-radius: valid-radius($radius);
76 | }
77 | }
78 | // scss-docs-end border-radius-mixins
79 |
--------------------------------------------------------------------------------
/apps/static/assets/img/logos/gray-logos/logo-netflix.svg:
--------------------------------------------------------------------------------
1 |
2 |