@kgalexander/mcreate 0.0.8 → 0.0.9

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/index.mjs CHANGED
@@ -50,6 +50,10 @@ import {
50
50
  TooltipTrigger,
51
51
  cn,
52
52
  formatBorder,
53
+ formatNumber,
54
+ formatOpenHouseDate,
55
+ formatOpenHouseTime,
56
+ formatPrice,
53
57
  getElementDisplayName,
54
58
  getParentByIdx,
55
59
  getParentIdx,
@@ -61,7 +65,7 @@ import {
61
65
  useEditorStore,
62
66
  useSidebarContext,
63
67
  useUser
64
- } from "./chunk-JD4V766D.mjs";
68
+ } from "./chunk-Y52MW7DH.mjs";
65
69
 
66
70
  // src/core/editor/components/email-template-v2/header.tsx
67
71
  import { ArrowLeftIcon, CopyIcon, MegaphoneIcon, MoreHorizontalIcon, PencilIcon, TrashIcon } from "lucide-react";
@@ -7810,7 +7814,7 @@ function useAutoSave() {
7810
7814
  // src/core/editor/components/email-template-v2/template-page.tsx
7811
7815
  import "react-json-view-lite/dist/index.css";
7812
7816
  import { jsx as jsx67, jsxs as jsxs52 } from "react/jsx-runtime";
7813
- var Editor2 = lazy(() => import("./core-B2RPCQDU.mjs").then((module) => ({
7817
+ var Editor2 = lazy(() => import("./core-C5QQJGQ7.mjs").then((module) => ({
7814
7818
  default: module.Editor
7815
7819
  })));
7816
7820
  function TemplatePage({
@@ -7881,8 +7885,760 @@ function TemplatePage({
7881
7885
  }
7882
7886
  ) });
7883
7887
  }
7888
+
7889
+ // src/mjml-components/property-better/index.ts
7890
+ import { BodyComponent } from "mjml-core";
7891
+ var MjColproperty = class extends BodyComponent {
7892
+ constructor() {
7893
+ super(...arguments);
7894
+ this.componentHeadStyle = (breakpoint) => `
7895
+ @media only screen and (max-width:${breakpoint}) {
7896
+ .property-better-image-row,
7897
+ .property-better-content-row {
7898
+ width: 100% !important;
7899
+ }
7900
+ }
7901
+ `;
7902
+ }
7903
+ render() {
7904
+ const href = this.getAttribute("href");
7905
+ const price = formatPrice(this.getAttribute("price"));
7906
+ const address = this.getAttribute("address");
7907
+ const city = this.getAttribute("city");
7908
+ const beds = formatNumber(this.getAttribute("beds"));
7909
+ const baths = formatNumber(this.getAttribute("baths"));
7910
+ const sqft = formatNumber(this.getAttribute("sqft"));
7911
+ const description = this.getAttribute("description");
7912
+ const imageSrc = this.getAttribute("image-src");
7913
+ const imageAlt = this.getAttribute("image-alt");
7914
+ const status = this.getAttribute("status");
7915
+ const statusColor = this.getAttribute("status-color");
7916
+ const isNew = this.getAttribute("is-new");
7917
+ const brokerage = this.getAttribute("brokerage");
7918
+ const mlsLogo = this.getAttribute("mls-logo");
7919
+ const width = this.getAttribute("width");
7920
+ const borderRadius = this.getAttribute("border-radius");
7921
+ const isOpenHouse = this.getAttribute("is-open-house");
7922
+ const rawDate = this.getAttribute("open-house-date");
7923
+ const rawTime = this.getAttribute("open-house-time");
7924
+ const openHouseDate = formatOpenHouseDate(rawDate);
7925
+ const [startTime, endTime] = rawTime ? rawTime.split("-") : ["", ""];
7926
+ const openHouseTime = startTime && endTime ? `${formatOpenHouseTime(startTime)}-${formatOpenHouseTime(endTime)}` : "";
7927
+ const fontFamily = this.getAttribute("font-family");
7928
+ const textColor = this.getAttribute("text-color");
7929
+ const isDescription = this.getAttribute("is-description");
7930
+ const isBrokerage = this.getAttribute("is-brokerage");
7931
+ const isStatus = this.getAttribute("is-status");
7932
+ const border = parseBorder(this.getAttribute("border"));
7933
+ const strokeWeight = border.width;
7934
+ const borderRadiusNum = parseInt(borderRadius, 10) || 0;
7935
+ const innerBorderRadius = `${Math.max(0, borderRadiusNum - strokeWeight)}px`;
7936
+ const imageWidth = "100%";
7937
+ const mlsLogoWidth = "32px";
7938
+ const mlsLogoHtml = mlsLogo ? `
7939
+ <tr>
7940
+ <td colspan="2" align="right" valign="bottom" style="height:${mlsLogoWidth};padding:0 4px 4px 0">
7941
+ <img src="${mlsLogo}" border="0" alt="MLS Logo" style="display:block;font-weight:700;font-size:14px;color:#0041d9;height:${mlsLogoWidth};width:${mlsLogoWidth};border-radius:4px" class="CToWUd" data-bit="iit" width="100%">
7942
+ </td>
7943
+ </tr>
7944
+ ` : "";
7945
+ const statusBadge = `
7946
+ <table role="presentation" cellpadding="0" cellspacing="0" border="0" style="margin-left:8px">
7947
+ <tbody>
7948
+ <tr>
7949
+ ${isStatus ? `
7950
+ <td valign="top">
7951
+ <span class="property-status-badge" style="display:table;background-color:#fffffe;border-radius:${borderRadius};font-weight:700;font-size:12px;line-height:1.5em;letter-spacing:0.0012em;margin:0;padding:1px 0;"><i style="letter-spacing:3px">&nbsp;</i><span style="color:${statusColor};font-size:18px;line-height:1;vertical-align:-1px;">\u25CF</span>&nbsp;<span style="color:#111116;">${status}</span><i style="letter-spacing:5px">&nbsp;</i></span>
7952
+ </td>
7953
+ ` : ""}
7954
+ ${isNew ? `
7955
+ ${isStatus ? `<td width="4" style="font-size:0px;line-height:0px">&nbsp;</td>` : ""}
7956
+ <td valign="top">
7957
+ <span class="property-new-badge" style="display:table;background-color:#d03c0b;border-radius:${borderRadius};font-weight:700;font-size:12px;line-height:1.5em;letter-spacing:0.0012em;margin:0;padding:2px 0 1px 0"><i style="letter-spacing:5px">&nbsp;</i><span style="color:#ffffff">New</span><i style="letter-spacing:5px">&nbsp;</i></span>
7958
+ </td>
7959
+ ` : ""}
7960
+ </tr>
7961
+ </tbody>
7962
+ </table>
7963
+ `;
7964
+ const openHouseHtml = isOpenHouse ? `
7965
+ <tr>
7966
+ <td>
7967
+ <table>
7968
+ <tbody>
7969
+ <tr>
7970
+ <td valign="top" align="right" style="padding:3px 4px 8px 0px;font-size:0">
7971
+ <img src="https://www.clipartmax.com/png/small/2-21103_home-house-silhouette-icon-building-transparent-background-home-icon.png" border="0" alt="House Icon" width="16" style="display:block;font-weight:700;font-size:14px;color:#2a2a33" class="CToWUd" data-bit="iit">
7972
+ </td>
7973
+ <td valign="top" align="left" style="font-size:0; padding:0px 0px 0px 0px;">
7974
+ <strong style="font-size:14px;line-height:24px;color:${textColor};margin:0;padding:0">
7975
+ <abbr title="open house" style="text-decoration:none">Open:</abbr>
7976
+ &nbsp;
7977
+ </strong>
7978
+ </td>
7979
+ <td valign="top" align="left" style="font-size:0; padding:0px 0px 0px 0px;">
7980
+ <span style="white-space:nowrap; font-size:14px;line-height:24px;color:${textColor};margin:0;padding:0;display:inline-block; font-weight:500; text-decoration:none">
7981
+ ${openHouseDate} ${openHouseTime}
7982
+ </span>
7983
+ </td>
7984
+ </tr>
7985
+ </tbody>
7986
+ </table>
7987
+ </td>
7988
+ </tr>
7989
+ ` : "";
7990
+ const brokerageHtml = brokerage ? `
7991
+ <tr>
7992
+ <td class="property-brokerage" style="padding: 0px 0px 8px 0px; font-size: 10px; font-weight: 300; line-height: 1; text-align: left; color:${textColor};">
7993
+ ${brokerage}
7994
+ </td>
7995
+ </tr>
7996
+ ` : "";
7997
+ const descriptionHtml = description ? `
7998
+ <tr>
7999
+ <td style="padding: 0px 0px 0px 0px; font-weight: 400; font-size: 14px; line-height: 1.5; text-align: left; color: ${textColor};">
8000
+ ${description}
8001
+ </td>
8002
+ </tr>
8003
+ ` : "";
8004
+ return this.renderMJML(`
8005
+ <mj-table width="${width}" font-family="${fontFamily}">
8006
+ <tr class="property-better-image-row">
8007
+ <td align="center" valign="top" background="${imageSrc}" style="background-repeat:no-repeat;background-position:center;background-size:cover;background-color:#eeeef0; border-radius:${innerBorderRadius} ${innerBorderRadius} 0 0;">
8008
+ <a href="${href}" style="text-decoration:none;display:block;border-radius:12px 12px 0 0" target="_blank">
8009
+ <table role="presentation" align="center" cellpadding="0" cellspacing="0" border="0" style="width:${imageWidth}">
8010
+ <tbody>
8011
+ <tr>
8012
+ <td align="left" valign="top" height="40" style="height:40px;padding-top:8px;">
8013
+ ${isStatus || isNew ? statusBadge : ""}
8014
+ </td>
8015
+ <td align="right" valign="top" height="40" style="height:40px;padding:6px 2px 0 0"></td>
8016
+ </tr>
8017
+ <tr>
8018
+ <td class="property-image-spacer" colspan="2" role="img" aria-label="${imageAlt}"></td>
8019
+ </tr>
8020
+ ${false ? mlsLogoHtml : ""}
8021
+ </tbody>
8022
+ </table>
8023
+ </a>
8024
+ </td>
8025
+ </tr>
8026
+
8027
+ <tr class="property-better-content-row">
8028
+ <td align="left">
8029
+ <a href="${href}" style="text-decoration:none;display:block; padding:12px 8px 12px 8px;" target="_blank">
8030
+ <table>
8031
+ <tbody>
8032
+
8033
+ <tr>
8034
+ <td class="property-price" style="padding: 0px 0px 8px 0px; font-size: 20px; font-weight: 600; line-height: 1; text-align: left; color: ${textColor};">
8035
+ ${price}
8036
+ </td>
8037
+ </tr>
8038
+
8039
+ <tr>
8040
+ <td class="property-details" style="padding: 0px 0px 8px 0px; font-size: 14px; line-height: 1; text-align: left; color: ${textColor};">
8041
+ <b>${beds}</b>&nbsp;<abbr title="bedrooms" style="text-decoration:none">bd</abbr>
8042
+
8043
+ <span class="property-details-separator" >|</span>
8044
+
8045
+ <b>${baths}</b>&nbsp;<abbr title="bathrooms" style="text-decoration:none">ba</abbr>
8046
+
8047
+ <span class="property-details-separator" >|</span>
8048
+
8049
+ <b>${sqft}</b>&nbsp;<abbr title="square feet" style="text-decoration:none">sqft</abbr>
8050
+ </td>
8051
+ </tr>
8052
+
8053
+ <tr>
8054
+ <td class="property-address" style="padding: 0px 0px 8px 0px; font-size: 14px; line-height: 1; text-align: left; color: ${textColor};">
8055
+ ${address}, ${city}
8056
+ </td>
8057
+ </tr>
8058
+
8059
+ ${openHouseHtml}
8060
+
8061
+ <tr>
8062
+ <td>
8063
+ <table>
8064
+ <tbody>
8065
+ ${isBrokerage ? brokerageHtml : ""}
8066
+ ${isDescription ? descriptionHtml : ""}
8067
+ </tbody>
8068
+ </table>
8069
+ </td>
8070
+ </tr>
8071
+ </tbody>
8072
+ </table>
8073
+ </a>
8074
+ </td>
8075
+ </tr>
8076
+ </mj-table>
8077
+ `);
8078
+ }
8079
+ };
8080
+ MjColproperty.componentName = "mj-colproperty";
8081
+ MjColproperty.endingTag = false;
8082
+ MjColproperty.dependencies = {
8083
+ "mj-column": ["mj-colproperty"],
8084
+ "mj-colproperty": []
8085
+ };
8086
+ MjColproperty.allowedAttributes = {
8087
+ "image-src": "string",
8088
+ "image-alt": "string",
8089
+ "price": "string",
8090
+ "address": "string",
8091
+ "city": "string",
8092
+ "country": "string",
8093
+ "beds": "string",
8094
+ "baths": "string",
8095
+ "sqft": "string",
8096
+ "href": "string",
8097
+ "status": "string",
8098
+ "status-color": "color",
8099
+ "is-new": "string",
8100
+ "brokerage": "string",
8101
+ "mls-logo": "string",
8102
+ "width": "string",
8103
+ "border-radius": "string",
8104
+ "description": "string",
8105
+ "is-open-house": "string",
8106
+ "open-house-date": "string",
8107
+ "open-house-time": "string",
8108
+ "border": "string",
8109
+ "font-family": "string",
8110
+ "text-color": "color",
8111
+ "is-description": "string",
8112
+ "is-brokerage": "string",
8113
+ "is-status": "string"
8114
+ };
8115
+ MjColproperty.defaultAttributes = {
8116
+ "image-src": "https://cornerstonepropertymgmt.com/wp-content/themes/cornerstone/assets/img/nofeaturedimage.jpg",
8117
+ "image-alt": "Photo of a Property",
8118
+ "price": "$0",
8119
+ "address": "123 Main Street",
8120
+ "city": "City, ST 00000",
8121
+ "country": "USA",
8122
+ "beds": "--",
8123
+ "baths": "--",
8124
+ "sqft": "--",
8125
+ "href": "#",
8126
+ "status": "Empty",
8127
+ "status-color": "#B8B8B8",
8128
+ "is-new": "",
8129
+ "brokerage": "",
8130
+ "mls-logo": "https://t4.ftcdn.net/jpg/06/71/92/37/360_F_671923740_x0zOL3OIuUAnSF6sr7PuznCI5bQFKhI0.jpg",
8131
+ "border-radius": "0px",
8132
+ "width": "100%",
8133
+ "description": "",
8134
+ "is-open-house": "",
8135
+ "open-house-date": "",
8136
+ "open-house-time": "",
8137
+ "border": "string",
8138
+ "font-family": "Arial, sans-serif",
8139
+ "text-color": "#111116",
8140
+ "is-description": "",
8141
+ "is-brokerage": "",
8142
+ "is-status": ""
8143
+ };
8144
+
8145
+ // src/mjml-components/property-singletwo/index.ts
8146
+ import { BodyComponent as BodyComponent2 } from "mjml-core";
8147
+ var MjPropertysingletwo = class extends BodyComponent2 {
8148
+ constructor(initialDatas = {}) {
8149
+ super(initialDatas);
8150
+ this.componentHeadStyle = (breakpoint) => `
8151
+ @media only screen and (max-width:${breakpoint}) {
8152
+ .property-image-section-${this.uniqueId} {
8153
+ border-radius: ${this.innerBorderRadius} ${this.innerBorderRadius} 0 0 !important;
8154
+ }
8155
+
8156
+ .property-content-section-${this.uniqueId} {
8157
+ border-radius: 0 0 ${this.borderRadius} ${this.borderRadius} !important;
8158
+ }
8159
+ }
8160
+ `;
8161
+ const border = parseBorder(this.getAttribute("border"));
8162
+ const borderRadius = this.getAttribute("border-radius");
8163
+ const strokeWeight = border.width;
8164
+ const borderRadiusNum = parseInt(borderRadius, 10) || 0;
8165
+ const innerBorderRadius = `${Math.max(0, borderRadiusNum - strokeWeight)}px`;
8166
+ this.borderRadius = this.getAttribute("border-radius");
8167
+ this.innerBorderRadius = innerBorderRadius;
8168
+ this.uniqueId = Math.random().toString(36).slice(2, 8);
8169
+ }
8170
+ render() {
8171
+ const href = this.getAttribute("href");
8172
+ const price = formatPrice(this.getAttribute("price"));
8173
+ const address = this.getAttribute("address");
8174
+ const city = this.getAttribute("city");
8175
+ const beds = formatNumber(this.getAttribute("beds"));
8176
+ const baths = formatNumber(this.getAttribute("baths"));
8177
+ const sqft = formatNumber(this.getAttribute("sqft"));
8178
+ const description = this.getAttribute("description");
8179
+ const imageSrc = this.getAttribute("image-src");
8180
+ const imageAlt = this.getAttribute("image-alt");
8181
+ const status = this.getAttribute("status");
8182
+ const statusColor = this.getAttribute("status-color");
8183
+ const isNew = this.getAttribute("is-new");
8184
+ const brokerage = this.getAttribute("brokerage");
8185
+ const mlsLogo = this.getAttribute("mls-logo");
8186
+ const width = this.getAttribute("width");
8187
+ const borderRadius = this.getAttribute("border-radius");
8188
+ const isOpenHouse = this.getAttribute("is-open-house");
8189
+ const rawDate = this.getAttribute("open-house-date");
8190
+ const rawTime = this.getAttribute("open-house-time");
8191
+ const openHouseDate = formatOpenHouseDate(rawDate);
8192
+ const [startTime, endTime] = rawTime ? rawTime.split("-") : ["", ""];
8193
+ const openHouseTime = startTime && endTime ? `${formatOpenHouseTime(startTime)}-${formatOpenHouseTime(endTime)}` : "";
8194
+ const fontFamily = this.getAttribute("font-family");
8195
+ const textColor = this.getAttribute("text-color");
8196
+ const isDescription = this.getAttribute("is-description");
8197
+ const isBrokerage = this.getAttribute("is-brokerage");
8198
+ const isStatus = this.getAttribute("is-status");
8199
+ const border = parseBorder(this.getAttribute("border"));
8200
+ const strokeWeight = border.width;
8201
+ const borderRadiusNum = parseInt(borderRadius, 10) || 0;
8202
+ const innerBorderRadius = `${Math.max(0, borderRadiusNum - strokeWeight)}px`;
8203
+ const imageWidth = "243px";
8204
+ const mlsLogoHeight = "32px";
8205
+ const mlsLogoHtml = mlsLogo ? `
8206
+ <tr>
8207
+ <td colspan="2" align="right" valign="bottom" style="height:${mlsLogoHeight};padding:0 4px 4px 0">
8208
+ <img src="${mlsLogo}" border="0" alt="MLS" style="display:block;font-weight:700;font-size:14px;color:#0041d9;height:${mlsLogoHeight};width:${mlsLogoHeight};border-radius:4px">
8209
+ </td>
8210
+ </tr>
8211
+ ` : "";
8212
+ const statusBadge = `
8213
+ <table role="presentation" cellpadding="0" cellspacing="0" border="0" style="margin-left:8px">
8214
+ <tbody>
8215
+ <tr>
8216
+ ${isStatus ? `
8217
+ <td valign="top">
8218
+ <span class="property-status-badge" style=" display:table;background-color:#fffffe;border-radius:${borderRadius};font-weight:700;font-size:12px;line-height:1.5em;letter-spacing:0.0012em;margin:0;padding:1px 0;"><i style="letter-spacing:3px">&nbsp;</i><span style="color:${statusColor};font-size:18px;line-height:1;vertical-align:-1px;">\u25CF</span>&nbsp;<span style="color:#111116;">${status}</span><i style="letter-spacing:5px">&nbsp;</i></span>
8219
+ </td>
8220
+ ` : ""}
8221
+ ${isNew ? `
8222
+ ${isStatus ? `<td width="4" style="font-size:0px;line-height:0px">&nbsp;</td>` : ""}
8223
+ <td valign="top">
8224
+ <span class="property-new-badge" style="display:table;background-color:#d03c0b;border-radius:${borderRadius};font-weight:700;font-size:12px;line-height:1.5em;letter-spacing:0.0012em;margin:0;padding:2px 0 1px 0"><i style="letter-spacing:5px">&nbsp;</i><span style="color:#ffffff">New</span><i style="letter-spacing:5px">&nbsp;</i></span>
8225
+ </td>
8226
+ ` : ""}
8227
+ </tr>
8228
+ </tbody>
8229
+ </table>
8230
+ `;
8231
+ const openHouseHtml = isOpenHouse ? `
8232
+ <tr>
8233
+ <td>
8234
+ <table>
8235
+ <tbody>
8236
+ <tr>
8237
+ <td valign="top" align="right" style="padding:3px 4px 8px 0px;font-size:0">
8238
+ <img src="https://www.clipartmax.com/png/small/2-21103_home-house-silhouette-icon-building-transparent-background-home-icon.png" border="0" alt="House Icon" width="16" style="display:block;font-weight:700;font-size:14px;color:#2a2a33">
8239
+ </td>
8240
+ <td valign="top" align="left" style="font-size:0; padding:0px 0px 0px 0px;">
8241
+ <strong style="font-size:14px;line-height:24px;color:#2a2a33;margin:0;padding:0">
8242
+ <abbr title="open house" style="text-decoration:none">Open:</abbr>
8243
+ &nbsp;
8244
+ </strong>
8245
+ </td>
8246
+ <td valign="top" align="left" style="font-size:0; padding:0px 0px 0px 0px;">
8247
+ <span style="white-space:nowrap;font-family:'Open Sans',Helvetica,Arial,sans-serif;font-size:14px;line-height:24px;color:#2a2a33;margin:0;padding:0;display:inline-block; font-weight:500; text-decoration:none">
8248
+ ${openHouseDate} ${openHouseTime}
8249
+ </span>
8250
+ </td>
8251
+ </tr>
8252
+ </tbody>
8253
+ </table>
8254
+ </td>
8255
+ </tr>
8256
+ ` : "";
8257
+ const brokerageHtml = brokerage ? `
8258
+ <tr>
8259
+ <td style="padding: 0px 0px 8px 0px; font-size: 10px; font-weight: 300; line-height: 1.5em; text-align: left; color:${textColor};">
8260
+ ${brokerage}
8261
+ </td>
8262
+ </tr>
8263
+ ` : "";
8264
+ const descriptionHtml = description ? `
8265
+ <tr>
8266
+ <td style="padding: 0px 0px 0px 0px; font-weight: 400; font-size: 14px; line-height: 1.5; text-align: left; color: ${textColor};">
8267
+ ${description}
8268
+ </td>
8269
+ </tr>
8270
+ ` : "";
8271
+ return this.renderMJML(`
8272
+ <mj-table width="${width}" font-family="${fontFamily}">
8273
+ <tr>
8274
+ <th class="property-image-section-single-two property-image-section-${this.uniqueId}" align="center" valign="top" background="${imageSrc}" style="background-repeat:no-repeat;background-position:center;background-size:cover;background-color:#eeeef0;border-radius:${innerBorderRadius} 0 0 ${innerBorderRadius};width:${imageWidth}">
8275
+ <a class="property-image-link" href="${href}" style="text-decoration:none;display:block;border-radius:${borderRadius} 0 0 ${borderRadius}" target="_blank">
8276
+ <table role="presentation" class="property-image-overlay-single-two" align="center" cellpadding="0" cellspacing="0" border="0" style="width:${imageWidth}">
8277
+ <tbody>
8278
+ <tr>
8279
+ <td align="left" valign="top" height="40" style="height:40px;padding-top:8px">
8280
+ ${isStatus || isNew ? statusBadge : ""}
8281
+ </td>
8282
+ <td align="right" valign="top" height="40" style="height:40px;padding:6px 2px 0 0"></td>
8283
+ </tr>
8284
+ <tr>
8285
+ <td class="property-image-spacer-single-two" colspan="2" style="padding-bottom:121px" role="img" aria-label="${imageAlt}"></td>
8286
+ </tr>
8287
+ ${false ? mlsLogoHtml : ""}
8288
+ </tbody>
8289
+ </table>
8290
+ </a>
8291
+ </th>
8292
+ <th class="property-content-section-single-two property-content-section-${this.uniqueId}" valign="top" align="center" >
8293
+ <a class="property-content-link" href="${href}" style="text-decoration:none;display:block;border-radius:0 ${borderRadius} ${borderRadius} 0" target="_blank">
8294
+ <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
8295
+ <tbody>
8296
+ <tr>
8297
+ <td class="property-content-inner" valign="top" align="left" style="padding:12px">
8298
+ <table role="presentation" cellpadding="0" cellspacing="0" border="0">
8299
+ <tbody>
8300
+
8301
+ <tr>
8302
+ <td class="property-price" style="padding: 0px 0px 8px 0px; font-size: 20px; font-weight: 600; line-height: 1.2em; text-align: left; color: ${textColor};">
8303
+ ${price}
8304
+ </td>
8305
+ </tr>
8306
+
8307
+ <tr>
8308
+ <td class="property-details" style="padding: 0px 0px 8px 0px; font-size: 14px; line-height: 1.5em; text-align: left; color: ${textColor}; font-weight: 400;">
8309
+ <b>${beds}</b>&nbsp;<abbr title="bedrooms" style="text-decoration:none">bd</abbr>
8310
+ <span style="font-family:Arial,sans-serif;color:#7e7f8e;padding:0 4px 0 2px">|</span>
8311
+ <b>${baths}</b>&nbsp;<abbr title="bathrooms" style="text-decoration:none">ba</abbr>
8312
+ <span style="font-family:Arial,sans-serif;color:#7e7f8e;padding:0 4px 0 2px">|</span>
8313
+ <b>${sqft}</b>&nbsp;<abbr title="square feet" style="text-decoration:none">sqft</abbr>
8314
+ </td>
8315
+ </tr>
8316
+ <tr>
8317
+ <td class="property-address" style="padding: 0px 0px 8px 0px; font-size: 14px; line-height: 1.5em; text-align: left; color: ${textColor}; font-weight: 400;">
8318
+ ${address}, ${city}
8319
+ </td>
8320
+ </tr>
8321
+ ${openHouseHtml}
8322
+
8323
+ <tr>
8324
+ <td>
8325
+ <table>
8326
+ <tbody>
8327
+ ${isBrokerage ? brokerageHtml : ""}
8328
+ ${isDescription ? descriptionHtml : ""}
8329
+ </tbody>
8330
+ </table>
8331
+ </td>
8332
+ </tr>
8333
+ </tbody>
8334
+ </table>
8335
+ </td>
8336
+ </tr>
8337
+ </tbody>
8338
+ </table>
8339
+ </a>
8340
+ </th>
8341
+ </tr>
8342
+ </mj-table>
8343
+ `);
8344
+ }
8345
+ };
8346
+ MjPropertysingletwo.componentName = "mj-propertysingletwo";
8347
+ MjPropertysingletwo.endingTag = false;
8348
+ MjPropertysingletwo.dependencies = {
8349
+ "mj-column": ["mj-propertysingletwo"],
8350
+ "mj-propertysingletwo": []
8351
+ };
8352
+ MjPropertysingletwo.allowedAttributes = {
8353
+ "image-src": "string",
8354
+ "image-alt": "string",
8355
+ "price": "string",
8356
+ "address": "string",
8357
+ "city": "string",
8358
+ "country": "string",
8359
+ "beds": "string",
8360
+ "baths": "string",
8361
+ "sqft": "string",
8362
+ "href": "string",
8363
+ "status": "string",
8364
+ "status-color": "color",
8365
+ "is-new": "string",
8366
+ "brokerage": "string",
8367
+ "mls-logo": "string",
8368
+ "width": "string",
8369
+ "border-radius": "string",
8370
+ "description": "string",
8371
+ "is-open-house": "string",
8372
+ "open-house-date": "string",
8373
+ "open-house-time": "string",
8374
+ "border": "string",
8375
+ "font-family": "string",
8376
+ "text-color": "color",
8377
+ "is-description": "string",
8378
+ "is-brokerage": "string",
8379
+ "is-status": "string"
8380
+ };
8381
+ MjPropertysingletwo.defaultAttributes = {
8382
+ "image-src": "https://cornerstonepropertymgmt.com/wp-content/themes/cornerstone/assets/img/nofeaturedimage.jpg",
8383
+ "image-alt": "Photo of a Property",
8384
+ "price": "$0",
8385
+ "address": "123 Main Street",
8386
+ "city": "City, ST 00000",
8387
+ "country": "USA",
8388
+ "beds": "--",
8389
+ "baths": "--",
8390
+ "sqft": "--",
8391
+ "href": "#",
8392
+ "status": "Empty",
8393
+ "status-color": "#B8B8B8",
8394
+ "is-new": "",
8395
+ "brokerage": "",
8396
+ "mls-logo": "https://t4.ftcdn.net/jpg/06/71/92/37/360_F_671923740_x0zOL3OIuUAnSF6sr7PuznCI5bQFKhI0.jpg",
8397
+ "border-radius": "0px",
8398
+ "width": "100%",
8399
+ "description": "",
8400
+ "is-open-house": "",
8401
+ "open-house-date": "",
8402
+ "open-house-time": "",
8403
+ "border": "none",
8404
+ "font-family": "Arial, sans-serif",
8405
+ "text-color": "#111116",
8406
+ "is-description": "",
8407
+ "is-brokerage": "",
8408
+ "is-status": ""
8409
+ };
8410
+
8411
+ // src/mjml-components/property-triple-better/index.ts
8412
+ import { BodyComponent as BodyComponent3 } from "mjml-core";
8413
+ var MjPropertytriplebetter = class extends BodyComponent3 {
8414
+ constructor(initialDatas = {}) {
8415
+ super(initialDatas);
8416
+ this.componentHeadStyle = (breakpoint) => `
8417
+ @media only screen and (max-width:${breakpoint}) {
8418
+ .property-triple-row-${this.uniqueId} {
8419
+ display: block !important;
8420
+ padding: 0 !important;
8421
+ }
8422
+ .property-triple-card-wrapper-${this.uniqueId} {
8423
+ display: block !important;
8424
+ width: 100% !important;
8425
+ }
8426
+ .property-triple-card-${this.uniqueId} {
8427
+ width: 100% !important;
8428
+ border-radius: ${this.borderRadius} !important;
8429
+ }
8430
+ .property-triple-spacer-${this.uniqueId} {
8431
+
8432
+ }
8433
+ .property-triple-image-spacer-${this.uniqueId} {
8434
+
8435
+ }
8436
+ .property-triple-spacer-top,
8437
+ .property-triple-spacer-bottom {
8438
+ display: none !important;
8439
+ }
8440
+ .property-triple-card-row-${this.uniqueId},
8441
+ .property-triple-content-row-${this.uniqueId} {
8442
+ display: table-cell !important;
8443
+ vertical-align: top !important;
8444
+
8445
+ }
8446
+ .property-triple-image-${this.uniqueId} {
8447
+ width: 600px !important;
8448
+ border-radius: ${this.innerBorderRadius} 0 0 ${this.innerBorderRadius} !important;
8449
+ }
8450
+
8451
+ .property-triple-content-${this.uniqueId} {
8452
+ width: 600px!important;
8453
+ height: 100% !important;
8454
+ border-radius: 0 ${this.innerBorderRadius} ${this.innerBorderRadius} 0 !important;
8455
+ }
8456
+ .property-triple-section-column {
8457
+ width: 100% !important;
8458
+ }
8459
+ }
8460
+ `;
8461
+ this.borderRadius = this.getAttribute("border-radius");
8462
+ this.uniqueId = Math.random().toString(36).slice(2, 8);
8463
+ const border = parseBorder(this.getAttribute("border"));
8464
+ const strokeWeight = border.width;
8465
+ const borderRadiusNum = parseInt(this.borderRadius, 10) || 0;
8466
+ this.innerBorderRadius = `${Math.max(0, borderRadiusNum - strokeWeight)}px`;
8467
+ }
8468
+ renderCard(index) {
8469
+ const href = this.getAttribute(`href-${index}`);
8470
+ const price = formatPrice(this.getAttribute(`price-${index}`));
8471
+ const beds = formatNumber(this.getAttribute(`beds-${index}`));
8472
+ const baths = formatNumber(this.getAttribute(`baths-${index}`));
8473
+ const sqft = formatNumber(this.getAttribute(`sqft-${index}`));
8474
+ const city = this.getAttribute(`city-${index}`);
8475
+ const imageSrc = this.getAttribute(`image-src-${index}`);
8476
+ const borderRadius = this.getAttribute("border-radius");
8477
+ const imageHeight = this.getAttribute("image-height");
8478
+ const border = this.getAttribute("border");
8479
+ const fontFamily = this.getAttribute("font-family");
8480
+ const textColor = this.getAttribute("text-color");
8481
+ const backgroundColor = this.getAttribute("background-color");
8482
+ const parsedBorder = parseBorder(border);
8483
+ const strokeWeight = parsedBorder.width;
8484
+ const borderRadiusNum = parseInt(borderRadius, 10) || 0;
8485
+ const innerBorderRadius = `${Math.max(0, borderRadiusNum - strokeWeight)}px`;
8486
+ return `
8487
+ <table class="property-triple-card-${this.uniqueId} property-triple-table" role="presentation" align="center" cellpadding="0" cellspacing="0" border="0" style="width:100%; border:${border}; border-radius:${borderRadius}; border-collapse:separate;${backgroundColor !== "transparent" ? ` background-color:${backgroundColor};` : ""}">
8488
+ <tbody>
8489
+ <tr class="property-triple-card-row-${this.uniqueId}">
8490
+ <td class="property-triple-image-${this.uniqueId}" align="center" background="${imageSrc}" style="background-repeat:no-repeat;background-position:center;background-size:cover;border-radius:${innerBorderRadius} ${innerBorderRadius} 0px 0px;background-color:#f1f1f4 ">
8491
+ <a style="text-decoration:none" href="${href}" target="_blank">
8492
+ <table role="presentation" align="center" cellpadding="0" cellspacing="0" border="0" style="width:100% height:100%">
8493
+ <tbody>
8494
+ <tr>
8495
+ <td class="property-triple-image-spacer-${this.uniqueId}" style="height:${imageHeight};width:100%" role="img" aria-label="Photo of a Property"></td>
8496
+ </tr>
8497
+ </tbody>
8498
+ </table>
8499
+ </a>
8500
+ </td>
8501
+ </tr>
8502
+ <tr class="property-triple-content-row-${this.uniqueId}">
8503
+ <td class="property-triple-content-${this.uniqueId}">
8504
+ <a href="${href}" style="text-decoration:none" target="_blank">
8505
+ <table role="presentation" width="100%" cellpadding="0" cellspacing="0" border="0">
8506
+ <tbody>
8507
+ <tr>
8508
+ <td align="left" valign="top" style="padding:4px 6px 8px 8px">
8509
+ <strong style="display:block;font-family:${fontFamily};font-size:14px;line-height:24px;color:${textColor};font-weight:700">${price}</strong>
8510
+ <p style="font-family:${fontFamily};font-size:12px;line-height:16px;font-weight:400;color:${textColor};font-style:normal;margin:0;padding:0 0 4px 0">
8511
+ <b>${beds}</b>&nbsp;<abbr title="bedrooms" style="text-decoration:none">bd</abbr>
8512
+ <span style="color:#d1d1d5">|</span>
8513
+ <b>${baths}</b>&nbsp;<abbr title="bathrooms" style="text-decoration:none">ba</abbr>
8514
+ <span style="color:#d1d1d5">|</span>
8515
+ <b>${sqft}</b>&nbsp;<abbr title="square feet" style="text-decoration:none">sqft</abbr>
8516
+ </p>
8517
+ <p style="font-family:${fontFamily};font-size:12px;line-height:16px;font-weight:400;color:${textColor};font-style:normal;margin:0;padding:0">${city}</p>
8518
+ </td>
8519
+ </tr>
8520
+ </tbody>
8521
+ </table>
8522
+ </a>
8523
+ </td>
8524
+ </tr>
8525
+ </tbody>
8526
+ </table>
8527
+ `;
8528
+ }
8529
+ render() {
8530
+ const width = this.getAttribute("width");
8531
+ const gap = this.getAttribute("gap");
8532
+ const backgroundColor = this.getAttribute("background-color");
8533
+ const card1 = this.renderCard(1);
8534
+ const card2 = this.renderCard(2);
8535
+ const card3 = this.renderCard(3);
8536
+ return this.renderMJML(`
8537
+ <mj-table align="center" width="${width}" padding="0">
8538
+ <tr class="property-triple-row-${this.uniqueId}">
8539
+ <th class="property-triple-card-wrapper-${this.uniqueId}" valign="top" align="center" width="100px" ">
8540
+ ${card1}
8541
+ </th>
8542
+ <th class="property-triple-spacer-${this.uniqueId}" style="font-size:0px;line-height:16px;font-weight:normal;width:4px; height:4px">&nbsp;</th>
8543
+ <th class="property-triple-card-wrapper-${this.uniqueId}" valign="top" align="center" width="100px" ">
8544
+ ${card2}
8545
+ </th>
8546
+ <th class="property-triple-spacer-${this.uniqueId}" style="font-size:0px;line-height:16px;font-weight:normal;width:4px; height:4px">&nbsp;</th>
8547
+ <th class="property-triple-card-wrapper-${this.uniqueId}" valign="top" align="center" width="100px" ">
8548
+ ${card3}
8549
+ </th>
8550
+ </tr>
8551
+ </mj-table>
8552
+ `);
8553
+ }
8554
+ };
8555
+ MjPropertytriplebetter.componentName = "mj-propertytriple";
8556
+ MjPropertytriplebetter.endingTag = false;
8557
+ MjPropertytriplebetter.dependencies = {
8558
+ "mj-column": ["mj-propertytriple"],
8559
+ "mj-propertytriple": []
8560
+ };
8561
+ MjPropertytriplebetter.allowedAttributes = {
8562
+ // Global
8563
+ "width": "string",
8564
+ "card-width": "string",
8565
+ "gap": "string",
8566
+ "border-radius": "string",
8567
+ "border": "string",
8568
+ "image-height": "string",
8569
+ "font-family": "string",
8570
+ "text-color": "string",
8571
+ "background-color": "string",
8572
+ // Card 1
8573
+ "image-src-1": "string",
8574
+ "href-1": "string",
8575
+ "price-1": "string",
8576
+ "beds-1": "string",
8577
+ "baths-1": "string",
8578
+ "sqft-1": "string",
8579
+ "city-1": "string",
8580
+ // Card 2
8581
+ "image-src-2": "string",
8582
+ "href-2": "string",
8583
+ "price-2": "string",
8584
+ "beds-2": "string",
8585
+ "baths-2": "string",
8586
+ "sqft-2": "string",
8587
+ "city-2": "string",
8588
+ // Card 3
8589
+ "image-src-3": "string",
8590
+ "href-3": "string",
8591
+ "price-3": "string",
8592
+ "beds-3": "string",
8593
+ "baths-3": "string",
8594
+ "sqft-3": "string",
8595
+ "city-3": "string"
8596
+ };
8597
+ MjPropertytriplebetter.defaultAttributes = {
8598
+ // Global
8599
+ "width": "100%",
8600
+ "card-width": "160px",
8601
+ "gap": "12px",
8602
+ "border-radius": "0px",
8603
+ "border": "1px solid #d1d1d5",
8604
+ "image-height": "102px",
8605
+ "font-family": "'Open Sans',Helvetica,Arial,sans-serif",
8606
+ "text-color": "#2a2a33",
8607
+ "background-color": "transparent",
8608
+ // Card 1
8609
+ "image-src-1": "https://cornerstonepropertymgmt.com/wp-content/themes/cornerstone/assets/img/nofeaturedimage.jpg",
8610
+ "href-1": "#",
8611
+ "price-1": "$0",
8612
+ "beds-1": "--",
8613
+ "baths-1": "--",
8614
+ "sqft-1": "--",
8615
+ "city-1": "City",
8616
+ // Card 2
8617
+ "image-src-2": "https://cornerstonepropertymgmt.com/wp-content/themes/cornerstone/assets/img/nofeaturedimage.jpg",
8618
+ "href-2": "#",
8619
+ "price-2": "$0",
8620
+ "beds-2": "--",
8621
+ "baths-2": "--",
8622
+ "sqft-2": "--",
8623
+ "city-2": "City",
8624
+ // Card 3
8625
+ "image-src-3": "https://cornerstonepropertymgmt.com/wp-content/themes/cornerstone/assets/img/nofeaturedimage.jpg",
8626
+ "href-3": "#",
8627
+ "price-3": "$0",
8628
+ "beds-3": "--",
8629
+ "baths-3": "--",
8630
+ "sqft-3": "--",
8631
+ "city-3": "City"
8632
+ };
8633
+
8634
+ // src/index.tsx
8635
+ var index_default = MjColproperty;
7884
8636
  export {
7885
8637
  Editor,
8638
+ MjColproperty,
8639
+ MjPropertysingletwo,
8640
+ MjPropertytriplebetter,
7886
8641
  TemplatePage,
8642
+ index_default as default,
7887
8643
  json2mjml
7888
8644
  };