@blackcode_sa/metaestetics-api 1.14.61 → 1.14.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/index.js +418 -781
- package/dist/admin/index.mjs +418 -781
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +6 -2
- package/dist/index.mjs +6 -2
- package/package.json +1 -1
- package/src/admin/mailing/appointment/appointment.mailing.service.ts +430 -793
- package/src/services/appointment/appointment.service.ts +14 -2
package/dist/admin/index.mjs
CHANGED
|
@@ -1978,195 +1978,139 @@ var patientAppointmentConfirmedTemplate = `
|
|
|
1978
1978
|
<meta charset="UTF-8">
|
|
1979
1979
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
1980
1980
|
<title>Appointment Confirmed</title>
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1984
|
-
|
|
1985
|
-
|
|
1986
|
-
|
|
1987
|
-
|
|
1988
|
-
|
|
1989
|
-
|
|
1990
|
-
max-width: 600px;
|
|
1991
|
-
margin: 0 auto;
|
|
1992
|
-
background: #ffffff;
|
|
1993
|
-
border-radius: 20px;
|
|
1994
|
-
overflow: hidden;
|
|
1995
|
-
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
1996
|
-
margin-top: 40px;
|
|
1997
|
-
margin-bottom: 40px;
|
|
1998
|
-
}
|
|
1999
|
-
.header {
|
|
2000
|
-
background: linear-gradient(135deg, #a48a76 0%, #67574A 100%);
|
|
2001
|
-
padding: 40px 30px;
|
|
2002
|
-
text-align: center;
|
|
2003
|
-
color: white;
|
|
2004
|
-
}
|
|
2005
|
-
.header h1 {
|
|
2006
|
-
margin: 0;
|
|
2007
|
-
font-size: 28px;
|
|
2008
|
-
font-weight: 300;
|
|
2009
|
-
letter-spacing: 1px;
|
|
2010
|
-
}
|
|
2011
|
-
.header .subtitle {
|
|
2012
|
-
margin: 10px 0 0 0;
|
|
2013
|
-
font-size: 16px;
|
|
2014
|
-
opacity: 0.9;
|
|
2015
|
-
font-weight: 300;
|
|
2016
|
-
}
|
|
2017
|
-
.content {
|
|
2018
|
-
padding: 40px 30px;
|
|
2019
|
-
}
|
|
2020
|
-
.greeting {
|
|
2021
|
-
font-size: 18px;
|
|
2022
|
-
color: #333;
|
|
2023
|
-
margin-bottom: 25px;
|
|
2024
|
-
font-weight: 400;
|
|
2025
|
-
}
|
|
2026
|
-
.appointment-card {
|
|
2027
|
-
background: linear-gradient(135deg, #f8f6f5 0%, #f5f3f2 100%);
|
|
2028
|
-
border-radius: 15px;
|
|
2029
|
-
padding: 30px;
|
|
2030
|
-
margin: 25px 0;
|
|
2031
|
-
border-left: 5px solid #a48a76;
|
|
2032
|
-
}
|
|
2033
|
-
.appointment-title {
|
|
2034
|
-
font-size: 20px;
|
|
2035
|
-
color: #a48a76;
|
|
2036
|
-
margin-bottom: 20px;
|
|
2037
|
-
font-weight: 600;
|
|
2038
|
-
}
|
|
2039
|
-
.appointment-details {
|
|
2040
|
-
display: grid;
|
|
2041
|
-
gap: 15px;
|
|
2042
|
-
}
|
|
2043
|
-
.detail-row {
|
|
2044
|
-
display: flex;
|
|
2045
|
-
align-items: center;
|
|
2046
|
-
padding: 8px 0;
|
|
2047
|
-
}
|
|
2048
|
-
.detail-label {
|
|
2049
|
-
font-weight: 600;
|
|
2050
|
-
color: #555;
|
|
2051
|
-
min-width: 120px;
|
|
2052
|
-
font-size: 14px;
|
|
2053
|
-
}
|
|
2054
|
-
.detail-value {
|
|
2055
|
-
color: #333;
|
|
2056
|
-
font-size: 16px;
|
|
2057
|
-
font-weight: 500;
|
|
2058
|
-
}
|
|
2059
|
-
.procedure-name {
|
|
2060
|
-
color: #67574A;
|
|
2061
|
-
font-weight: 600;
|
|
2062
|
-
}
|
|
2063
|
-
.clinic-name {
|
|
2064
|
-
color: #a48a76;
|
|
2065
|
-
font-weight: 600;
|
|
2066
|
-
}
|
|
2067
|
-
.success-icon {
|
|
2068
|
-
text-align: center;
|
|
2069
|
-
margin: 20px 0;
|
|
2070
|
-
font-size: 48px;
|
|
2071
|
-
}
|
|
2072
|
-
.footer {
|
|
2073
|
-
background: #f8f9fa;
|
|
2074
|
-
padding: 25px 30px;
|
|
2075
|
-
text-align: center;
|
|
2076
|
-
color: #666;
|
|
2077
|
-
font-size: 14px;
|
|
2078
|
-
border-top: 1px solid #eee;
|
|
2079
|
-
}
|
|
2080
|
-
.logo {
|
|
2081
|
-
font-size: 24px;
|
|
2082
|
-
font-weight: 700;
|
|
2083
|
-
color: white;
|
|
2084
|
-
margin-bottom: 5px;
|
|
2085
|
-
}
|
|
2086
|
-
.divider {
|
|
2087
|
-
height: 2px;
|
|
2088
|
-
background: linear-gradient(90deg, #a48a76, #67574A);
|
|
2089
|
-
margin: 25px 0;
|
|
2090
|
-
border-radius: 1px;
|
|
2091
|
-
}
|
|
2092
|
-
.thank-you {
|
|
2093
|
-
background: linear-gradient(135deg, #f0ede8 0%, #ebe6e0 100%);
|
|
2094
|
-
border-radius: 15px;
|
|
2095
|
-
padding: 25px;
|
|
2096
|
-
margin: 25px 0;
|
|
2097
|
-
text-align: center;
|
|
2098
|
-
border-left: 5px solid #4CAF50;
|
|
2099
|
-
}
|
|
2100
|
-
</style>
|
|
1981
|
+
<!--[if mso]>
|
|
1982
|
+
<noscript>
|
|
1983
|
+
<xml>
|
|
1984
|
+
<o:OfficeDocumentSettings>
|
|
1985
|
+
<o:PixelsPerInch>96</o:PixelsPerInch>
|
|
1986
|
+
</o:OfficeDocumentSettings>
|
|
1987
|
+
</xml>
|
|
1988
|
+
</noscript>
|
|
1989
|
+
<![endif]-->
|
|
2101
1990
|
</head>
|
|
2102
|
-
<body>
|
|
2103
|
-
<
|
|
2104
|
-
<
|
|
2105
|
-
<
|
|
2106
|
-
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
|
|
2131
|
-
|
|
2132
|
-
|
|
2133
|
-
|
|
2134
|
-
|
|
2135
|
-
|
|
2136
|
-
|
|
2137
|
-
|
|
2138
|
-
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
|
|
2145
|
-
|
|
2146
|
-
|
|
2147
|
-
|
|
2148
|
-
|
|
2149
|
-
|
|
2150
|
-
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
|
|
2156
|
-
|
|
2157
|
-
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
1991
|
+
<body style="margin: 0; padding: 0; background-color: #f8f6f5; font-family: Georgia, 'Times New Roman', serif;">
|
|
1992
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="background-color: #f8f6f5;">
|
|
1993
|
+
<tr>
|
|
1994
|
+
<td align="center" style="padding: 40px 20px;">
|
|
1995
|
+
<table role="presentation" width="600" cellspacing="0" cellpadding="0" border="0" style="max-width: 600px; background-color: #ffffff; border-radius: 2px; box-shadow: 0 1px 3px rgba(103, 87, 74, 0.08);">
|
|
1996
|
+
|
|
1997
|
+
<!-- Header -->
|
|
1998
|
+
<tr>
|
|
1999
|
+
<td style="padding: 48px 48px 32px 48px; border-bottom: 1px solid #f0ebe6;">
|
|
2000
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
2001
|
+
<tr>
|
|
2002
|
+
<td>
|
|
2003
|
+
<h1 style="margin: 0; font-size: 24px; font-weight: 400; color: #67574A; letter-spacing: 2px; text-transform: uppercase; font-family: Georgia, 'Times New Roman', serif;">MetaEstetics</h1>
|
|
2004
|
+
</td>
|
|
2005
|
+
</tr>
|
|
2006
|
+
</table>
|
|
2007
|
+
</td>
|
|
2008
|
+
</tr>
|
|
2009
|
+
|
|
2010
|
+
<!-- Confirmed Banner -->
|
|
2011
|
+
<tr>
|
|
2012
|
+
<td style="padding: 0;">
|
|
2013
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="background-color: #00BB38;">
|
|
2014
|
+
<tr>
|
|
2015
|
+
<td style="padding: 20px 48px;">
|
|
2016
|
+
<p style="margin: 0; font-size: 13px; font-weight: 600; color: #ffffff; letter-spacing: 1.5px; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Appointment Confirmed</p>
|
|
2017
|
+
</td>
|
|
2018
|
+
</tr>
|
|
2019
|
+
</table>
|
|
2020
|
+
</td>
|
|
2021
|
+
</tr>
|
|
2022
|
+
|
|
2023
|
+
<!-- Main Content -->
|
|
2024
|
+
<tr>
|
|
2025
|
+
<td style="padding: 40px 48px;">
|
|
2026
|
+
|
|
2027
|
+
<!-- Greeting -->
|
|
2028
|
+
<p style="margin: 0 0 24px 0; font-size: 17px; color: #333333; line-height: 1.6; font-family: Georgia, 'Times New Roman', serif;">
|
|
2029
|
+
Dear {{patientName}},
|
|
2030
|
+
</p>
|
|
2031
|
+
|
|
2032
|
+
<p style="margin: 0 0 32px 0; font-size: 16px; color: #555555; line-height: 1.7; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
2033
|
+
Your appointment has been confirmed. We look forward to seeing you.
|
|
2034
|
+
</p>
|
|
2035
|
+
|
|
2036
|
+
<!-- Appointment Details Card -->
|
|
2037
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-bottom: 32px; background-color: #faf9f7; border-left: 3px solid #00BB38;">
|
|
2038
|
+
<tr>
|
|
2039
|
+
<td style="padding: 24px;">
|
|
2040
|
+
<p style="margin: 0 0 4px 0; font-size: 11px; font-weight: 600; color: #868686; letter-spacing: 1px; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Procedure</p>
|
|
2041
|
+
<p style="margin: 0 0 20px 0; font-size: 18px; color: #67574A; font-weight: 500; font-family: Georgia, 'Times New Roman', serif;">{{procedureName}}</p>
|
|
2042
|
+
|
|
2043
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
2044
|
+
<tr>
|
|
2045
|
+
<td style="padding-bottom: 16px;">
|
|
2046
|
+
<p style="margin: 0 0 2px 0; font-size: 11px; color: #868686; text-transform: uppercase; letter-spacing: 0.5px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Date & Time</p>
|
|
2047
|
+
<p style="margin: 0; font-size: 15px; color: #333333; font-weight: 500; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{appointmentDate}}</p>
|
|
2048
|
+
<p style="margin: 4px 0 0 0; font-size: 14px; color: #67574A; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{appointmentTime}}</p>
|
|
2049
|
+
</td>
|
|
2050
|
+
</tr>
|
|
2051
|
+
<tr>
|
|
2052
|
+
<td style="padding-bottom: 16px;">
|
|
2053
|
+
<p style="margin: 0 0 2px 0; font-size: 11px; color: #868686; text-transform: uppercase; letter-spacing: 0.5px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Practitioner</p>
|
|
2054
|
+
<p style="margin: 0; font-size: 15px; color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{practitionerName}}</p>
|
|
2055
|
+
</td>
|
|
2056
|
+
</tr>
|
|
2057
|
+
<tr>
|
|
2058
|
+
<td>
|
|
2059
|
+
<p style="margin: 0 0 2px 0; font-size: 11px; color: #868686; text-transform: uppercase; letter-spacing: 0.5px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Location</p>
|
|
2060
|
+
<p style="margin: 0; font-size: 15px; color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{clinicName}}</p>
|
|
2061
|
+
</td>
|
|
2062
|
+
</tr>
|
|
2063
|
+
</table>
|
|
2064
|
+
</td>
|
|
2065
|
+
</tr>
|
|
2066
|
+
</table>
|
|
2067
|
+
|
|
2068
|
+
<!-- Divider -->
|
|
2069
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-bottom: 32px;">
|
|
2070
|
+
<tr>
|
|
2071
|
+
<td style="height: 1px; background-color: #e8e4df;"></td>
|
|
2072
|
+
</tr>
|
|
2073
|
+
</table>
|
|
2074
|
+
|
|
2075
|
+
<!-- Important Notice -->
|
|
2076
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-bottom: 24px;">
|
|
2077
|
+
<tr>
|
|
2078
|
+
<td style="padding: 20px 24px; background-color: #faf9f7; border-left: 3px solid #a48a76;">
|
|
2079
|
+
<p style="margin: 0 0 8px 0; font-size: 13px; font-weight: 600; color: #67574A; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Before Your Visit</p>
|
|
2080
|
+
<p style="margin: 0; font-size: 14px; color: #555555; line-height: 1.6; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
2081
|
+
Please arrive 15 minutes early. If you need to reschedule or cancel, contact us through the MetaEstetics app.
|
|
2082
|
+
</p>
|
|
2083
|
+
</td>
|
|
2084
|
+
</tr>
|
|
2085
|
+
</table>
|
|
2086
|
+
|
|
2087
|
+
<!-- Thank You -->
|
|
2088
|
+
<p style="margin: 0; font-size: 14px; color: #868686; line-height: 1.7; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
2089
|
+
Thank you for choosing {{clinicName}}. We look forward to providing you with exceptional care.
|
|
2090
|
+
</p>
|
|
2091
|
+
|
|
2092
|
+
</td>
|
|
2093
|
+
</tr>
|
|
2094
|
+
|
|
2095
|
+
<!-- Footer -->
|
|
2096
|
+
<tr>
|
|
2097
|
+
<td style="padding: 32px 48px; background-color: #faf9f7; border-top: 1px solid #f0ebe6;">
|
|
2098
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
2099
|
+
<tr>
|
|
2100
|
+
<td>
|
|
2101
|
+
<p style="margin: 0 0 8px 0; font-size: 14px; font-weight: 500; color: #67574A; font-family: Georgia, 'Times New Roman', serif;">{{clinicName}}</p>
|
|
2102
|
+
<p style="margin: 0 0 16px 0; font-size: 13px; color: #868686; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Premium Aesthetic Services</p>
|
|
2103
|
+
<p style="margin: 0; font-size: 11px; color: #aaaaaa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">This is an automated message from MetaEstetics. Please do not reply directly to this email.</p>
|
|
2104
|
+
</td>
|
|
2105
|
+
</tr>
|
|
2106
|
+
</table>
|
|
2107
|
+
</td>
|
|
2108
|
+
</tr>
|
|
2109
|
+
|
|
2110
|
+
</table>
|
|
2111
|
+
</td>
|
|
2112
|
+
</tr>
|
|
2113
|
+
</table>
|
|
2170
2114
|
</body>
|
|
2171
2115
|
</html>
|
|
2172
2116
|
`;
|
|
@@ -2378,295 +2322,165 @@ var appointmentCancelledTemplate = `
|
|
|
2378
2322
|
<meta charset="UTF-8">
|
|
2379
2323
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
2380
2324
|
<title>Appointment Cancelled</title>
|
|
2381
|
-
|
|
2382
|
-
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2390
|
-
max-width: 600px;
|
|
2391
|
-
margin: 0 auto;
|
|
2392
|
-
background: #ffffff;
|
|
2393
|
-
border-radius: 20px;
|
|
2394
|
-
overflow: hidden;
|
|
2395
|
-
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
2396
|
-
margin-top: 40px;
|
|
2397
|
-
margin-bottom: 40px;
|
|
2398
|
-
}
|
|
2399
|
-
.header {
|
|
2400
|
-
background: linear-gradient(135deg, #d4736c 0%, #b85450 100%);
|
|
2401
|
-
padding: 40px 30px;
|
|
2402
|
-
text-align: center;
|
|
2403
|
-
color: white;
|
|
2404
|
-
}
|
|
2405
|
-
.header h1 {
|
|
2406
|
-
margin: 0;
|
|
2407
|
-
font-size: 28px;
|
|
2408
|
-
font-weight: 300;
|
|
2409
|
-
letter-spacing: 1px;
|
|
2410
|
-
}
|
|
2411
|
-
.header .subtitle {
|
|
2412
|
-
margin: 10px 0 0 0;
|
|
2413
|
-
font-size: 16px;
|
|
2414
|
-
opacity: 0.9;
|
|
2415
|
-
font-weight: 300;
|
|
2416
|
-
}
|
|
2417
|
-
.content {
|
|
2418
|
-
padding: 40px 30px;
|
|
2419
|
-
}
|
|
2420
|
-
.greeting {
|
|
2421
|
-
font-size: 18px;
|
|
2422
|
-
color: #333;
|
|
2423
|
-
margin-bottom: 25px;
|
|
2424
|
-
font-weight: 400;
|
|
2425
|
-
}
|
|
2426
|
-
.cancellation-notice {
|
|
2427
|
-
background: linear-gradient(135deg, #ffebee 0%, #ffcdd2 100%);
|
|
2428
|
-
border-radius: 15px;
|
|
2429
|
-
padding: 25px;
|
|
2430
|
-
margin: 25px 0;
|
|
2431
|
-
border-left: 5px solid #d4736c;
|
|
2432
|
-
}
|
|
2433
|
-
.cancellation-notice p {
|
|
2434
|
-
margin: 0;
|
|
2435
|
-
color: #c62828;
|
|
2436
|
-
font-size: 15px;
|
|
2437
|
-
font-weight: 500;
|
|
2438
|
-
line-height: 1.6;
|
|
2439
|
-
}
|
|
2440
|
-
.cancelled-by-info {
|
|
2441
|
-
background: #fafafa;
|
|
2442
|
-
border-radius: 10px;
|
|
2443
|
-
padding: 15px 20px;
|
|
2444
|
-
margin-top: 15px;
|
|
2445
|
-
}
|
|
2446
|
-
.cancelled-by-info .label {
|
|
2447
|
-
font-size: 12px;
|
|
2448
|
-
color: #757575;
|
|
2449
|
-
text-transform: uppercase;
|
|
2450
|
-
letter-spacing: 0.5px;
|
|
2451
|
-
margin-bottom: 5px;
|
|
2452
|
-
}
|
|
2453
|
-
.cancelled-by-info .value {
|
|
2454
|
-
font-size: 14px;
|
|
2455
|
-
color: #424242;
|
|
2456
|
-
font-weight: 500;
|
|
2457
|
-
}
|
|
2458
|
-
.reason-box {
|
|
2459
|
-
background: linear-gradient(135deg, #fff8e1 0%, #ffecb3 100%);
|
|
2460
|
-
border-radius: 15px;
|
|
2461
|
-
padding: 20px;
|
|
2462
|
-
margin: 20px 0;
|
|
2463
|
-
border-left: 5px solid #ffa000;
|
|
2464
|
-
}
|
|
2465
|
-
.reason-box .label {
|
|
2466
|
-
font-size: 14px;
|
|
2467
|
-
font-weight: 600;
|
|
2468
|
-
color: #e65100;
|
|
2469
|
-
margin-bottom: 8px;
|
|
2470
|
-
}
|
|
2471
|
-
.reason-box .reason-text {
|
|
2472
|
-
font-size: 15px;
|
|
2473
|
-
color: #424242;
|
|
2474
|
-
line-height: 1.6;
|
|
2475
|
-
font-style: italic;
|
|
2476
|
-
}
|
|
2477
|
-
.appointment-card {
|
|
2478
|
-
background: linear-gradient(135deg, #f5f5f5 0%, #eeeeee 100%);
|
|
2479
|
-
border-radius: 15px;
|
|
2480
|
-
padding: 30px;
|
|
2481
|
-
margin: 25px 0;
|
|
2482
|
-
border-left: 5px solid #9e9e9e;
|
|
2483
|
-
opacity: 0.9;
|
|
2484
|
-
}
|
|
2485
|
-
.appointment-title {
|
|
2486
|
-
font-size: 20px;
|
|
2487
|
-
color: #757575;
|
|
2488
|
-
margin-bottom: 20px;
|
|
2489
|
-
font-weight: 600;
|
|
2490
|
-
}
|
|
2491
|
-
.appointment-details {
|
|
2492
|
-
display: grid;
|
|
2493
|
-
gap: 15px;
|
|
2494
|
-
}
|
|
2495
|
-
.detail-row {
|
|
2496
|
-
display: flex;
|
|
2497
|
-
align-items: center;
|
|
2498
|
-
padding: 8px 0;
|
|
2499
|
-
}
|
|
2500
|
-
.detail-label {
|
|
2501
|
-
font-weight: 600;
|
|
2502
|
-
color: #757575;
|
|
2503
|
-
min-width: 120px;
|
|
2504
|
-
font-size: 14px;
|
|
2505
|
-
}
|
|
2506
|
-
.detail-value {
|
|
2507
|
-
color: #616161;
|
|
2508
|
-
font-size: 16px;
|
|
2509
|
-
font-weight: 500;
|
|
2510
|
-
text-decoration: line-through;
|
|
2511
|
-
}
|
|
2512
|
-
.procedure-name {
|
|
2513
|
-
color: #757575;
|
|
2514
|
-
font-weight: 600;
|
|
2515
|
-
}
|
|
2516
|
-
.clinic-name {
|
|
2517
|
-
color: #9e9e9e;
|
|
2518
|
-
font-weight: 600;
|
|
2519
|
-
}
|
|
2520
|
-
.rebook-section {
|
|
2521
|
-
background: linear-gradient(135deg, #e8f5e9 0%, #c8e6c9 100%);
|
|
2522
|
-
border-radius: 15px;
|
|
2523
|
-
padding: 25px;
|
|
2524
|
-
margin: 30px 0;
|
|
2525
|
-
text-align: center;
|
|
2526
|
-
border-left: 5px solid #4caf50;
|
|
2527
|
-
}
|
|
2528
|
-
.rebook-section h3 {
|
|
2529
|
-
margin: 0 0 15px 0;
|
|
2530
|
-
color: #2e7d32;
|
|
2531
|
-
font-weight: 600;
|
|
2532
|
-
font-size: 18px;
|
|
2533
|
-
}
|
|
2534
|
-
.rebook-section p {
|
|
2535
|
-
margin: 0;
|
|
2536
|
-
color: #555;
|
|
2537
|
-
font-size: 15px;
|
|
2538
|
-
line-height: 1.6;
|
|
2539
|
-
}
|
|
2540
|
-
.support-section {
|
|
2541
|
-
background: #f8f9fa;
|
|
2542
|
-
border-radius: 15px;
|
|
2543
|
-
padding: 20px;
|
|
2544
|
-
margin: 25px 0;
|
|
2545
|
-
text-align: center;
|
|
2546
|
-
}
|
|
2547
|
-
.support-section h4 {
|
|
2548
|
-
margin: 0 0 10px 0;
|
|
2549
|
-
color: #555;
|
|
2550
|
-
font-weight: 600;
|
|
2551
|
-
font-size: 16px;
|
|
2552
|
-
}
|
|
2553
|
-
.support-section p {
|
|
2554
|
-
margin: 0;
|
|
2555
|
-
color: #757575;
|
|
2556
|
-
font-size: 14px;
|
|
2557
|
-
line-height: 1.6;
|
|
2558
|
-
}
|
|
2559
|
-
.footer {
|
|
2560
|
-
background: #f8f9fa;
|
|
2561
|
-
padding: 25px 30px;
|
|
2562
|
-
text-align: center;
|
|
2563
|
-
color: #666;
|
|
2564
|
-
font-size: 14px;
|
|
2565
|
-
border-top: 1px solid #eee;
|
|
2566
|
-
}
|
|
2567
|
-
.logo {
|
|
2568
|
-
font-size: 24px;
|
|
2569
|
-
font-weight: 700;
|
|
2570
|
-
color: white;
|
|
2571
|
-
margin-bottom: 5px;
|
|
2572
|
-
}
|
|
2573
|
-
.divider {
|
|
2574
|
-
height: 2px;
|
|
2575
|
-
background: linear-gradient(90deg, #d4736c, #b85450);
|
|
2576
|
-
margin: 25px 0;
|
|
2577
|
-
border-radius: 1px;
|
|
2578
|
-
}
|
|
2579
|
-
.icon {
|
|
2580
|
-
text-align: center;
|
|
2581
|
-
margin: 20px 0;
|
|
2582
|
-
font-size: 48px;
|
|
2583
|
-
}
|
|
2584
|
-
</style>
|
|
2325
|
+
<!--[if mso]>
|
|
2326
|
+
<noscript>
|
|
2327
|
+
<xml>
|
|
2328
|
+
<o:OfficeDocumentSettings>
|
|
2329
|
+
<o:PixelsPerInch>96</o:PixelsPerInch>
|
|
2330
|
+
</o:OfficeDocumentSettings>
|
|
2331
|
+
</xml>
|
|
2332
|
+
</noscript>
|
|
2333
|
+
<![endif]-->
|
|
2585
2334
|
</head>
|
|
2586
|
-
<body>
|
|
2587
|
-
<
|
|
2588
|
-
<
|
|
2589
|
-
<
|
|
2590
|
-
|
|
2591
|
-
<div class="subtitle">We're Sorry to See This Change</div>
|
|
2592
|
-
</div>
|
|
2335
|
+
<body style="margin: 0; padding: 0; background-color: #f8f6f5; font-family: Georgia, 'Times New Roman', serif;">
|
|
2336
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="background-color: #f8f6f5;">
|
|
2337
|
+
<tr>
|
|
2338
|
+
<td align="center" style="padding: 40px 20px;">
|
|
2339
|
+
<table role="presentation" width="600" cellspacing="0" cellpadding="0" border="0" style="max-width: 600px; background-color: #ffffff; border-radius: 2px; box-shadow: 0 1px 3px rgba(103, 87, 74, 0.08);">
|
|
2593
2340
|
|
|
2594
|
-
|
|
2595
|
-
|
|
2341
|
+
<!-- Header -->
|
|
2342
|
+
<tr>
|
|
2343
|
+
<td style="padding: 48px 48px 32px 48px; border-bottom: 1px solid #f0ebe6;">
|
|
2344
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
2345
|
+
<tr>
|
|
2346
|
+
<td>
|
|
2347
|
+
<h1 style="margin: 0; font-size: 24px; font-weight: 400; color: #67574A; letter-spacing: 2px; text-transform: uppercase; font-family: Georgia, 'Times New Roman', serif;">MetaEstetics</h1>
|
|
2348
|
+
</td>
|
|
2349
|
+
</tr>
|
|
2350
|
+
</table>
|
|
2351
|
+
</td>
|
|
2352
|
+
</tr>
|
|
2596
2353
|
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2354
|
+
<!-- Cancellation Banner -->
|
|
2355
|
+
<tr>
|
|
2356
|
+
<td style="padding: 0;">
|
|
2357
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="background-color: #fa003f;">
|
|
2358
|
+
<tr>
|
|
2359
|
+
<td style="padding: 20px 48px;">
|
|
2360
|
+
<p style="margin: 0; font-size: 13px; font-weight: 600; color: #ffffff; letter-spacing: 1.5px; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Appointment Cancelled</p>
|
|
2361
|
+
</td>
|
|
2362
|
+
</tr>
|
|
2363
|
+
</table>
|
|
2364
|
+
</td>
|
|
2365
|
+
</tr>
|
|
2600
2366
|
|
|
2601
|
-
|
|
2602
|
-
|
|
2603
|
-
|
|
2604
|
-
<div class="label">Cancelled By</div>
|
|
2605
|
-
<div class="value">{{cancelledByDisplay}}</div>
|
|
2606
|
-
</div>
|
|
2607
|
-
</div>
|
|
2367
|
+
<!-- Main Content -->
|
|
2368
|
+
<tr>
|
|
2369
|
+
<td style="padding: 40px 48px;">
|
|
2608
2370
|
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
</div>
|
|
2614
|
-
{{/if}}
|
|
2371
|
+
<!-- Greeting -->
|
|
2372
|
+
<p style="margin: 0 0 24px 0; font-size: 17px; color: #333333; line-height: 1.6; font-family: Georgia, 'Times New Roman', serif;">
|
|
2373
|
+
Dear {{recipientName}},
|
|
2374
|
+
</p>
|
|
2615
2375
|
|
|
2616
|
-
|
|
2617
|
-
|
|
2618
|
-
|
|
2619
|
-
<div class="detail-row">
|
|
2620
|
-
<div class="detail-label">Procedure:</div>
|
|
2621
|
-
<div class="detail-value procedure-name">{{procedureName}}</div>
|
|
2622
|
-
</div>
|
|
2623
|
-
<div class="detail-row">
|
|
2624
|
-
<div class="detail-label">Date:</div>
|
|
2625
|
-
<div class="detail-value">{{appointmentDate}}</div>
|
|
2626
|
-
</div>
|
|
2627
|
-
<div class="detail-row">
|
|
2628
|
-
<div class="detail-label">Time:</div>
|
|
2629
|
-
<div class="detail-value">{{appointmentTime}}</div>
|
|
2630
|
-
</div>
|
|
2631
|
-
<div class="detail-row">
|
|
2632
|
-
<div class="detail-label">Practitioner:</div>
|
|
2633
|
-
<div class="detail-value">{{practitionerName}}</div>
|
|
2634
|
-
</div>
|
|
2635
|
-
<div class="detail-row">
|
|
2636
|
-
<div class="detail-label">Location:</div>
|
|
2637
|
-
<div class="detail-value clinic-name">{{clinicName}}</div>
|
|
2638
|
-
</div>
|
|
2639
|
-
</div>
|
|
2640
|
-
</div>
|
|
2376
|
+
<p style="margin: 0 0 32px 0; font-size: 16px; color: #555555; line-height: 1.7; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
2377
|
+
We regret to inform you that your appointment has been cancelled. Please see the details below.
|
|
2378
|
+
</p>
|
|
2641
2379
|
|
|
2642
|
-
|
|
2380
|
+
<!-- Cancelled By Info -->
|
|
2381
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-bottom: 24px;">
|
|
2382
|
+
<tr>
|
|
2383
|
+
<td style="padding: 16px 20px; background-color: #fef2f2; border-left: 3px solid #fa003f;">
|
|
2384
|
+
<p style="margin: 0 0 4px 0; font-size: 11px; font-weight: 600; color: #868686; letter-spacing: 1px; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Cancelled By</p>
|
|
2385
|
+
<p style="margin: 0; font-size: 15px; color: #333333; font-weight: 500; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{cancelledByDisplay}}</p>
|
|
2386
|
+
</td>
|
|
2387
|
+
</tr>
|
|
2388
|
+
</table>
|
|
2643
2389
|
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2390
|
+
{{#if cancellationReason}}
|
|
2391
|
+
<!-- Cancellation Reason -->
|
|
2392
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-bottom: 32px;">
|
|
2393
|
+
<tr>
|
|
2394
|
+
<td style="padding: 20px 24px; background-color: #faf9f7; border-left: 3px solid #a48a76;">
|
|
2395
|
+
<p style="margin: 0 0 8px 0; font-size: 11px; font-weight: 600; color: #868686; letter-spacing: 1px; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Reason</p>
|
|
2396
|
+
<p style="margin: 0; font-size: 15px; color: #555555; line-height: 1.6; font-style: italic; font-family: Georgia, 'Times New Roman', serif;">"{{cancellationReason}}"</p>
|
|
2397
|
+
</td>
|
|
2398
|
+
</tr>
|
|
2399
|
+
</table>
|
|
2400
|
+
{{/if}}
|
|
2651
2401
|
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
</p>
|
|
2658
|
-
</div>
|
|
2659
|
-
</div>
|
|
2402
|
+
<!-- Cancelled Appointment Details -->
|
|
2403
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-bottom: 32px; background-color: #f5f5f5; border-left: 3px solid #cccccc;">
|
|
2404
|
+
<tr>
|
|
2405
|
+
<td style="padding: 24px;">
|
|
2406
|
+
<p style="margin: 0 0 16px 0; font-size: 12px; font-weight: 600; color: #999999; letter-spacing: 1px; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Cancelled Appointment</p>
|
|
2660
2407
|
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2408
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
2409
|
+
<tr>
|
|
2410
|
+
<td style="padding-bottom: 12px;">
|
|
2411
|
+
<p style="margin: 0 0 2px 0; font-size: 11px; color: #999999; text-transform: uppercase; letter-spacing: 0.5px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Procedure</p>
|
|
2412
|
+
<p style="margin: 0; font-size: 15px; color: #888888; text-decoration: line-through; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{procedureName}}</p>
|
|
2413
|
+
</td>
|
|
2414
|
+
</tr>
|
|
2415
|
+
<tr>
|
|
2416
|
+
<td style="padding-bottom: 12px;">
|
|
2417
|
+
<p style="margin: 0 0 2px 0; font-size: 11px; color: #999999; text-transform: uppercase; letter-spacing: 0.5px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Date & Time</p>
|
|
2418
|
+
<p style="margin: 0; font-size: 15px; color: #888888; text-decoration: line-through; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{appointmentDate}} at {{appointmentTime}}</p>
|
|
2419
|
+
</td>
|
|
2420
|
+
</tr>
|
|
2421
|
+
<tr>
|
|
2422
|
+
<td style="padding-bottom: 12px;">
|
|
2423
|
+
<p style="margin: 0 0 2px 0; font-size: 11px; color: #999999; text-transform: uppercase; letter-spacing: 0.5px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Practitioner</p>
|
|
2424
|
+
<p style="margin: 0; font-size: 15px; color: #888888; text-decoration: line-through; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{practitionerName}}</p>
|
|
2425
|
+
</td>
|
|
2426
|
+
</tr>
|
|
2427
|
+
<tr>
|
|
2428
|
+
<td>
|
|
2429
|
+
<p style="margin: 0 0 2px 0; font-size: 11px; color: #999999; text-transform: uppercase; letter-spacing: 0.5px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Location</p>
|
|
2430
|
+
<p style="margin: 0; font-size: 15px; color: #888888; text-decoration: line-through; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{clinicName}}</p>
|
|
2431
|
+
</td>
|
|
2432
|
+
</tr>
|
|
2433
|
+
</table>
|
|
2434
|
+
</td>
|
|
2435
|
+
</tr>
|
|
2436
|
+
</table>
|
|
2437
|
+
|
|
2438
|
+
<!-- Divider -->
|
|
2439
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-bottom: 32px;">
|
|
2440
|
+
<tr>
|
|
2441
|
+
<td style="height: 1px; background-color: #e8e4df;"></td>
|
|
2442
|
+
</tr>
|
|
2443
|
+
</table>
|
|
2444
|
+
|
|
2445
|
+
<!-- Rebook Section -->
|
|
2446
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-bottom: 24px; background-color: #f0faf4; border-left: 3px solid #00BB38;">
|
|
2447
|
+
<tr>
|
|
2448
|
+
<td style="padding: 24px;">
|
|
2449
|
+
<p style="margin: 0 0 8px 0; font-size: 14px; font-weight: 600; color: #00BB38; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Book a New Appointment</p>
|
|
2450
|
+
<p style="margin: 0; font-size: 14px; color: #555555; line-height: 1.6; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
2451
|
+
We'd love to see you again. Open the MetaEstetics app to browse available times and book a new appointment.
|
|
2452
|
+
</p>
|
|
2453
|
+
</td>
|
|
2454
|
+
</tr>
|
|
2455
|
+
</table>
|
|
2456
|
+
|
|
2457
|
+
<!-- Support Info -->
|
|
2458
|
+
<p style="margin: 0; font-size: 13px; color: #868686; line-height: 1.7; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
2459
|
+
If you have any questions about this cancellation, please contact {{clinicName}} through the MetaEstetics app.
|
|
2460
|
+
</p>
|
|
2461
|
+
|
|
2462
|
+
</td>
|
|
2463
|
+
</tr>
|
|
2464
|
+
|
|
2465
|
+
<!-- Footer -->
|
|
2466
|
+
<tr>
|
|
2467
|
+
<td style="padding: 32px 48px; background-color: #faf9f7; border-top: 1px solid #f0ebe6;">
|
|
2468
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
2469
|
+
<tr>
|
|
2470
|
+
<td>
|
|
2471
|
+
<p style="margin: 0 0 8px 0; font-size: 14px; font-weight: 500; color: #67574A; font-family: Georgia, 'Times New Roman', serif;">{{clinicName}}</p>
|
|
2472
|
+
<p style="margin: 0 0 16px 0; font-size: 13px; color: #868686; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Premium Aesthetic Services</p>
|
|
2473
|
+
<p style="margin: 0; font-size: 11px; color: #aaaaaa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">This is an automated message from MetaEstetics. Please do not reply directly to this email.</p>
|
|
2474
|
+
</td>
|
|
2475
|
+
</tr>
|
|
2476
|
+
</table>
|
|
2477
|
+
</td>
|
|
2478
|
+
</tr>
|
|
2479
|
+
|
|
2480
|
+
</table>
|
|
2481
|
+
</td>
|
|
2482
|
+
</tr>
|
|
2483
|
+
</table>
|
|
2670
2484
|
</body>
|
|
2671
2485
|
</html>
|
|
2672
2486
|
`;
|
|
@@ -2676,324 +2490,147 @@ var appointmentRescheduledProposalTemplate = `
|
|
|
2676
2490
|
<head>
|
|
2677
2491
|
<meta charset="UTF-8">
|
|
2678
2492
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
2679
|
-
<title>Appointment Reschedule
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2683
|
-
|
|
2684
|
-
|
|
2685
|
-
|
|
2686
|
-
|
|
2687
|
-
|
|
2688
|
-
|
|
2689
|
-
max-width: 600px;
|
|
2690
|
-
margin: 0 auto;
|
|
2691
|
-
background: #ffffff;
|
|
2692
|
-
border-radius: 20px;
|
|
2693
|
-
overflow: hidden;
|
|
2694
|
-
box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1);
|
|
2695
|
-
margin-top: 40px;
|
|
2696
|
-
margin-bottom: 40px;
|
|
2697
|
-
}
|
|
2698
|
-
.header {
|
|
2699
|
-
background: linear-gradient(135deg, #ff9800 0%, #f57c00 100%);
|
|
2700
|
-
padding: 40px 30px;
|
|
2701
|
-
text-align: center;
|
|
2702
|
-
color: white;
|
|
2703
|
-
}
|
|
2704
|
-
.header h1 {
|
|
2705
|
-
margin: 0;
|
|
2706
|
-
font-size: 28px;
|
|
2707
|
-
font-weight: 300;
|
|
2708
|
-
letter-spacing: 1px;
|
|
2709
|
-
}
|
|
2710
|
-
.header .subtitle {
|
|
2711
|
-
margin: 10px 0 0 0;
|
|
2712
|
-
font-size: 16px;
|
|
2713
|
-
opacity: 0.9;
|
|
2714
|
-
font-weight: 300;
|
|
2715
|
-
}
|
|
2716
|
-
.content {
|
|
2717
|
-
padding: 40px 30px;
|
|
2718
|
-
}
|
|
2719
|
-
.greeting {
|
|
2720
|
-
font-size: 18px;
|
|
2721
|
-
color: #333;
|
|
2722
|
-
margin-bottom: 25px;
|
|
2723
|
-
font-weight: 400;
|
|
2724
|
-
}
|
|
2725
|
-
.info-box {
|
|
2726
|
-
background: linear-gradient(135deg, #fff3e0 0%, #ffe0b2 100%);
|
|
2727
|
-
border-radius: 15px;
|
|
2728
|
-
padding: 25px;
|
|
2729
|
-
margin: 25px 0;
|
|
2730
|
-
border-left: 5px solid #ff9800;
|
|
2731
|
-
}
|
|
2732
|
-
.info-box p {
|
|
2733
|
-
margin: 0;
|
|
2734
|
-
color: #e65100;
|
|
2735
|
-
font-size: 15px;
|
|
2736
|
-
font-weight: 500;
|
|
2737
|
-
line-height: 1.6;
|
|
2738
|
-
}
|
|
2739
|
-
.time-comparison {
|
|
2740
|
-
display: grid;
|
|
2741
|
-
gap: 20px;
|
|
2742
|
-
margin: 25px 0;
|
|
2743
|
-
}
|
|
2744
|
-
.time-card {
|
|
2745
|
-
background: linear-gradient(135deg, #f8f6f5 0%, #f5f3f2 100%);
|
|
2746
|
-
border-radius: 15px;
|
|
2747
|
-
padding: 25px;
|
|
2748
|
-
border-left: 5px solid #a48a76;
|
|
2749
|
-
}
|
|
2750
|
-
.time-card.old-time {
|
|
2751
|
-
border-left-color: #9e9e9e;
|
|
2752
|
-
opacity: 0.8;
|
|
2753
|
-
}
|
|
2754
|
-
.time-card.new-time {
|
|
2755
|
-
border-left-color: #ff9800;
|
|
2756
|
-
background: linear-gradient(135deg, #fff8e1 0%, #ffe0b2 100%);
|
|
2757
|
-
}
|
|
2758
|
-
.time-label {
|
|
2759
|
-
font-size: 14px;
|
|
2760
|
-
font-weight: 600;
|
|
2761
|
-
color: #666;
|
|
2762
|
-
text-transform: uppercase;
|
|
2763
|
-
letter-spacing: 0.5px;
|
|
2764
|
-
margin-bottom: 10px;
|
|
2765
|
-
}
|
|
2766
|
-
.time-label.old {
|
|
2767
|
-
color: #757575;
|
|
2768
|
-
}
|
|
2769
|
-
.time-label.new {
|
|
2770
|
-
color: #f57c00;
|
|
2771
|
-
}
|
|
2772
|
-
.appointment-card {
|
|
2773
|
-
background: linear-gradient(135deg, #f8f6f5 0%, #f5f3f2 100%);
|
|
2774
|
-
border-radius: 15px;
|
|
2775
|
-
padding: 30px;
|
|
2776
|
-
margin: 25px 0;
|
|
2777
|
-
border-left: 5px solid #a48a76;
|
|
2778
|
-
}
|
|
2779
|
-
.appointment-title {
|
|
2780
|
-
font-size: 20px;
|
|
2781
|
-
color: #a48a76;
|
|
2782
|
-
margin-bottom: 20px;
|
|
2783
|
-
font-weight: 600;
|
|
2784
|
-
}
|
|
2785
|
-
.appointment-details {
|
|
2786
|
-
display: grid;
|
|
2787
|
-
gap: 15px;
|
|
2788
|
-
}
|
|
2789
|
-
.detail-row {
|
|
2790
|
-
display: flex;
|
|
2791
|
-
align-items: center;
|
|
2792
|
-
padding: 8px 0;
|
|
2793
|
-
}
|
|
2794
|
-
.detail-label {
|
|
2795
|
-
font-weight: 600;
|
|
2796
|
-
color: #555;
|
|
2797
|
-
min-width: 120px;
|
|
2798
|
-
font-size: 14px;
|
|
2799
|
-
}
|
|
2800
|
-
.detail-value {
|
|
2801
|
-
color: #333;
|
|
2802
|
-
font-size: 16px;
|
|
2803
|
-
font-weight: 500;
|
|
2804
|
-
}
|
|
2805
|
-
.procedure-name {
|
|
2806
|
-
color: #67574A;
|
|
2807
|
-
font-weight: 600;
|
|
2808
|
-
}
|
|
2809
|
-
.clinic-name {
|
|
2810
|
-
color: #a48a76;
|
|
2811
|
-
font-weight: 600;
|
|
2812
|
-
}
|
|
2813
|
-
.action-section {
|
|
2814
|
-
background: linear-gradient(135deg, #e8f5e9 0%, #c8e6c9 100%);
|
|
2815
|
-
border-radius: 15px;
|
|
2816
|
-
padding: 30px;
|
|
2817
|
-
margin: 30px 0;
|
|
2818
|
-
text-align: center;
|
|
2819
|
-
border-left: 5px solid #4caf50;
|
|
2820
|
-
}
|
|
2821
|
-
.action-section h3 {
|
|
2822
|
-
margin: 0 0 15px 0;
|
|
2823
|
-
color: #2e7d32;
|
|
2824
|
-
font-weight: 600;
|
|
2825
|
-
font-size: 18px;
|
|
2826
|
-
}
|
|
2827
|
-
.action-section p {
|
|
2828
|
-
margin: 0 0 20px 0;
|
|
2829
|
-
color: #555;
|
|
2830
|
-
font-size: 15px;
|
|
2831
|
-
line-height: 1.6;
|
|
2832
|
-
}
|
|
2833
|
-
.action-required-box {
|
|
2834
|
-
background: linear-gradient(135deg, #fff3e0 0%, #ffecb3 100%);
|
|
2835
|
-
border: 2px solid #ff9800;
|
|
2836
|
-
border-radius: 15px;
|
|
2837
|
-
padding: 25px;
|
|
2838
|
-
margin: 25px 0;
|
|
2839
|
-
text-align: center;
|
|
2840
|
-
}
|
|
2841
|
-
.action-required-box h3 {
|
|
2842
|
-
margin: 0 0 15px 0;
|
|
2843
|
-
color: #e65100;
|
|
2844
|
-
font-weight: 700;
|
|
2845
|
-
font-size: 18px;
|
|
2846
|
-
}
|
|
2847
|
-
.action-required-box p {
|
|
2848
|
-
margin: 0 0 12px 0;
|
|
2849
|
-
color: #bf360c;
|
|
2850
|
-
font-size: 15px;
|
|
2851
|
-
line-height: 1.6;
|
|
2852
|
-
}
|
|
2853
|
-
.action-required-box p:last-child {
|
|
2854
|
-
margin-bottom: 0;
|
|
2855
|
-
}
|
|
2856
|
-
.pending-notice {
|
|
2857
|
-
background: #fff8e1;
|
|
2858
|
-
border-radius: 8px;
|
|
2859
|
-
padding: 12px 15px;
|
|
2860
|
-
margin-top: 15px;
|
|
2861
|
-
display: inline-block;
|
|
2862
|
-
}
|
|
2863
|
-
.pending-notice p {
|
|
2864
|
-
margin: 0;
|
|
2865
|
-
color: #f57c00;
|
|
2866
|
-
font-size: 14px;
|
|
2867
|
-
font-weight: 600;
|
|
2868
|
-
}
|
|
2869
|
-
.footer {
|
|
2870
|
-
background: #f8f9fa;
|
|
2871
|
-
padding: 25px 30px;
|
|
2872
|
-
text-align: center;
|
|
2873
|
-
color: #666;
|
|
2874
|
-
font-size: 14px;
|
|
2875
|
-
border-top: 1px solid #eee;
|
|
2876
|
-
}
|
|
2877
|
-
.logo {
|
|
2878
|
-
font-size: 24px;
|
|
2879
|
-
font-weight: 700;
|
|
2880
|
-
color: white;
|
|
2881
|
-
margin-bottom: 5px;
|
|
2882
|
-
}
|
|
2883
|
-
.divider {
|
|
2884
|
-
height: 2px;
|
|
2885
|
-
background: linear-gradient(90deg, #a48a76, #67574A);
|
|
2886
|
-
margin: 25px 0;
|
|
2887
|
-
border-radius: 1px;
|
|
2888
|
-
}
|
|
2889
|
-
.icon {
|
|
2890
|
-
text-align: center;
|
|
2891
|
-
margin: 20px 0;
|
|
2892
|
-
font-size: 48px;
|
|
2893
|
-
}
|
|
2894
|
-
.arrow {
|
|
2895
|
-
text-align: center;
|
|
2896
|
-
font-size: 32px;
|
|
2897
|
-
color: #ff9800;
|
|
2898
|
-
margin: 10px 0;
|
|
2899
|
-
}
|
|
2900
|
-
</style>
|
|
2493
|
+
<title>Appointment Reschedule Request</title>
|
|
2494
|
+
<!--[if mso]>
|
|
2495
|
+
<noscript>
|
|
2496
|
+
<xml>
|
|
2497
|
+
<o:OfficeDocumentSettings>
|
|
2498
|
+
<o:PixelsPerInch>96</o:PixelsPerInch>
|
|
2499
|
+
</o:OfficeDocumentSettings>
|
|
2500
|
+
</xml>
|
|
2501
|
+
</noscript>
|
|
2502
|
+
<![endif]-->
|
|
2901
2503
|
</head>
|
|
2902
|
-
<body>
|
|
2903
|
-
<
|
|
2904
|
-
<
|
|
2905
|
-
<
|
|
2906
|
-
|
|
2907
|
-
<div class="subtitle">Action Required</div>
|
|
2908
|
-
</div>
|
|
2909
|
-
|
|
2910
|
-
<div class="content">
|
|
2911
|
-
<div class="icon">\u{1F4C5}</div>
|
|
2912
|
-
|
|
2913
|
-
<div class="greeting">
|
|
2914
|
-
Dear <strong>{{patientName}}</strong>,
|
|
2915
|
-
</div>
|
|
2916
|
-
|
|
2917
|
-
<p style="color: #555; font-size: 16px; line-height: 1.6; margin-bottom: 25px;">
|
|
2918
|
-
We hope this message finds you well. We need to propose a new time for your upcoming appointment. Please review the details below and confirm if the new time works for you.
|
|
2919
|
-
</p>
|
|
2920
|
-
|
|
2921
|
-
<div class="info-box">
|
|
2922
|
-
<p><strong>\u26A0\uFE0F Important:</strong> Please respond to this reschedule proposal as soon as possible. Your appointment will remain pending until you confirm or reject the new time.</p>
|
|
2923
|
-
</div>
|
|
2924
|
-
|
|
2925
|
-
<div class="appointment-card">
|
|
2926
|
-
<div class="appointment-title">\u{1F4CB} Appointment Details</div>
|
|
2927
|
-
<div class="appointment-details">
|
|
2928
|
-
<div class="detail-row">
|
|
2929
|
-
<div class="detail-label">Procedure:</div>
|
|
2930
|
-
<div class="detail-value procedure-name">{{procedureName}}</div>
|
|
2931
|
-
</div>
|
|
2932
|
-
<div class="detail-row">
|
|
2933
|
-
<div class="detail-label">Practitioner:</div>
|
|
2934
|
-
<div class="detail-value">{{practitionerName}}</div>
|
|
2935
|
-
</div>
|
|
2936
|
-
<div class="detail-row">
|
|
2937
|
-
<div class="detail-label">Location:</div>
|
|
2938
|
-
<div class="detail-value clinic-name">{{clinicName}}</div>
|
|
2939
|
-
</div>
|
|
2940
|
-
</div>
|
|
2941
|
-
</div>
|
|
2942
|
-
|
|
2943
|
-
<div class="time-comparison">
|
|
2944
|
-
<div class="time-card old-time">
|
|
2945
|
-
<div class="time-label old">Previous Time</div>
|
|
2946
|
-
<div style="font-size: 18px; font-weight: 600; color: #424242; margin-bottom: 8px;">{{previousDate}}</div>
|
|
2947
|
-
<div style="font-size: 16px; color: #616161;">{{previousTime}}</div>
|
|
2948
|
-
</div>
|
|
2949
|
-
|
|
2950
|
-
<div class="arrow">\u2193</div>
|
|
2951
|
-
|
|
2952
|
-
<div class="time-card new-time">
|
|
2953
|
-
<div class="time-label new">Proposed New Time</div>
|
|
2954
|
-
<div style="font-size: 18px; font-weight: 600; color: #e65100; margin-bottom: 8px;">{{newDate}}</div>
|
|
2955
|
-
<div style="font-size: 16px; color: #f57c00; font-weight: 500;">{{newTime}}</div>
|
|
2956
|
-
</div>
|
|
2957
|
-
</div>
|
|
2958
|
-
|
|
2959
|
-
<div class="divider"></div>
|
|
2504
|
+
<body style="margin: 0; padding: 0; background-color: #f8f6f5; font-family: Georgia, 'Times New Roman', serif;">
|
|
2505
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="background-color: #f8f6f5;">
|
|
2506
|
+
<tr>
|
|
2507
|
+
<td align="center" style="padding: 40px 20px;">
|
|
2508
|
+
<table role="presentation" width="600" cellspacing="0" cellpadding="0" border="0" style="max-width: 600px; background-color: #ffffff; border-radius: 2px; box-shadow: 0 1px 3px rgba(103, 87, 74, 0.08);">
|
|
2960
2509
|
|
|
2961
|
-
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
|
|
2966
|
-
|
|
2967
|
-
|
|
2968
|
-
|
|
2969
|
-
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
2510
|
+
<!-- Header -->
|
|
2511
|
+
<tr>
|
|
2512
|
+
<td style="padding: 48px 48px 32px 48px; border-bottom: 1px solid #f0ebe6;">
|
|
2513
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
2514
|
+
<tr>
|
|
2515
|
+
<td>
|
|
2516
|
+
<h1 style="margin: 0; font-size: 24px; font-weight: 400; color: #67574A; letter-spacing: 2px; text-transform: uppercase; font-family: Georgia, 'Times New Roman', serif;">MetaEstetics</h1>
|
|
2517
|
+
</td>
|
|
2518
|
+
</tr>
|
|
2519
|
+
</table>
|
|
2520
|
+
</td>
|
|
2521
|
+
</tr>
|
|
2973
2522
|
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
2523
|
+
<!-- Action Required Banner -->
|
|
2524
|
+
<tr>
|
|
2525
|
+
<td style="padding: 0;">
|
|
2526
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="background-color: #a48a76;">
|
|
2527
|
+
<tr>
|
|
2528
|
+
<td style="padding: 20px 48px;">
|
|
2529
|
+
<p style="margin: 0; font-size: 13px; font-weight: 600; color: #ffffff; letter-spacing: 1.5px; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Action Required</p>
|
|
2530
|
+
</td>
|
|
2531
|
+
</tr>
|
|
2532
|
+
</table>
|
|
2533
|
+
</td>
|
|
2534
|
+
</tr>
|
|
2982
2535
|
|
|
2983
|
-
|
|
2984
|
-
|
|
2985
|
-
|
|
2986
|
-
|
|
2987
|
-
|
|
2988
|
-
|
|
2989
|
-
|
|
2990
|
-
|
|
2991
|
-
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
|
|
2996
|
-
|
|
2536
|
+
<!-- Main Content -->
|
|
2537
|
+
<tr>
|
|
2538
|
+
<td style="padding: 40px 48px;">
|
|
2539
|
+
|
|
2540
|
+
<!-- Greeting -->
|
|
2541
|
+
<p style="margin: 0 0 24px 0; font-size: 17px; color: #333333; line-height: 1.6; font-family: Georgia, 'Times New Roman', serif;">
|
|
2542
|
+
Dear {{patientName}},
|
|
2543
|
+
</p>
|
|
2544
|
+
|
|
2545
|
+
<p style="margin: 0 0 32px 0; font-size: 16px; color: #555555; line-height: 1.7; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
2546
|
+
{{clinicName}} has proposed a new time for your upcoming appointment. Please review the details below and respond at your earliest convenience.
|
|
2547
|
+
</p>
|
|
2548
|
+
|
|
2549
|
+
<!-- Appointment Info Card -->
|
|
2550
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-bottom: 32px; background-color: #faf9f7; border-left: 3px solid #a48a76;">
|
|
2551
|
+
<tr>
|
|
2552
|
+
<td style="padding: 24px;">
|
|
2553
|
+
<p style="margin: 0 0 4px 0; font-size: 11px; font-weight: 600; color: #868686; letter-spacing: 1px; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Procedure</p>
|
|
2554
|
+
<p style="margin: 0 0 16px 0; font-size: 18px; color: #67574A; font-weight: 500; font-family: Georgia, 'Times New Roman', serif;">{{procedureName}}</p>
|
|
2555
|
+
|
|
2556
|
+
<p style="margin: 0 0 4px 0; font-size: 11px; font-weight: 600; color: #868686; letter-spacing: 1px; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Practitioner</p>
|
|
2557
|
+
<p style="margin: 0; font-size: 15px; color: #333333; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{practitionerName}}</p>
|
|
2558
|
+
</td>
|
|
2559
|
+
</tr>
|
|
2560
|
+
</table>
|
|
2561
|
+
|
|
2562
|
+
<!-- Time Comparison -->
|
|
2563
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-bottom: 32px;">
|
|
2564
|
+
<!-- Original Time (Strikethrough) -->
|
|
2565
|
+
<tr>
|
|
2566
|
+
<td style="padding: 20px 24px; background-color: #f5f5f5; border-left: 3px solid #cccccc;">
|
|
2567
|
+
<p style="margin: 0 0 4px 0; font-size: 11px; font-weight: 600; color: #999999; letter-spacing: 1px; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Original Appointment</p>
|
|
2568
|
+
<p style="margin: 0; font-size: 16px; color: #999999; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-decoration: line-through;">{{previousDate}}</p>
|
|
2569
|
+
<p style="margin: 4px 0 0 0; font-size: 14px; color: #999999; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; text-decoration: line-through;">{{previousTime}}</p>
|
|
2570
|
+
</td>
|
|
2571
|
+
</tr>
|
|
2572
|
+
|
|
2573
|
+
<!-- Spacer -->
|
|
2574
|
+
<tr>
|
|
2575
|
+
<td style="height: 12px;"></td>
|
|
2576
|
+
</tr>
|
|
2577
|
+
|
|
2578
|
+
<!-- New Proposed Time -->
|
|
2579
|
+
<tr>
|
|
2580
|
+
<td style="padding: 24px; background-color: #f8f6f5; border-left: 3px solid #00BB38;">
|
|
2581
|
+
<p style="margin: 0 0 4px 0; font-size: 11px; font-weight: 600; color: #00BB38; letter-spacing: 1px; text-transform: uppercase; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Proposed New Time</p>
|
|
2582
|
+
<p style="margin: 0; font-size: 18px; color: #333333; font-weight: 600; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{newDate}}</p>
|
|
2583
|
+
<p style="margin: 4px 0 0 0; font-size: 15px; color: #67574A; font-weight: 500; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">{{newTime}}</p>
|
|
2584
|
+
</td>
|
|
2585
|
+
</tr>
|
|
2586
|
+
</table>
|
|
2587
|
+
|
|
2588
|
+
<!-- Divider -->
|
|
2589
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-bottom: 32px;">
|
|
2590
|
+
<tr>
|
|
2591
|
+
<td style="height: 1px; background-color: #e8e4df;"></td>
|
|
2592
|
+
</tr>
|
|
2593
|
+
</table>
|
|
2594
|
+
|
|
2595
|
+
<!-- Response Instructions -->
|
|
2596
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0" style="margin-bottom: 32px; background-color: #faf9f7;">
|
|
2597
|
+
<tr>
|
|
2598
|
+
<td style="padding: 28px;">
|
|
2599
|
+
<p style="margin: 0 0 8px 0; font-size: 14px; font-weight: 600; color: #67574A; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">How to Respond</p>
|
|
2600
|
+
<p style="margin: 0; font-size: 14px; color: #555555; line-height: 1.6; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
2601
|
+
Open the MetaEstetics app to accept or decline this reschedule request. Your appointment will remain pending until you respond.
|
|
2602
|
+
</p>
|
|
2603
|
+
</td>
|
|
2604
|
+
</tr>
|
|
2605
|
+
</table>
|
|
2606
|
+
|
|
2607
|
+
<!-- Response Notice -->
|
|
2608
|
+
<p style="margin: 0; font-size: 13px; color: #868686; line-height: 1.6; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">
|
|
2609
|
+
Please respond at your earliest convenience so we can finalize your appointment. If you have questions, contact {{clinicName}} through the app.
|
|
2610
|
+
</p>
|
|
2611
|
+
|
|
2612
|
+
</td>
|
|
2613
|
+
</tr>
|
|
2614
|
+
|
|
2615
|
+
<!-- Footer -->
|
|
2616
|
+
<tr>
|
|
2617
|
+
<td style="padding: 32px 48px; background-color: #faf9f7; border-top: 1px solid #f0ebe6;">
|
|
2618
|
+
<table role="presentation" width="100%" cellspacing="0" cellpadding="0" border="0">
|
|
2619
|
+
<tr>
|
|
2620
|
+
<td>
|
|
2621
|
+
<p style="margin: 0 0 8px 0; font-size: 14px; font-weight: 500; color: #67574A; font-family: Georgia, 'Times New Roman', serif;">{{clinicName}}</p>
|
|
2622
|
+
<p style="margin: 0 0 16px 0; font-size: 13px; color: #868686; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">Premium Aesthetic Services</p>
|
|
2623
|
+
<p style="margin: 0; font-size: 11px; color: #aaaaaa; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;">This is an automated message from MetaEstetics. Please do not reply directly to this email.</p>
|
|
2624
|
+
</td>
|
|
2625
|
+
</tr>
|
|
2626
|
+
</table>
|
|
2627
|
+
</td>
|
|
2628
|
+
</tr>
|
|
2629
|
+
|
|
2630
|
+
</table>
|
|
2631
|
+
</td>
|
|
2632
|
+
</tr>
|
|
2633
|
+
</table>
|
|
2997
2634
|
</body>
|
|
2998
2635
|
</html>
|
|
2999
2636
|
`;
|