Buy a Gift Card
Send a digital gift card by email
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = 'e5e5bec1-1796-4bd0-a8df-d082dd8d3968';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == 'e5e5bec1-1796-4bd0-a8df-d082dd8d3968' || additionalServices.includes('e5e5bec1-1796-4bd0-a8df-d082dd8d3968') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Standard Haircut/With Beard Trim
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = 'ab5c8051-1033-4fac-9ba5-48fca9731703';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == 'ab5c8051-1033-4fac-9ba5-48fca9731703' || additionalServices.includes('ab5c8051-1033-4fac-9ba5-48fca9731703') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Standard Haircut
Haircut Ages 13+
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '3f499593-9c09-4727-92ff-052e0318a16d';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '3f499593-9c09-4727-92ff-052e0318a16d' || additionalServices.includes('3f499593-9c09-4727-92ff-052e0318a16d') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Shape Up/Edge Up
Hairline outline, mustache trim, neckline cleanup, and eyebrow arch.
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '7446a58c-2545-4c06-bee8-cb029ea1d1eb';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '7446a58c-2545-4c06-bee8-cb029ea1d1eb' || additionalServices.includes('7446a58c-2545-4c06-bee8-cb029ea1d1eb') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = 'a05f7e4a-bb08-4289-8eed-c06d1583e7c2';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == 'a05f7e4a-bb08-4289-8eed-c06d1583e7c2' || additionalServices.includes('a05f7e4a-bb08-4289-8eed-c06d1583e7c2') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Full Service
Shampoo and conditioning, haircut, Rest Facial, and beard treatment or shave.
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = 'eda9c824-21aa-4175-8672-1c617cbc869a';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == 'eda9c824-21aa-4175-8672-1c617cbc869a' || additionalServices.includes('eda9c824-21aa-4175-8672-1c617cbc869a') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Child Haircut
Child Services 12 and under
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = 'e507a765-7e9b-4a20-ba64-5ce22f9c0c14';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == 'e507a765-7e9b-4a20-ba64-5ce22f9c0c14' || additionalServices.includes('e507a765-7e9b-4a20-ba64-5ce22f9c0c14') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '68ef78e8-f78d-405d-85b7-f7427e7dff12';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '68ef78e8-f78d-405d-85b7-f7427e7dff12' || additionalServices.includes('68ef78e8-f78d-405d-85b7-f7427e7dff12') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Royal Treatment with Standard Cut/ Beard Trim
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = 'f4182ee5-dfef-44ba-a0fd-a9a020c19432';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == 'f4182ee5-dfef-44ba-a0fd-a9a020c19432' || additionalServices.includes('f4182ee5-dfef-44ba-a0fd-a9a020c19432') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Royal Treatment with Shape Up /Beard Trim
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '3babad58-21b1-4688-841b-7b72408a5af0';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '3babad58-21b1-4688-841b-7b72408a5af0' || additionalServices.includes('3babad58-21b1-4688-841b-7b72408a5af0') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Basic Design/Basic Hair Enhancement
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '94412847-0efc-43c8-9886-6d7523af7d0a';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '94412847-0efc-43c8-9886-6d7523af7d0a' || additionalServices.includes('94412847-0efc-43c8-9886-6d7523af7d0a') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '457d36f1-c811-4329-a56e-e2144148f4a5';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '457d36f1-c811-4329-a56e-e2144148f4a5' || additionalServices.includes('457d36f1-c811-4329-a56e-e2144148f4a5') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Beard Color
Ideal for clients who want to cover up a few grays or just want to try something new. Haircut/edge-up NOT included.
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '009a737e-4e92-4da9-8653-b950f34d2835';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '009a737e-4e92-4da9-8653-b950f34d2835' || additionalServices.includes('009a737e-4e92-4da9-8653-b950f34d2835') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Box Braids(Full Head)
Ideal for clients with fade tapers or just a line up. Includes shampoo and conditioning. Haircut/edge up is NOT included.
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '19ecaf73-a915-4c5a-bf6a-7f24f7a5336b';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '19ecaf73-a915-4c5a-bf6a-7f24f7a5336b' || additionalServices.includes('19ecaf73-a915-4c5a-bf6a-7f24f7a5336b') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Box Braids(Half Head)
Ideal for clients with fade around the entire perimeter of the head. If hair is longer than 5 inches please book full head.Includes shampoo and conditioning. Haircut/edge-up is NOT included.
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '9d7be0b8-84e4-438a-91b0-06ecbd6a5b98';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '9d7be0b8-84e4-438a-91b0-06ecbd6a5b98' || additionalServices.includes('9d7be0b8-84e4-438a-91b0-06ecbd6a5b98') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Cornrow Braids(Full Head)
Ideal for clients with fade tapers or just a line up. Includes shampoo and conditioning. Haircut/edge up is NOT included.
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '3986a500-f19b-4377-9c55-26b96fd59084';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '3986a500-f19b-4377-9c55-26b96fd59084' || additionalServices.includes('3986a500-f19b-4377-9c55-26b96fd59084') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Cornrow Braids(Half Head)
Ideal for clients with fade around the entire perimeter of the head. If hair is longer than 5 inches please book full head. Includes shampoo and conditioning. Haircut/edge-up is NOT included.
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = 'e475d19e-8222-49a7-9af6-1284f693c1e2';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == 'e475d19e-8222-49a7-9af6-1284f693c1e2' || additionalServices.includes('e475d19e-8222-49a7-9af6-1284f693c1e2') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '45e86db8-2b46-4a32-91e6-a5f5983f7262';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '45e86db8-2b46-4a32-91e6-a5f5983f7262' || additionalServices.includes('45e86db8-2b46-4a32-91e6-a5f5983f7262') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '3e9a5575-1cb6-4707-97cd-06ab5141d968';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '3e9a5575-1cb6-4707-97cd-06ab5141d968' || additionalServices.includes('3e9a5575-1cb6-4707-97cd-06ab5141d968') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Consultation
Ideal for new or exisiting clients who want to book color or loc services
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '1bdedf56-5e26-459e-84a3-0da027f1ad27';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '1bdedf56-5e26-459e-84a3-0da027f1ad27' || additionalServices.includes('1bdedf56-5e26-459e-84a3-0da027f1ad27') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = 'd7dad5ac-1a31-4f02-807d-a3c0d9bbb586';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == 'd7dad5ac-1a31-4f02-807d-a3c0d9bbb586' || additionalServices.includes('d7dad5ac-1a31-4f02-807d-a3c0d9bbb586') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Color(Double Process)
Ideal for clients who are wanting to achieve platinum/ash blonde and/or requires hair lightening to achieve desired hair color. Consultation is required prior to service. Haircut/edge up is NOT included.
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '06651f17-7aaf-4b08-82d3-94212fcc1114';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '06651f17-7aaf-4b08-82d3-94212fcc1114' || additionalServices.includes('06651f17-7aaf-4b08-82d3-94212fcc1114') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
Classy Facial
Cleansing , exfoliating, toning, eye masks, face mask, facial serum, moisturizer applied
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = 'a2f99ca7-89f1-447f-a777-091ed363c679';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == 'a2f99ca7-89f1-447f-a777-091ed363c679' || additionalServices.includes('a2f99ca7-89f1-447f-a777-091ed363c679') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">
{
if (response.ok) {
response.text().then((text) => {
const element = document.getElementById('selected-service-details');
if (element) element.innerHTML = text;
document.getElementById('mobileSubtotal').innerText = document.getElementById('subtotalValue').innerText;
if ('None') {
const text = document.getElementById('selected-service-details').innerText;
let matches = text.match(/\d+\s+min/g);
if (matches) {
let sum = matches.map(match => parseInt(match)).reduce((a, b) => a + b, 0);
document.getElementById('mobileItemCount').innerText = '';
document.getElementById('mobileServiceDuration').innerText = `${matches.length } ${matches.length > 1 ? 'items' : 'item'} - ${sum} min`;
}
} else {
document.getElementById('mobileServiceDuration').innerText=document.getElementById('selectedServiceDuration').innerText;
}
})
}
else {
addMessage('An error occurred while fetching the selected service details', 'error')
}
});
$store.activeEntity.id = '9127bd4c-fa25-4247-bfca-ce47f813c9a7';
document.getElementById('actionButton').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
document.getElementById('continueMobile').href = '/appointments/service-providers/?location-id=13616c6b-10d0-4333-903d-4b0f84994f59&service-id=' + $store.activeEntity.id;
serviceSelected = true;"
:class="$store.activeEntity.id == '9127bd4c-fa25-4247-bfca-ce47f813c9a7' || additionalServices.includes('9127bd4c-fa25-4247-bfca-ce47f813c9a7') ? 'border-2 border-skin-primary' : 'border border-borderGray hover:border-skin-primary'"
class="service flex flex-col bg-white rounded-2xl overflow-hidden cursor-pointer">