mirror of
https://github.com/akveo/ngx-admin.git
synced 2025-12-22 02:10:12 +01:00
feat(core): add backend bundles section for landing
This commit is contained in:
commit
92acc44a32
24 changed files with 936 additions and 42 deletions
|
|
@ -0,0 +1,306 @@
|
|||
<ngx-landing-section-title>
|
||||
Backend Bundles
|
||||
</ngx-landing-section-title>
|
||||
|
||||
<div class="section-container">
|
||||
|
||||
<p class="features__description">Akveo new product created after a number of community and clients requests. We did all backend integration in ngx-admin for you! Now you can buy a complete UI + backend solution based on the backend framework of choice to use it as a template for your solution implementation.
|
||||
</p>
|
||||
|
||||
<div class="package-switcher">
|
||||
<div [(ngModel)]="selectedLicenseType" ngbRadioGroup
|
||||
class="package-switcher__btn-group btn-group btn-group-toggle btn-outline-toggle-group btn-group-full-width btn-toggle-radio-group">
|
||||
<label ngbButtonLabel class="package-switcher__btn btn btn-outline-secondary">
|
||||
<input ngbButton type="radio" [value]="personalLicense"> {{ personalLicense }}
|
||||
</label>
|
||||
<label ngbButtonLabel class="package-switcher__btn btn btn-outline-secondary">
|
||||
<input ngbButton type="radio" [value]="commercialLicense"> {{ commercialLicense }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ul class="packages">
|
||||
<li class="packages__item">
|
||||
<nb-flip-card [showToggleButton]="false" [flipped]="firstCardFlipped">
|
||||
<nb-card-front class="package-card package-card--front">
|
||||
<nb-card>
|
||||
<nb-card-body>
|
||||
<div class="package-card__header">
|
||||
<span class="package-card__demo-link">Coming soon</span>
|
||||
</div>
|
||||
<div class="package-card__image package-card__image--dot-net"></div>
|
||||
<h4 class="package-card__title">{{ ecomName }}</h4>
|
||||
<h4 class="package-card__title">{{ netName }}</h4>
|
||||
<p class="package-card__description">
|
||||
E-Commerce Dashboard integrated with REST data services based on .NET Framework, Web API and Entity Framework 6.2
|
||||
</p>
|
||||
<div class="package-card__price-wrapper">
|
||||
<span class="package-card__price package-card__price--old">${{ isCommercial() ? '2000' : '200' }}</span>
|
||||
<span class="package-card__price">${{ isCommercial() ? '1500' : '150' }}</span>
|
||||
</div>
|
||||
<a [href]="firstBundleMail"
|
||||
target="_blank"
|
||||
class="package-card__buy-link btn btn-demo"
|
||||
nbButton
|
||||
(click)="stopPropagation($event)">
|
||||
Buy now
|
||||
</a>
|
||||
</nb-card-body>
|
||||
</nb-card>
|
||||
</nb-card-front>
|
||||
<nb-card-back class="package-card package-card--back">
|
||||
<nb-card>
|
||||
<nb-card-body>
|
||||
<h4 class="package-card__type">{{ selectedLicenseType }}</h4>
|
||||
<ng-container *ngTemplateOutlet="bundleFeaturesList"></ng-container>
|
||||
<a [href]="firstBundleMail"
|
||||
target="_blank"
|
||||
class="package-card__buy-link btn btn-demo"
|
||||
nbButton
|
||||
(click)="stopPropagation($event)">
|
||||
Buy now
|
||||
</a>
|
||||
</nb-card-body>
|
||||
</nb-card>
|
||||
</nb-card-back>
|
||||
</nb-flip-card>
|
||||
</li>
|
||||
<li class="packages__item">
|
||||
<nb-flip-card [showToggleButton]="false" [flipped]="secondCardFlipped">
|
||||
<nb-card-front class="package-card package-card--front">
|
||||
<nb-card>
|
||||
<nb-card-body>
|
||||
<div class="package-card__header">
|
||||
<span class="package-card__demo-link">Coming soon</span>
|
||||
</div>
|
||||
<div class="package-card__image package-card__image--dot-net"></div>
|
||||
<h4 class="package-card__title">{{ iotName }}</h4>
|
||||
<h4 class="package-card__title">{{ netName }}</h4>
|
||||
<p class="package-card__description">
|
||||
IoT Dashboard integrated with REST data services based on .NET Framework, Web API and Entity Framework 6.2
|
||||
</p>
|
||||
<div class="package-card__price-wrapper">
|
||||
<span class="package-card__price package-card__price--old">${{ isCommercial() ? '2000' : '200' }}</span>
|
||||
<span class="package-card__price">${{ isCommercial() ? '1500' : '150' }}</span>
|
||||
</div>
|
||||
<a [href]="secondBundleMail"
|
||||
target="_blank"
|
||||
class="package-card__buy-link btn btn-demo"
|
||||
nbButton
|
||||
(click)="stopPropagation($event)">
|
||||
Buy now
|
||||
</a>
|
||||
</nb-card-body>
|
||||
</nb-card>
|
||||
</nb-card-front>
|
||||
<nb-card-back class="package-card package-card--back">
|
||||
<nb-card>
|
||||
<nb-card-body>
|
||||
<h4 class="package-card__type">{{ selectedLicenseType }}</h4>
|
||||
<ng-container *ngTemplateOutlet="bundleFeaturesList"></ng-container>
|
||||
<a [href]="secondBundleMail"
|
||||
target="_blank"
|
||||
class="package-card__buy-link btn btn-demo"
|
||||
nbButton
|
||||
(click)="stopPropagation($event)">
|
||||
Buy now
|
||||
</a>
|
||||
</nb-card-body>
|
||||
</nb-card>
|
||||
</nb-card-back>
|
||||
</nb-flip-card>
|
||||
</li>
|
||||
<li class="packages__item">
|
||||
<nb-flip-card [showToggleButton]="false" [flipped]="thirdCardFlipped">
|
||||
<nb-card-front class="package-card package-card--front">
|
||||
<nb-card>
|
||||
<nb-card-body>
|
||||
<div class="package-card__header">
|
||||
<span class="package-card__demo-link package-card__demo-link--secondary">Coming soon</span>
|
||||
</div>
|
||||
<div class="package-card__image package-card__image--dot-net-core"></div>
|
||||
<h4 class="package-card__title">{{ ecomName }}</h4>
|
||||
<h4 class="package-card__title">{{ netCoreName }}</h4>
|
||||
<p class="package-card__description">
|
||||
E-Commerce Dashboard integrated with REST data services based on .NET Core, Web API and Entity Framework 2.2
|
||||
</p>
|
||||
<div class="package-card__price-wrapper">
|
||||
<span class="package-card__price package-card__price--old">${{ isCommercial() ? '1800' : '180' }}</span>
|
||||
<span class="package-card__price">${{ isCommercial() ? '1400' : '140' }}</span>
|
||||
</div>
|
||||
<a [href]="thirdBundleMail"
|
||||
target="_blank"
|
||||
class="package-card__buy-link btn btn-demo"
|
||||
nbButton
|
||||
(click)="stopPropagation($event)">
|
||||
Buy now
|
||||
</a>
|
||||
</nb-card-body>
|
||||
</nb-card>
|
||||
</nb-card-front>
|
||||
<nb-card-back class="package-card package-card--back">
|
||||
<nb-card>
|
||||
<nb-card-body>
|
||||
<h4 class="package-card__type">{{ selectedLicenseType }}</h4>
|
||||
<ng-container *ngTemplateOutlet="bundleFeaturesList"></ng-container>
|
||||
<a [href]="thirdBundleMail"
|
||||
target="_blank"
|
||||
class="package-card__buy-link btn btn-demo"
|
||||
nbButton
|
||||
(click)="stopPropagation($event)">
|
||||
Buy now
|
||||
</a>
|
||||
</nb-card-body>
|
||||
</nb-card>
|
||||
</nb-card-back>
|
||||
</nb-flip-card>
|
||||
</li>
|
||||
<li class="packages__item">
|
||||
<nb-flip-card [showToggleButton]="false" [flipped]="fourthCardFlipped">
|
||||
<nb-card-front class="package-card package-card--front">
|
||||
<nb-card>
|
||||
<nb-card-body>
|
||||
<div class="package-card__header">
|
||||
<span class="package-card__demo-link package-card__demo-link--secondary">Coming soon</span>
|
||||
</div>
|
||||
<div class="package-card__image package-card__image--dot-net-core"></div>
|
||||
<h4 class="package-card__title">{{ iotName }}</h4>
|
||||
<h4 class="package-card__title">{{ netCoreName }}</h4>
|
||||
<p class="package-card__description">
|
||||
IoT Dashboard integrated with REST data services based on .NET Core, Web API and Entity Framework 2.2
|
||||
</p>
|
||||
<div class="package-card__price-wrapper">
|
||||
<span class="package-card__price package-card__price--old">${{ isCommercial() ? '1800' : '180' }}</span>
|
||||
<span class="package-card__price">${{ isCommercial() ? '1400' : '140' }}</span>
|
||||
</div>
|
||||
<a [href]="fourthBundleMail"
|
||||
target="_blank"
|
||||
class="package-card__buy-link btn btn-demo"
|
||||
nbButton
|
||||
(click)="stopPropagation($event)">
|
||||
Buy now
|
||||
</a>
|
||||
</nb-card-body>
|
||||
</nb-card>
|
||||
</nb-card-front>
|
||||
<nb-card-back class="package-card package-card--back">
|
||||
<nb-card>
|
||||
<nb-card-body>
|
||||
<h4 class="package-card__type">{{ selectedLicenseType }}</h4>
|
||||
<ng-container *ngTemplateOutlet="bundleFeaturesList"></ng-container>
|
||||
<a [href]="fourthBundleMail"
|
||||
target="_blank"
|
||||
class="package-card__buy-link btn btn-demo"
|
||||
nbButton
|
||||
(click)="stopPropagation($event)">
|
||||
Buy now
|
||||
</a>
|
||||
</nb-card-body>
|
||||
</nb-card>
|
||||
</nb-card-back>
|
||||
</nb-flip-card>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<table class="features-table">
|
||||
<tr>
|
||||
<th class="left">FEATURES</th>
|
||||
<th>PERSONAL</th>
|
||||
<th>COMMERCIAL</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="left">NGX Admin template with 100+ UI components integrated with Backend</td>
|
||||
<td>
|
||||
<ul class="included">
|
||||
<li class="included__item"></li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<ul class="included">
|
||||
<li class="included__item"></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="left">.NET backend Services and Repository layers with data access</td>
|
||||
<td>
|
||||
<ul class="included">
|
||||
<li class="included__item"></li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<ul class="included">
|
||||
<li class="included__item"></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="left">JWT Authentication setup for UI and Backend</td>
|
||||
<td>
|
||||
<ul class="included">
|
||||
<li class="included__item"></li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<ul class="included">
|
||||
<li class="included__item"></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="left">Running instructions and code documentation</td>
|
||||
<td>
|
||||
<ul class="included">
|
||||
<li class="included__item"></li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<ul class="included">
|
||||
<li class="included__item"></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="left">Commercial Usage</td>
|
||||
<td>
|
||||
<ul class="not-included">
|
||||
<li class="not-included__item"></li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<ul class="included">
|
||||
<li class="included__item"></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="left">One Year Support and Bug Fixes by Request</td>
|
||||
<td>
|
||||
<ul class="not-included">
|
||||
<li class="not-included__item"></li>
|
||||
</ul>
|
||||
</td>
|
||||
<td>
|
||||
<ul class="included">
|
||||
<li class="included__item"></li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<ngx-landing-description-section *ngIf="descriptions" [descriptions]="descriptions" ></ngx-landing-description-section>
|
||||
|
||||
|
||||
<ngx-landing-section-title>
|
||||
Architecture Design
|
||||
</ngx-landing-section-title>
|
||||
|
||||
<p class="features__description">The schema describes the idea of how backend part of the .NET solution is organized.
|
||||
</p>
|
||||
|
||||
<picture class="bundle-scheme">
|
||||
<source type="image/webp" srcset="/assets/img/bundle-scheme@1x.webp 1x, /assets/img/bundle-scheme@2x.webp 2x">
|
||||
<img class="bundle-scheme__image" src="/assets/img/bundle-scheme@1x.png" srcset="/assets/img/bundle-scheme@2x.png 2x" alt="Backend bundles">
|
||||
</picture>
|
||||
|
||||
</div>
|
||||
|
|
@ -0,0 +1,447 @@
|
|||
/**
|
||||
* @license
|
||||
* Copyright Akveo. All Rights Reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*/
|
||||
|
||||
@import '../../../@theme/styles/themes';
|
||||
@import '~@nebular/theme/styles/global/breakpoints';
|
||||
|
||||
@include nb-install-component() {
|
||||
$content-width: nb-theme(content-width);
|
||||
$left-right-offset: 8.125rem;
|
||||
|
||||
display: block;
|
||||
padding-top: 5.125rem;
|
||||
|
||||
.section-container {
|
||||
width: calc(#{$content-width} - #{$left-right-offset} * 2);
|
||||
max-width: 100%;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.features {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
padding: 0 11px;
|
||||
margin-top: 5rem;
|
||||
margin-left: -11px;
|
||||
margin-right: -11px;
|
||||
width: 100%;
|
||||
width: calc(100% + 22px);
|
||||
|
||||
&__item {
|
||||
flex: 0 0 25%;
|
||||
width: 25%;
|
||||
max-width: 25%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
list-style: none;
|
||||
padding-left: 11px;
|
||||
padding-right: 11px;
|
||||
margin-bottom: 1.625rem;
|
||||
}
|
||||
&__title {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
min-height: 60px;
|
||||
font-weight: bold;
|
||||
font-size: 24px;
|
||||
line-height: 30px;
|
||||
text-align: center;
|
||||
color: rgba(0, 0, 0, 0.87);
|
||||
}
|
||||
&__description {
|
||||
font-family: nb-theme(font-secondary), sans-serif;
|
||||
color: #8994a3;
|
||||
font-size: nb-theme(font-size-lg);
|
||||
line-height: 1.75;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
|
||||
.bundle-scheme {
|
||||
display: none;
|
||||
width: 100%;
|
||||
height: auto;
|
||||
margin: 2.5rem auto;
|
||||
|
||||
&__image {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(md) {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
.package-switcher {
|
||||
margin: 2.375rem 0 5rem;
|
||||
|
||||
&__btn-group {
|
||||
box-shadow: 0 8px 20px 0 rgba(218, 224, 235, 0.5);
|
||||
border-radius: 1.5rem;
|
||||
&:not(.btn-divided-group) > .package-switcher__btn:not(.dropdown-toggle):first-child {
|
||||
border-top-left-radius: 1.5rem;
|
||||
border-bottom-left-radius: 1.5rem;
|
||||
}
|
||||
&:not(.btn-divided-group) > .package-switcher__btn:not(.dropdown-toggle):last-child {
|
||||
border-top-right-radius: 1.5rem;
|
||||
border-bottom-right-radius: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
&__btn {
|
||||
min-width: 10.625rem;
|
||||
color: #bdc3cb;
|
||||
border-color: #e6e8eb;
|
||||
text-transform: none;
|
||||
cursor: pointer;
|
||||
|
||||
&:active {
|
||||
color: #ffffff;
|
||||
}
|
||||
&.active {
|
||||
color: #000000;
|
||||
background-color: #fafafa;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.packages {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
padding: 0;
|
||||
margin-left: -11px;
|
||||
margin-right: -11px;
|
||||
margin-bottom: 4rem;
|
||||
width: 100%;
|
||||
width: calc(100% + 22px);
|
||||
|
||||
&__item {
|
||||
flex: 0 0 25%;
|
||||
width: 25%;
|
||||
max-width: 25%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
list-style: none;
|
||||
padding-left: 11px;
|
||||
padding-right: 11px;
|
||||
margin-bottom: 22px;
|
||||
}
|
||||
}
|
||||
|
||||
nb-flip-card {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/deep/ .flipcard-body {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/deep/ .front-container, .back-container {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
nb-card-front, nb-card-back {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
nb-card {
|
||||
height: 100%;
|
||||
border: 0;
|
||||
background-color: #ffffff;
|
||||
box-shadow: 0 7px 17px 0 rgba(218, 224, 235, 0.5);
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
nb-card-body {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-wrap: nowrap;
|
||||
justify-content: flex-start;
|
||||
align-content: stretch;
|
||||
align-items: stretch;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
.package-card {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-wrap: nowrap;
|
||||
justify-content: flex-start;
|
||||
align-content: stretch;
|
||||
align-items: stretch;
|
||||
cursor: pointer;
|
||||
|
||||
&--front {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
&__header {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 0 0 auto;
|
||||
margin-bottom: 0.5625rem;
|
||||
}
|
||||
&__demo-link {
|
||||
align-self: flex-end;
|
||||
color: #ff8588;
|
||||
font-weight: bold;
|
||||
font-size: 0.75rem;
|
||||
line-height: 1rem;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
padding: 0.25rem 1rem;
|
||||
border: 1px solid #ff8588;
|
||||
border-radius: 0.75rem;
|
||||
&--secondary {
|
||||
color: #ad7efa;
|
||||
border-color: #ad7efa;
|
||||
}
|
||||
}
|
||||
&__image {
|
||||
margin: 0 -1rem;
|
||||
display: flex;
|
||||
flex: 0 0 14.125rem;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center center;
|
||||
background-size: auto 100%;
|
||||
&--dot-net {
|
||||
background-image: url('assets/img/bundle-dot-net.png');
|
||||
}
|
||||
&--dot-net-core {
|
||||
background-image: url('assets/img/bundle-dot-net-core.png');
|
||||
}
|
||||
}
|
||||
&__price-wrapper {
|
||||
flex: 0 0 2.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
&__price {
|
||||
font-weight: bold;
|
||||
font-size: 1.75rem;
|
||||
line-height: 2.5rem;
|
||||
color: rgba(0, 0, 0, 0.87);
|
||||
vertical-align: middle;
|
||||
&--old {
|
||||
font-size: 1.5rem;
|
||||
color: #ff4d6b;
|
||||
text-decoration: line-through;
|
||||
vertical-align: middle;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
}
|
||||
&__title {
|
||||
// min-height: 2rem;
|
||||
font-weight: bold;
|
||||
font-size: 1.125rem;
|
||||
color: rgba(0, 0, 0, 0.87);
|
||||
// margin-bottom: 0.5rem;
|
||||
}
|
||||
&__description {
|
||||
margin-top: 0.5rem;
|
||||
font-family: nb-theme(font-secondary), sans-serif;
|
||||
font-weight: lighter;
|
||||
font-size: 0.875rem;
|
||||
color: rgba(0, 0, 0, 0.87);
|
||||
margin-bottom: 1.675rem;
|
||||
}
|
||||
&__buy-link {
|
||||
font-family: nb-theme(font-secondary), sans-serif;
|
||||
font-size: 0.75rem;
|
||||
color: #ffffff;
|
||||
text-transform: uppercase;
|
||||
background-color: #18cb90;
|
||||
box-shadow: 0 5px 29px 0 rgba(0, 219, 146, 0.32);
|
||||
border-radius: 3px;
|
||||
margin-top: auto;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
box-shadow: 0 0.375rem 2.125rem 0 rgba(0, 219, 146, 0.32);
|
||||
}
|
||||
}
|
||||
&__type {
|
||||
font-weight: bold;
|
||||
font-size: 1rem;
|
||||
line-height: 1.25rem;
|
||||
color: rgba(0, 0, 0, 0.87);
|
||||
text-align: center;
|
||||
margin-top: 0.25rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.included {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
flex-direction: column;
|
||||
padding: 0;
|
||||
margin: 1rem 0 0;
|
||||
|
||||
&__item {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
list-style: none;
|
||||
margin: 0 0 1rem;
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.25rem;
|
||||
font-weight: 300;
|
||||
padding-left: 0.5rem;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
display: inline-flex;
|
||||
width: 10px;
|
||||
height: 14px;
|
||||
border: solid #00db92;
|
||||
border-width: 0 2px 2px 0;
|
||||
transform: rotate(45deg);
|
||||
// ff3d71
|
||||
}
|
||||
}
|
||||
|
||||
&__text {
|
||||
margin: 0 0 0 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.not-included {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
flex-direction: column;
|
||||
padding: 0;
|
||||
margin: 1rem 0 0;
|
||||
|
||||
&__item {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
list-style: none;
|
||||
margin: 0 0 1rem;
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.25rem;
|
||||
font-weight: 300;
|
||||
padding-left: 0.5rem;
|
||||
|
||||
&::before {
|
||||
content: '';
|
||||
display: inline-flex;
|
||||
width: 10px;
|
||||
height: 14px;
|
||||
border: solid #ff8588;
|
||||
border-width: 0 2px 2px 0;
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
}
|
||||
|
||||
&__text {
|
||||
margin: 0 0 0 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(xl) {
|
||||
.section-container {
|
||||
padding-left: 1rem;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
.bundle-scheme {
|
||||
padding: 0 11px;
|
||||
}
|
||||
|
||||
.features {
|
||||
padding-left: 11px;
|
||||
padding-right: 11px;
|
||||
|
||||
&__item {
|
||||
flex-basis: 50%;
|
||||
width: 50%;
|
||||
max-width: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
.packages {
|
||||
padding-left: 11px;
|
||||
padding-right: 11px;
|
||||
|
||||
&__item {
|
||||
flex-basis: 50%;
|
||||
width: 50%;
|
||||
max-width: 50%;
|
||||
margin-bottom: 1.625rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.features-table {
|
||||
width: 100%;
|
||||
margin-bottom: 5rem;
|
||||
|
||||
box-shadow: 0 8px 20px 0 rgba(218, 224, 235, 0.5);
|
||||
background-color: #fafafa;
|
||||
|
||||
th, td {
|
||||
//border: 0.5px solid #dae0eb;
|
||||
padding: 0.5rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
th {
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
td {
|
||||
font-weight: lighter;
|
||||
font-size: 0.75rem;
|
||||
}
|
||||
|
||||
td ul {
|
||||
display: inline-block;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.left {
|
||||
text-align: left;
|
||||
padding-left: 1rem;
|
||||
}
|
||||
|
||||
tr:nth-child(even) {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(sm) {
|
||||
|
||||
.packages__item {
|
||||
flex-basis: 100%;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
@include media-breakpoint-down(is) {
|
||||
|
||||
.features__item {
|
||||
flex-basis: 100%;
|
||||
width: 100%;
|
||||
max-width: 100%;
|
||||
}
|
||||
.package-switcher__btn {
|
||||
min-width: 8rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,80 @@
|
|||
/**
|
||||
* @license
|
||||
* Copyright Akveo. All Rights Reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*/
|
||||
|
||||
import { Component, OnDestroy } from '@angular/core';
|
||||
import { Descriptions, DescriptionsService } from '../../../@core/data/service/descriptions.service';
|
||||
import { takeWhile } from 'rxjs/operators';
|
||||
|
||||
@Component({
|
||||
selector: 'ngx-backend-bundles-section',
|
||||
templateUrl: 'backend-bundles-section.component.html',
|
||||
styleUrls: ['./backend-bundles-section.component.scss'],
|
||||
})
|
||||
|
||||
export class BackendBundlesSectionComponent implements OnDestroy {
|
||||
|
||||
private alive = true;
|
||||
descriptions: Descriptions[];
|
||||
|
||||
ngOnDestroy() {
|
||||
this.alive = false;
|
||||
}
|
||||
|
||||
selectedLicenseType = 'Personal';
|
||||
personalLicense = 'Personal';
|
||||
commercialLicense = 'Commercial';
|
||||
|
||||
ecomName = 'E-Commerce:';
|
||||
iotName = 'IoT:';
|
||||
|
||||
netName = '.NET + NGX Admin';
|
||||
netCoreName = '.NET Core + NGX Admin';
|
||||
|
||||
|
||||
constructor(private descriptionsService: DescriptionsService) {
|
||||
this.descriptionsService.getBundleDescriptions()
|
||||
.pipe(takeWhile(() => this.alive))
|
||||
.subscribe((descriptions) => this.descriptions = descriptions);
|
||||
}
|
||||
|
||||
get firstBundleMail(): string {
|
||||
return this.getMailToText('.NET E-commerce');
|
||||
}
|
||||
|
||||
get secondBundleMail(): string {
|
||||
return this.getMailToText('.NET IoT');
|
||||
}
|
||||
|
||||
get thirdBundleMail(): string {
|
||||
return this.getMailToText('.NET Core E-commerce');
|
||||
}
|
||||
|
||||
get fourthBundleMail(): string {
|
||||
return this.getMailToText('.NET Core IoT');
|
||||
}
|
||||
|
||||
firstCardFlipped: boolean = false;
|
||||
secondCardFlipped: boolean = false;
|
||||
thirdCardFlipped: boolean = false;
|
||||
fourthCardFlipped: boolean = false;
|
||||
|
||||
stopPropagation(e) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
|
||||
isCommercial() {
|
||||
return this.selectedLicenseType === 'Commercial';
|
||||
}
|
||||
|
||||
private getMailToText(bundleName: string) {
|
||||
return 'mailto:support@akveo.com' +
|
||||
`?subject=${this.selectedLicenseType} ${bundleName} Bundle` +
|
||||
'&body=Dear Akveo, %0D%0A%0D%0A' +
|
||||
`I would like to purchase ${this.selectedLicenseType} ${bundleName} Bundle. ` +
|
||||
'Please give me details how I can proceed with that. %0D%0A%0D%0A' +
|
||||
'Thanks and regards';
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue