-
7config.xml
-
2270license-credits.md
-
4nbproject/project.properties
-
2nbproject/project.xml
-
495package-lock.json
-
23package.json
-
BINres/logo-sm.png
-
BINres/logo.png
-
52www/assets/css/app.css
-
4www/assets/css/home.css
-
68www/assets/images/background-transparent.svg
-
68www/assets/images/background.svg
-
BINwww/assets/images/bg.jpg
-
BINwww/assets/images/bg_night.jpg
-
BINwww/assets/images/companylogo.png
-
2www/assets/images/companylogo.svg
-
BINwww/assets/images/icons/128.png
-
BINwww/assets/images/icons/144.png
-
BINwww/assets/images/icons/152.png
-
BINwww/assets/images/icons/192.png
-
BINwww/assets/images/icons/256.png
-
BINwww/assets/images/icons/32.png
-
BINwww/assets/images/icons/512.png
-
2www/assets/images/icons/delivered.svg
-
2www/assets/images/icons/exception.svg
-
2www/assets/images/icons/info.svg
-
2www/assets/images/icons/intransit.svg
-
2www/assets/images/icons/logo.svg
-
2www/assets/images/icons/pretransit.svg
-
29www/assets/js/addresscode.js
-
96www/assets/js/linkaccount.js
-
6www/assets/js/main.js
-
86www/assets/js/offers_services.js
-
101www/assets/js/track.js
-
5www/index.html
-
12www/manifest.json
-
2www/package.json
-
41www/pages/addresscode.html
-
2317www/pages/credits.html
-
77www/pages/credits.template.html
-
20www/pages/home.html
-
60www/pages/linkaccount.html
-
72www/pages/linkaccount_existing.html
-
46www/pages/offers.html
-
53www/pages/services.html
-
2www/pages/settings.html
-
22www/pages/track.html
-
24www/pages/trackresult.html
-
121www/routes.js
-
12www/settings.js
2270
license-credits.md
File diff suppressed because it is too large
View File
495
package-lock.json
File diff suppressed because it is too large
View File
After Width: 512 | Height: 512 | Size: 11 KiB |
Before Width: 512 | Height: 512 | Size: 251 KiB After Width: 512 | Height: 512 | Size: 28 KiB |
68
www/assets/images/background-transparent.svg
File diff suppressed because it is too large
View File
68
www/assets/images/background.svg
File diff suppressed because it is too large
View File
Before Width: 1920 | Height: 1080 | Size: 161 KiB |
Before Width: 1271 | Height: 1920 | Size: 133 KiB |
After Width: 1165 | Height: 573 | Size: 57 KiB |
2
www/assets/images/companylogo.svg
File diff suppressed because it is too large
View File
Before Width: 128 | Height: 128 | Size: 22 KiB After Width: 128 | Height: 128 | Size: 6.4 KiB |
Before Width: 144 | Height: 144 | Size: 27 KiB After Width: 144 | Height: 144 | Size: 7.3 KiB |
Before Width: 152 | Height: 152 | Size: 30 KiB After Width: 152 | Height: 152 | Size: 7.6 KiB |
Before Width: 192 | Height: 192 | Size: 45 KiB After Width: 192 | Height: 192 | Size: 9.9 KiB |
Before Width: 256 | Height: 256 | Size: 75 KiB After Width: 256 | Height: 256 | Size: 13 KiB |
Before Width: 32 | Height: 32 | Size: 2.3 KiB After Width: 32 | Height: 32 | Size: 699 B |
Before Width: 512 | Height: 512 | Size: 251 KiB After Width: 512 | Height: 512 | Size: 28 KiB |
@ -0,0 +1,2 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<svg class="svg-inline--fa fa-check-circle fa-w-16" aria-hidden="true" data-icon="check-circle" data-prefix="fad" focusable="false" role="img" version="1.1" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><g class="fa-group" fill="#4caf50"><path class="fa-secondary" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm155.31 195.31l-184 184a16 16 0 0 1-22.62 0l-104-104a16 16 0 0 1 0-22.62l22.62-22.63a16 16 0 0 1 22.63 0L216 308.12l150.06-150.06a16 16 0 0 1 22.63 0l22.62 22.63a16 16 0 0 1 0 22.62z" opacity=".4"/><path class="fa-primary" d="M227.31 387.31a16 16 0 0 1-22.62 0l-104-104a16 16 0 0 1 0-22.62l22.62-22.63a16 16 0 0 1 22.63 0L216 308.12l150.06-150.06a16 16 0 0 1 22.63 0l22.62 22.63a16 16 0 0 1 0 22.62l-184 184z"/></g></svg> |
@ -0,0 +1,2 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<svg class="svg-inline--fa fa-exclamation-circle fa-w-16" aria-hidden="true" data-icon="exclamation-circle" data-prefix="fad" focusable="false" role="img" version="1.1" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><g class="fa-group" fill="#ffc107"><path class="fa-secondary" d="M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm38.24-238.41l-12.8 128A16 16 0 0 1 265.52 288h-19a16 16 0 0 1-15.92-14.41l-12.8-128A16 16 0 0 1 233.68 128h44.64a16 16 0 0 1 15.92 17.59z" opacity=".4"/><path class="fa-primary" d="M278.32 128h-44.64a16 16 0 0 0-15.92 17.59l12.8 128A16 16 0 0 0 246.48 288h19a16 16 0 0 0 15.92-14.41l12.8-128A16 16 0 0 0 278.32 128zM256 320a32 32 0 1 0 32 32 32 32 0 0 0-32-32z"/></g></svg> |
@ -0,0 +1,2 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<svg class="svg-inline--fa fa-info-circle fa-w-16" aria-hidden="true" data-icon="info-circle" data-prefix="fad" focusable="false" role="img" version="1.1" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><g class="fa-group" fill="#2196f3"><path class="fa-secondary" d="M256 8C119 8 8 119.08 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 110a42 42 0 1 1-42 42 42 42 0 0 1 42-42zm56 254a12 12 0 0 1-12 12h-88a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h12v-64h-12a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h64a12 12 0 0 1 12 12v100h12a12 12 0 0 1 12 12z" opacity=".4"/><path class="fa-primary" d="M256 202a42 42 0 1 0-42-42 42 42 0 0 0 42 42zm44 134h-12V236a12 12 0 0 0-12-12h-64a12 12 0 0 0-12 12v24a12 12 0 0 0 12 12h12v64h-12a12 12 0 0 0-12 12v24a12 12 0 0 0 12 12h88a12 12 0 0 0 12-12v-24a12 12 0 0 0-12-12z"/></g></svg> |
@ -0,0 +1,2 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<svg class="svg-inline--fa fa-location-circle fa-w-16" aria-hidden="true" data-icon="location-circle" data-prefix="fad" focusable="false" role="img" version="1.1" viewBox="0 0 496 512" xmlns="http://www.w3.org/2000/svg"><g class="fa-group" fill="#00bcd4"><path class="fa-secondary" d="M248,8C111,8,0,119,0,256S111,504,248,504,496,393,496,256,385,8,248,8ZM358.24,177.74,262.29,385.63c-11.2,24-46.38,16-46.38-9.59V288H128c-25.59,0-33.58-35.18-9.59-46.38L326.3,145.71c19.15-8,39.94,12.84,31.94,32Z" opacity=".4"/><path class="fa-primary" d="M118.36,241.7l207.89-95.95c19.2-8,40,12.8,32,32l-96,207.88c-11.2,24-46.38,16-46.38-9.59V288H128c-25.64,0-33.63-35.14-9.64-46.34Z"/></g></svg> |
2
www/assets/images/icons/logo.svg
File diff suppressed because it is too large
View File
@ -0,0 +1,2 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<svg class="svg-inline--fa fa-info-circle fa-w-16" aria-hidden="true" data-icon="info-circle" data-prefix="fad" focusable="false" role="img" version="1.1" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><g class="fa-group" fill="#673ab7"><path class="fa-secondary" d="m256 8c-137 0-248 111.08-248 248s111 248 248 248 248-111 248-248-111-248-248-248z" fill="#673ab7" opacity=".4"/></g><path class="fa-primary" d="m143.5 148.86h-32.143a5.3571 5.3571 0 0 0-5.3571 5.3571v203.57a5.3571 5.3571 0 0 0 5.3571 5.3572h32.143a5.3571 5.3571 0 0 0 5.3571-5.3572v-203.57a5.3571 5.3571 0 0 0-5.3571-5.3571zm42.857 0h-10.714a5.3571 5.3571 0 0 0-5.3572 5.3571v203.57a5.3571 5.3571 0 0 0 5.3572 5.3572h10.714a5.3571 5.3571 0 0 0 5.3571-5.3572v-203.57a5.3571 5.3571 0 0 0-5.3571-5.3571zm42.857 0h-10.714a5.3571 5.3571 0 0 0-5.3571 5.3571v203.57a5.3571 5.3571 0 0 0 5.3571 5.3572h10.714a5.3571 5.3571 0 0 0 5.3572-5.3572v-203.57a5.3571 5.3571 0 0 0-5.3572-5.3571zm85.714 0h-32.143a5.3571 5.3571 0 0 0-5.3571 5.3571v203.57a5.3571 5.3571 0 0 0 5.3571 5.3572h32.143a5.3571 5.3571 0 0 0 5.3571-5.3572v-203.57a5.3571 5.3571 0 0 0-5.3571-5.3571zm85.714 0h-32.143a5.3571 5.3571 0 0 0-5.3571 5.3571v203.57a5.3571 5.3571 0 0 0 5.3571 5.3572h32.143a5.3571 5.3571 0 0 0 5.3571-5.3572v-203.57a5.3571 5.3571 0 0 0-5.3571-5.3571z" fill="#673ab7"/></svg> |
@ -0,0 +1,29 @@ |
|||
/* |
|||
* This Source Code Form is subject to the terms of the Mozilla Public |
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this |
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|||
*/ |
|||
|
|||
|
|||
function getAddressQRCode() { |
|||
var qrstring = $("#addresscodeform #name").val() + "\t" |
|||
+ $("#addresscodeform #company").val() + "\t" |
|||
+ $("#addresscodeform #street1").val() + "\t" |
|||
+ $("#addresscodeform #street2").val() + "\t" |
|||
+ $("#addresscodeform #city").val() + "\t" |
|||
+ $("#addresscodeform #state").val() + "\t" |
|||
+ $("#addresscodeform #zip").val(); |
|||
|
|||
var canvas = document.createElement('canvas'); |
|||
|
|||
bwipjs.toCanvas(canvas, { |
|||
bcid: 'qrcode', // Barcode type
|
|||
text: qrstring, // Text to encode
|
|||
scale: 5, // 3x scaling factor
|
|||
includetext: false, // Show human-readable text
|
|||
textxalign: 'center', // Always good to set this
|
|||
}); |
|||
document.getElementById("addresscode-barcode").src = canvas.toDataURL('image/png'); |
|||
|
|||
app.popup.create({el: document.getElementById("addresscode-popup")}).open(); |
|||
} |
@ -1,96 +0,0 @@ |
|||
/* |
|||
* This Source Code Form is subject to the terms of the Mozilla Public |
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this |
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|||
*/ |
|||
|
|||
|
|||
function setupNewAccount(name) { |
|||
app.dialog.preloader("Finishing up..."); |
|||
|
|||
apirequest( |
|||
SETTINGS.apis.registernew, |
|||
{ |
|||
name: name |
|||
}, |
|||
function (resp) { |
|||
app.dialog.close(); |
|||
if (resp.status == "ERROR") { |
|||
app.dialog.alert(resp.msg, "Error"); |
|||
return; |
|||
} |
|||
setStorage("client_uuid", resp.client_uuid); |
|||
setStorage("device_uuid", resp.device_uuid); |
|||
app.toast.create({ |
|||
icon: '<i class="far fa-user-check fa-3x margin"></i>', |
|||
text: '<h3 class="no-margin-top">Account Set Up!</h3>', |
|||
position: 'center', |
|||
closeTimeout: 3000 |
|||
}).open(); |
|||
router.navigate("/home", { |
|||
transition: "f7-dive" |
|||
}); |
|||
}, |
|||
function (xhr) { |
|||
app.dialog.close(); |
|||
try { |
|||
var error = $.parseJSON(xhr.responseText); |
|||
if (error && typeof error.msg != 'undefined') { |
|||
app.dialog.alert(error.msg + " (NEWAC_XHR)", "Error"); |
|||
} else { |
|||
app.dialog.alert("A server or network error occurred. Try again later. (NEWAC_XHRNOMSG)", "Error"); |
|||
} |
|||
} catch (ex) { |
|||
app.dialog.alert("A server error occurred. Try again later. (NEWAC_XHRBADJSON)", "Error"); |
|||
} |
|||
}, "POST"); |
|||
} |
|||
|
|||
function setupExistingAccount(email, phone, invoiceid) { |
|||
app.dialog.preloader("Finding your account..."); |
|||
|
|||
apirequest( |
|||
SETTINGS.apis.registerexisting, |
|||
{ |
|||
email: email, |
|||
phone: phone, |
|||
invoiceid: invoiceid |
|||
}, |
|||
function (resp) { |
|||
app.dialog.close(); |
|||
if (resp.status == "ERROR") { |
|||
app.dialog.alert(resp.msg, "Error"); |
|||
return; |
|||
} |
|||
setStorage("client_uuid", resp.client_uuid); |
|||
setStorage("device_uuid", resp.device_uuid); |
|||
app.toast.create({ |
|||
icon: '<i class="far fa-user-check fa-3x margin"></i>', |
|||
text: '<h3 class="no-margin-top">Account Linked!</h3>', |
|||
position: 'center', |
|||
closeTimeout: 3000 |
|||
}).open(); |
|||
router.navigate("/home", { |
|||
transition: "f7-dive" |
|||
}); |
|||
}, |
|||
function (xhr) { |
|||
app.dialog.close(); |
|||
try { |
|||
var error = $.parseJSON(xhr.responseText); |
|||
if (error && typeof error.msg != 'undefined') { |
|||
app.dialog.alert(error.msg + " (LINKAC_XHR)", "Error"); |
|||
} else { |
|||
app.dialog.alert("A server or network error occurred. Try again later. (LINKAC_XHRNOMSG)", "Error"); |
|||
} |
|||
} catch (ex) { |
|||
app.dialog.alert("A server error occurred. Try again later. (LINKAC_XHRBADJSON)", "Error"); |
|||
} |
|||
}, "POST"); |
|||
} |
|||
|
|||
function unlinkAccount() { |
|||
localStorage.removeItem("client_uuid"); |
|||
localStorage.removeItem("device_uuid"); |
|||
restartApplication(); |
|||
} |
@ -1,86 +0,0 @@ |
|||
/* |
|||
* This Source Code Form is subject to the terms of the Mozilla Public |
|||
* License, v. 2.0. If a copy of the MPL was not distributed with this |
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|||
*/ |
|||
|
|||
|
|||
function openOffersAsync(routeTo, routeFrom, resolve, reject) { |
|||
app.dialog.preloader("Fetching latest deals..."); |
|||
|
|||
apirequest( |
|||
SETTINGS.apis.offers_services, |
|||
{}, |
|||
function (resp) { |
|||
app.dialog.close(); |
|||
if (resp.status == "ERROR") { |
|||
app.dialog.alert(resp.msg, "Error"); |
|||
reject(); |
|||
} else { |
|||
var context = { |
|||
offers: [] |
|||
}; |
|||
|
|||
for (var i = 0; i < resp.offers.length; i++) { |
|||
if (resp.offers[i].valid === true) { |
|||
// no expiration
|
|||
resp.offers[i].expires = "Limited time offer"; |
|||
} else { |
|||
resp.offers[i].expires = "Expires " + formatTimestamp("l F j, Y", resp.offers[i].valid.to); |
|||
} |
|||
context.offers.push(resp.offers[i]); |
|||
} |
|||
|
|||
resolve({ |
|||
templateUrl: "pages/offers.html", |
|||
}, { |
|||
context: context |
|||
}); |
|||
} |
|||
}, |
|||
function (xhr) { |
|||
app.dialog.close(); |
|||
var error = $.parseJSON(xhr.responseText); |
|||
if (error && typeof error.msg != 'undefined') { |
|||
app.dialog.alert(error.msg, "Error"); |
|||
} else { |
|||
app.dialog.alert("A server or network error occurred.", "Error"); |
|||
} |
|||
reject(); |
|||
}, "GET"); |
|||
} |
|||
|
|||
function openServicesAsync(routeTo, routeFrom, resolve, reject) { |
|||
app.dialog.preloader("Just a second..."); |
|||
|
|||
apirequest( |
|||
SETTINGS.apis.offers_services, |
|||
{}, |
|||
function (resp) { |
|||
app.dialog.close(); |
|||
if (resp.status == "ERROR") { |
|||
app.dialog.alert(resp.msg, "Error"); |
|||
reject(); |
|||
} else { |
|||
var context = { |
|||
services: resp.services |
|||
}; |
|||
|
|||
resolve({ |
|||
templateUrl: "pages/services.html", |
|||
}, { |
|||
context: context |
|||
}); |
|||
} |
|||
}, |
|||
function (xhr) { |
|||
app.dialog.close(); |
|||
var error = $.parseJSON(xhr.responseText); |
|||
if (error && typeof error.msg != 'undefined') { |
|||
app.dialog.alert(error.msg, "Error"); |
|||
} else { |
|||
app.dialog.alert("A server or network error occurred.", "Error"); |
|||
} |
|||
reject(); |
|||
}, "GET"); |
|||
} |
2317
www/pages/credits.html
File diff suppressed because it is too large
View File
@ -1,60 +0,0 @@ |
|||
<!-- This Source Code Form is subject to the terms of the Mozilla Public |
|||
- License, v. 2.0. If a copy of the MPL was not distributed with this |
|||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. --> |
|||
|
|||
<div class="page" data-name="linkaccount"> |
|||
|
|||
<div class="navbar"> |
|||
<div class="navbar-inner text-color-white color-white"> |
|||
<div class="left"> |
|||
<a class="link back" href="#"> |
|||
<i class="icon icon-back"></i> |
|||
<span class="if-not-md">Back</span> |
|||
</a> |
|||
</div> |
|||
<div class="title">Link Account</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="page-content noselect"> |
|||
|
|||
<div class="row justify-content-center margin-top"> |
|||
<div class="col-100 medium-90 xlarge-75 margin-horizontal"> |
|||
<div class="block text-color-white"> |
|||
<p><span class="taptext">Tap</span><span class="clicktext">Click</span> the option that best describes you. |
|||
</div> |
|||
</div> |
|||
<div class="col-100 medium-90 xlarge-75 margin-horizontal"> |
|||
<div class="card margin"> |
|||
<div class="card-content text-align-center padding-vertical" onclick='router.navigate("/linkaccount/new")'> |
|||
<div> |
|||
<div class="card-header display-block no-hairlines"> |
|||
<h1 class="no-margin"><i class="fad fa-user-plus"></i></h1> |
|||
<h2 class="no-margin">New Customer</h2> |
|||
</div> |
|||
</div> |
|||
<div class="card-content-padding"> |
|||
<p>I haven't done business with Netsyms before. |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
<div class="col-100 medium-90 xlarge-75 margin-horizontal"> |
|||
<div class="card margin"> |
|||
<div class="card-content text-align-center padding-vertical" onclick='router.navigate("/linkaccount/existing")'> |
|||
<div> |
|||
<div class="card-header display-block no-hairlines"> |
|||
<h1 class="no-margin"><i class="fad fa-user-check"></i></h1> |
|||
<h2 class="no-margin">Current Customer</h2> |
|||
</div> |
|||
</div> |
|||
<div class="card-content-padding"> |
|||
<p>I've received at least one invoice from Netsyms in the past. |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
@ -1,72 +0,0 @@ |
|||
<!-- This Source Code Form is subject to the terms of the Mozilla Public |
|||
- License, v. 2.0. If a copy of the MPL was not distributed with this |
|||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. --> |
|||
|
|||
<div class="page" data-name="linkaccount_new"> |
|||
|
|||
<div class="navbar"> |
|||
<div class="navbar-inner text-color-white color-white"> |
|||
<div class="left"> |
|||
<a class="link back" href="#"> |
|||
<i class="icon icon-back"></i> |
|||
<span class="if-not-md">Back</span> |
|||
</a> |
|||
</div> |
|||
<div class="title">Link Account</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="page-content noselect"> |
|||
|
|||
<div class="row justify-content-center margin-top"> |
|||
<div class="col-100 medium-90 xlarge-75 margin-horizontal"> |
|||
<div class="card margin"> |
|||
<div class="card-content padding-vertical"> |
|||
<div> |
|||
<div class="card-header display-block no-hairlines text-align-center"> |
|||
<h2 class="no-margin">Welcome back!<br>Let's find your account.</h2> |
|||
<p>Fill in as much info as you can. |
|||
</div> |
|||
</div> |
|||
<div class="list"> |
|||
<ul> |
|||
<li class="item-content item-input item-input-outline"> |
|||
<div class="item-inner"> |
|||
<div class="item-title item-floating-label">Email</div> |
|||
<div class="item-input-wrap"> |
|||
<input type="email" id="existingaccount_email" /> |
|||
<span class="input-clear-button"></span> |
|||
</div> |
|||
</div> |
|||
</li> |
|||
<li class="item-content item-input item-input-outline"> |
|||
<div class="item-inner"> |
|||
<div class="item-title item-floating-label">Phone</div> |
|||
<div class="item-input-wrap"> |
|||
<input type="tel" id="existingaccount_phone" /> |
|||
<span class="input-clear-button"></span> |
|||
</div> |
|||
</div> |
|||
</li> |
|||
<li class="item-content item-input item-input-outline"> |
|||
<div class="item-inner"> |
|||
<div class="item-title item-floating-label">Invoice Number</div> |
|||
<div class="item-input-wrap"> |
|||
<input type="tel" id="existingaccount_invoiceid" /> |
|||
<span class="input-clear-button"></span> |
|||
<div class="item-input-info">Find it in the dark blue box on any invoice.</div> |
|||
</div> |
|||
</div> |
|||
</li> |
|||
</ul> |
|||
</div> |
|||
<div class="card-content-padding"> |
|||
<div class="button" onclick="setupExistingAccount($('#existingaccount_email').val(),$('#existingaccount_phone').val(),$('#existingaccount_invoiceid').val())"><i class="far fa-chevron-right"></i> Finish</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
@ -1,46 +0,0 @@ |
|||
<!-- This Source Code Form is subject to the terms of the Mozilla Public |
|||
- License, v. 2.0. If a copy of the MPL was not distributed with this |
|||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. --> |
|||
|
|||
<div class="page" data-name="offers"> |
|||
|
|||
<div class="navbar"> |
|||
<div class="navbar-inner text-color-white color-white"> |
|||
<div class="left"> |
|||
<a class="link back" href="#"> |
|||
<i class="icon icon-back"></i> |
|||
<span class="if-not-md">Back</span> |
|||
</a> |
|||
</div> |
|||
<div class="title">Offers</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="page-content noselect"> |
|||
<div class="row justify-content-center margin-top"> |
|||
<div class="col-100 medium-90 xlarge-75 margin-horizontal"> |
|||
<div class="row justify-content-center"> |
|||
{{#each offers}} |
|||
<div class="col-100 small-50 xlarge-33"> |
|||
<div class="card margin"> |
|||
<div class="card-content text-align-center padding-vertical"> |
|||
<div> |
|||
<div class="card-header display-block no-hairlines"> |
|||
<h1 class="no-margin"><i class="{{icon}}"></i></h1> |
|||
<h1 class="no-margin">{{title}}</h1> |
|||
<small style="opacity: 0.7"><i class="far fa-clock"></i> {{expires}}</small> |
|||
</div> |
|||
</div> |
|||
<div class="card-content-padding"> |
|||
<p>{{text}} |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
{{/each}} |
|||
</div> |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |
@ -1,53 +0,0 @@ |
|||
<!-- This Source Code Form is subject to the terms of the Mozilla Public |
|||
- License, v. 2.0. If a copy of the MPL was not distributed with this |
|||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. --> |
|||
|
|||
<div class="page" data-name="services"> |
|||
|
|||
<div class="navbar"> |
|||
<div class="navbar-inner text-color-white color-white"> |
|||
<div class="left"> |
|||
<a class="link back" href="#"> |
|||
<i class="icon icon-back"></i> |
|||
<span class="if-not-md">Back</span> |
|||
</a> |
|||
</div> |
|||
<div class="title">Services</div> |
|||
</div> |
|||
</div> |
|||
|
|||
<div class="page-content noselect"> |
|||
<div class="row justify-content-center margin-top"> |
|||
<div class="col-100 medium-90 xlarge-75 margin-horizontal"> |
|||
<a name="top"></a> |
|||
{{#each services}} |
|||
<h2 class="margin-left display-flex justify-content-space-between"> |
|||
<span>{{cat}}</span> |
|||
<span onclick="$('.page[data-name=services] .page-content').animate({scrollTop: '0'});" class="margin-top-half"><i class="material-icons">arrow_upward</i></span> |
|||
</h2> |
|||
<div class="row justify-content-center"> |
|||
{{#each services}} |
|||
<div class="col-100 small-50 xlarge-33"> |
|||
<div class="card margin"> |
|||
<div class="card-content text-align-center padding-vertical"> |
|||
<div> |
|||
<div class="card-header display-block no-hairlines"> |
|||
<h1 class="no-margin"><i class="{{icon}}"></i></h1> |
|||
<h1 class="no-margin">{{title}}</h1> |
|||
<small style="opacity: 0.7">{{price}}</small> |
|||
</div> |
|||
</div> |
|||
<div class="card-content-padding"> |
|||
<p>{{text}} |
|||
</div> |
|||
</div> |
|||
</div> |
|||
</div> |
|||
{{/each}} |
|||
</div> |
|||
{{/each}} |
|||
</div> |
|||
</div> |
|||
|
|||
</div> |
|||
</div> |