core plugin, both signalR and service override works, theme added
|
|
@ -83,6 +83,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nop.Plugin.Misc.SignalRApi"
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nop.Plugin.Misc.FruitBankPlugin", "..\Nopcommerce.Common\4.70\Plugins\Nop.Plugin.Misc.AIPlugin\Nop.Plugin.Misc.FruitBankPlugin.csproj", "{3E893AC2-29F1-48FC-B33F-F73C6EE2BE90}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nop.Plugin.Misc.MangoCore", "..\Nopcommerce.Common\4.70\Plugins\Nop.Plugin.Misc.MangoCore\Nop.Plugin.Misc.MangoCore.csproj", "{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
|
@ -479,6 +481,18 @@ Global
|
|||
{3E893AC2-29F1-48FC-B33F-F73C6EE2BE90}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{3E893AC2-29F1-48FC-B33F-F73C6EE2BE90}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3E893AC2-29F1-48FC-B33F-F73C6EE2BE90}.Release|x86.Build.0 = Release|Any CPU
|
||||
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
@ -520,6 +534,7 @@ Global
|
|||
{300D2B68-B626-E8D1-4BBE-BBBE6EF0314C} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
|
||||
{6F3A2969-6F87-CC4B-1197-B035C9DF40E6} = {0742FDF3-0F2E-4C64-9521-E58A7FF2ED26}
|
||||
{3E893AC2-29F1-48FC-B33F-F73C6EE2BE90} = {0742FDF3-0F2E-4C64-9521-E58A7FF2ED26}
|
||||
{3976CB1D-8080-4B84-8C01-1F98BFCAF2B3} = {0742FDF3-0F2E-4C64-9521-E58A7FF2ED26}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {EE72A8B2-332A-4175-9319-6726D36E9D25}
|
||||
|
|
|
|||
|
|
@ -106,6 +106,22 @@
|
|||
{
|
||||
"SystemName": "Misc.FruitBankPlugin",
|
||||
"Version": "1.00"
|
||||
},
|
||||
{
|
||||
"SystemName": "Misc.MangoCorePlugin",
|
||||
"Version": "1.00"
|
||||
},
|
||||
{
|
||||
"SystemName": "NopStation.Core",
|
||||
"Version": "4.80.1.0"
|
||||
},
|
||||
{
|
||||
"SystemName": "NopStation.Plugin.Theme.CarHaven",
|
||||
"Version": "4.80.1.0"
|
||||
},
|
||||
{
|
||||
"SystemName": "NopStation.Plugin.Widgets.CategoryBanners",
|
||||
"Version": "4.80.1.0"
|
||||
}
|
||||
],
|
||||
"PluginNamesToUninstall": [],
|
||||
|
|
|
|||
|
|
@ -0,0 +1,120 @@
|
|||
|
||||
body {
|
||||
font: normal 9pt Arial, Helvetica, sans-serif;
|
||||
color: #000;
|
||||
}
|
||||
table {
|
||||
width: 100%;
|
||||
border: 0;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
li {
|
||||
list-style: none;
|
||||
}
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
.order-details-page .order-overview {
|
||||
margin: 0 0 25px;
|
||||
}
|
||||
|
||||
.order-details-page .order-overview .order-number {
|
||||
font-size: 11pt;
|
||||
text-transform: uppercase;
|
||||
padding-block: 10px;
|
||||
}
|
||||
.order-details-page .order-overview-content li {
|
||||
margin: 5px 0;
|
||||
}
|
||||
.order-details-page .order-overview .order-total strong {
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.order-details-page .order-details-area {
|
||||
margin: 0 0 25px;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
}
|
||||
.order-details-page ul {
|
||||
padding-inline-start: 0px;
|
||||
}
|
||||
.order-details-page .order-details-area > div {
|
||||
flex: 1 0 auto;
|
||||
margin-bottom: 40px;
|
||||
margin-block-end: 1%;
|
||||
}
|
||||
.order-details-page .order-details-area li.title {
|
||||
margin: 10px 0 5px;
|
||||
font-weight: bold;
|
||||
}
|
||||
.order-details-page .order-details-area li:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.order-details-page .data-table {
|
||||
border: 1px solid;
|
||||
}
|
||||
.order-details-page .data-table th {
|
||||
border: 1px solid;
|
||||
padding: 5px 10px;
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.order-details-page .data-table td {
|
||||
border: 1px solid;
|
||||
padding: 5px 10px;
|
||||
}
|
||||
.order-details-page .data-table .sku,
|
||||
.order-details-page .data-table .picture,
|
||||
.order-details-page .data-table .unit-price,
|
||||
.order-details-page .data-table .quantity,
|
||||
.order-details-page .data-table .total {
|
||||
white-space: nowrap;
|
||||
text-align: center;
|
||||
}
|
||||
.order-details-page .data-table .unit-price,
|
||||
.order-details-page .data-table .quantity,
|
||||
.order-details-page .data-table .total {
|
||||
width: 15%;
|
||||
}
|
||||
.order-details-page .data-table label {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.order-details-page .section {
|
||||
margin: 30px 0;
|
||||
}
|
||||
.order-details-page .section .title {
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
|
||||
.order-details-page .section.totals {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
|
||||
.order-details-page .tax-shipping-info,
|
||||
.order-details-page .selected-checkout-attributes {
|
||||
margin: 20px 0;
|
||||
text-align:end;
|
||||
}
|
||||
|
||||
.order-details-page .cart-total-right {
|
||||
white-space: nowrap;
|
||||
}
|
||||
.order-details-page .cart-total td {
|
||||
padding-inline-start: 10px;
|
||||
padding-block: 5px;
|
||||
text-align: end;
|
||||
}
|
||||
.order-details-page td.cart-total-left {
|
||||
font-weight: bold;
|
||||
text-align: start;
|
||||
}
|
||||
|
||||
.order-details-page .total-info
|
||||
{
|
||||
min-width: 200px;
|
||||
}
|
||||
|
|
@ -0,0 +1,469 @@
|
|||
|
||||
@media all and (max-width: 1000px) {
|
||||
.inputs .gender,
|
||||
.inputs label {
|
||||
text-align: left;
|
||||
display: block;
|
||||
max-width: 400px;
|
||||
margin-inline: auto;
|
||||
}
|
||||
.inputs .gender span > * {
|
||||
margin: 0 6px 0 0;
|
||||
}
|
||||
.login-page .customer-blocks > div {
|
||||
max-width: 100%;
|
||||
}
|
||||
.header .header-upper {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
width: 100%;
|
||||
background: var(--dark-bg);
|
||||
padding: 10px;
|
||||
}
|
||||
.header .header-upper .header-logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 20px;
|
||||
}
|
||||
.header .header-upper .header-logo .header-menu-toggle {
|
||||
display: block;
|
||||
font-size: 26px;
|
||||
color: var(--dark);
|
||||
cursor: pointer;
|
||||
background: none;
|
||||
border: none;
|
||||
}
|
||||
.header .header-upper .header-logo > a {
|
||||
max-width: 110px;
|
||||
}
|
||||
.header .header-upper > div {
|
||||
order: 1;
|
||||
}
|
||||
.header .header-upper > .search-box {
|
||||
order: 2;
|
||||
width: 100%;
|
||||
padding-top: 10px;
|
||||
}
|
||||
.header .header-upper .search-box input.search-box-text {
|
||||
width: calc(100% - 46px);
|
||||
}
|
||||
.header .header-selectors-wrapper {
|
||||
display: none;
|
||||
}
|
||||
#topcartlink {
|
||||
margin: 0;
|
||||
}
|
||||
#topcartlink .cart-label {
|
||||
display: none;
|
||||
}
|
||||
.header-links-wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
.header-links > ul {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
.user-dropdown ul {
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
.user-dropdown .fa {
|
||||
line-height: 16px;
|
||||
}
|
||||
/*** GLOBAL TABLES ***/
|
||||
.cart {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.cart colgroup,
|
||||
.cart thead {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cart tbody {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.cart tr {
|
||||
display: block;
|
||||
float: left;
|
||||
width: 100%;
|
||||
margin: 40px 0 0;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.cart td {
|
||||
display: block;
|
||||
border: none;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.cart td.remove-from-cart {
|
||||
margin: 0 0 15px;
|
||||
border-bottom: 1px solid #ddd;
|
||||
background-color: #eee;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.cart td.product-picture {
|
||||
border-top: 1px solid #ddd;
|
||||
padding: 15px 10px 5px;
|
||||
}
|
||||
|
||||
.cart td.product {
|
||||
min-width: 0;
|
||||
border-bottom: 1px solid #ddd;
|
||||
padding: 5px 10px 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.cart td.quantity {
|
||||
display: block;
|
||||
padding: 0 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.cart td.quantity label {
|
||||
display: block;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.cart td.unit-price,
|
||||
.cart td.subtotal {
|
||||
display: inline-block;
|
||||
padding: 20px 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.order-details-page .data-table {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.order-details-page .data-table colgroup,
|
||||
.order-details-page .data-table thead {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tbody {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tr {
|
||||
display: block;
|
||||
float: left;
|
||||
width: 100%;
|
||||
margin: 40px 0 0;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.order-details-page .data-table td {
|
||||
display: block;
|
||||
border: none;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.order-details-page .data-table td.product,
|
||||
.order-details-page .data-table td.tracking-number {
|
||||
min-width: 0;
|
||||
border-bottom: 1px solid #ddd;
|
||||
padding: 5px 10px 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
/*** MOBILE NAVIGATION ***/
|
||||
|
||||
.menu-toggle {
|
||||
background: var(--theme-color) url('../images/menu-icon.png') right center no-repeat;
|
||||
padding: 15px;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.top-menu.notmobile {
|
||||
display: none;
|
||||
}
|
||||
.header-menu {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: -110vw; /* Initially hidden */
|
||||
width: 100%;
|
||||
max-width: 350px;
|
||||
height: 100%;
|
||||
background-color: #fff;
|
||||
box-shadow: 2px 0 5px rgba(0, 0, 0, 0.2);
|
||||
overflow-y: auto;
|
||||
transition: left 0.3s ease-in-out;
|
||||
z-index: 1000;
|
||||
padding: 40px 10px;
|
||||
border-radius: var(--itembox-picture-radius);
|
||||
border-top-left-radius: 0;
|
||||
}
|
||||
.close-header-menu {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 4px;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
padding: 2px;
|
||||
font-size: 18px;
|
||||
color: var(--theme-color);
|
||||
background: var(--dark-bg);
|
||||
border: none;
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
}
|
||||
.header-menu.show {
|
||||
left: 0; /* Slide in when class "show" is added */
|
||||
}
|
||||
.top-menu > li {
|
||||
position: relative;
|
||||
margin: 1px 0;
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
|
||||
.top-menu > li > a {
|
||||
display: block;
|
||||
min-height: 55px;
|
||||
padding: 18px;
|
||||
font-size: 15px;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.top-menu > li > a:focus {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.top-menu .sublist {
|
||||
background-color: #fff;
|
||||
padding: 0;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: -110vw;
|
||||
width: 100%;
|
||||
max-width: 350px;
|
||||
transition: all 0.3s ease-in-out;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
z-index: 1001;
|
||||
}
|
||||
.top-menu .sublist.active {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
|
||||
.top-menu .sublist li:not(:last-child) {
|
||||
border-bottom: 1px solid #ddd;
|
||||
position: relative;
|
||||
}
|
||||
.top-menu .sublist li a {
|
||||
display: block;
|
||||
padding: 15px 18px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.sublist-toggle {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 55px;
|
||||
height: 55px;
|
||||
border-left: 1px solid #fff;
|
||||
padding: 15px;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
color: var(--dark);
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
font-family: FontAwesome;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
.sublist-toggle::after {
|
||||
content: "\f061";
|
||||
font-weight: lighter;
|
||||
}
|
||||
.sublist .sublist-toggle {
|
||||
height: 49px;
|
||||
}
|
||||
|
||||
.sublist .sublist li {
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
|
||||
.sublist .sublist .sublist li {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.block-category-navigation {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.block-account-navigation {
|
||||
float: none;
|
||||
margin: auto !important;
|
||||
}
|
||||
|
||||
.write-review .review-rating {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.write-review .review-rating div.name-description {
|
||||
width: 100%;
|
||||
margin: 0 5px 0 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.product-review-box {
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.user-dropdown .user-dropdown-toggle {
|
||||
font-size: 0;
|
||||
line-height: 1;
|
||||
min-width: 70px;
|
||||
}
|
||||
.user-dropdown .fa {
|
||||
margin: 0;
|
||||
}
|
||||
.header-links li {
|
||||
margin: 0;
|
||||
}
|
||||
.top-menu .sublist .parent-links {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: stretch;
|
||||
background: var(--dark);
|
||||
color: var(--white);
|
||||
margin: 0;
|
||||
position: relative;
|
||||
}
|
||||
.top-menu .sublist .parent-links a {
|
||||
width: calc(100% - 30px);
|
||||
padding-block: 10px;
|
||||
}
|
||||
.top-menu .sublist .parent-links .close-sublist {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
padding: 5px;
|
||||
font-size: 18px;
|
||||
color: var(--white);
|
||||
background: var(--dark-bg);
|
||||
border: none;
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
line-height: 1;
|
||||
border-left: 1px solid #888;
|
||||
}
|
||||
/*side bar for filter on catalog page*/
|
||||
.sidebar-toggle-btn {
|
||||
background: none;
|
||||
border: none;
|
||||
font-size: 30px;
|
||||
color: #333;
|
||||
cursor: pointer;
|
||||
transition: color 0.3s ease;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
.sidebar-toggle-btn:hover {
|
||||
color: #007bff; /* Change to your preferred color on hover */
|
||||
}
|
||||
.side-2 {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: -102vw;
|
||||
width: 320px;
|
||||
max-width: 100%;
|
||||
height: 100%;
|
||||
background: #fff;
|
||||
transition: left 0.3s ease-in-out;
|
||||
z-index: 1001;
|
||||
padding: 50px 20px 20px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.side-2.sidebar-open {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
/* Sidebar close button styles */
|
||||
.side-2 .sidebar-close-btn {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 4px;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
padding: 2px;
|
||||
font-size: 18px;
|
||||
color: var(--theme-color);
|
||||
background: var(--dark-bg);
|
||||
border: 0;
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.side-2 .sidebar-close-btn:hover {
|
||||
color: #f44336; /* Red color when hovered */
|
||||
}
|
||||
|
||||
/* Overlay styles */
|
||||
.sidebar-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.sidebar-overlay.overlay-active {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
/*welcome topics*/
|
||||
.welcome-container {
|
||||
grid-template-columns: 1fr;
|
||||
text-align: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.welcome-text {
|
||||
text-align: center;
|
||||
background: rgba(255,255,255,0.75);
|
||||
padding: 20px;
|
||||
}
|
||||
/*********** Homepage Features ***********/
|
||||
.feature-item {
|
||||
flex-direction: column !important;
|
||||
text-align: center;
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.feature-item img, .feature-content {
|
||||
width: 100%;
|
||||
}
|
||||
.home-page-category-grid .title, .sub-category-grid .title {
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,503 @@
|
|||
|
||||
@media all and (max-width: 1000px) {
|
||||
.inputs .gender,
|
||||
.inputs label {
|
||||
text-align: right;
|
||||
display: block;
|
||||
max-width: 400px;
|
||||
margin-inline: auto;
|
||||
}
|
||||
|
||||
.inputs .gender span > * {
|
||||
margin: 0 0 0 6px;
|
||||
}
|
||||
|
||||
.login-page .customer-blocks > div {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.header .header-upper {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
width: 100%;
|
||||
background: var(--dark-bg);
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.header .header-upper .header-logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.header .header-upper .header-logo .header-menu-toggle {
|
||||
display: block;
|
||||
font-size: 26px;
|
||||
color: var(--dark);
|
||||
cursor: pointer;
|
||||
background: none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.header .header-upper .header-logo > a {
|
||||
max-width: 110px;
|
||||
}
|
||||
|
||||
.header .header-upper > div {
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.header .header-upper > .search-box {
|
||||
order: 2;
|
||||
width: 100%;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.header .header-upper .search-box input.search-box-text {
|
||||
width: calc(100% - 46px);
|
||||
}
|
||||
|
||||
.header .header-selectors-wrapper {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#topcartlink {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#topcartlink .cart-label {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.header-links-wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.header-links > ul {
|
||||
display: flex;
|
||||
justify-content: flex-end;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.user-dropdown ul {
|
||||
transform: translateX(50%);
|
||||
}
|
||||
|
||||
.user-dropdown .fa {
|
||||
line-height: 16px;
|
||||
}
|
||||
/*** GLOBAL TABLES ***/
|
||||
.cart {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.cart colgroup,
|
||||
.cart thead {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.cart tbody {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.cart tr {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 100%;
|
||||
margin: 40px 0 0;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.cart td {
|
||||
display: block;
|
||||
border: none;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.cart td.remove-from-cart {
|
||||
margin: 0 0 15px;
|
||||
border-bottom: 1px solid #ddd;
|
||||
background-color: #eee;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.cart td.product-picture {
|
||||
border-top: 1px solid #ddd;
|
||||
padding: 15px 10px 5px;
|
||||
}
|
||||
|
||||
.cart td.product {
|
||||
min-width: 0;
|
||||
border-bottom: 1px solid #ddd;
|
||||
padding: 5px 10px 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.cart td.quantity {
|
||||
display: block;
|
||||
padding: 0 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.cart td.quantity label {
|
||||
display: block;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.cart td.unit-price,
|
||||
.cart td.subtotal {
|
||||
display: inline-block;
|
||||
padding: 20px 10px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.order-details-page .data-table {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.order-details-page .data-table colgroup,
|
||||
.order-details-page .data-table thead {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tbody {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tr {
|
||||
display: block;
|
||||
float: right;
|
||||
width: 100%;
|
||||
margin: 40px 0 0;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.order-details-page .data-table td {
|
||||
display: block;
|
||||
border: none;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.order-details-page .data-table td.product,
|
||||
.order-details-page .data-table td.tracking-number {
|
||||
min-width: 0;
|
||||
border-bottom: 1px solid #ddd;
|
||||
padding: 5px 10px 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
/*** MOBILE NAVIGATION ***/
|
||||
|
||||
.menu-toggle {
|
||||
background: var(--theme-color) url('../images/menu-icon.png') left center no-repeat;
|
||||
padding: 15px;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
color: #fff;
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.top-menu.notmobile {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.header-menu {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: -110vw; /* Initially hidden */
|
||||
width: 100%;
|
||||
max-width: 350px;
|
||||
height: 100%;
|
||||
background-color: #fff;
|
||||
box-shadow: -2px 0 5px rgba(0, 0, 0, 0.2);
|
||||
overflow-y: auto;
|
||||
transition: right 0.3s ease-in-out;
|
||||
z-index: 1000;
|
||||
padding: 40px 10px;
|
||||
border-radius: var(--itembox-picture-radius);
|
||||
border-top-right-radius: 0;
|
||||
}
|
||||
|
||||
.close-header-menu {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
left: 4px;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
padding: 2px;
|
||||
font-size: 18px;
|
||||
color: var(--theme-color);
|
||||
background: var(--dark-bg);
|
||||
border: none;
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.header-menu.show {
|
||||
right: 0; /* Slide in when class "show" is added */
|
||||
}
|
||||
|
||||
.top-menu > li {
|
||||
position: relative;
|
||||
margin: 1px 0;
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
|
||||
.top-menu > li > a {
|
||||
display: block;
|
||||
min-height: 55px;
|
||||
padding: 18px;
|
||||
font-size: 15px;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
.top-menu > li > a:focus {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.top-menu .sublist {
|
||||
background-color: #fff;
|
||||
padding: 0;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: -110vw;
|
||||
width: 100%;
|
||||
max-width: 350px;
|
||||
transition: all 0.3s ease-in-out;
|
||||
height: 100%;
|
||||
overflow-y: auto;
|
||||
z-index: 1001;
|
||||
}
|
||||
|
||||
.top-menu .sublist.active {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
|
||||
.top-menu .sublist li:not(:last-child) {
|
||||
border-bottom: 1px solid #ddd;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.top-menu .sublist li a {
|
||||
display: block;
|
||||
padding: 15px 18px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.sublist-toggle {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 55px;
|
||||
height: 55px;
|
||||
border-right: 1px solid #fff;
|
||||
padding: 15px;
|
||||
font-size: 15px;
|
||||
font-weight: bold;
|
||||
color: var(--dark);
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
font-family: FontAwesome;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.sublist-toggle::after {
|
||||
content: "\f061";
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
||||
.sublist .sublist-toggle {
|
||||
height: 49px;
|
||||
}
|
||||
|
||||
.sublist .sublist li {
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
|
||||
.sublist .sublist .sublist li {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.block-category-navigation {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.block-account-navigation {
|
||||
float: none;
|
||||
margin: auto !important;
|
||||
}
|
||||
|
||||
.write-review .review-rating {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.write-review .review-rating div.name-description {
|
||||
width: 100%;
|
||||
margin: 0 0 0 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.product-review-box {
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
.page-title {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.user-dropdown .user-dropdown-toggle {
|
||||
font-size: 0;
|
||||
line-height: 1;
|
||||
min-width: 70px;
|
||||
}
|
||||
|
||||
.user-dropdown .fa {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.header-links li {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.top-menu .sublist .parent-links {
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: stretch;
|
||||
background: var(--dark);
|
||||
color: var(--white);
|
||||
margin: 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.top-menu .sublist .parent-links a {
|
||||
width: calc(100% - 30px);
|
||||
padding-block: 10px;
|
||||
}
|
||||
|
||||
.top-menu .sublist .parent-links .close-sublist {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
padding: 5px;
|
||||
font-size: 18px;
|
||||
color: var(--white);
|
||||
background: var(--dark-bg);
|
||||
border: none;
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
line-height: 1;
|
||||
border-right: 1px solid #888;
|
||||
}
|
||||
/*side bar for filter on catalog page*/
|
||||
.sidebar-toggle-btn {
|
||||
background: none;
|
||||
border: none;
|
||||
font-size: 30px;
|
||||
color: #333;
|
||||
cursor: pointer;
|
||||
transition: color 0.3s ease;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.sidebar-toggle-btn:hover {
|
||||
color: #007bff; /* Change to your preferred color on hover */
|
||||
}
|
||||
|
||||
.side-2 {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: -102vw;
|
||||
width: 320px;
|
||||
max-width: 100%;
|
||||
height: 100%;
|
||||
background: #fff;
|
||||
transition: right 0.3s ease-in-out;
|
||||
z-index: 1001;
|
||||
padding: 50px 20px 20px;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.side-2.sidebar-open {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
/* Sidebar close button styles */
|
||||
.side-2 .sidebar-close-btn {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
left: 4px;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
padding: 2px;
|
||||
font-size: 18px;
|
||||
color: var(--theme-color);
|
||||
background: var(--dark-bg);
|
||||
border: 0;
|
||||
text-transform: uppercase;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.side-2 .sidebar-close-btn:hover {
|
||||
color: #f44336; /* Red color when hovered */
|
||||
}
|
||||
|
||||
/* Overlay styles */
|
||||
.sidebar-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
transition: opacity 0.3s ease-in-out;
|
||||
z-index: 1000;
|
||||
}
|
||||
|
||||
.sidebar-overlay.overlay-active {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
/*welcome topics*/
|
||||
.welcome-container {
|
||||
grid-template-columns: 1fr;
|
||||
text-align: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.welcome-text {
|
||||
text-align: center;
|
||||
background: rgba(255,255,255,0.75);
|
||||
padding: 20px;
|
||||
}
|
||||
/*********** Homepage Features ***********/
|
||||
.feature-item {
|
||||
flex-direction: column !important;
|
||||
text-align: center;
|
||||
gap: 20px;
|
||||
}
|
||||
|
||||
.feature-item img, .feature-content {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.home-page-category-grid .title, .sub-category-grid .title {
|
||||
font-size: 18px;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,134 @@
|
|||
|
||||
@media all and (max-width: 768px) {
|
||||
|
||||
|
||||
.header-selectors-wrapper {
|
||||
border-bottom: 1px solid #ddd;
|
||||
padding: 10px 0;
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
}
|
||||
.header-selectors-wrapper > div {
|
||||
flex-grow: 1;
|
||||
}
|
||||
.spice-categories .intro-text {
|
||||
font-size: 1rem;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.spice-categories .spice-item {
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.spice-categories .spice-item img,
|
||||
.spice-categories .spice-text {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.spice-categories .spice-text {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.spice-categories .spice-text h3 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.spice-categories .btn {
|
||||
padding: 10px 18px;
|
||||
}
|
||||
|
||||
.review-rating .name-description {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.write-review .review-rating div {
|
||||
text-align: center;
|
||||
padding-bottom: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
|
||||
/*** ESTIMATE SHIPPING POPUP ***/
|
||||
|
||||
|
||||
.shipping-address {
|
||||
flex-flow: column;
|
||||
}
|
||||
|
||||
.address-item {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.estimate-shipping-row-item.address-item + .estimate-shipping-row-item.address-item {
|
||||
padding-left: 0px;
|
||||
padding-top: 8px;
|
||||
}
|
||||
.home-page-category-grid .title, .sub-category-grid .title {
|
||||
font-size: 16px;
|
||||
width: 100%;
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
/*********** Category Box ***********/
|
||||
.home-page-category-grid .item-grid .item-box:first-child {
|
||||
width: 100%;
|
||||
}
|
||||
.home-page-category-grid .item-grid .item-box:nth-child(2n+1) {
|
||||
clear: none;
|
||||
}
|
||||
.home-page-category-grid .item-grid .item-box:nth-child(2n+2) {
|
||||
clear: both;
|
||||
}
|
||||
.category-grid .item-grid .item-box {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
/*********** product-box ***********/
|
||||
.item-box .details {
|
||||
padding: 0 5px;
|
||||
}
|
||||
.item-box .product-item .product-title {
|
||||
font-size: 16px;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2; /* Limits to 2 lines */
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: normal;
|
||||
max-width: 100%; /* Adjust as needed */
|
||||
height: 50px;
|
||||
}
|
||||
.item-box .buttons {
|
||||
gap: 0;
|
||||
}
|
||||
.item-box .product-box-add-to-cart-button,
|
||||
.item-box .add-to-compare-list-button {
|
||||
font-size: 12px;
|
||||
}
|
||||
.item-box .product-box-add-to-cart-button::before,
|
||||
.item-box .add-to-compare-list-button::before {
|
||||
font-size: 12px;
|
||||
}
|
||||
.container {
|
||||
padding-inline: 30px;
|
||||
}
|
||||
|
||||
|
||||
/*********** footer ***********/
|
||||
.follow-us {
|
||||
text-align: left;
|
||||
}
|
||||
.follow-us .newsletter-email {
|
||||
padding-bottom: 0;
|
||||
border: none;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.follow-us > div {
|
||||
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.follow-us .social li:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,147 @@
|
|||
|
||||
@media all and (max-width: 768px) {
|
||||
|
||||
|
||||
.header-selectors-wrapper {
|
||||
border-bottom: 1px solid #ddd;
|
||||
padding: 10px 0;
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.header-selectors-wrapper > div {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.spice-categories .intro-text {
|
||||
font-size: 1rem;
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.spice-categories .spice-item {
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.spice-categories .spice-item img,
|
||||
.spice-categories .spice-text {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.spice-categories .spice-text {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.spice-categories .spice-text h3 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
.spice-categories .btn {
|
||||
padding: 10px 18px;
|
||||
}
|
||||
|
||||
.review-rating .name-description {
|
||||
text-align: center;
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.write-review .review-rating div {
|
||||
text-align: center;
|
||||
padding-bottom: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
|
||||
/*** ESTIMATE SHIPPING POPUP ***/
|
||||
|
||||
|
||||
.shipping-address {
|
||||
flex-flow: column;
|
||||
}
|
||||
|
||||
.address-item {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.estimate-shipping-row-item.address-item + .estimate-shipping-row-item.address-item {
|
||||
padding-right: 0px;
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
.home-page-category-grid .title, .sub-category-grid .title {
|
||||
font-size: 16px;
|
||||
width: 100%;
|
||||
background: rgba(0, 0, 0, 0.4);
|
||||
}
|
||||
/*********** Category Box ***********/
|
||||
.home-page-category-grid .item-grid .item-box:first-child {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.home-page-category-grid .item-grid .item-box:nth-child(2n+1) {
|
||||
clear: none;
|
||||
}
|
||||
|
||||
.home-page-category-grid .item-grid .item-box:nth-child(2n+2) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.category-grid .item-grid .item-box {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
/*********** product-box ***********/
|
||||
.item-box .details {
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
.item-box .product-item .product-title {
|
||||
font-size: 16px;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 2; /* Limits to 2 lines */
|
||||
-webkit-box-orient: vertical;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: normal;
|
||||
max-width: 100%; /* Adjust as needed */
|
||||
height: 50px;
|
||||
}
|
||||
|
||||
.item-box .buttons {
|
||||
gap: 0;
|
||||
}
|
||||
|
||||
.item-box .product-box-add-to-cart-button,
|
||||
.item-box .add-to-compare-list-button {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.item-box .product-box-add-to-cart-button::before,
|
||||
.item-box .add-to-compare-list-button::before {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.container {
|
||||
padding-inline: 30px;
|
||||
}
|
||||
|
||||
|
||||
/*********** footer ***********/
|
||||
.follow-us {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.follow-us .newsletter-email {
|
||||
padding-bottom: 0;
|
||||
border: none;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.follow-us > div {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.follow-us .social li:first-child {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
@media all and (min-width: 1240px) {
|
||||
:root {
|
||||
--layout-outer-width: 1180px;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
@media all and (min-width: 1240px) {
|
||||
:root {
|
||||
--layout-outer-width: 1180px;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
|
||||
@media all and (min-width: 1367px) {
|
||||
:root {
|
||||
--layout-outer-width : 1300px;
|
||||
}
|
||||
|
||||
/*** GLOBAL STYLES ***/
|
||||
|
||||
|
||||
html:not(.html-home-page) .master-wrapper-content,
|
||||
.html-home-page .topic-block,
|
||||
.html-home-page .home-page-category-grid,
|
||||
.html-home-page .news-list-homepage,
|
||||
.html-home-page .home-page-polls,
|
||||
.html-home-page .home-page-product-grid {
|
||||
width: var(--layout-outer-width);
|
||||
}
|
||||
|
||||
.inputs label {
|
||||
width: 430px;
|
||||
}
|
||||
|
||||
.center-2 .inputs label {
|
||||
width: 213px;
|
||||
}
|
||||
|
||||
.inputs.accept-consent label {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
|
||||
/*** HEADER ***/
|
||||
|
||||
|
||||
.header .header-upper {
|
||||
width: var(--layout-outer-width);
|
||||
}
|
||||
|
||||
|
||||
/*** NAVIGATION ***/
|
||||
|
||||
|
||||
.header-menu .top-menu {
|
||||
width: var(--layout-outer-width);
|
||||
}
|
||||
|
||||
.header-menu > ul > li {
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.header-menu > ul > li > a,
|
||||
.header-menu > ul > li > span {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
|
||||
/*** FOOTER ***/
|
||||
|
||||
|
||||
.footer-upper {
|
||||
width: var(--layout-outer-width);
|
||||
padding: 35px 30px;
|
||||
}
|
||||
|
||||
|
||||
.footer-lower {
|
||||
width: var(--layout-outer-width);
|
||||
padding: 25px 20px;
|
||||
}
|
||||
|
||||
|
||||
/*** PRODUCT REVIEWS ***/
|
||||
|
||||
|
||||
.product-review-item .review-title {
|
||||
max-width: 1050px;
|
||||
}
|
||||
|
||||
.write-review .review-rating div.name-description {
|
||||
margin: 0 5px 0 0;
|
||||
min-width: 430px;
|
||||
}
|
||||
|
||||
|
||||
/*** REGISTRATION, LOGIN, ACCOUNT ***/
|
||||
|
||||
|
||||
.login-page .returning-wrapper input[type="text"],
|
||||
.login-page .returning-wrapper input[type="email"],
|
||||
.login-page .returning-wrapper input[type="password"] {
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.registration-page .vat-note {
|
||||
margin-left: 385px;
|
||||
}
|
||||
|
||||
.customer-info-page .vat-note,
|
||||
.customer-info-page .vat-status,
|
||||
.customer-info-page .email-to-revalidate-note {
|
||||
margin-left: 225px;
|
||||
}
|
||||
|
||||
/*** SHOPPING CART ***/
|
||||
|
||||
|
||||
.cart-footer .totals {
|
||||
width: 395px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.cart-footer .cart-collaterals {
|
||||
width: 760px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.cart-footer .cart-collaterals .deals {
|
||||
float: left;
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.cart-footer .cart-collaterals .shipping {
|
||||
float: right;
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.cart-footer .estimate-shipping .inputs label {
|
||||
display: inline-block;
|
||||
width: 35%;
|
||||
}
|
||||
|
||||
.cart-footer .estimate-shipping .inputs input,
|
||||
.cart-footer .estimate-shipping .inputs select {
|
||||
width: 65%;
|
||||
}
|
||||
|
||||
|
||||
/*** CHECKOUT ***/
|
||||
|
||||
|
||||
.shipping-method .method-list li,
|
||||
.payment-method .method-list li {
|
||||
margin: 20px 1%;
|
||||
}
|
||||
|
||||
.payment-info .info td:first-child {
|
||||
width: 375px !important;
|
||||
}
|
||||
|
||||
.payment-info .info td:only-child {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
|
||||
/*** FORUM & PROFILE ***/
|
||||
|
||||
|
||||
.forum-actions .pager,
|
||||
.topic-actions .pager {
|
||||
max-width: 600px !important;
|
||||
}
|
||||
|
||||
.topic-post .post-text {
|
||||
width: 930px;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,167 @@
|
|||
|
||||
@media all and (min-width: 1367px) {
|
||||
:root {
|
||||
--layout-outer-width: 1300px;
|
||||
}
|
||||
|
||||
/*** GLOBAL STYLES ***/
|
||||
|
||||
|
||||
html:not(.html-home-page) .master-wrapper-content,
|
||||
.html-home-page .topic-block,
|
||||
.html-home-page .home-page-category-grid,
|
||||
.html-home-page .news-list-homepage,
|
||||
.html-home-page .home-page-polls,
|
||||
.html-home-page .home-page-product-grid {
|
||||
width: var(--layout-outer-width);
|
||||
}
|
||||
|
||||
.inputs label {
|
||||
width: 430px;
|
||||
}
|
||||
|
||||
.center-2 .inputs label {
|
||||
width: 213px;
|
||||
}
|
||||
|
||||
.inputs.accept-consent label {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
|
||||
/*** HEADER ***/
|
||||
|
||||
|
||||
.header .header-upper {
|
||||
width: var(--layout-outer-width);
|
||||
}
|
||||
|
||||
|
||||
/*** NAVIGATION ***/
|
||||
|
||||
|
||||
.header-menu .top-menu {
|
||||
width: var(--layout-outer-width);
|
||||
}
|
||||
|
||||
.header-menu > ul > li {
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.header-menu > ul > li > a,
|
||||
.header-menu > ul > li > span {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
|
||||
/*** FOOTER ***/
|
||||
|
||||
|
||||
.footer-upper {
|
||||
width: var(--layout-outer-width);
|
||||
padding: 35px 30px;
|
||||
}
|
||||
|
||||
|
||||
.footer-lower {
|
||||
width: var(--layout-outer-width);
|
||||
padding: 25px 20px;
|
||||
}
|
||||
|
||||
|
||||
/*** PRODUCT REVIEWS ***/
|
||||
|
||||
|
||||
.product-review-item .review-title {
|
||||
max-width: 1050px;
|
||||
}
|
||||
|
||||
.write-review .review-rating div.name-description {
|
||||
margin: 0 0 0 5px;
|
||||
min-width: 430px;
|
||||
}
|
||||
|
||||
|
||||
/*** REGISTRATION, LOGIN, ACCOUNT ***/
|
||||
|
||||
|
||||
.login-page .returning-wrapper input[type="text"],
|
||||
.login-page .returning-wrapper input[type="email"],
|
||||
.login-page .returning-wrapper input[type="password"] {
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.registration-page .vat-note {
|
||||
margin-right: 385px;
|
||||
}
|
||||
|
||||
.customer-info-page .vat-note,
|
||||
.customer-info-page .vat-status,
|
||||
.customer-info-page .email-to-revalidate-note {
|
||||
margin-right: 225px;
|
||||
}
|
||||
|
||||
/*** SHOPPING CART ***/
|
||||
|
||||
|
||||
.cart-footer .totals {
|
||||
width: 395px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.cart-footer .cart-collaterals {
|
||||
width: 760px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.cart-footer .cart-collaterals .deals {
|
||||
float: right;
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.cart-footer .cart-collaterals .shipping {
|
||||
float: left;
|
||||
width: 360px;
|
||||
}
|
||||
|
||||
.cart-footer .estimate-shipping .inputs label {
|
||||
display: inline-block;
|
||||
width: 35%;
|
||||
}
|
||||
|
||||
.cart-footer .estimate-shipping .inputs input,
|
||||
.cart-footer .estimate-shipping .inputs select {
|
||||
width: 65%;
|
||||
}
|
||||
|
||||
|
||||
/*** CHECKOUT ***/
|
||||
|
||||
|
||||
.shipping-method .method-list li,
|
||||
.payment-method .method-list li {
|
||||
margin: 20px 1%;
|
||||
}
|
||||
|
||||
.payment-info .info td:first-child {
|
||||
width: 375px !important;
|
||||
}
|
||||
|
||||
.payment-info .info td:only-child {
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
|
||||
/*** FORUM & PROFILE ***/
|
||||
|
||||
|
||||
.forum-actions .pager,
|
||||
.topic-actions .pager {
|
||||
max-width: 600px !important;
|
||||
}
|
||||
|
||||
.topic-post .post-text {
|
||||
width: 930px;
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,191 @@
|
|||
|
||||
@media all and (min-width: 481px) {
|
||||
:root {
|
||||
--layout-outer-width: 92%;
|
||||
}
|
||||
|
||||
/*** GLOBAL ***/
|
||||
|
||||
|
||||
html:not(.html-home-page) .master-wrapper-content,
|
||||
.html-home-page .topic-block,
|
||||
.html-home-page .home-page-category-grid,
|
||||
.html-home-page .news-list-homepage,
|
||||
.html-home-page .home-page-polls,
|
||||
.html-home-page .home-page-product-grid {
|
||||
width: var(--layout-outer-width);
|
||||
}
|
||||
|
||||
|
||||
/*** GLOBAL TABLES ***/
|
||||
|
||||
|
||||
.cart tr {
|
||||
width: 46%;
|
||||
margin: 40px 2% 0;
|
||||
}
|
||||
|
||||
.cart tr:nth-child(2n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tr {
|
||||
width: 46%;
|
||||
margin: 40px 2% 0;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tr:nth-child(2n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
|
||||
/*** HEADER ***/
|
||||
|
||||
|
||||
.header-selectors-wrapper > div {
|
||||
display: inline-block;
|
||||
width: 30%;
|
||||
margin: 10px auto;
|
||||
}
|
||||
|
||||
.search-box input.search-box-text {
|
||||
width: 280px;
|
||||
}
|
||||
|
||||
.ui-autocomplete {
|
||||
width: 280px !important;
|
||||
}
|
||||
|
||||
.ui-autocomplete img {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
|
||||
/*** FOOTER ***/
|
||||
|
||||
.follow-us,
|
||||
.footer-block {
|
||||
width: 85%;
|
||||
}
|
||||
|
||||
.newsletter-email input[type="text"] {
|
||||
width: 240px;
|
||||
}
|
||||
|
||||
|
||||
/*** CATEGORY ***/
|
||||
|
||||
|
||||
.item-box {
|
||||
width: 48%;
|
||||
margin: 0 1% 50px;
|
||||
}
|
||||
|
||||
.item-box:nth-child(2n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.item-box .product-rating-box {
|
||||
margin: 0 0 15px;
|
||||
}
|
||||
|
||||
.item-box .prices {
|
||||
min-height: 40px;
|
||||
}
|
||||
|
||||
.item-box .product-title {
|
||||
min-height: 52px;
|
||||
font-size: 22px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
|
||||
/*** PRODUCT PAGE ***/
|
||||
|
||||
|
||||
.overview-buttons div {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
margin: 0 1px 2px;
|
||||
}
|
||||
|
||||
|
||||
/*** WISHLIST ***/
|
||||
|
||||
|
||||
.wishlist-content .button-2 {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
min-width: 140px;
|
||||
margin: 0 1px 5px;
|
||||
}
|
||||
|
||||
|
||||
/*** TOPICS ***/
|
||||
|
||||
|
||||
.enter-password-form input[type="password"] {
|
||||
width: 260px;
|
||||
}
|
||||
|
||||
|
||||
/*** FORUM & PROFILE ***/
|
||||
|
||||
.forums-header {
|
||||
background-color: #f9f9f9;
|
||||
padding: 30px 20px 20px;
|
||||
}
|
||||
|
||||
.ui-tabs-nav li {
|
||||
display: inline-block;
|
||||
min-width: 150px;
|
||||
margin: 0 5px -1px;
|
||||
/*override jQuery UI styles, do not delete doubled properties*/
|
||||
margin: 0 5px -1px !important;
|
||||
}
|
||||
|
||||
.private-messages-page .buttons .button-1,
|
||||
.private-messages-page .buttons .button-2,
|
||||
.private-message-view-page .buttons .button-1,
|
||||
.private-message-view-page .buttons .button-2 {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
margin: 1px;
|
||||
}
|
||||
|
||||
.topic-post .post-text {
|
||||
float: left;
|
||||
width: 90.5%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.forum-group .forum-table th.latest-post,
|
||||
.forum-group .forum-table th.topics,
|
||||
.forum-group .forum-table th.posts,
|
||||
.forum-group .forum-table td.latest-post,
|
||||
.forum-group .forum-table td.topics,
|
||||
.forum-group .forum-table td.posts {
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.topic-group .forum-table th.latest-post,
|
||||
.topic-group .forum-table td.latest-post {
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.forum-table td.image {
|
||||
max-width: 40px;
|
||||
}
|
||||
|
||||
.forum-table td.image div {
|
||||
max-width: 100%;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
|
||||
/*** ESTIMATE SHIPPING POPUP ***/
|
||||
|
||||
.estimate-shipping-popup {
|
||||
padding: 25px;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,191 @@
|
|||
|
||||
@media all and (min-width: 481px) {
|
||||
:root {
|
||||
--layout-outer-width: 92%;
|
||||
}
|
||||
|
||||
/*** GLOBAL ***/
|
||||
|
||||
|
||||
html:not(.html-home-page) .master-wrapper-content,
|
||||
.html-home-page .topic-block,
|
||||
.html-home-page .home-page-category-grid,
|
||||
.html-home-page .news-list-homepage,
|
||||
.html-home-page .home-page-polls,
|
||||
.html-home-page .home-page-product-grid {
|
||||
width: var(--layout-outer-width);
|
||||
}
|
||||
|
||||
|
||||
/*** GLOBAL TABLES ***/
|
||||
|
||||
|
||||
.cart tr {
|
||||
width: 46%;
|
||||
margin: 40px 2% 0;
|
||||
}
|
||||
|
||||
.cart tr:nth-child(2n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tr {
|
||||
width: 46%;
|
||||
margin: 40px 2% 0;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tr:nth-child(2n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
|
||||
/*** HEADER ***/
|
||||
|
||||
|
||||
.header-selectors-wrapper > div {
|
||||
display: inline-block;
|
||||
width: 30%;
|
||||
margin: 10px auto;
|
||||
}
|
||||
|
||||
.search-box input.search-box-text {
|
||||
width: 280px;
|
||||
}
|
||||
|
||||
.ui-autocomplete {
|
||||
width: 280px !important;
|
||||
}
|
||||
|
||||
.ui-autocomplete img {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
|
||||
/*** FOOTER ***/
|
||||
|
||||
.follow-us,
|
||||
.footer-block {
|
||||
width: 85%;
|
||||
}
|
||||
|
||||
.newsletter-email input[type="text"] {
|
||||
width: 240px;
|
||||
}
|
||||
|
||||
|
||||
/*** CATEGORY ***/
|
||||
|
||||
|
||||
.item-box {
|
||||
width: 48%;
|
||||
margin: 0 1% 50px;
|
||||
}
|
||||
|
||||
.item-box:nth-child(2n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.item-box .product-rating-box {
|
||||
margin: 0 0 15px;
|
||||
}
|
||||
|
||||
.item-box .prices {
|
||||
min-height: 40px;
|
||||
}
|
||||
|
||||
.item-box .product-title {
|
||||
min-height: 52px;
|
||||
font-size: 22px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
|
||||
/*** PRODUCT PAGE ***/
|
||||
|
||||
|
||||
.overview-buttons div {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
margin: 0 1px 2px;
|
||||
}
|
||||
|
||||
|
||||
/*** WISHLIST ***/
|
||||
|
||||
|
||||
.wishlist-content .button-2 {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
min-width: 140px;
|
||||
margin: 0 1px 5px;
|
||||
}
|
||||
|
||||
|
||||
/*** TOPICS ***/
|
||||
|
||||
|
||||
.enter-password-form input[type="password"] {
|
||||
width: 260px;
|
||||
}
|
||||
|
||||
|
||||
/*** FORUM & PROFILE ***/
|
||||
|
||||
.forums-header {
|
||||
background-color: #f9f9f9;
|
||||
padding: 30px 20px 20px;
|
||||
}
|
||||
|
||||
.ui-tabs-nav li {
|
||||
display: inline-block;
|
||||
min-width: 150px;
|
||||
margin: 0 5px -1px;
|
||||
/*override jQuery UI styles, do not delete doubled properties*/
|
||||
margin: 0 5px -1px !important;
|
||||
}
|
||||
|
||||
.private-messages-page .buttons .button-1,
|
||||
.private-messages-page .buttons .button-2,
|
||||
.private-message-view-page .buttons .button-1,
|
||||
.private-message-view-page .buttons .button-2 {
|
||||
display: inline-block;
|
||||
width: auto;
|
||||
margin: 1px;
|
||||
}
|
||||
|
||||
.topic-post .post-text {
|
||||
float: right;
|
||||
width: 90.5%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.forum-group .forum-table th.latest-post,
|
||||
.forum-group .forum-table th.topics,
|
||||
.forum-group .forum-table th.posts,
|
||||
.forum-group .forum-table td.latest-post,
|
||||
.forum-group .forum-table td.topics,
|
||||
.forum-group .forum-table td.posts {
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.topic-group .forum-table th.latest-post,
|
||||
.topic-group .forum-table td.latest-post {
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.forum-table td.image {
|
||||
max-width: 40px;
|
||||
}
|
||||
|
||||
.forum-table td.image div {
|
||||
max-width: 100%;
|
||||
background-size: contain;
|
||||
}
|
||||
|
||||
|
||||
/*** ESTIMATE SHIPPING POPUP ***/
|
||||
|
||||
.estimate-shipping-popup {
|
||||
padding: 25px;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,780 @@
|
|||
|
||||
@media all and (min-width: 769px) {
|
||||
:root {
|
||||
--layout-outer-width: 94%;
|
||||
}
|
||||
/* Reverse Layout for Even Items */
|
||||
.spice-categories .spice-item:nth-child(even) {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
/**** GLOBAL ***/
|
||||
|
||||
|
||||
html:not(.html-home-page) .master-wrapper-content,
|
||||
.html-home-page .topic-block,
|
||||
.html-home-page .home-page-category-grid,
|
||||
.html-home-page .news-list-homepage,
|
||||
.html-home-page .home-page-polls,
|
||||
.html-home-page .home-page-product-grid {
|
||||
width: var(--layout-outer-width);
|
||||
}
|
||||
|
||||
.home-page-polls li {
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
|
||||
/**** GLOBAL TABLES ***/
|
||||
|
||||
|
||||
.cart tr {
|
||||
width: 31.33333%;
|
||||
margin: 40px 1% 0;
|
||||
}
|
||||
|
||||
.cart tr:nth-child(2n+1) {
|
||||
clear: none;
|
||||
}
|
||||
|
||||
.cart tr:nth-child(3n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tr {
|
||||
width: 31.33333%;
|
||||
margin: 40px 1% 0;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tr:nth-child(2n+1) {
|
||||
clear: none;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tr:nth-child(3n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
|
||||
/*** HEADER ***/
|
||||
|
||||
|
||||
.header-selectors-wrapper > div {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
|
||||
/*** FOOTER ***/
|
||||
|
||||
|
||||
.footer-block {
|
||||
display: inline-block;
|
||||
width: 25.33333%;
|
||||
margin: 0 4%;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.footer-block .title {
|
||||
margin: 0 0 15px;
|
||||
background: none;
|
||||
padding: 0;
|
||||
cursor: auto;
|
||||
}
|
||||
|
||||
.footer-block .list {
|
||||
display: block !important; /* prevents toggle display:none on resize */
|
||||
background: none;
|
||||
padding: 0;
|
||||
}
|
||||
.footer-block .title strong {
|
||||
font-weight: 700;
|
||||
}
|
||||
.footer-block .list li {
|
||||
padding: 5px 0;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.footer-block .list a {
|
||||
display: inline;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
/*footer ui*/
|
||||
.follow-us {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 30px;
|
||||
flex-wrap: wrap;
|
||||
padding-block: 40px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.follow-us > div {
|
||||
width: calc(33% - 20px);
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.follow-us .title {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.newsletter-email {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 0;
|
||||
border: 0;
|
||||
}
|
||||
/*** Homepage Categories TABLES ***/
|
||||
/* Target only the home page category grid */
|
||||
.home-page-category-grid .category-item {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.home-page-category-grid .item-box .picture,
|
||||
.home-page-category-grid .item-box .picture a {
|
||||
position: static;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.home-page-category-grid .item-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(6, 1fr);
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
/* Style for each item */
|
||||
.home-page-category-grid .item-grid .item-box {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
grid-column: span 2;
|
||||
grid-row: span 1;
|
||||
}
|
||||
|
||||
.home-page-category-grid .item-box:nth-child(5n + 4),
|
||||
.home-page-category-grid .item-box:nth-child(5n + 5) {
|
||||
grid-column: span 3;
|
||||
grid-row: span 1;
|
||||
}
|
||||
/* Every first item in a set of 5 spans 2 columns and 2 rows */
|
||||
.home-page-category-grid .item-box:nth-child(5n + 1) {
|
||||
grid-column: span 4;
|
||||
grid-row: span 2;
|
||||
}
|
||||
|
||||
/*** CATEGORY ***/
|
||||
|
||||
|
||||
.product-selectors {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.product-selectors .product-viewmode {
|
||||
display: inline-block;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.product-selectors .product-viewmode span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.product-selectors .product-viewmode a {
|
||||
display: inline-block;
|
||||
width: 24px;
|
||||
height: 32px;
|
||||
margin: 0 0 0 12px;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.product-selectors .product-viewmode a.grid {
|
||||
background-image: url('../images/view-grid.png');
|
||||
}
|
||||
|
||||
.product-selectors .product-viewmode a.list {
|
||||
background-image: url('../images/view-list.png');
|
||||
}
|
||||
|
||||
.product-selectors .product-viewmode a.selected {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.item-box {
|
||||
width: 47%;
|
||||
margin: 0 1.5% 50px;
|
||||
}
|
||||
|
||||
.category-grid .item-box:nth-child(2n+1) {
|
||||
clear: none;
|
||||
}
|
||||
|
||||
.category-grid .item-box:nth-child(3n+1) {
|
||||
clear: both;
|
||||
}
|
||||
.item-box:nth-child(n+1) {
|
||||
clear: none;
|
||||
}
|
||||
|
||||
.item-box:nth-child(2n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.product-list .item-box {
|
||||
float: none;
|
||||
width: auto;
|
||||
margin: 0 5px 30px;
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
|
||||
.product-list .item-box:not(:last-child) {
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.product-list .item-box .product-item:after {
|
||||
content: "";
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.product-list .item-box .picture {
|
||||
float: left;
|
||||
width: 220px;
|
||||
}
|
||||
|
||||
.product-list .item-box:hover .picture a img,
|
||||
.product-list .item-box:focus .picture a img {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.product-list .item-box .picture:hover a img,
|
||||
.product-list .item-box .picture:focus a img {
|
||||
opacity: 0.85;
|
||||
}
|
||||
|
||||
.product-list .item-box .picture ~ .buttons,
|
||||
.product-list .item-box .picture + .details {
|
||||
margin: 0 0 0 240px;
|
||||
}
|
||||
|
||||
.product-list .item-box .product-title {
|
||||
height: auto;
|
||||
padding: 10px 0;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.product-list .item-box .description {
|
||||
display: block;
|
||||
margin: 0 0 10px;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.product-list .item-box .prices {
|
||||
min-height: initial;
|
||||
margin: 0 0 15px;
|
||||
}
|
||||
|
||||
.product-list .item-box .buttons {
|
||||
}
|
||||
|
||||
.product-list .item-box .product-box-add-to-cart-button {
|
||||
width: auto;
|
||||
min-width: 150px;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.product-list .item-box .add-to-compare-list-button,
|
||||
.product-list .item-box .add-to-wishlist-button {
|
||||
width: auto;
|
||||
padding-inline: 30px;
|
||||
}
|
||||
|
||||
|
||||
/*** PRODUCT PAGE ***/
|
||||
|
||||
|
||||
.gallery {
|
||||
width: 550px;
|
||||
}
|
||||
|
||||
.variant-picture {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.variant-picture + .variant-overview {
|
||||
width: auto;
|
||||
margin: 0 0 0 240px;
|
||||
}
|
||||
|
||||
.variant-overview {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
|
||||
/*** PRODUCT REVIEWS ***/
|
||||
|
||||
|
||||
.product-review-item .review-title {
|
||||
float: left;
|
||||
max-width: 600px;
|
||||
}
|
||||
|
||||
.product-review-item .product-review-box {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.write-review .review-rating div {
|
||||
display: inline-block;
|
||||
margin: 0 0 0 5px;
|
||||
cursor: default;
|
||||
vertical-align: middle;
|
||||
font-size: 14px;
|
||||
height: 17px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*** REGISTRATION, LOGIN, ACCOUNT ***/
|
||||
|
||||
|
||||
.address-list-page .section,
|
||||
.order-list-page .section,
|
||||
.return-request-list-page .section {
|
||||
display: inline-block;
|
||||
width: 45%;
|
||||
margin: 20px 1%;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.recurring-payments {
|
||||
width: 100% !important;
|
||||
margin: 20px 0 !important;
|
||||
}
|
||||
|
||||
|
||||
/*** SHOPPING CART ***/
|
||||
|
||||
|
||||
.order-progress {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.order-progress li {
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
.order-progress a {
|
||||
min-width: 80px;
|
||||
}
|
||||
|
||||
.cart-options .common-buttons {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.cart-options .checkout-attributes,
|
||||
.cart-options .selected-checkout-attributes {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.cart-footer .totals {
|
||||
float: right;
|
||||
width: 45%;
|
||||
margin: 0 2.5%;
|
||||
}
|
||||
|
||||
.cart-footer .terms-of-service {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.cart-footer .checkout-buttons,
|
||||
.cart-footer .addon-buttons {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.cart-footer .cart-collaterals {
|
||||
float: left;
|
||||
width: 45%;
|
||||
margin: 0 2.5%;
|
||||
}
|
||||
|
||||
.cart-footer .cart-collaterals div,
|
||||
.cart-footer .cart-collaterals label {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.cart-footer .estimate-shipping label {
|
||||
display: block;
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
|
||||
.cart-footer .estimate-shipping .buttons {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
||||
/*** CHECKOUT ***/
|
||||
|
||||
|
||||
.checkout-page .selected-checkout-attributes {
|
||||
float: right;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.checkout-page .cart-footer .totals {
|
||||
max-width: 350px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.checkout-page .address-grid {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.checkout-page .address-item {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
zoom: 1;
|
||||
width: 48%;
|
||||
margin: 0 1% 40px;
|
||||
}
|
||||
|
||||
.shipping-method .method-list li,
|
||||
.payment-method .method-list li {
|
||||
display: inline-block;
|
||||
width: 25%;
|
||||
margin: 20px 2%;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.shipping-method .method-name {
|
||||
background-color: #f6f6f6;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.payment-method .payment-logo {
|
||||
display: block;
|
||||
background-color: #f6f6f6;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.payment-method .payment-details {
|
||||
display: block;
|
||||
width: auto;
|
||||
min-width: 0;
|
||||
margin: 10px 0 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.payment-info .info {
|
||||
padding: 30px 75px;
|
||||
}
|
||||
|
||||
.order-review-data,
|
||||
.order-details-area,
|
||||
.shipment-details-area {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.order-review-data > div,
|
||||
.order-details-area > div,
|
||||
.shipment-details-area > div {
|
||||
float: left;
|
||||
width: 48%;
|
||||
margin: 0 1% 40px;
|
||||
}
|
||||
|
||||
|
||||
/*** ORDER DETAILS & SHIPPING DETAILS ***/
|
||||
|
||||
|
||||
.order-details-page .section.options {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.order-details-page .selected-checkout-attributes {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.order-details-page .tax-shipping-info {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.order-details-page .totals {
|
||||
float: right;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.shipment-details-page .tracking-number .tracking-url {
|
||||
color: var(--theme-color);
|
||||
}
|
||||
|
||||
|
||||
/*** BLOG & NEWS ***/
|
||||
|
||||
|
||||
.blog-posts .tags {
|
||||
float: right;
|
||||
width: 80%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.blog-posts .buttons {
|
||||
float: left;
|
||||
width: 20%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.new-comment {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.new-comment .buttons {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.comment-list .comment {
|
||||
display: table;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.comment-list .comment:last-child {
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.comment-info {
|
||||
display: table-cell;
|
||||
width: 15%;
|
||||
margin: 0;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.comment-info .username {
|
||||
min-height: 40px;
|
||||
margin: 0;
|
||||
border: none;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.comment-info .avatar {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.comment-info .avatar img {
|
||||
max-width: 80%;
|
||||
max-height: 80%;
|
||||
}
|
||||
|
||||
.comment-content {
|
||||
display: table-cell;
|
||||
width: 85%;
|
||||
border-left: 1px solid #ddd;
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.comment-time {
|
||||
min-height: 40px;
|
||||
margin: 0;
|
||||
background-color: #f6f6f6;
|
||||
padding: 10px 15px;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.comment-title {
|
||||
margin: 0 0 -20px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.comment-body {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
|
||||
/*** FORUM & PROFILE ***/
|
||||
|
||||
|
||||
.forum-actions,
|
||||
.topic-actions {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.forum-actions .actions,
|
||||
.topic-actions .actions {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.forum-actions .pager,
|
||||
.topic-actions .pager {
|
||||
float: right;
|
||||
max-width: 450px;
|
||||
}
|
||||
|
||||
.forum-actions .pager li,
|
||||
.topic-actions .pager li {
|
||||
margin: 2px 4px;
|
||||
}
|
||||
|
||||
.forum-actions .pager.upper {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.topic-actions.lower .actions {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.topic-posts {
|
||||
margin: 0 0 30px;
|
||||
}
|
||||
|
||||
.topic-post {
|
||||
display: table;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.topic-post .post-info {
|
||||
display: table-cell;
|
||||
width: 15%;
|
||||
margin: 0;
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.topic-post .user-info {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.topic-post .username {
|
||||
min-height: 40px;
|
||||
margin: 0;
|
||||
border: none;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.topic-post .avatar {
|
||||
margin: auto;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.topic-post .avatar img {
|
||||
max-width: 80%;
|
||||
max-height: 80%;
|
||||
}
|
||||
|
||||
.topic-post .user-stats li {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.topic-post .send-pm {
|
||||
margin: 0 0 20px;
|
||||
}
|
||||
|
||||
.topic-post .pm-button,
|
||||
.profile-info-box .pm-button {
|
||||
padding: 8px 16px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.topic-post .post-content {
|
||||
display: table-cell;
|
||||
width: 85%;
|
||||
border-left: 1px solid #ddd;
|
||||
vertical-align: top;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.topic-post .post-head {
|
||||
min-height: 40px;
|
||||
overflow: hidden;
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
|
||||
.topic-post .post-time {
|
||||
float: left;
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.topic-post .post-actions {
|
||||
float: right;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.topic-post .post-actions a {
|
||||
margin: 0;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.topic-post .post-actions .manage-post a {
|
||||
}
|
||||
|
||||
.topic-post .post-actions .quote-post a {
|
||||
min-width: 70px;
|
||||
}
|
||||
|
||||
.topic-post .post-actions a.post-link-button {
|
||||
margin: 0 0 0 10px;
|
||||
border-left: 1px solid #ddd;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.topic-post .post-text {
|
||||
padding: 20px 5px;
|
||||
}
|
||||
|
||||
.topic-post .post-vote {
|
||||
padding: 20px 0 20px 15px;
|
||||
}
|
||||
|
||||
.forum-table th.replies,
|
||||
.forum-table th.views,
|
||||
.forum-table th.votes,
|
||||
.forum-table td.replies,
|
||||
.forum-table td.views,
|
||||
.forum-table td.votes {
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.forum-table td.image {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
.forum-table td.image div {
|
||||
max-width: none;
|
||||
background-size: initial;
|
||||
}
|
||||
|
||||
.ui-tabs-nav {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.ui-tabs-nav li {
|
||||
margin: 0 10px -1px 0;
|
||||
/*override jQuery UI styles, do not delete doubled properties*/
|
||||
margin: 0 10px -1px 0 !important;
|
||||
}
|
||||
|
||||
.profile-info-box .avatar {
|
||||
float: left;
|
||||
margin: 0 15px 15px 0;
|
||||
}
|
||||
|
||||
.profile-info-box .profile-stats {
|
||||
float: left;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.profile-info-box .title {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.profile-info-box .send-pm {
|
||||
clear: both;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,783 @@
|
|||
|
||||
@media all and (min-width: 769px) {
|
||||
:root {
|
||||
--layout-outer-width: 94%;
|
||||
}
|
||||
/* Reverse Layout for Even Items */
|
||||
.spice-categories .spice-item:nth-child(even) {
|
||||
flex-direction: row-reverse;
|
||||
}
|
||||
|
||||
/**** GLOBAL ***/
|
||||
|
||||
|
||||
html:not(.html-home-page) .master-wrapper-content,
|
||||
.html-home-page .topic-block,
|
||||
.html-home-page .home-page-category-grid,
|
||||
.html-home-page .news-list-homepage,
|
||||
.html-home-page .home-page-polls,
|
||||
.html-home-page .home-page-product-grid {
|
||||
width: var(--layout-outer-width);
|
||||
}
|
||||
|
||||
.home-page-polls li {
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
|
||||
/**** GLOBAL TABLES ***/
|
||||
|
||||
|
||||
.cart tr {
|
||||
width: 31.33333%;
|
||||
margin: 40px 1% 0;
|
||||
}
|
||||
|
||||
.cart tr:nth-child(2n+1) {
|
||||
clear: none;
|
||||
}
|
||||
|
||||
.cart tr:nth-child(3n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tr {
|
||||
width: 31.33333%;
|
||||
margin: 40px 1% 0;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tr:nth-child(2n+1) {
|
||||
clear: none;
|
||||
}
|
||||
|
||||
.order-details-page .data-table tr:nth-child(3n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
|
||||
/*** HEADER ***/
|
||||
|
||||
|
||||
.header-selectors-wrapper > div {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
|
||||
/*** FOOTER ***/
|
||||
|
||||
|
||||
.footer-block {
|
||||
display: inline-block;
|
||||
width: 25.33333%;
|
||||
margin: 0 4%;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.footer-block .title {
|
||||
margin: 0 0 15px;
|
||||
background: none;
|
||||
padding: 0;
|
||||
cursor: auto;
|
||||
}
|
||||
|
||||
.footer-block .list {
|
||||
display: block !important; /* prevents toggle display:none on resize */
|
||||
background: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.footer-block .title strong {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.footer-block .list li {
|
||||
padding: 5px 0;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.footer-block .list a {
|
||||
display: inline;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
/*footer ui*/
|
||||
.follow-us {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
gap: 30px;
|
||||
flex-wrap: wrap;
|
||||
padding-block: 40px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.follow-us > div {
|
||||
width: calc(33% - 20px);
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.follow-us .title {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.newsletter-email {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 0;
|
||||
border: 0;
|
||||
}
|
||||
/*** Homepage Categories TABLES ***/
|
||||
/* Target only the home page category grid */
|
||||
.home-page-category-grid .category-item {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.home-page-category-grid .item-box .picture,
|
||||
.home-page-category-grid .item-box .picture a {
|
||||
position: static;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.home-page-category-grid .item-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(6, 1fr);
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
/* Style for each item */
|
||||
.home-page-category-grid .item-grid .item-box {
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
grid-column: span 2;
|
||||
grid-row: span 1;
|
||||
}
|
||||
|
||||
.home-page-category-grid .item-box:nth-child(5n + 4),
|
||||
.home-page-category-grid .item-box:nth-child(5n + 5) {
|
||||
grid-column: span 3;
|
||||
grid-row: span 1;
|
||||
}
|
||||
/* Every first item in a set of 5 spans 2 columns and 2 rows */
|
||||
.home-page-category-grid .item-box:nth-child(5n + 1) {
|
||||
grid-column: span 4;
|
||||
grid-row: span 2;
|
||||
}
|
||||
|
||||
/*** CATEGORY ***/
|
||||
|
||||
|
||||
.product-selectors {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.product-selectors .product-viewmode {
|
||||
display: inline-block;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.product-selectors .product-viewmode span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.product-selectors .product-viewmode a {
|
||||
display: inline-block;
|
||||
width: 24px;
|
||||
height: 32px;
|
||||
margin: 0 12px 0 0;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.product-selectors .product-viewmode a.grid {
|
||||
background-image: url('../images/view-grid.png');
|
||||
}
|
||||
|
||||
.product-selectors .product-viewmode a.list {
|
||||
background-image: url('../images/view-list.png');
|
||||
}
|
||||
|
||||
.product-selectors .product-viewmode a.selected {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.item-box {
|
||||
width: 47%;
|
||||
margin: 0 1.5% 50px;
|
||||
}
|
||||
|
||||
.category-grid .item-box:nth-child(2n+1) {
|
||||
clear: none;
|
||||
}
|
||||
|
||||
.category-grid .item-box:nth-child(3n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.item-box:nth-child(n+1) {
|
||||
clear: none;
|
||||
}
|
||||
|
||||
.item-box:nth-child(2n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.product-list .item-box {
|
||||
float: none;
|
||||
width: auto;
|
||||
margin: 0 5px 30px;
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
|
||||
.product-list .item-box:not(:last-child) {
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.product-list .item-box .product-item:after {
|
||||
content: "";
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.product-list .item-box .picture {
|
||||
float: right;
|
||||
width: 220px;
|
||||
}
|
||||
|
||||
.product-list .item-box:hover .picture a img,
|
||||
.product-list .item-box:focus .picture a img {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.product-list .item-box .picture:hover a img,
|
||||
.product-list .item-box .picture:focus a img {
|
||||
opacity: 0.85;
|
||||
}
|
||||
|
||||
.product-list .item-box .picture ~ .buttons,
|
||||
.product-list .item-box .picture + .details {
|
||||
margin: 0 240px 0 0;
|
||||
}
|
||||
|
||||
.product-list .item-box .product-title {
|
||||
height: auto;
|
||||
padding: 10px 0;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.product-list .item-box .description {
|
||||
display: block;
|
||||
margin: 0 0 10px;
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.product-list .item-box .prices {
|
||||
min-height: initial;
|
||||
margin: 0 0 15px;
|
||||
}
|
||||
|
||||
.product-list .item-box .buttons {
|
||||
}
|
||||
|
||||
.product-list .item-box .product-box-add-to-cart-button {
|
||||
width: auto;
|
||||
min-width: 150px;
|
||||
padding: 0 20px;
|
||||
}
|
||||
|
||||
.product-list .item-box .add-to-compare-list-button,
|
||||
.product-list .item-box .add-to-wishlist-button {
|
||||
width: auto;
|
||||
padding-inline: 30px;
|
||||
}
|
||||
|
||||
|
||||
/*** PRODUCT PAGE ***/
|
||||
|
||||
|
||||
.gallery {
|
||||
width: 550px;
|
||||
}
|
||||
|
||||
.variant-picture {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.variant-picture + .variant-overview {
|
||||
width: auto;
|
||||
margin: 0 240px 0 0;
|
||||
}
|
||||
|
||||
.variant-overview {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
|
||||
/*** PRODUCT REVIEWS ***/
|
||||
|
||||
|
||||
.product-review-item .review-title {
|
||||
float: right;
|
||||
max-width: 600px;
|
||||
}
|
||||
|
||||
.product-review-item .product-review-box {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.write-review .review-rating div {
|
||||
display: inline-block;
|
||||
margin: 0 5px 0 0;
|
||||
cursor: default;
|
||||
vertical-align: middle;
|
||||
font-size: 14px;
|
||||
height: 17px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*** REGISTRATION, LOGIN, ACCOUNT ***/
|
||||
|
||||
|
||||
.address-list-page .section,
|
||||
.order-list-page .section,
|
||||
.return-request-list-page .section {
|
||||
display: inline-block;
|
||||
width: 45%;
|
||||
margin: 20px 1%;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.recurring-payments {
|
||||
width: 100% !important;
|
||||
margin: 20px 0 !important;
|
||||
}
|
||||
|
||||
|
||||
/*** SHOPPING CART ***/
|
||||
|
||||
|
||||
.order-progress {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.order-progress li {
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
.order-progress a {
|
||||
min-width: 80px;
|
||||
}
|
||||
|
||||
.cart-options .common-buttons {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.cart-options .checkout-attributes,
|
||||
.cart-options .selected-checkout-attributes {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.cart-footer .totals {
|
||||
float: left;
|
||||
width: 45%;
|
||||
margin: 0 2.5%;
|
||||
}
|
||||
|
||||
.cart-footer .terms-of-service {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.cart-footer .checkout-buttons,
|
||||
.cart-footer .addon-buttons {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.cart-footer .cart-collaterals {
|
||||
float: right;
|
||||
width: 45%;
|
||||
margin: 0 2.5%;
|
||||
}
|
||||
|
||||
.cart-footer .cart-collaterals div,
|
||||
.cart-footer .cart-collaterals label {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.cart-footer .estimate-shipping label {
|
||||
display: block;
|
||||
margin: 0 0 10px;
|
||||
}
|
||||
|
||||
.cart-footer .estimate-shipping .buttons {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
|
||||
/*** CHECKOUT ***/
|
||||
|
||||
|
||||
.checkout-page .selected-checkout-attributes {
|
||||
float: left;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.checkout-page .cart-footer .totals {
|
||||
max-width: 350px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.checkout-page .address-grid {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.checkout-page .address-item {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
zoom: 1;
|
||||
width: 48%;
|
||||
margin: 0 1% 40px;
|
||||
}
|
||||
|
||||
.shipping-method .method-list li,
|
||||
.payment-method .method-list li {
|
||||
display: inline-block;
|
||||
width: 25%;
|
||||
margin: 20px 2%;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.shipping-method .method-name {
|
||||
background-color: #f6f6f6;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.payment-method .payment-logo {
|
||||
display: block;
|
||||
background-color: #f6f6f6;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.payment-method .payment-details {
|
||||
display: block;
|
||||
width: auto;
|
||||
min-width: 0;
|
||||
margin: 10px 0 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.payment-info .info {
|
||||
padding: 30px 75px;
|
||||
}
|
||||
|
||||
.order-review-data,
|
||||
.order-details-area,
|
||||
.shipment-details-area {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.order-review-data > div,
|
||||
.order-details-area > div,
|
||||
.shipment-details-area > div {
|
||||
float: right;
|
||||
width: 48%;
|
||||
margin: 0 1% 40px;
|
||||
}
|
||||
|
||||
|
||||
/*** ORDER DETAILS & SHIPPING DETAILS ***/
|
||||
|
||||
|
||||
.order-details-page .section.options {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.order-details-page .selected-checkout-attributes {
|
||||
padding: 0 10px;
|
||||
}
|
||||
|
||||
.order-details-page .tax-shipping-info {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.order-details-page .totals {
|
||||
float: left;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.shipment-details-page .tracking-number .tracking-url {
|
||||
color: var(--theme-color);
|
||||
}
|
||||
|
||||
|
||||
/*** BLOG & NEWS ***/
|
||||
|
||||
|
||||
.blog-posts .tags {
|
||||
float: left;
|
||||
width: 80%;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.blog-posts .buttons {
|
||||
float: right;
|
||||
width: 20%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.new-comment {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.new-comment .buttons {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.comment-list .comment {
|
||||
display: table;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.comment-list .comment:last-child {
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.comment-info {
|
||||
display: table-cell;
|
||||
width: 15%;
|
||||
margin: 0;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.comment-info .username {
|
||||
min-height: 40px;
|
||||
margin: 0;
|
||||
border: none;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.comment-info .avatar {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.comment-info .avatar img {
|
||||
max-width: 80%;
|
||||
max-height: 80%;
|
||||
}
|
||||
|
||||
.comment-content {
|
||||
display: table-cell;
|
||||
width: 85%;
|
||||
border-right: 1px solid #ddd;
|
||||
vertical-align: top;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.comment-time {
|
||||
min-height: 40px;
|
||||
margin: 0;
|
||||
background-color: #f6f6f6;
|
||||
padding: 10px 15px;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.comment-title {
|
||||
margin: 0 0 -20px;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
.comment-body {
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
|
||||
/*** FORUM & PROFILE ***/
|
||||
|
||||
|
||||
.forum-actions,
|
||||
.topic-actions {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.forum-actions .actions,
|
||||
.topic-actions .actions {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.forum-actions .pager,
|
||||
.topic-actions .pager {
|
||||
float: left;
|
||||
max-width: 450px;
|
||||
}
|
||||
|
||||
.forum-actions .pager li,
|
||||
.topic-actions .pager li {
|
||||
margin: 2px 4px;
|
||||
}
|
||||
|
||||
.forum-actions .pager.upper {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.topic-actions.lower .actions {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.topic-posts {
|
||||
margin: 0 0 30px;
|
||||
}
|
||||
|
||||
.topic-post {
|
||||
display: table;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.topic-post .post-info {
|
||||
display: table-cell;
|
||||
width: 15%;
|
||||
margin: 0;
|
||||
vertical-align: top;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.topic-post .user-info {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.topic-post .username {
|
||||
min-height: 40px;
|
||||
margin: 0;
|
||||
border: none;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.topic-post .avatar {
|
||||
margin: auto;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.topic-post .avatar img {
|
||||
max-width: 80%;
|
||||
max-height: 80%;
|
||||
}
|
||||
|
||||
.topic-post .user-stats li {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.topic-post .send-pm {
|
||||
margin: 0 0 20px;
|
||||
}
|
||||
|
||||
.topic-post .pm-button,
|
||||
.profile-info-box .pm-button {
|
||||
padding: 8px 16px;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.topic-post .post-content {
|
||||
display: table-cell;
|
||||
width: 85%;
|
||||
border-right: 1px solid #ddd;
|
||||
vertical-align: top;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.topic-post .post-head {
|
||||
min-height: 40px;
|
||||
overflow: hidden;
|
||||
background-color: #f6f6f6;
|
||||
}
|
||||
|
||||
.topic-post .post-time {
|
||||
float: right;
|
||||
margin: 0;
|
||||
font-size: 14px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.topic-post .post-actions {
|
||||
float: left;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.topic-post .post-actions a {
|
||||
margin: 0;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.topic-post .post-actions .manage-post a {
|
||||
}
|
||||
|
||||
.topic-post .post-actions .quote-post a {
|
||||
min-width: 70px;
|
||||
}
|
||||
|
||||
.topic-post .post-actions a.post-link-button {
|
||||
margin: 0 10px 0 0;
|
||||
border-right: 1px solid #ddd;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.topic-post .post-text {
|
||||
padding: 20px 5px;
|
||||
}
|
||||
|
||||
.topic-post .post-vote {
|
||||
padding: 20px 15px 20px 0;
|
||||
}
|
||||
|
||||
.forum-table th.replies,
|
||||
.forum-table th.views,
|
||||
.forum-table th.votes,
|
||||
.forum-table td.replies,
|
||||
.forum-table td.views,
|
||||
.forum-table td.votes {
|
||||
display: table-cell;
|
||||
}
|
||||
|
||||
.forum-table td.image {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
.forum-table td.image div {
|
||||
max-width: none;
|
||||
background-size: initial;
|
||||
}
|
||||
|
||||
.ui-tabs-nav {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.ui-tabs-nav li {
|
||||
margin: 0 0 -1px 10px;
|
||||
/*override jQuery UI styles, do not delete doubled properties*/
|
||||
margin: 0 0 -1px 10px !important;
|
||||
}
|
||||
|
||||
.profile-info-box .avatar {
|
||||
float: right;
|
||||
margin: 0 0 15px 15px;
|
||||
}
|
||||
|
||||
.profile-info-box .profile-stats {
|
||||
float: right;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.profile-info-box .title {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.profile-info-box .send-pm {
|
||||
clear: both;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
body {
|
||||
}
|
||||
:root {
|
||||
--theme-color: #E60000;
|
||||
--active-color: #fb9b06;
|
||||
}
|
||||
|
After Width: | Height: | Size: 434 KiB |
|
After Width: | Height: | Size: 673 B |
|
After Width: | Height: | Size: 206 B |
|
After Width: | Height: | Size: 985 B |
|
After Width: | Height: | Size: 987 B |
|
After Width: | Height: | Size: 989 B |
|
After Width: | Height: | Size: 199 B |
|
After Width: | Height: | Size: 4.8 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 943 B |
|
After Width: | Height: | Size: 348 B |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 494 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1022 B |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 823 KiB |
|
After Width: | Height: | Size: 1002 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 975 B |
|
After Width: | Height: | Size: 989 B |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 990 B |
|
After Width: | Height: | Size: 453 B |
|
After Width: | Height: | Size: 450 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 677 B |
|
After Width: | Height: | Size: 1022 B |
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 398 B |
|
After Width: | Height: | Size: 276 B |
|
After Width: | Height: | Size: 8.2 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 959 B |
|
After Width: | Height: | Size: 980 B |
|
After Width: | Height: | Size: 743 B |
|
After Width: | Height: | Size: 180 B |
|
After Width: | Height: | Size: 491 B |
|
After Width: | Height: | Size: 182 B |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 777 KiB |
|
After Width: | Height: | Size: 337 KiB |
|
After Width: | Height: | Size: 210 KiB |
|
After Width: | Height: | Size: 508 KiB |
|
After Width: | Height: | Size: 446 B |
|
|
@ -0,0 +1,49 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
<link rel="stylesheet" href="../css/styles.css">
|
||||
<link rel="stylesheet" href="../css/responsive-min-769.css">
|
||||
</head>
|
||||
<body>
|
||||
<section class="feature-highlights">
|
||||
<div class="container">
|
||||
<h2 class="section-title">Why Choose Our Automobiles?</h2>
|
||||
|
||||
<div class="feature-item">
|
||||
<img src="/images/uploaded/speed.jpg" alt="High Speed Performance">
|
||||
<div class="feature-content">
|
||||
<h3>Unmatched Speed & Performance</h3>
|
||||
<p>Experience top-tier acceleration and control with our advanced automobile technology.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-item">
|
||||
<img src="/images/uploaded/safety.jpg" alt="Advanced Safety Features">
|
||||
<div class="feature-content">
|
||||
<h3>Advanced Safety Features</h3>
|
||||
<p>Equipped with AI-powered braking, lane assistance, and 360-degree cameras.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-item">
|
||||
<img src="/images/uploaded/cofort.jpg" alt="Luxury Interior">
|
||||
<div class="feature-content">
|
||||
<h3>Luxury & Comfort</h3>
|
||||
<p>Premium leather seats, ambient lighting, and state-of-the-art infotainment system.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="feature-item">
|
||||
<img src="/images/uploaded/eco-friendly.jpg" alt="Eco-Friendly Technology">
|
||||
<div class="feature-content">
|
||||
<h3>Eco-Friendly Innovation</h3>
|
||||
<p>Our hybrid & electric models reduce emissions while maximizing efficiency.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
<link rel="stylesheet" href="../css/styles.css">
|
||||
<link rel="stylesheet" href="../css/responsive-min-769.css">
|
||||
</head>
|
||||
<body>
|
||||
<section class="welcome-section">
|
||||
<div class="welcome-container">
|
||||
<div class="welcome-image"><img src="/images/uploaded/banner_4_680x397_crop_top.webp" alt="About Our Store"></div>
|
||||
<div class="welcome-text">
|
||||
<h1>Welcome!</h1>
|
||||
<h2>About Our Store</h2>
|
||||
<p>
|
||||
For 25 years, we’ve set the standard in used car retailing with one of the most trusted vehicle programs. Our commitment to quality means every car undergoes a rigorous inspection, ensuring reliability and peace of mind.
|
||||
</p>
|
||||
<p>
|
||||
From family cars to luxury rides, we have options for every budget. Visit us today and let us help you find the perfect car!
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,141 @@
|
|||
@model CategoryModel
|
||||
|
||||
@using Nop.Core.Domain.Catalog
|
||||
@using Nop.Core.Domain.Common
|
||||
@using Nop.Core.Domain.Seo
|
||||
|
||||
@inject Nop.Core.IWebHelper webHelper
|
||||
@inject SeoSettings seoSettings
|
||||
@inject CommonSettings commonSettings
|
||||
|
||||
@{
|
||||
Layout = "_ColumnsTwo";
|
||||
|
||||
//title
|
||||
NopHtml.AddTitleParts(!string.IsNullOrEmpty(Model.MetaTitle) ? Model.MetaTitle : Model.Name);
|
||||
//meta
|
||||
NopHtml.AddMetaDescriptionParts(Model.MetaDescription);
|
||||
NopHtml.AddMetaKeywordParts(Model.MetaKeywords);
|
||||
//page class
|
||||
NopHtml.AppendPageCssClassParts("html-category-page");
|
||||
|
||||
if (seoSettings.CanonicalUrlsEnabled)
|
||||
{
|
||||
var categoryUrl = Url.RouteUrl<Category>(new { SeName = Model.SeName }, webHelper.GetCurrentRequestProtocol()).ToLowerInvariant();
|
||||
NopHtml.AddCanonicalUrlParts(categoryUrl, seoSettings.QueryStringInCanonicalUrlsEnabled);
|
||||
}
|
||||
|
||||
var breadcrumbDelimiter = commonSettings.BreadcrumbDelimiter;
|
||||
NopHtml.AddJsonLdParts(Model.JsonLd);
|
||||
}
|
||||
@*category breadcrumb*@
|
||||
@section Breadcrumb
|
||||
{
|
||||
@if (Model.DisplayCategoryBreadcrumb)
|
||||
{
|
||||
<div class="breadcrumb">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="@Url.RouteUrl("Homepage")" title="@T("Categories.Breadcrumb.Top")">@T("Categories.Breadcrumb.Top")</a>
|
||||
<span class="delimiter">@breadcrumbDelimiter</span>
|
||||
</li>
|
||||
@{ int position = 1; }
|
||||
@foreach (var cat in Model.CategoryBreadcrumb)
|
||||
{
|
||||
var isLastCategory = cat.Id == Model.Id;
|
||||
<li>
|
||||
@if (isLastCategory)
|
||||
{
|
||||
<strong class="current-item">@cat.Name</strong>
|
||||
<span id="@(Url.RouteUrl<Category>(new { SeName = cat.SeName }))"></span>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a href="@(Url.RouteUrl<Category>(new { SeName = cat.SeName }))" title="@cat.Name">
|
||||
<span>@cat.Name</span>
|
||||
</a>
|
||||
<span class="delimiter">@breadcrumbDelimiter</span>
|
||||
}
|
||||
</li>
|
||||
position++;
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.CategoryDetailsAfterBreadcrumb, additionalData = Model })
|
||||
}
|
||||
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.CategoryDetailsTop, additionalData = Model })
|
||||
}
|
||||
|
||||
@section CatalogFilters {
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.CategoryDetailsBeforeFilters, additionalData = Model })
|
||||
@await Html.PartialAsync("_CatalogFilters", Model.CatalogProductsModel)
|
||||
}
|
||||
|
||||
<div class="page category-page">
|
||||
<div class="page-title">
|
||||
<h1>@Model.Name</h1>
|
||||
</div>
|
||||
<div class="page-body">
|
||||
@*description*@
|
||||
@if (!string.IsNullOrWhiteSpace(Model.Description))
|
||||
{
|
||||
<div class="category-description">
|
||||
@Html.Raw(Model.Description)
|
||||
</div>
|
||||
}
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.CategoryDetailsBeforeSubcategories, additionalData = Model })
|
||||
@*subcategories*@
|
||||
@if (Model.SubCategories.Count > 0)
|
||||
{
|
||||
<div class="category-grid sub-category-grid">
|
||||
<div class="item-grid">
|
||||
@foreach (var item in Model.SubCategories)
|
||||
{
|
||||
<div class="item-box">
|
||||
<div class="sub-category-item">
|
||||
<h2 class="title">
|
||||
<a href="@(Url.RouteUrl<Category>(new { SeName = item.SeName }))" title="@item.PictureModel.Title">
|
||||
@item.Name
|
||||
</a>
|
||||
</h2>
|
||||
<div class="picture">
|
||||
<a href="@(Url.RouteUrl<Category>(new { SeName = item.SeName }))" title="@item.PictureModel.Title">
|
||||
<img alt="@item.PictureModel.AlternateText" src="@item.PictureModel.ImageUrl" title="@item.PictureModel.Title" />
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.CategoryDetailsBeforeFeaturedProducts, additionalData = Model })
|
||||
@*featured products*@
|
||||
@if (Model.FeaturedProducts.Count > 0)
|
||||
{
|
||||
<div class="product-grid featured-product-grid">
|
||||
<div class="title">
|
||||
<strong>@T("Products.FeaturedProducts")</strong>
|
||||
</div>
|
||||
<div class="item-grid">
|
||||
@foreach (var item in Model.FeaturedProducts)
|
||||
{
|
||||
<div class="item-box">
|
||||
@await Html.PartialAsync("_ProductBox", item)
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.CategoryDetailsAfterFeaturedProducts, additionalData = Model })
|
||||
@await Html.PartialAsync("_CatalogSelectors", Model.CatalogProductsModel)
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.CategoryDetailsBeforeProductList, additionalData = Model })
|
||||
@{
|
||||
var catalogProductsViewData = new ViewDataDictionary(ViewData);
|
||||
catalogProductsViewData["fetchUrl"] = Html.Raw(Url.RouteUrl("GetCategoryProducts", new { categoryId = Model.Id }));
|
||||
}
|
||||
@await Html.PartialAsync("_CatalogProducts", Model.CatalogProductsModel, catalogProductsViewData)
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.CategoryDetailsBottom, additionalData = Model })
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,136 @@
|
|||
@model LoginModel
|
||||
@using Nop.Core
|
||||
@using Nop.Core.Domain.Customers
|
||||
|
||||
@inject IWebHelper webHelper
|
||||
@{
|
||||
Layout = "_ColumnsOne";
|
||||
|
||||
//title
|
||||
NopHtml.AddTitleParts(T("PageTitle.Login").Text);
|
||||
//page class
|
||||
NopHtml.AppendPageCssClassParts("html-login-page");
|
||||
|
||||
//register URL with return URL (if specified)
|
||||
var registerUrl = Url.RouteUrl("Register", new { returnUrl = this.Context.Request.Query["returnUrl"] }, webHelper.GetCurrentRequestProtocol());
|
||||
}
|
||||
<div class="page login-page">
|
||||
<div class="page-title">
|
||||
<h1>@T("Account.Login.Welcome")</h1>
|
||||
</div>
|
||||
@await Html.PartialAsync("_ExternalAuthentication.Errors")
|
||||
<div class="page-body">
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.LoginTop, additionalData = Model })
|
||||
<div class="customer-blocks">
|
||||
@if (Model.RegistrationType == UserRegistrationType.Disabled)
|
||||
{
|
||||
<div class="new-wrapper">
|
||||
<div class="title">
|
||||
@T("Account.Register")
|
||||
</div>
|
||||
<div class="text">
|
||||
@T("Account.Register.Result.Disabled")
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else if (Model.CheckoutAsGuest)
|
||||
{
|
||||
<div class="new-wrapper checkout-as-guest-or-register-block">
|
||||
<div class="title">
|
||||
<strong>@T("Account.Login.CheckoutAsGuestOrRegister")</strong>
|
||||
</div>
|
||||
<div class="text">
|
||||
@await Component.InvokeAsync(typeof(TopicBlockViewComponent), new { systemName = "CheckoutAsGuestOrRegister" })
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<button type="button" class="button-1 checkout-as-guest-button" onclick="location.href='@Url.RouteUrl("Checkout")'">@T("Account.Login.CheckoutAsGuest")</button>
|
||||
<button type="button" class="button-1 register-button" onclick="location.href='@registerUrl'">@T("Account.Register")</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="new-wrapper register-block">
|
||||
<div class="title">
|
||||
<strong>@T("Account.Login.NewCustomer")</strong>
|
||||
</div>
|
||||
<div class="text">
|
||||
@T("Account.Login.NewCustomerText")
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<button type="button" class="button-1 register-button" onclick="location.href='@registerUrl'">@T("Account.Register")</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="returning-wrapper fieldset">
|
||||
<form asp-route="Login" asp-route-returnurl="@Context.Request.Query["ReturnUrl"]" method="post" autocomplete="off">
|
||||
<div asp-validation-summary="ModelOnly" class="message-error">@T("Account.Login.Unsuccessful")</div>
|
||||
|
||||
<div class="form-fields">
|
||||
<div class="title">
|
||||
<strong>@T("Account.Login.ReturningCustomer")</strong>
|
||||
</div>
|
||||
@if (Model.UsernamesEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="Username" asp-postfix=":"></label>
|
||||
<input asp-for="Username" class="username" autofocus="autofocus" />
|
||||
<span asp-validation-for="Username"></span>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="Email" asp-postfix=":"></label>
|
||||
<input asp-for="Email" class="email" autofocus="autofocus" />
|
||||
<span asp-validation-for="Email"></span>
|
||||
</div>
|
||||
}
|
||||
<div class="inputs">
|
||||
<label asp-for="Password" asp-postfix=":"></label>
|
||||
<div class="login-password">
|
||||
<input asp-for="Password" class="password" />
|
||||
<span class="password-eye"></span>
|
||||
</div>
|
||||
<span asp-validation-for="Password"></span>
|
||||
</div>
|
||||
<div class="inputs reversed">
|
||||
<input asp-for="RememberMe" />
|
||||
<label asp-for="RememberMe"></label>
|
||||
<span class="forgot-password">
|
||||
<a asp-route="PasswordRecovery">@T("Account.Login.ForgotPassword")</a>
|
||||
</span>
|
||||
</div>
|
||||
@if (Model.DisplayCaptcha)
|
||||
{
|
||||
<nop-captcha />
|
||||
}
|
||||
<div class="buttons">
|
||||
<button type="submit" class="button-1 login-button">@T("Account.Login.LoginButton")</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="external-authentication">
|
||||
@await Component.InvokeAsync(typeof(ExternalMethodsViewComponent), "ExternalAuthentication")
|
||||
</div>
|
||||
@await Component.InvokeAsync(typeof(TopicBlockViewComponent), new { systemName = "LoginRegistrationInfo" })
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.LoginBottom, additionalData = Model })
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script asp-location="Footer">
|
||||
$(function () {
|
||||
const password = $("#@Html.IdFor(m => m.Password)");
|
||||
|
||||
$(".password-eye").on("click", function () {
|
||||
// toggle the type attribute
|
||||
const type = password.attr("type") === "password" ? "text" : "password";
|
||||
password.attr("type", type);
|
||||
|
||||
// toggle the icon
|
||||
$(this).toggleClass("password-eye-open");
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
|
@ -0,0 +1,449 @@
|
|||
@model RegisterModel
|
||||
|
||||
@{
|
||||
Layout = "_ColumnsOne";
|
||||
|
||||
//title
|
||||
NopHtml.AddTitleParts(T("PageTitle.Register").Text);
|
||||
//page class
|
||||
NopHtml.AppendPageCssClassParts("html-registration-page");
|
||||
}
|
||||
|
||||
<div class="page registration-page">
|
||||
<div class="page-title">
|
||||
<h1>@T("Account.Register")</h1>
|
||||
</div>
|
||||
<div class="page-body">
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.RegisterTop, additionalData = Model })
|
||||
<form asp-route="Register" asp-route-returnurl="@Context.Request.Query["ReturnUrl"]" method="post" autocomplete="off">
|
||||
<div asp-validation-summary="ModelOnly" class="message-error"></div>
|
||||
<div class="fieldset">
|
||||
<div class="title">
|
||||
<strong>@T("Account.YourPersonalDetails")</strong>
|
||||
</div>
|
||||
<div class="form-fields">
|
||||
@if (Model.GenderEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label for="gender">@T("Account.Fields.Gender"):</label>
|
||||
<div id="gender" class="gender">
|
||||
<span class="male">
|
||||
<input type="radio" asp-for="Gender" value="M" checked="@(Model.Gender == "M")" id="gender-male" />
|
||||
<label class="forcheckbox" for="gender-male">@T("Account.Fields.Gender.Male")</label>
|
||||
</span>
|
||||
<span class="female">
|
||||
<input type="radio" asp-for="Gender" value="F" checked="@(Model.Gender == "F")" id="gender-female" />
|
||||
<label class="forcheckbox" for="gender-female">@T("Account.Fields.Gender.Female")</label>
|
||||
</span>
|
||||
@if (Model.NeutralGenderEnabled)
|
||||
{
|
||||
<span class="Neutral">
|
||||
<input type="radio" asp-for="Gender" value="N" checked="@(Model.Gender == "N")" id="gender-neutral" />
|
||||
<label class="forcheckbox" for="gender-neutral">@T("Account.Fields.Gender.Neutral")</label>
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (Model.FirstNameEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="FirstName" asp-postfix=":"></label>
|
||||
<input asp-for="FirstName" />
|
||||
@if (Model.FirstNameRequired)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span asp-validation-for="FirstName"></span>
|
||||
</div>
|
||||
}
|
||||
@if (Model.LastNameEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="LastName" asp-postfix=":"></label>
|
||||
<input asp-for="LastName" />
|
||||
@if (Model.LastNameRequired)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span asp-validation-for="LastName"></span>
|
||||
</div>
|
||||
}
|
||||
@if (Model.DateOfBirthEnabled)
|
||||
{
|
||||
<div class="inputs date-of-birth">
|
||||
<label>@T("Account.Fields.DateOfBirth"):</label>
|
||||
<nop-date-picker asp-day-name="@Html.NameFor(x => x.DateOfBirthDay)"
|
||||
asp-month-name="@Html.NameFor(x => x.DateOfBirthMonth)"
|
||||
asp-year-name="@Html.NameFor(x => x.DateOfBirthYear)"
|
||||
asp-begin-year="@(DateTime.Now.AddYears(-110))"
|
||||
asp-end-year="@(DateTime.UtcNow)"
|
||||
asp-selected-date="@Model.ParseDateOfBirth()" />
|
||||
|
||||
@if (Model.DateOfBirthRequired)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span asp-validation-for="DateOfBirthDay"></span>
|
||||
<span asp-validation-for="DateOfBirthMonth"></span>
|
||||
<span asp-validation-for="DateOfBirthYear"></span>
|
||||
</div>
|
||||
}
|
||||
<div class="inputs">
|
||||
<label asp-for="Email" asp-postfix=":"></label>
|
||||
<input asp-for="Email" />
|
||||
<nop-required />
|
||||
<span asp-validation-for="Email"></span>
|
||||
</div>
|
||||
@if (Model.EnteringEmailTwice)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="ConfirmEmail" asp-postfix=":"></label>
|
||||
<input asp-for="ConfirmEmail" />
|
||||
<nop-required />
|
||||
<span asp-validation-for="ConfirmEmail"></span>
|
||||
</div>
|
||||
}
|
||||
@if (Model.UsernamesEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="Username" asp-postfix=":"></label>
|
||||
<input asp-for="Username" />
|
||||
<nop-required />
|
||||
<span asp-validation-for="Username"></span>
|
||||
@if (Model.CheckUsernameAvailabilityEnabled)
|
||||
{
|
||||
@await Html.PartialAsync("_CheckUsernameAvailability")
|
||||
}
|
||||
</div>
|
||||
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@if (Model.CompanyEnabled || Model.DisplayVatNumber)
|
||||
{
|
||||
<div class="fieldset">
|
||||
<div class="title">
|
||||
<strong>@T("Account.CompanyDetails")</strong>
|
||||
</div>
|
||||
<div class="form-fields">
|
||||
@if (Model.CompanyEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="Company" asp-postfix=":"></label>
|
||||
<input asp-for="Company" />
|
||||
@if (Model.CompanyRequired)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span asp-validation-for="Company"></span>
|
||||
</div>
|
||||
}
|
||||
@if (Model.DisplayVatNumber)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="VatNumber" asp-postfix=":"></label>
|
||||
<input asp-for="VatNumber" />
|
||||
@if (Model.VatNumberRequired)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span asp-validation-for="VatNumber"></span>
|
||||
<span class="vat-note"><em>@T("Account.Fields.VatNumber.Note")</em></span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (Model.StreetAddressEnabled ||
|
||||
Model.StreetAddress2Enabled ||
|
||||
Model.ZipPostalCodeEnabled ||
|
||||
Model.CityEnabled ||
|
||||
Model.CountyEnabled ||
|
||||
Model.CountryEnabled)
|
||||
{
|
||||
<div class="fieldset">
|
||||
<div class="title">
|
||||
<strong>@T("Account.YourAddress")</strong>
|
||||
</div>
|
||||
<div class="form-fields">
|
||||
@if (Model.StreetAddressEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="StreetAddress" asp-postfix=":"></label>
|
||||
<input asp-for="StreetAddress" />
|
||||
@if (Model.StreetAddressRequired)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span asp-validation-for="StreetAddress"></span>
|
||||
</div>
|
||||
}
|
||||
@if (Model.StreetAddress2Enabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="StreetAddress2" asp-postfix=":"></label>
|
||||
<input asp-for="StreetAddress2" />
|
||||
@if (Model.StreetAddress2Required)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span asp-validation-for="StreetAddress2"></span>
|
||||
</div>
|
||||
}
|
||||
@if (Model.ZipPostalCodeEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="ZipPostalCode" asp-postfix=":"></label>
|
||||
<input asp-for="ZipPostalCode" />
|
||||
@if (Model.ZipPostalCodeRequired)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span asp-validation-for="ZipPostalCode"></span>
|
||||
</div>
|
||||
}
|
||||
@if (Model.CountyEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="County" asp-postfix=":"></label>
|
||||
<input asp-for="County" />
|
||||
@if (Model.CountyRequired)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span asp-validation-for="County"></span>
|
||||
</div>
|
||||
}
|
||||
@if (Model.CityEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="City" asp-postfix=":"></label>
|
||||
<input asp-for="City" />
|
||||
@if (Model.CityRequired)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span asp-validation-for="City"></span>
|
||||
</div>
|
||||
}
|
||||
@if (Model.CountryEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="CountryId" asp-postfix=":"></label>
|
||||
<select asp-for="CountryId" asp-items="Model.AvailableCountries"
|
||||
data-trigger="country-select"
|
||||
data-url="@(Url.RouteUrl("GetStatesByCountryId"))"
|
||||
data-stateprovince="#@Html.IdFor(model => model.StateProvinceId)"
|
||||
data-loading="#states-loading-progress"></select>
|
||||
@if (Model.CountryRequired)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span asp-validation-for="CountryId"></span>
|
||||
</div>
|
||||
}
|
||||
@if (Model.CountryEnabled && Model.StateProvinceEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="StateProvinceId" asp-postfix=":"></label>
|
||||
<select asp-for="StateProvinceId" asp-items="Model.AvailableStates"></select>
|
||||
@if (Model.StateProvinceRequired)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span id="states-loading-progress" style="display: none;" class="please-wait">@T("Common.Wait")</span>
|
||||
<span asp-validation-for="StateProvinceId"></span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (Model.PhoneEnabled || Model.FaxEnabled)
|
||||
{
|
||||
<div class="fieldset">
|
||||
<div class="title">
|
||||
<strong>@T("Account.YourContactInformation")</strong>
|
||||
</div>
|
||||
<div class="form-fields">
|
||||
@if (Model.PhoneEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="Phone" asp-postfix=":"></label>
|
||||
<input asp-for="Phone" />
|
||||
@if (Model.PhoneRequired)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span asp-validation-for="Phone"></span>
|
||||
</div>
|
||||
}
|
||||
@if (Model.FaxEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="Fax" asp-postfix=":"></label>
|
||||
<input asp-for="Fax" />
|
||||
@if (Model.FaxRequired)
|
||||
{
|
||||
<nop-required />
|
||||
}
|
||||
<span asp-validation-for="Fax"></span>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (Model.NewsletterEnabled || Model.CustomerAttributes.Count > 0)
|
||||
{
|
||||
<div class="fieldset">
|
||||
<div class="title">
|
||||
<strong>@T("Account.Options")</strong>
|
||||
</div>
|
||||
<div class="form-fields">
|
||||
@if (Model.NewsletterEnabled)
|
||||
{
|
||||
<div class="inputs">
|
||||
<label asp-for="Newsletter" asp-postfix=":"></label>
|
||||
<input asp-for="Newsletter" />
|
||||
<span asp-validation-for="Newsletter"></span>
|
||||
</div>
|
||||
}
|
||||
@if (Model.CustomerAttributes.Count > 0)
|
||||
{
|
||||
@await Html.PartialAsync("_CustomerAttributes", Model.CustomerAttributes)
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (Model.AllowCustomersToSetTimeZone)
|
||||
{
|
||||
<div class="fieldset">
|
||||
<div class="title">
|
||||
<strong>@T("Account.Preferences")</strong>
|
||||
</div>
|
||||
<div class="form-fields">
|
||||
<div class="inputs">
|
||||
<label asp-for="TimeZoneId" asp-postfix=":"></label>
|
||||
<select asp-for="TimeZoneId" asp-items="Model.AvailableTimeZones"></select>
|
||||
<span asp-validation-for="TimeZoneId"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<div class="fieldset">
|
||||
<div class="title">
|
||||
<strong>@T("Account.YourPassword")</strong>
|
||||
</div>
|
||||
<div class="form-fields">
|
||||
<div class="inputs">
|
||||
<label asp-for="Password" asp-postfix=":"></label>
|
||||
<input asp-for="Password" />
|
||||
<nop-required />
|
||||
<span asp-validation-for="Password"></span>
|
||||
</div>
|
||||
<div class="inputs">
|
||||
<label asp-for="ConfirmPassword" asp-postfix=":"></label>
|
||||
<input asp-for="ConfirmPassword" />
|
||||
<nop-required />
|
||||
<span asp-validation-for="ConfirmPassword"></span>
|
||||
</div>
|
||||
@if (Model.DisplayCaptcha)
|
||||
{
|
||||
<nop-captcha />
|
||||
}
|
||||
@if (Model.HoneypotEnabled)
|
||||
{
|
||||
@Html.Raw(Html.GenerateHoneypotInput())
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@if (Model.AcceptPrivacyPolicyEnabled || Model.GdprConsents.Count > 0)
|
||||
{
|
||||
<div class="fieldset">
|
||||
<div class="title">
|
||||
<strong>@T("Account.UserAgreement")</strong>
|
||||
</div>
|
||||
<div class="form-fields">
|
||||
@if (Model.AcceptPrivacyPolicyEnabled)
|
||||
{
|
||||
<script asp-location="Footer">
|
||||
$(function() {
|
||||
$('#register-button').on('click', function() {
|
||||
if ($('#accept-consent').is(':checked')) {
|
||||
//do some stuff
|
||||
return true;
|
||||
} else {
|
||||
//just show validation errors, don't post
|
||||
alert('@Html.Raw(JavaScriptEncoder.Default.Encode(T("Account.Fields.AcceptPrivacyPolicy.Required").Text))');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<div class="inputs accept-consent">
|
||||
<input id="accept-consent" type="checkbox" name="accept-consent" />
|
||||
<label for="accept-consent">@T("Account.Fields.AcceptPrivacyPolicy")</label>
|
||||
@if (Model.AcceptPrivacyPolicyPopup)
|
||||
{
|
||||
<span class="read" id="read-privacyinfo">@T("Account.Fields.AcceptPrivacyPolicy.Read")</span>
|
||||
<script asp-location="Footer">
|
||||
$(function() {
|
||||
$('#read-privacyinfo').on('click',
|
||||
function(e) {
|
||||
displayPopupContentFromUrl(
|
||||
'@Url.RouteUrl("TopicPopup", new {SystemName = "privacyinfo"})',
|
||||
'@T("Account.Fields.AcceptPrivacyPolicy")');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
<a class="read" id="read-privacyinfo" href="@Url.RouteTopicUrl("privacyinfo")">@T("Account.Fields.AcceptPrivacyPolicy.Read")</a>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (Model.GdprConsents.Count > 0)
|
||||
{
|
||||
foreach (var consent in Model.GdprConsents)
|
||||
{
|
||||
if (consent.IsRequired)
|
||||
{
|
||||
<script asp-location="Footer">
|
||||
$(function() {
|
||||
$('#register-button').on('click', function() {
|
||||
if ($('#consent@(consent.Id)').is(':checked')) {
|
||||
//do some stuff
|
||||
return true;
|
||||
} else {
|
||||
//just show validation errors, don't post
|
||||
alert('@Html.Raw(JavaScriptEncoder.Default.Encode(consent.RequiredMessage))');
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
}
|
||||
<div class="inputs accept-consent">
|
||||
<input id="consent@(consent.Id)" type="checkbox" name="consent@(consent.Id)" checked="@consent.Accepted" />
|
||||
<label for="consent@(consent.Id)">@consent.Message</label>
|
||||
</div>
|
||||
}
|
||||
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="buttons">
|
||||
<button type="submit" name="register-button" id="register-button" class="button-1 register-next-step-button">@T("Account.Register.Button")</button>
|
||||
</div>
|
||||
</form>
|
||||
<div class="external-authentication">
|
||||
@await Component.InvokeAsync(typeof(ExternalMethodsViewComponent), "ExternalAuthentication")
|
||||
</div>
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.RegisterBottom, additionalData = Model })
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
@using Nop.Services.Localization
|
||||
@using Nop.Core
|
||||
@inject ILocalizationService localizationService
|
||||
@inject IStoreContext storeContext
|
||||
|
||||
@{
|
||||
Layout = "_ColumnsOne";
|
||||
|
||||
var homepageTitle = await localizationService.GetLocalizedAsync(await storeContext.GetCurrentStoreAsync(), s => s.HomepageTitle);
|
||||
|
||||
//title
|
||||
if (!string.IsNullOrEmpty(homepageTitle))
|
||||
{
|
||||
NopHtml.AddTitleParts(homepageTitle);
|
||||
}
|
||||
|
||||
var homepageDescription = await localizationService.GetLocalizedAsync(await storeContext.GetCurrentStoreAsync(), s => s.HomepageDescription);
|
||||
|
||||
//meta
|
||||
if (!string.IsNullOrEmpty(homepageDescription))
|
||||
{
|
||||
NopHtml.AddMetaDescriptionParts(homepageDescription);
|
||||
}
|
||||
|
||||
//page class
|
||||
NopHtml.AppendPageCssClassParts("html-home-page");
|
||||
}
|
||||
<div class="page home-page">
|
||||
<div class="page-body">
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageTop })
|
||||
@await Component.InvokeAsync(typeof(TopicBlockViewComponent), new { systemName = "HomepageText" })
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageBeforeCategories })
|
||||
@await Component.InvokeAsync(typeof(HomepageCategoriesViewComponent))
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageBeforeProducts })
|
||||
@await Component.InvokeAsync(typeof(HomepageProductsViewComponent))
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageBeforeBestSellers })
|
||||
@await Component.InvokeAsync(typeof(HomepageBestSellersViewComponent))
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageBeforeNews })
|
||||
@await Component.InvokeAsync(typeof(HomepageNewsViewComponent))
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageBeforePoll })
|
||||
@await Component.InvokeAsync(typeof(HomepagePollsViewComponent))
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HomepageBottom })
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,213 @@
|
|||
@model ProductDetailsModel
|
||||
|
||||
@using Nop.Core
|
||||
@using Nop.Core.Domain.Catalog
|
||||
@using Nop.Core.Domain.Seo
|
||||
@using Nop.Services.Html
|
||||
|
||||
@inject IHtmlFormatter htmlFormatter
|
||||
@inject IWebHelper webHelper
|
||||
@inject SeoSettings seoSettings
|
||||
|
||||
@{
|
||||
Layout = "_ColumnsOne";
|
||||
|
||||
//title
|
||||
NopHtml.AddTitleParts(!string.IsNullOrEmpty(Model.MetaTitle) ? Model.MetaTitle : Model.Name);
|
||||
//meta
|
||||
NopHtml.AddMetaDescriptionParts(Model.MetaDescription);
|
||||
NopHtml.AddMetaKeywordParts(Model.MetaKeywords);
|
||||
//page class
|
||||
NopHtml.AppendPageCssClassParts("html-product-details-page");
|
||||
|
||||
//canonical URL
|
||||
if (seoSettings.CanonicalUrlsEnabled)
|
||||
{
|
||||
var productUrl = Url.RouteUrl<Product>(new { SeName = Model.SeName }, webHelper.GetCurrentRequestProtocol()).ToLowerInvariant();
|
||||
NopHtml.AddCanonicalUrlParts(productUrl, seoSettings.QueryStringInCanonicalUrlsEnabled);
|
||||
}
|
||||
|
||||
//open graph META tags
|
||||
if (seoSettings.OpenGraphMetaTags)
|
||||
{
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:type\" content=\"product\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:title\" content=\"" + Html.Encode(Model.Name) + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:description\" content=\"" + Html.Encode(htmlFormatter.StripTags(Model.MetaDescription)) + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:image\" content=\"" + Model.DefaultPictureModel.ImageUrl + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:image:url\" content=\"" + Model.DefaultPictureModel.ImageUrl + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:url\" content=\"" + webHelper.GetThisPageUrl(false) + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:site_name\" content=\"" + Html.Encode(Model.CurrentStoreName) + "\" />");
|
||||
}
|
||||
|
||||
//Twitter META tags
|
||||
if (seoSettings.TwitterMetaTags)
|
||||
{
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"twitter:card\" content=\"summary\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"twitter:site\" content=\"" + Html.Encode(Model.CurrentStoreName) + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"twitter:title\" content=\"" + Html.Encode(Model.Name) + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"twitter:description\" content=\"" + Html.Encode(htmlFormatter.StripTags(Model.MetaDescription)) + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"twitter:image\" content=\"" + Model.DefaultPictureModel.ImageUrl + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"twitter:url\" content=\"" + webHelper.GetThisPageUrl(false) + "\" />");
|
||||
}
|
||||
|
||||
NopHtml.AddJsonLdParts(Model.JsonLd);
|
||||
}
|
||||
<!--product breadcrumb-->
|
||||
@section Breadcrumb
|
||||
{
|
||||
@await Html.PartialAsync("_ProductBreadcrumb", Model.Breadcrumb)
|
||||
}
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsAfterBreadcrumb, additionalData = Model })
|
||||
<div class="page product-details-page">
|
||||
<div class="page-body">
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsTop, additionalData = Model })
|
||||
<form asp-route="Product" asp-route-sename="@Model.SeName" method="post" id="product-details-form">
|
||||
<div data-productid="@Model.Id">
|
||||
<div class="product-essential">
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsEssentialTop, additionalData = Model })
|
||||
<div class="gallery">
|
||||
<!--product pictures-->
|
||||
@await Html.PartialAsync("_ProductDetailsPictures", Model)
|
||||
<!--product videos-->
|
||||
@await Html.PartialAsync("_ProductDetailsVideos", Model)
|
||||
</div>
|
||||
<div class="overview">
|
||||
@await Html.PartialAsync("_Discontinued", Model)
|
||||
<div class="product-name">
|
||||
<h1>
|
||||
@Model.Name
|
||||
</h1>
|
||||
</div>
|
||||
@if (!string.IsNullOrEmpty(Model.ShortDescription))
|
||||
{
|
||||
<div class="short-description">
|
||||
@Html.Raw(Model.ShortDescription)
|
||||
</div>
|
||||
}
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsOverviewTop, additionalData = Model })
|
||||
<!--product reviews-->
|
||||
@await Html.PartialAsync("_ProductReviewOverview", Model.ProductReviewOverview)
|
||||
<!--product manufacturers-->
|
||||
@await Html.PartialAsync("_ProductManufacturers", Model.ProductManufacturers)
|
||||
<!--compare, email a friend-->
|
||||
<div class="overview-buttons">
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsInsideOverviewButtonsBefore, additionalData = Model })
|
||||
@await Html.PartialAsync("_CompareProductsButton", Model)
|
||||
@await Html.PartialAsync("_ProductEmailAFriendButton", Model)
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsInsideOverviewButtonsAfter, additionalData = Model })
|
||||
</div>
|
||||
@await Html.PartialAsync("_ShareButton", Model)
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsOverviewBottom, additionalData = Model })
|
||||
</div>
|
||||
@if (!string.IsNullOrEmpty(Model.FullDescription))
|
||||
{
|
||||
<div class="full-description">
|
||||
@Html.Raw(Model.FullDescription)
|
||||
</div>
|
||||
}
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsEssentialBottom, additionalData = Model })
|
||||
</div>
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsBeforeCollateral, additionalData = Model })
|
||||
<div class="product-collateral">
|
||||
<!--associated products-->
|
||||
<div class="product-variant-list">
|
||||
@foreach (var variant in Model.AssociatedProducts)
|
||||
{
|
||||
<div class="product-variant-line" data-productid="@variant.Id">
|
||||
@if (!string.IsNullOrWhiteSpace(variant.DefaultPictureModel.ImageUrl))
|
||||
{
|
||||
<div class="variant-picture">
|
||||
<img alt="@variant.DefaultPictureModel.AlternateText" src="@variant.DefaultPictureModel.ImageUrl"
|
||||
title="@variant.DefaultPictureModel.Title" id="main-product-img-@variant.Id" />
|
||||
</div>
|
||||
}
|
||||
<div class="variant-overview">
|
||||
@if (!string.IsNullOrWhiteSpace(variant.Name))
|
||||
{
|
||||
<div class="variant-name">
|
||||
@variant.Name
|
||||
</div>
|
||||
}
|
||||
@if (!string.IsNullOrWhiteSpace(variant.ShortDescription))
|
||||
{
|
||||
<div class="variant-description">
|
||||
@Html.Raw(variant.ShortDescription)
|
||||
</div>
|
||||
}
|
||||
<!--availability-->
|
||||
@await Html.PartialAsync("_Availability", variant)
|
||||
<!--SKU, MAN, GTIN, vendor-->
|
||||
@await Html.PartialAsync("_SKU_Man_GTIN_Ven", variant)
|
||||
<!--delivery-->
|
||||
@await Html.PartialAsync("_DeliveryInfo", variant)
|
||||
<!--sample download-->
|
||||
@await Html.PartialAsync("_DownloadSample", variant)
|
||||
<!--attributes-->
|
||||
@{
|
||||
var dataDictAttributes = new ViewDataDictionary(ViewData);
|
||||
dataDictAttributes.TemplateInfo.HtmlFieldPrefix = $"attributes_{variant.Id}";
|
||||
@await Html.PartialAsync("_ProductAttributes", variant, dataDictAttributes)
|
||||
}
|
||||
<!--gift card-->
|
||||
@{
|
||||
var dataDictGiftCard = new ViewDataDictionary(ViewData);
|
||||
dataDictGiftCard.TemplateInfo.HtmlFieldPrefix = $"giftcard_{variant.Id}";
|
||||
@await Html.PartialAsync("_GiftCardInfo", variant.GiftCard, dataDictGiftCard)
|
||||
}
|
||||
<!--rental info-->
|
||||
@{
|
||||
var dataDictRental = new ViewDataDictionary(ViewData);
|
||||
dataDictRental.TemplateInfo.HtmlFieldPrefix = $"rental_{variant.Id}";
|
||||
@await Html.PartialAsync("_RentalInfo", variant, dataDictRental)
|
||||
}
|
||||
<!--price & add to cart-->
|
||||
@{
|
||||
var dataDictPrice = new ViewDataDictionary(ViewData);
|
||||
dataDictPrice.TemplateInfo.HtmlFieldPrefix = $"price_{variant.Id}";
|
||||
@await Html.PartialAsync("_ProductPrice", variant.ProductPrice, dataDictPrice)
|
||||
}
|
||||
<!--price breaks-->
|
||||
@await Html.PartialAsync("_ProductTierPrices", variant.TierPrices)
|
||||
@{
|
||||
var dataDictAddToCart = new ViewDataDictionary(ViewData);
|
||||
dataDictAddToCart.TemplateInfo.HtmlFieldPrefix = $"addtocart_{variant.Id}";
|
||||
@await Html.PartialAsync("_AddToCart", variant.AddToCart, dataDictAddToCart)
|
||||
}
|
||||
<!--estimate shipping-->
|
||||
@{
|
||||
var dataDictEstimateShipping = new ViewDataDictionary(ViewData);
|
||||
dataDictEstimateShipping.TemplateInfo.HtmlFieldPrefix = $"estimate_shipping_{variant.Id}";
|
||||
@await Html.PartialAsync("_ProductEstimateShipping", variant.ProductEstimateShipping, dataDictEstimateShipping)
|
||||
}
|
||||
<!--wishlist-->
|
||||
@{
|
||||
var dataDictAddToWishlist = new ViewDataDictionary(ViewData);
|
||||
dataDictAddToWishlist.TemplateInfo.HtmlFieldPrefix = $"addtocart_{variant.Id}";
|
||||
@await Html.PartialAsync("_AddToWishlist", variant.AddToCart, dataDictAddToWishlist)
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (!Model.AssociatedProducts.Any())
|
||||
{
|
||||
<div class="no-associated-products">
|
||||
@T("Products.NoAssociatedProducts")
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
@await Html.PartialAsync("_ProductSpecifications", Model.ProductSpecificationModel)
|
||||
@await Html.PartialAsync("_ProductTags", Model.ProductTags)
|
||||
</div>
|
||||
@*we do not display "also purchased" for grouped products
|
||||
@await Component.InvokeAsync(typeof(ProductsAlsoPurchasedViewComponent), new { productId = Model.Id })*@
|
||||
@await Component.InvokeAsync(typeof(RelatedProductsViewComponent), new { productId = Model.Id })
|
||||
</div>
|
||||
</form>
|
||||
<!--product reviews-->
|
||||
@if (Model.ProductReviewOverview.AllowCustomerReviews)
|
||||
{
|
||||
@await Html.PartialAsync("_ProductReviews", Model.ProductReviews)
|
||||
}
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsBottom, additionalData = Model })
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,177 @@
|
|||
@model ProductDetailsModel
|
||||
|
||||
@using Nop.Core
|
||||
@using Nop.Core.Domain.Catalog
|
||||
@using Nop.Core.Domain.Seo
|
||||
@using Nop.Services.Html
|
||||
|
||||
@inject IHtmlFormatter htmlFormatter
|
||||
@inject IWebHelper webHelper
|
||||
@inject SeoSettings seoSettings
|
||||
|
||||
@{
|
||||
Layout = "_ColumnsOne";
|
||||
|
||||
//title
|
||||
NopHtml.AddTitleParts(!string.IsNullOrEmpty(Model.MetaTitle) ? Model.MetaTitle : Model.Name);
|
||||
//meta
|
||||
NopHtml.AddMetaDescriptionParts(Model.MetaDescription);
|
||||
NopHtml.AddMetaKeywordParts(Model.MetaKeywords);
|
||||
//page class
|
||||
NopHtml.AppendPageCssClassParts("html-product-details-page");
|
||||
|
||||
//canonical URL
|
||||
if (seoSettings.CanonicalUrlsEnabled)
|
||||
{
|
||||
var productUrl = Url.RouteUrl<Product>(new { SeName = Model.SeName }, webHelper.GetCurrentRequestProtocol()).ToLowerInvariant();
|
||||
NopHtml.AddCanonicalUrlParts(productUrl, seoSettings.QueryStringInCanonicalUrlsEnabled);
|
||||
}
|
||||
|
||||
//open graph META tags
|
||||
if (seoSettings.OpenGraphMetaTags)
|
||||
{
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:type\" content=\"product\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:title\" content=\"" + Html.Encode(Model.Name) + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:description\" content=\"" + Html.Encode(htmlFormatter.StripTags(Model.MetaDescription)) + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:image\" content=\"" + Model.DefaultPictureModel.ImageUrl + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:image:url\" content=\"" + Model.DefaultPictureModel.ImageUrl + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:url\" content=\"" + webHelper.GetThisPageUrl(false) + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"og:site_name\" content=\"" + Html.Encode(Model.CurrentStoreName) + "\" />");
|
||||
}
|
||||
|
||||
//Twitter META tags
|
||||
if (seoSettings.TwitterMetaTags)
|
||||
{
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"twitter:card\" content=\"summary\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"twitter:site\" content=\"" + Html.Encode(Model.CurrentStoreName) + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"twitter:title\" content=\"" + Html.Encode(Model.Name) + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"twitter:description\" content=\"" + Html.Encode(htmlFormatter.StripTags(Model.MetaDescription)) + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"twitter:image\" content=\"" + Model.DefaultPictureModel.ImageUrl + "\" />");
|
||||
NopHtml.AddHeadCustomParts("<meta property=\"twitter:url\" content=\"" + webHelper.GetThisPageUrl(false) + "\" />");
|
||||
}
|
||||
|
||||
NopHtml.AddJsonLdParts(Model.JsonLd);
|
||||
}
|
||||
<!--product breadcrumb-->
|
||||
@section Breadcrumb
|
||||
{
|
||||
@await Html.PartialAsync("_ProductBreadcrumb", Model.Breadcrumb)
|
||||
}
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsAfterBreadcrumb, additionalData = Model })
|
||||
<div class="page product-details-page">
|
||||
<div class="page-body">
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsTop, additionalData = Model })
|
||||
<form asp-route="Product" asp-route-sename="@Model.SeName" method="post" id="product-details-form">
|
||||
<div data-productid="@Model.Id">
|
||||
<div class="product-essential">
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsEssentialTop, additionalData = Model })
|
||||
<div class="gallery">
|
||||
<!--product pictures-->
|
||||
@await Html.PartialAsync("_ProductDetailsPictures", Model)
|
||||
<!--product videos-->
|
||||
@await Html.PartialAsync("_ProductDetailsVideos", Model)
|
||||
</div>
|
||||
<div class="overview">
|
||||
@await Html.PartialAsync("_Discontinued", Model)
|
||||
<div class="product-name">
|
||||
<h1>
|
||||
@Model.Name
|
||||
</h1>
|
||||
</div>
|
||||
@if (!string.IsNullOrEmpty(Model.ShortDescription))
|
||||
{
|
||||
<div class="short-description">
|
||||
@Html.Raw(Model.ShortDescription)
|
||||
</div>
|
||||
}
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsOverviewTop, additionalData = Model })
|
||||
<!--product reviews-->
|
||||
@await Html.PartialAsync("_ProductReviewOverview", Model.ProductReviewOverview)
|
||||
<!--manufacturers-->
|
||||
@await Html.PartialAsync("_ProductManufacturers", Model.ProductManufacturers)
|
||||
<!--availability-->
|
||||
@await Html.PartialAsync("_Availability", Model)
|
||||
<!--SKU, MAN, GTIN, vendor-->
|
||||
@await Html.PartialAsync("_SKU_Man_GTIN_Ven", Model)
|
||||
<!--delivery-->
|
||||
@await Html.PartialAsync("_DeliveryInfo", Model)
|
||||
<!--sample download-->
|
||||
@await Html.PartialAsync("_DownloadSample", Model)
|
||||
<!--attributes-->
|
||||
@{
|
||||
var dataDictAttributes = new ViewDataDictionary(ViewData);
|
||||
dataDictAttributes.TemplateInfo.HtmlFieldPrefix = $"attributes_{Model.Id}";
|
||||
@await Html.PartialAsync("_ProductAttributes", Model, dataDictAttributes)
|
||||
}
|
||||
<!--gift card-->
|
||||
@{
|
||||
var dataDictGiftCard = new ViewDataDictionary(ViewData);
|
||||
dataDictGiftCard.TemplateInfo.HtmlFieldPrefix = $"giftcard_{Model.Id}";
|
||||
@await Html.PartialAsync("_GiftCardInfo", Model.GiftCard, dataDictGiftCard)
|
||||
}
|
||||
<!--rental info-->
|
||||
@{
|
||||
var dataDictRental = new ViewDataDictionary(ViewData);
|
||||
dataDictRental.TemplateInfo.HtmlFieldPrefix = $"rental_{Model.Id}";
|
||||
@await Html.PartialAsync("_RentalInfo", Model, dataDictRental)
|
||||
}
|
||||
<!--price & add to cart & estimate shipping-->
|
||||
@{
|
||||
var dataDictPrice = new ViewDataDictionary(ViewData);
|
||||
dataDictPrice.TemplateInfo.HtmlFieldPrefix = $"price_{Model.Id}";
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductPriceTop, additionalData = Model })
|
||||
@await Html.PartialAsync("_ProductPrice", Model.ProductPrice, dataDictPrice)
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductPriceBottom, additionalData = Model })
|
||||
|
||||
@await Html.PartialAsync("_ProductTierPrices", Model.TierPrices)
|
||||
<div class="cart-compare-wrap">
|
||||
@{
|
||||
var dataDictAddToCart = new ViewDataDictionary(ViewData);
|
||||
dataDictAddToCart.TemplateInfo.HtmlFieldPrefix = $"addtocart_{Model.Id}";
|
||||
}
|
||||
@await Html.PartialAsync("_AddToCart", Model.AddToCart, dataDictAddToCart)
|
||||
|
||||
@await Html.PartialAsync("_CompareProductsButton", Model)
|
||||
</div>
|
||||
|
||||
@await Html.PartialAsync("_ProductEstimateShipping", Model.ProductEstimateShipping)
|
||||
}
|
||||
<!--wishlist, compare, email a friend-->
|
||||
<div class="overview-buttons">
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsInsideOverviewButtonsBefore, additionalData = Model })
|
||||
@{
|
||||
var dataDictAddToWishlist = new ViewDataDictionary(ViewData);
|
||||
dataDictAddToWishlist.TemplateInfo.HtmlFieldPrefix = $"addtocart_{Model.Id}";
|
||||
@await Html.PartialAsync("_AddToWishlist", Model.AddToCart, dataDictAddToWishlist)
|
||||
}
|
||||
@await Html.PartialAsync("_ProductEmailAFriendButton", Model)
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsInsideOverviewButtonsAfter, additionalData = Model })
|
||||
</div>
|
||||
@await Html.PartialAsync("_ShareButton", Model)
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsOverviewBottom, additionalData = Model })
|
||||
</div>
|
||||
@if (!string.IsNullOrEmpty(Model.FullDescription))
|
||||
{
|
||||
<div class="full-description">
|
||||
@Html.Raw(Model.FullDescription)
|
||||
</div>
|
||||
}
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsEssentialBottom, additionalData = Model })
|
||||
</div>
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsBeforeCollateral, additionalData = Model })
|
||||
<div class="product-collateral">
|
||||
@await Html.PartialAsync("_ProductSpecifications", Model.ProductSpecificationModel)
|
||||
@await Html.PartialAsync("_ProductTags", Model.ProductTags)
|
||||
</div>
|
||||
@await Component.InvokeAsync(typeof(ProductsAlsoPurchasedViewComponent), new { productId = Model.Id })
|
||||
@await Component.InvokeAsync(typeof(RelatedProductsViewComponent), new { productId = Model.Id })
|
||||
</div>
|
||||
</form>
|
||||
<!--product reviews-->
|
||||
@if (Model.ProductReviewOverview.AllowCustomerReviews)
|
||||
{
|
||||
@await Html.PartialAsync("_ProductReviews", Model.ProductReviews)
|
||||
}
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsBottom, additionalData = Model })
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,100 @@
|
|||
@model ProductDetailsModel.AddToCartModel
|
||||
@using Nop.Core.Domain.Orders
|
||||
@if (Model.UpdatedShoppingCartItemId > 0)
|
||||
{
|
||||
<input asp-for="UpdatedShoppingCartItemId" type="hidden" />
|
||||
}
|
||||
@if (!Model.DisableBuyButton || Model.CustomerEntersPrice)
|
||||
{
|
||||
<div class="add-to-cart">
|
||||
@if (Model.CustomerEntersPrice)
|
||||
{
|
||||
<div class="customer-entered-price">
|
||||
<div class="price-input">
|
||||
<label asp-for="CustomerEnteredPrice" asp-postfix=":" class="enter-price-label"></label>
|
||||
@*round price*@
|
||||
<input asp-for="CustomerEnteredPrice" value="@Convert.ToInt32(Math.Ceiling(Model.CustomerEnteredPrice))" class="enter-price-input" />
|
||||
</div>
|
||||
<div class="price-range">
|
||||
@Model.CustomerEnteredPriceRange
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
@if (!string.IsNullOrEmpty(Model.MinimumQuantityNotification))
|
||||
{
|
||||
<div class="min-qty-notification">@Model.MinimumQuantityNotification</div>
|
||||
}
|
||||
@if (!Model.DisableBuyButton)
|
||||
{
|
||||
<div class="add-to-cart-panel">
|
||||
<label asp-for="EnteredQuantity" asp-postfix=":" class="qty-label"></label>
|
||||
@if (Model.AllowedQuantities.Count > 0)
|
||||
{
|
||||
<select asp-for="EnteredQuantity" asp-items="Model.AllowedQuantities" id="product_enteredQuantity_@Model.ProductId" class="qty-dropdown" aria-label=@T("Products.Qty.AriaLabel")></select>
|
||||
<script asp-location="Footer">
|
||||
$(function() {
|
||||
$("#product_enteredQuantity_@Model.ProductId").on("change", function () {
|
||||
var data = {
|
||||
productId: @Model.ProductId,
|
||||
quantity: $('#product_enteredQuantity_@Model.ProductId').find(":selected").text()
|
||||
};
|
||||
$(document).trigger({ type: "product_quantity_changed", changedData: data });
|
||||
});
|
||||
});
|
||||
</script>
|
||||
}
|
||||
else
|
||||
{
|
||||
<input asp-for="EnteredQuantity" id="product_enteredQuantity_@Model.ProductId" class="qty-input" type="text" aria-label=@T("Products.Qty.AriaLabel")/>
|
||||
<script asp-location="Footer">
|
||||
//when a customer clicks 'Enter' button we submit the "add to cart" button (if visible)
|
||||
$(function() {
|
||||
$("#@Html.IdFor(model => model.EnteredQuantity)").on("keydown", function(event) {
|
||||
if (event.keyCode == 13) {
|
||||
$("#add-to-cart-button-@Model.ProductId").trigger("click");
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
$("#product_enteredQuantity_@Model.ProductId").on("input propertychange paste", function () {
|
||||
var data = {
|
||||
productId: @Model.ProductId,
|
||||
quantity: $('#product_enteredQuantity_@Model.ProductId').val()
|
||||
};
|
||||
$(document).trigger({ type: "product_quantity_changed", changedData: data });
|
||||
});
|
||||
});
|
||||
</script>
|
||||
}
|
||||
@{
|
||||
var addToCartText = "";
|
||||
if (Model.UpdatedShoppingCartItemId > 0 && Model.UpdateShoppingCartItemType.HasValue && Model.UpdateShoppingCartItemType.Value == ShoppingCartType.ShoppingCart)
|
||||
{
|
||||
addToCartText = T("ShoppingCart.AddToCart.Update").Text;
|
||||
}
|
||||
else
|
||||
{
|
||||
addToCartText = T("ShoppingCart.AddToCart").Text;
|
||||
if (Model.IsRental)
|
||||
{
|
||||
addToCartText = T("ShoppingCart.Rent").Text;
|
||||
}
|
||||
if (Model.AvailableForPreOrder)
|
||||
{
|
||||
addToCartText = T("ShoppingCart.PreOrder").Text;
|
||||
}
|
||||
}
|
||||
<button type="button" id="add-to-cart-button-@Model.ProductId" class="button-1 add-to-cart-button" data-productid="@Model.ProductId" onclick="AjaxCart.addproducttocart_details('@Url.RouteUrl("AddProductToCart-Details", new {productId = Model.ProductId, shoppingCartTypeId = (int) ShoppingCartType.ShoppingCart})', '#product-details-form');return false;">@T("Nopstation.Theme.CarHaven.ProductBox.BuyNow")</button>
|
||||
}
|
||||
</div>
|
||||
if (!string.IsNullOrEmpty(Model.PreOrderAvailabilityStartDateTimeUserTime))
|
||||
{
|
||||
<div class="pre-order-availability-date">
|
||||
<label>@T("ShoppingCart.PreOrderAvailability"):</label>
|
||||
@Html.Raw(Model.PreOrderAvailabilityStartDateTimeUserTime)
|
||||
</div>
|
||||
}
|
||||
}
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.ProductDetailsAddInfo, additionalData = Model })
|
||||
</div>
|
||||
}
|
||||
|
|
@ -0,0 +1,242 @@
|
|||
@model FooterModel
|
||||
|
||||
@using Nop.Core
|
||||
@using Nop.Core.Domain.Tax
|
||||
@using Nop.Core.Domain.Topics
|
||||
@using Nop.Services.Configuration;
|
||||
@using Nop.Services.Localization
|
||||
@using Nop.Services.Media;
|
||||
|
||||
@inject IWorkContext workContext
|
||||
@inject ILocalizationService localizationService
|
||||
@inject IPictureService pictureService
|
||||
@inject IStoreContext storeContext
|
||||
@inject ISettingService settingService
|
||||
@inject IThemeContext themeContext
|
||||
|
||||
@{
|
||||
var themeName = await themeContext.GetWorkingThemeNameAsync();
|
||||
var language = await workContext.GetWorkingLanguageAsync();
|
||||
var store = await storeContext.GetCurrentStoreAsync();
|
||||
var storeName = await localizationService.GetLocalizedAsync(store, s => s.Name);
|
||||
|
||||
var columns = 1;
|
||||
var hideDesignedByNopStation = await settingService.GetSettingByKeyAsync<bool>(
|
||||
"CarHavenSettings.HideDesignedByNopStationAtFooter", storeId: store.Id,loadSharedValueIfNotFound: true);
|
||||
|
||||
var showSupportedCards = await settingService.GetSettingByKeyAsync<bool>(
|
||||
"CarHavenSettings.ShowSupportedCardsAtFooter", storeId: store.Id, loadSharedValueIfNotFound: true);
|
||||
|
||||
var supportedCardsImageUrl = "";
|
||||
var pictureId = 0;
|
||||
|
||||
if (hideDesignedByNopStation)
|
||||
{
|
||||
columns++;
|
||||
}
|
||||
|
||||
if (showSupportedCards)
|
||||
{
|
||||
columns++;
|
||||
|
||||
pictureId = await settingService.GetSettingByKeyAsync<int>("CarHavenSettings.FooterSupportedCardsPictureId",
|
||||
storeId: store.Id,
|
||||
loadSharedValueIfNotFound: true
|
||||
);
|
||||
|
||||
supportedCardsImageUrl = await pictureService.GetPictureUrlAsync(pictureId);
|
||||
}
|
||||
|
||||
if (!Model.HidePoweredByNopCommerce)
|
||||
columns++;
|
||||
}
|
||||
|
||||
<div class="footer">
|
||||
<div class="footer-upper">
|
||||
|
||||
<div class="footer-links">
|
||||
<div class="footer-block information">
|
||||
<div class="title">
|
||||
<strong>@T("Footer.Information")</strong>
|
||||
</div>
|
||||
<ul class="list">
|
||||
@if (Model.SitemapEnabled && Model.DisplaySitemapFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("Sitemap")">@T("Sitemap")</a></li>
|
||||
}
|
||||
@foreach (var topic in Model.Topics.Where(x => x.IncludeInFooterColumn1).ToList())
|
||||
{
|
||||
<li><a href="@(Url.RouteUrl<Topic>(new { SeName = topic.SeName }))">@topic.Name</a></li>
|
||||
}
|
||||
@if (Model.DisplayContactUsFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("ContactUs")">@T("ContactUs")</a></li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer-block customer-service">
|
||||
<div class="title">
|
||||
<strong>@T("Footer.CustomerService")</strong>
|
||||
</div>
|
||||
<ul class="list">
|
||||
@if (Model.SearchEnabled && Model.DisplayProductSearchFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("ProductSearch")">@T("Search")</a> </li>
|
||||
}
|
||||
@if (Model.NewsEnabled && Model.DisplayNewsFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("NewsArchive")">@T("News")</a></li>
|
||||
}
|
||||
@if (Model.BlogEnabled && Model.DisplayBlogFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("Blog")">@T("Blog")</a></li>
|
||||
}
|
||||
@if (Model.ForumEnabled && Model.DisplayForumsFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("Boards")">@T("Forum.Forums")</a></li>
|
||||
}
|
||||
@if (Model.RecentlyViewedProductsEnabled && Model.DisplayRecentlyViewedProductsFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("RecentlyViewedProducts")">@T("Products.RecentlyViewedProducts")</a></li>
|
||||
}
|
||||
@if (Model.CompareProductsEnabled && Model.DisplayCompareProductsFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("CompareProducts")">@T("Products.Compare.List")</a></li>
|
||||
}
|
||||
@if (Model.NewProductsEnabled && Model.DisplayNewProductsFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("NewProducts")">@T("Products.NewProducts")</a></li>
|
||||
}
|
||||
@foreach (var topic in Model.Topics.Where(x => x.IncludeInFooterColumn2).ToList())
|
||||
{
|
||||
<li><a href="@(Url.RouteUrl<Topic>(new { SeName = topic.SeName }))">@topic.Name</a></li>
|
||||
}
|
||||
@if (Model.AllowCustomersToCheckGiftCardBalance)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("CheckGiftCardBalance")">@T("CheckGiftCardBalance")</a></li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer-block my-account">
|
||||
<div class="title">
|
||||
<strong>@T("Footer.MyAccount")</strong>
|
||||
</div>
|
||||
<ul class="list">
|
||||
@if (Model.DisplayCustomerInfoFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("CustomerInfo")">@T("Account.MyAccount")</a></li>
|
||||
}
|
||||
@if (Model.DisplayCustomerOrdersFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("CustomerOrders")">@T("Account.CustomerOrders")</a></li>
|
||||
}
|
||||
@if (Model.DisplayCustomerAddressesFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("CustomerAddresses")">@T("Account.CustomerAddresses")</a></li>
|
||||
}
|
||||
@if (Model.ShoppingCartEnabled && Model.DisplayShoppingCartFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("ShoppingCart")">@T("ShoppingCart")</a></li>
|
||||
}
|
||||
@if (Model.WishlistEnabled && Model.DisplayWishlistFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("Wishlist")">@T("Wishlist")</a></li>
|
||||
}
|
||||
@if (Model.AllowCustomersToApplyForVendorAccount && Model.DisplayApplyVendorAccountFooterItem)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("ApplyVendorAccount")">@T("Vendors.ApplyAccount")</a></li>
|
||||
}
|
||||
@foreach (var topic in Model.Topics.Where(x => x.IncludeInFooterColumn3).ToList())
|
||||
{
|
||||
<li><a href="@(Url.RouteUrl<Topic>(new { SeName = topic.SeName }))">@topic.Name</a></li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="follow-us">
|
||||
|
||||
@await Component.InvokeAsync(typeof(NewsletterBoxViewComponent))
|
||||
<div class="social">
|
||||
<div class="title">
|
||||
<strong>@T("Footer.FollowUs")</strong>
|
||||
</div>
|
||||
@await Component.InvokeAsync(typeof(SocialButtonsViewComponent))
|
||||
</div>
|
||||
|
||||
<div class="payment-method">
|
||||
@if (showSupportedCards == true)
|
||||
{
|
||||
<div class="title">
|
||||
<strong>@T("NopStation.Theme.CarHaven.FooterSupportedCards.Title")</strong>
|
||||
</div>
|
||||
|
||||
<div class="payment-methods">
|
||||
<img class="payment-method-image" src="@supportedCardsImageUrl" alt="Payment methods" title="Payment methods" />
|
||||
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-lower">
|
||||
@if (!Model.HidePoweredByNopCommerce)
|
||||
{
|
||||
<div class="footer-powered-by">
|
||||
@*Would you like to remove the "Powered by nopCommerce" link in the bottom of the footer?
|
||||
Please find more info at https://www.nopcommerce.com/nopcommerce-copyright-removal-key*@
|
||||
Powered by <a href="@(OfficialSite.Main)" target="_blank" @(Model.IsHomePage ? string.Empty : "rel=nofollow")>nopCommerce</a>
|
||||
</div>
|
||||
}
|
||||
|
||||
@if (!hideDesignedByNopStation)
|
||||
{
|
||||
<div class="footer-powered-by">
|
||||
Designed By <img class="nopstation-logo" alt="Designed by nopStation" title="Designed by nopStation" src="/Themes/CarHaven/Content/images/designed-by-nopstation.png" width="98" height="22">
|
||||
</div>
|
||||
}
|
||||
|
||||
<div class="footer-info">
|
||||
<span class="footer-disclaimer">@T("Content.CopyrightNotice", DateTime.Now.Year, Model.StoreName)</span>
|
||||
@if (Model.DisplayTaxShippingInfoFooter)
|
||||
{
|
||||
var inclTax = await workContext.GetTaxDisplayTypeAsync() == TaxDisplayType.IncludingTax;
|
||||
<span class="footer-tax-shipping">
|
||||
@T(inclTax ? "Footer.TaxShipping.InclTax" : "Footer.TaxShipping.ExclTax", Url.RouteTopicUrl("shippinginfo"))
|
||||
</span>
|
||||
}
|
||||
</div>
|
||||
@await Component.InvokeAsync(typeof(StoreThemeSelectorViewComponent))
|
||||
</div>
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.Footer, additionalData = Model })
|
||||
</div>
|
||||
<script asp-location="Footer">
|
||||
$(function() {
|
||||
$('.footer-block .title').on('click', function () {
|
||||
var e = window, a = 'inner';
|
||||
if (!('innerWidth' in window)) {
|
||||
a = 'client';
|
||||
e = document.documentElement || document.body;
|
||||
}
|
||||
var result = { width: e[a + 'Width'], height: e[a + 'Height'] };
|
||||
if (result.width < 769) {
|
||||
$(this).siblings('.list').slideToggle('slow');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script asp-location="Footer">
|
||||
$(function() {
|
||||
$('.block .title').on('click', function () {
|
||||
var e = window, a = 'inner';
|
||||
if (!('innerWidth' in window)) {
|
||||
a = 'client';
|
||||
e = document.documentElement || document.body;
|
||||
}
|
||||
var result = { width: e[a + 'Width'], height: e[a + 'Height'] };
|
||||
if (result.width < 1001) {
|
||||
$(this).siblings('.listbox').slideToggle('slow');
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
|
@ -0,0 +1,101 @@
|
|||
@model HeaderLinksModel
|
||||
@using Nop.Core.Domain.Customers
|
||||
@inject Nop.Core.IWebHelper webHelper
|
||||
|
||||
<div class="header-links">
|
||||
<ul>
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HeaderLinksBefore, additionalData = Model })
|
||||
@if (Model.IsAuthenticated)
|
||||
{
|
||||
<li class="user-dropdown">
|
||||
<span class="user-dropdown-toggle">
|
||||
<span class="fa fa-user-o" aria-hidden="true"></span>
|
||||
@Model.CustomerName.ToString().ToLower()
|
||||
</span>
|
||||
<ul >
|
||||
@if (Model.WishlistEnabled)
|
||||
{
|
||||
<li>
|
||||
<a href="@Url.RouteUrl("Wishlist")" class="ico-wishlist">
|
||||
<span class="wishlist-label">@T("Wishlist")</span>
|
||||
<span class="wishlist-qty">@T("Wishlist.HeaderQuantity", Model.WishlistItems)</span>
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
<li><a href="@Url.RouteUrl("CustomerInfo")" class="ico-account">@T("Account.MyAccount")@*@Model.CustomerName*@</a></li>
|
||||
<li><a href="@Url.RouteUrl("Logout")" class="ico-logout">@T("Account.Logout")</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
var returnUrl = Context.Request.Query.TryGetValue("returnUrl", out var url) && !StringValues.IsNullOrEmpty(url)
|
||||
? url.ToString()
|
||||
: webHelper.GetRawUrl(Context.Request);
|
||||
|
||||
<li class="user-dropdown">
|
||||
<span class="user-dropdown-toggle">
|
||||
<span class="fa fa-user-o" aria-hidden="true"></span>
|
||||
@T("Account.Login")
|
||||
</span>
|
||||
<ul>
|
||||
@if (Model.RegistrationType != UserRegistrationType.Disabled)
|
||||
{
|
||||
<li><a href="@Url.RouteUrl("Register", new { returnUrl })" class="ico-register">@T("Account.Register")</a></li>
|
||||
}
|
||||
<li><a href="@Url.RouteUrl("Login", new { returnUrl })" class="ico-login">@T("Account.Login")</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
}
|
||||
@if (Model.AllowPrivateMessages)
|
||||
{
|
||||
<li>
|
||||
<a href="@Url.RouteUrl("PrivateMessages", new { tab = "" })" class="ico-inbox">
|
||||
<span class="inbox-label">@T("PrivateMessages.Inbox")</span>
|
||||
<span class="inbox-unread">@Model.UnreadPrivateMessages</span>
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
|
||||
@if (Model.ShoppingCartEnabled)
|
||||
{
|
||||
<li id="topcartlink">
|
||||
<a href="@Url.RouteUrl("ShoppingCart")" class="ico-cart">
|
||||
<span class="cart-label">@T("ShoppingCart")</span>
|
||||
<span class="cart-qty">@T("ShoppingCart.HeaderQuantity", Model.ShoppingCartItems)</span>
|
||||
</a>
|
||||
</li>
|
||||
}
|
||||
@await Component.InvokeAsync(typeof(WidgetViewComponent), new { widgetZone = PublicWidgetZones.HeaderLinksAfter, additionalData = Model })
|
||||
</ul>
|
||||
@if (Model.AllowPrivateMessages && !string.IsNullOrEmpty(Model.AlertMessage))
|
||||
{
|
||||
//new private message notification
|
||||
<script asp-location="Footer">
|
||||
$(function() {
|
||||
displayPopupNotification('@Html.Raw(JavaScriptEncoder.Default.Encode(Model.AlertMessage))', 'success', false);
|
||||
});
|
||||
</script>
|
||||
}
|
||||
@if (Model.ShoppingCartEnabled)
|
||||
{
|
||||
<script asp-location="Footer">
|
||||
$(function() {
|
||||
$('.header').on('mouseenter', '#topcartlink', function () {
|
||||
$('#flyout-cart').addClass('active');
|
||||
});
|
||||
$('.header').on('mouseleave', '#topcartlink', function () {
|
||||
$('#flyout-cart').removeClass('active');
|
||||
});
|
||||
$('.header').on('mouseenter', '#flyout-cart', function () {
|
||||
$('#flyout-cart').addClass('active');
|
||||
});
|
||||
$('.header').on('mouseleave', '#flyout-cart', function () {
|
||||
$('#flyout-cart').removeClass('active');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
}
|
||||
</div>
|
||||