hububb-emails 1.0.0

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.
Files changed (329) hide show
  1. package/dist/_components/callout.d.ts +9 -0
  2. package/dist/_components/callout.d.ts.map +1 -0
  3. package/dist/_components/callout.js +29 -0
  4. package/dist/_components/callout.js.map +1 -0
  5. package/dist/_components/detail-card.d.ts +16 -0
  6. package/dist/_components/detail-card.d.ts.map +1 -0
  7. package/dist/_components/detail-card.js +34 -0
  8. package/dist/_components/detail-card.js.map +1 -0
  9. package/dist/_components/divider.d.ts +11 -0
  10. package/dist/_components/divider.d.ts.map +1 -0
  11. package/dist/_components/divider.js +16 -0
  12. package/dist/_components/divider.js.map +1 -0
  13. package/dist/_components/email-layout.d.ts +29 -0
  14. package/dist/_components/email-layout.d.ts.map +1 -0
  15. package/dist/_components/email-layout.js +17 -0
  16. package/dist/_components/email-layout.js.map +1 -0
  17. package/dist/_components/heading.d.ts +9 -0
  18. package/dist/_components/heading.d.ts.map +1 -0
  19. package/dist/_components/heading.js +25 -0
  20. package/dist/_components/heading.js.map +1 -0
  21. package/dist/_components/icon-circle.d.ts +18 -0
  22. package/dist/_components/icon-circle.d.ts.map +1 -0
  23. package/dist/_components/icon-circle.js +23 -0
  24. package/dist/_components/icon-circle.js.map +1 -0
  25. package/dist/_components/icons.d.ts +31 -0
  26. package/dist/_components/icons.d.ts.map +1 -0
  27. package/dist/_components/icons.js +20 -0
  28. package/dist/_components/icons.js.map +1 -0
  29. package/dist/_components/index.d.ts +16 -0
  30. package/dist/_components/index.d.ts.map +1 -0
  31. package/dist/_components/index.js +31 -0
  32. package/dist/_components/index.js.map +1 -0
  33. package/dist/_components/message-quote.d.ts +10 -0
  34. package/dist/_components/message-quote.d.ts.map +1 -0
  35. package/dist/_components/message-quote.js +33 -0
  36. package/dist/_components/message-quote.js.map +1 -0
  37. package/dist/_components/primary-button.d.ts +10 -0
  38. package/dist/_components/primary-button.d.ts.map +1 -0
  39. package/dist/_components/primary-button.js +23 -0
  40. package/dist/_components/primary-button.js.map +1 -0
  41. package/dist/_components/secondary-button.d.ts +4 -0
  42. package/dist/_components/secondary-button.d.ts.map +1 -0
  43. package/dist/_components/secondary-button.js +24 -0
  44. package/dist/_components/secondary-button.js.map +1 -0
  45. package/dist/_components/steps-list.d.ts +10 -0
  46. package/dist/_components/steps-list.d.ts.map +1 -0
  47. package/dist/_components/steps-list.js +23 -0
  48. package/dist/_components/steps-list.js.map +1 -0
  49. package/dist/_components/text.d.ts +19 -0
  50. package/dist/_components/text.d.ts.map +1 -0
  51. package/dist/_components/text.js +28 -0
  52. package/dist/_components/text.js.map +1 -0
  53. package/dist/_components/units-list.d.ts +14 -0
  54. package/dist/_components/units-list.d.ts.map +1 -0
  55. package/dist/_components/units-list.js +11 -0
  56. package/dist/_components/units-list.js.map +1 -0
  57. package/dist/catalog.d.ts +170 -0
  58. package/dist/catalog.d.ts.map +1 -0
  59. package/dist/catalog.js +1082 -0
  60. package/dist/catalog.js.map +1 -0
  61. package/dist/index.d.ts +6 -0
  62. package/dist/index.d.ts.map +1 -0
  63. package/dist/index.js +13 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/render.d.ts +21 -0
  66. package/dist/render.d.ts.map +1 -0
  67. package/dist/render.js +36 -0
  68. package/dist/render.js.map +1 -0
  69. package/dist/templates/account-deletion-request.d.ts +14 -0
  70. package/dist/templates/account-deletion-request.d.ts.map +1 -0
  71. package/dist/templates/account-deletion-request.js +10 -0
  72. package/dist/templates/account-deletion-request.js.map +1 -0
  73. package/dist/templates/airbnb-account-connected.d.ts +13 -0
  74. package/dist/templates/airbnb-account-connected.d.ts.map +1 -0
  75. package/dist/templates/airbnb-account-connected.js +10 -0
  76. package/dist/templates/airbnb-account-connected.js.map +1 -0
  77. package/dist/templates/airbnb-connection-success.d.ts +8 -0
  78. package/dist/templates/airbnb-connection-success.d.ts.map +1 -0
  79. package/dist/templates/airbnb-connection-success.js +11 -0
  80. package/dist/templates/airbnb-connection-success.js.map +1 -0
  81. package/dist/templates/airbnb-property-unlisted.d.ts +8 -0
  82. package/dist/templates/airbnb-property-unlisted.d.ts.map +1 -0
  83. package/dist/templates/airbnb-property-unlisted.js +10 -0
  84. package/dist/templates/airbnb-property-unlisted.js.map +1 -0
  85. package/dist/templates/bdc-listing-live.d.ts +8 -0
  86. package/dist/templates/bdc-listing-live.d.ts.map +1 -0
  87. package/dist/templates/bdc-listing-live.js +10 -0
  88. package/dist/templates/bdc-listing-live.js.map +1 -0
  89. package/dist/templates/booking-received.d.ts +12 -0
  90. package/dist/templates/booking-received.d.ts.map +1 -0
  91. package/dist/templates/booking-received.js +9 -0
  92. package/dist/templates/booking-received.js.map +1 -0
  93. package/dist/templates/check-in-notification.d.ts +10 -0
  94. package/dist/templates/check-in-notification.d.ts.map +1 -0
  95. package/dist/templates/check-in-notification.js +10 -0
  96. package/dist/templates/check-in-notification.js.map +1 -0
  97. package/dist/templates/check-out-notification.d.ts +10 -0
  98. package/dist/templates/check-out-notification.d.ts.map +1 -0
  99. package/dist/templates/check-out-notification.js +10 -0
  100. package/dist/templates/check-out-notification.js.map +1 -0
  101. package/dist/templates/direct-catalog-share.d.ts +9 -0
  102. package/dist/templates/direct-catalog-share.d.ts.map +1 -0
  103. package/dist/templates/direct-catalog-share.js +10 -0
  104. package/dist/templates/direct-catalog-share.js.map +1 -0
  105. package/dist/templates/direct-property-share.d.ts +9 -0
  106. package/dist/templates/direct-property-share.d.ts.map +1 -0
  107. package/dist/templates/direct-property-share.js +10 -0
  108. package/dist/templates/direct-property-share.js.map +1 -0
  109. package/dist/templates/guest-automated-message.d.ts +11 -0
  110. package/dist/templates/guest-automated-message.d.ts.map +1 -0
  111. package/dist/templates/guest-automated-message.js +10 -0
  112. package/dist/templates/guest-automated-message.js.map +1 -0
  113. package/dist/templates/guest-coordination-employee-notification.d.ts +10 -0
  114. package/dist/templates/guest-coordination-employee-notification.d.ts.map +1 -0
  115. package/dist/templates/guest-coordination-employee-notification.js +10 -0
  116. package/dist/templates/guest-coordination-employee-notification.js.map +1 -0
  117. package/dist/templates/guest-coordination-subscription.d.ts +9 -0
  118. package/dist/templates/guest-coordination-subscription.d.ts.map +1 -0
  119. package/dist/templates/guest-coordination-subscription.js +10 -0
  120. package/dist/templates/guest-coordination-subscription.js.map +1 -0
  121. package/dist/templates/guest-direct-booking-confirmation.d.ts +14 -0
  122. package/dist/templates/guest-direct-booking-confirmation.d.ts.map +1 -0
  123. package/dist/templates/guest-direct-booking-confirmation.js +10 -0
  124. package/dist/templates/guest-direct-booking-confirmation.js.map +1 -0
  125. package/dist/templates/guest-portal-email-code.d.ts +7 -0
  126. package/dist/templates/guest-portal-email-code.d.ts.map +1 -0
  127. package/dist/templates/guest-portal-email-code.js +24 -0
  128. package/dist/templates/guest-portal-email-code.js.map +1 -0
  129. package/dist/templates/guest-portal-stay-invite.d.ts +14 -0
  130. package/dist/templates/guest-portal-stay-invite.d.ts.map +1 -0
  131. package/dist/templates/guest-portal-stay-invite.js +11 -0
  132. package/dist/templates/guest-portal-stay-invite.js.map +1 -0
  133. package/dist/templates/guest-verification-submitted-notification.d.ts +13 -0
  134. package/dist/templates/guest-verification-submitted-notification.d.ts.map +1 -0
  135. package/dist/templates/guest-verification-submitted-notification.js +10 -0
  136. package/dist/templates/guest-verification-submitted-notification.js.map +1 -0
  137. package/dist/templates/home-hold-declaration-approved.d.ts +13 -0
  138. package/dist/templates/home-hold-declaration-approved.d.ts.map +1 -0
  139. package/dist/templates/home-hold-declaration-approved.js +10 -0
  140. package/dist/templates/home-hold-declaration-approved.js.map +1 -0
  141. package/dist/templates/home-hold-declaration-now-required.d.ts +14 -0
  142. package/dist/templates/home-hold-declaration-now-required.d.ts.map +1 -0
  143. package/dist/templates/home-hold-declaration-now-required.js +10 -0
  144. package/dist/templates/home-hold-declaration-now-required.js.map +1 -0
  145. package/dist/templates/home-hold-declaration-rejected.d.ts +14 -0
  146. package/dist/templates/home-hold-declaration-rejected.d.ts.map +1 -0
  147. package/dist/templates/home-hold-declaration-rejected.js +10 -0
  148. package/dist/templates/home-hold-declaration-rejected.js.map +1 -0
  149. package/dist/templates/home-hold-lapsed-host.d.ts +12 -0
  150. package/dist/templates/home-hold-lapsed-host.d.ts.map +1 -0
  151. package/dist/templates/home-hold-lapsed-host.js +12 -0
  152. package/dist/templates/home-hold-lapsed-host.js.map +1 -0
  153. package/dist/templates/home-hold-lapsed.d.ts +15 -0
  154. package/dist/templates/home-hold-lapsed.d.ts.map +1 -0
  155. package/dist/templates/home-hold-lapsed.js +12 -0
  156. package/dist/templates/home-hold-lapsed.js.map +1 -0
  157. package/dist/templates/home-hold-reminder.d.ts +22 -0
  158. package/dist/templates/home-hold-reminder.d.ts.map +1 -0
  159. package/dist/templates/home-hold-reminder.js +12 -0
  160. package/dist/templates/home-hold-reminder.js.map +1 -0
  161. package/dist/templates/host-to-operations-message-notification.d.ts +15 -0
  162. package/dist/templates/host-to-operations-message-notification.d.ts.map +1 -0
  163. package/dist/templates/host-to-operations-message-notification.js +10 -0
  164. package/dist/templates/host-to-operations-message-notification.js.map +1 -0
  165. package/dist/templates/how-it-works.d.ts +8 -0
  166. package/dist/templates/how-it-works.d.ts.map +1 -0
  167. package/dist/templates/how-it-works.js +14 -0
  168. package/dist/templates/how-it-works.js.map +1 -0
  169. package/dist/templates/internal-bdc-listing-request.d.ts +8 -0
  170. package/dist/templates/internal-bdc-listing-request.d.ts.map +1 -0
  171. package/dist/templates/internal-bdc-listing-request.js +10 -0
  172. package/dist/templates/internal-bdc-listing-request.js.map +1 -0
  173. package/dist/templates/new-landlord-message-notification.d.ts +9 -0
  174. package/dist/templates/new-landlord-message-notification.d.ts.map +1 -0
  175. package/dist/templates/new-landlord-message-notification.js +10 -0
  176. package/dist/templates/new-landlord-message-notification.js.map +1 -0
  177. package/dist/templates/new-landlord-notification.d.ts +11 -0
  178. package/dist/templates/new-landlord-notification.d.ts.map +1 -0
  179. package/dist/templates/new-landlord-notification.js +10 -0
  180. package/dist/templates/new-landlord-notification.js.map +1 -0
  181. package/dist/templates/new-message-coordinator-notification.d.ts +12 -0
  182. package/dist/templates/new-message-coordinator-notification.d.ts.map +1 -0
  183. package/dist/templates/new-message-coordinator-notification.js +10 -0
  184. package/dist/templates/new-message-coordinator-notification.js.map +1 -0
  185. package/dist/templates/new-message.d.ts +12 -0
  186. package/dist/templates/new-message.d.ts.map +1 -0
  187. package/dist/templates/new-message.js +9 -0
  188. package/dist/templates/new-message.js.map +1 -0
  189. package/dist/templates/new-property-submitted.d.ts +10 -0
  190. package/dist/templates/new-property-submitted.d.ts.map +1 -0
  191. package/dist/templates/new-property-submitted.js +10 -0
  192. package/dist/templates/new-property-submitted.js.map +1 -0
  193. package/dist/templates/new-support-message-notification.d.ts +11 -0
  194. package/dist/templates/new-support-message-notification.d.ts.map +1 -0
  195. package/dist/templates/new-support-message-notification.js +10 -0
  196. package/dist/templates/new-support-message-notification.js.map +1 -0
  197. package/dist/templates/payment-action-required.d.ts +10 -0
  198. package/dist/templates/payment-action-required.d.ts.map +1 -0
  199. package/dist/templates/payment-action-required.js +10 -0
  200. package/dist/templates/payment-action-required.js.map +1 -0
  201. package/dist/templates/payment-confirmation.d.ts +14 -0
  202. package/dist/templates/payment-confirmation.d.ts.map +1 -0
  203. package/dist/templates/payment-confirmation.js +10 -0
  204. package/dist/templates/payment-confirmation.js.map +1 -0
  205. package/dist/templates/payment-failed.d.ts +12 -0
  206. package/dist/templates/payment-failed.d.ts.map +1 -0
  207. package/dist/templates/payment-failed.js +9 -0
  208. package/dist/templates/payment-failed.js.map +1 -0
  209. package/dist/templates/payout-completed-notification.d.ts +10 -0
  210. package/dist/templates/payout-completed-notification.d.ts.map +1 -0
  211. package/dist/templates/payout-completed-notification.js +10 -0
  212. package/dist/templates/payout-completed-notification.js.map +1 -0
  213. package/dist/templates/payout-rejected-notification.d.ts +11 -0
  214. package/dist/templates/payout-rejected-notification.d.ts.map +1 -0
  215. package/dist/templates/payout-rejected-notification.js +11 -0
  216. package/dist/templates/payout-rejected-notification.js.map +1 -0
  217. package/dist/templates/payout-requested.d.ts +14 -0
  218. package/dist/templates/payout-requested.d.ts.map +1 -0
  219. package/dist/templates/payout-requested.js +10 -0
  220. package/dist/templates/payout-requested.js.map +1 -0
  221. package/dist/templates/property-submission-confirmation.d.ts +9 -0
  222. package/dist/templates/property-submission-confirmation.d.ts.map +1 -0
  223. package/dist/templates/property-submission-confirmation.js +10 -0
  224. package/dist/templates/property-submission-confirmation.js.map +1 -0
  225. package/dist/templates/quote-submitted-host.d.ts +14 -0
  226. package/dist/templates/quote-submitted-host.d.ts.map +1 -0
  227. package/dist/templates/quote-submitted-host.js +16 -0
  228. package/dist/templates/quote-submitted-host.js.map +1 -0
  229. package/dist/templates/quote-submitted-ops.d.ts +12 -0
  230. package/dist/templates/quote-submitted-ops.d.ts.map +1 -0
  231. package/dist/templates/quote-submitted-ops.js +10 -0
  232. package/dist/templates/quote-submitted-ops.js.map +1 -0
  233. package/dist/templates/reservation-cancellation.d.ts +10 -0
  234. package/dist/templates/reservation-cancellation.d.ts.map +1 -0
  235. package/dist/templates/reservation-cancellation.js +9 -0
  236. package/dist/templates/reservation-cancellation.js.map +1 -0
  237. package/dist/templates/reset-password.d.ts +9 -0
  238. package/dist/templates/reset-password.d.ts.map +1 -0
  239. package/dist/templates/reset-password.js +9 -0
  240. package/dist/templates/reset-password.js.map +1 -0
  241. package/dist/templates/service-booking-confirmation.d.ts +11 -0
  242. package/dist/templates/service-booking-confirmation.d.ts.map +1 -0
  243. package/dist/templates/service-booking-confirmation.js +12 -0
  244. package/dist/templates/service-booking-confirmation.js.map +1 -0
  245. package/dist/templates/service-booking-employee-notification.d.ts +14 -0
  246. package/dist/templates/service-booking-employee-notification.d.ts.map +1 -0
  247. package/dist/templates/service-booking-employee-notification.js +10 -0
  248. package/dist/templates/service-booking-employee-notification.js.map +1 -0
  249. package/dist/templates/service-request-notification.d.ts +21 -0
  250. package/dist/templates/service-request-notification.d.ts.map +1 -0
  251. package/dist/templates/service-request-notification.js +10 -0
  252. package/dist/templates/service-request-notification.js.map +1 -0
  253. package/dist/templates/service-request.d.ts +10 -0
  254. package/dist/templates/service-request.d.ts.map +1 -0
  255. package/dist/templates/service-request.js +10 -0
  256. package/dist/templates/service-request.js.map +1 -0
  257. package/dist/templates/subscription-confirmation-bdc.d.ts +8 -0
  258. package/dist/templates/subscription-confirmation-bdc.d.ts.map +1 -0
  259. package/dist/templates/subscription-confirmation-bdc.js +10 -0
  260. package/dist/templates/subscription-confirmation-bdc.js.map +1 -0
  261. package/dist/templates/support-direct-message-notification.d.ts +13 -0
  262. package/dist/templates/support-direct-message-notification.d.ts.map +1 -0
  263. package/dist/templates/support-direct-message-notification.js +10 -0
  264. package/dist/templates/support-direct-message-notification.js.map +1 -0
  265. package/dist/templates/task-accepted-host.d.ts +14 -0
  266. package/dist/templates/task-accepted-host.d.ts.map +1 -0
  267. package/dist/templates/task-accepted-host.js +10 -0
  268. package/dist/templates/task-accepted-host.js.map +1 -0
  269. package/dist/templates/task-accepted-ops.d.ts +12 -0
  270. package/dist/templates/task-accepted-ops.d.ts.map +1 -0
  271. package/dist/templates/task-accepted-ops.js +10 -0
  272. package/dist/templates/task-accepted-ops.js.map +1 -0
  273. package/dist/templates/task-answers-submitted-ops.d.ts +9 -0
  274. package/dist/templates/task-answers-submitted-ops.d.ts.map +1 -0
  275. package/dist/templates/task-answers-submitted-ops.js +10 -0
  276. package/dist/templates/task-answers-submitted-ops.js.map +1 -0
  277. package/dist/templates/task-assigned-worker.d.ts +13 -0
  278. package/dist/templates/task-assigned-worker.d.ts.map +1 -0
  279. package/dist/templates/task-assigned-worker.js +10 -0
  280. package/dist/templates/task-assigned-worker.js.map +1 -0
  281. package/dist/templates/task-completed-host.d.ts +16 -0
  282. package/dist/templates/task-completed-host.d.ts.map +1 -0
  283. package/dist/templates/task-completed-host.js +17 -0
  284. package/dist/templates/task-completed-host.js.map +1 -0
  285. package/dist/templates/task-completed-ops.d.ts +9 -0
  286. package/dist/templates/task-completed-ops.d.ts.map +1 -0
  287. package/dist/templates/task-completed-ops.js +10 -0
  288. package/dist/templates/task-completed-ops.js.map +1 -0
  289. package/dist/templates/task-payment-failed.d.ts +18 -0
  290. package/dist/templates/task-payment-failed.d.ts.map +1 -0
  291. package/dist/templates/task-payment-failed.js +10 -0
  292. package/dist/templates/task-payment-failed.js.map +1 -0
  293. package/dist/templates/task-payment-successful.d.ts +16 -0
  294. package/dist/templates/task-payment-successful.d.ts.map +1 -0
  295. package/dist/templates/task-payment-successful.js +10 -0
  296. package/dist/templates/task-payment-successful.js.map +1 -0
  297. package/dist/templates/task-purchased-ops.d.ts +12 -0
  298. package/dist/templates/task-purchased-ops.d.ts.map +1 -0
  299. package/dist/templates/task-purchased-ops.js +10 -0
  300. package/dist/templates/task-purchased-ops.js.map +1 -0
  301. package/dist/templates/task-rejected-ops.d.ts +11 -0
  302. package/dist/templates/task-rejected-ops.d.ts.map +1 -0
  303. package/dist/templates/task-rejected-ops.js +10 -0
  304. package/dist/templates/task-rejected-ops.js.map +1 -0
  305. package/dist/templates/task-service-assigned-host.d.ts +11 -0
  306. package/dist/templates/task-service-assigned-host.d.ts.map +1 -0
  307. package/dist/templates/task-service-assigned-host.js +10 -0
  308. package/dist/templates/task-service-assigned-host.js.map +1 -0
  309. package/dist/templates/welcome-guest.d.ts +13 -0
  310. package/dist/templates/welcome-guest.d.ts.map +1 -0
  311. package/dist/templates/welcome-guest.js +17 -0
  312. package/dist/templates/welcome-guest.js.map +1 -0
  313. package/dist/templates/welcome-host.d.ts +9 -0
  314. package/dist/templates/welcome-host.d.ts.map +1 -0
  315. package/dist/templates/welcome-host.js +10 -0
  316. package/dist/templates/welcome-host.js.map +1 -0
  317. package/dist/templates/welcome-no-listing.d.ts +8 -0
  318. package/dist/templates/welcome-no-listing.d.ts.map +1 -0
  319. package/dist/templates/welcome-no-listing.js +14 -0
  320. package/dist/templates/welcome-no-listing.js.map +1 -0
  321. package/dist/templates/welcome-provider.d.ts +8 -0
  322. package/dist/templates/welcome-provider.d.ts.map +1 -0
  323. package/dist/templates/welcome-provider.js +22 -0
  324. package/dist/templates/welcome-provider.js.map +1 -0
  325. package/dist/theme.d.ts +113 -0
  326. package/dist/theme.d.ts.map +1 -0
  327. package/dist/theme.js +79 -0
  328. package/dist/theme.js.map +1 -0
  329. package/package.json +35 -0
@@ -0,0 +1,1082 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.emailTemplateIds = exports.emailCatalog = exports.SAMPLE_BASE_URL = void 0;
7
+ exports.sampleProps = sampleProps;
8
+ exports.isEmailTemplateId = isEmailTemplateId;
9
+ exports.emailsByCategory = emailsByCategory;
10
+ const account_deletion_request_1 = __importDefault(require("./templates/account-deletion-request"));
11
+ const airbnb_account_connected_1 = __importDefault(require("./templates/airbnb-account-connected"));
12
+ const airbnb_connection_success_1 = __importDefault(require("./templates/airbnb-connection-success"));
13
+ const airbnb_property_unlisted_1 = __importDefault(require("./templates/airbnb-property-unlisted"));
14
+ const bdc_listing_live_1 = __importDefault(require("./templates/bdc-listing-live"));
15
+ const booking_received_1 = __importDefault(require("./templates/booking-received"));
16
+ const check_in_notification_1 = __importDefault(require("./templates/check-in-notification"));
17
+ const check_out_notification_1 = __importDefault(require("./templates/check-out-notification"));
18
+ const direct_catalog_share_1 = __importDefault(require("./templates/direct-catalog-share"));
19
+ const direct_property_share_1 = __importDefault(require("./templates/direct-property-share"));
20
+ const guest_automated_message_1 = __importDefault(require("./templates/guest-automated-message"));
21
+ const guest_coordination_employee_notification_1 = __importDefault(require("./templates/guest-coordination-employee-notification"));
22
+ const guest_coordination_subscription_1 = __importDefault(require("./templates/guest-coordination-subscription"));
23
+ const guest_direct_booking_confirmation_1 = __importDefault(require("./templates/guest-direct-booking-confirmation"));
24
+ const guest_portal_email_code_1 = __importDefault(require("./templates/guest-portal-email-code"));
25
+ const guest_portal_stay_invite_1 = __importDefault(require("./templates/guest-portal-stay-invite"));
26
+ const guest_verification_submitted_notification_1 = __importDefault(require("./templates/guest-verification-submitted-notification"));
27
+ const home_hold_declaration_approved_1 = __importDefault(require("./templates/home-hold-declaration-approved"));
28
+ const home_hold_declaration_now_required_1 = __importDefault(require("./templates/home-hold-declaration-now-required"));
29
+ const home_hold_declaration_rejected_1 = __importDefault(require("./templates/home-hold-declaration-rejected"));
30
+ const home_hold_lapsed_1 = __importDefault(require("./templates/home-hold-lapsed"));
31
+ const home_hold_lapsed_host_1 = __importDefault(require("./templates/home-hold-lapsed-host"));
32
+ const home_hold_reminder_1 = __importDefault(require("./templates/home-hold-reminder"));
33
+ const host_to_operations_message_notification_1 = __importDefault(require("./templates/host-to-operations-message-notification"));
34
+ const how_it_works_1 = __importDefault(require("./templates/how-it-works"));
35
+ const internal_bdc_listing_request_1 = __importDefault(require("./templates/internal-bdc-listing-request"));
36
+ const new_landlord_message_notification_1 = __importDefault(require("./templates/new-landlord-message-notification"));
37
+ const new_landlord_notification_1 = __importDefault(require("./templates/new-landlord-notification"));
38
+ const new_message_1 = __importDefault(require("./templates/new-message"));
39
+ const new_message_coordinator_notification_1 = __importDefault(require("./templates/new-message-coordinator-notification"));
40
+ const new_property_submitted_1 = __importDefault(require("./templates/new-property-submitted"));
41
+ const new_support_message_notification_1 = __importDefault(require("./templates/new-support-message-notification"));
42
+ const payment_action_required_1 = __importDefault(require("./templates/payment-action-required"));
43
+ const payment_confirmation_1 = __importDefault(require("./templates/payment-confirmation"));
44
+ const payment_failed_1 = __importDefault(require("./templates/payment-failed"));
45
+ const payout_completed_notification_1 = __importDefault(require("./templates/payout-completed-notification"));
46
+ const payout_rejected_notification_1 = __importDefault(require("./templates/payout-rejected-notification"));
47
+ const payout_requested_1 = __importDefault(require("./templates/payout-requested"));
48
+ const property_submission_confirmation_1 = __importDefault(require("./templates/property-submission-confirmation"));
49
+ const quote_submitted_host_1 = __importDefault(require("./templates/quote-submitted-host"));
50
+ const quote_submitted_ops_1 = __importDefault(require("./templates/quote-submitted-ops"));
51
+ const reservation_cancellation_1 = __importDefault(require("./templates/reservation-cancellation"));
52
+ const reset_password_1 = __importDefault(require("./templates/reset-password"));
53
+ const service_booking_confirmation_1 = __importDefault(require("./templates/service-booking-confirmation"));
54
+ const service_booking_employee_notification_1 = __importDefault(require("./templates/service-booking-employee-notification"));
55
+ const service_request_1 = __importDefault(require("./templates/service-request"));
56
+ const service_request_notification_1 = __importDefault(require("./templates/service-request-notification"));
57
+ const subscription_confirmation_bdc_1 = __importDefault(require("./templates/subscription-confirmation-bdc"));
58
+ const support_direct_message_notification_1 = __importDefault(require("./templates/support-direct-message-notification"));
59
+ const task_accepted_host_1 = __importDefault(require("./templates/task-accepted-host"));
60
+ const task_accepted_ops_1 = __importDefault(require("./templates/task-accepted-ops"));
61
+ const task_answers_submitted_ops_1 = __importDefault(require("./templates/task-answers-submitted-ops"));
62
+ const task_assigned_worker_1 = __importDefault(require("./templates/task-assigned-worker"));
63
+ const task_completed_host_1 = __importDefault(require("./templates/task-completed-host"));
64
+ const task_completed_ops_1 = __importDefault(require("./templates/task-completed-ops"));
65
+ const task_payment_failed_1 = __importDefault(require("./templates/task-payment-failed"));
66
+ const task_payment_successful_1 = __importDefault(require("./templates/task-payment-successful"));
67
+ const task_purchased_ops_1 = __importDefault(require("./templates/task-purchased-ops"));
68
+ const task_rejected_ops_1 = __importDefault(require("./templates/task-rejected-ops"));
69
+ const task_service_assigned_host_1 = __importDefault(require("./templates/task-service-assigned-host"));
70
+ const welcome_guest_1 = __importDefault(require("./templates/welcome-guest"));
71
+ const welcome_host_1 = __importDefault(require("./templates/welcome-host"));
72
+ const welcome_no_listing_1 = __importDefault(require("./templates/welcome-no-listing"));
73
+ const welcome_provider_1 = __importDefault(require("./templates/welcome-provider"));
74
+ /** Identity helper that pins `P` per entry so `sampleProps` must match `Component`. */
75
+ function define(definition) {
76
+ return definition;
77
+ }
78
+ /** Preview-only. Real sends pass their own `baseUrl`; nothing here reads env. */
79
+ exports.SAMPLE_BASE_URL = 'http://localhost:3000';
80
+ const SAMPLE_DASHBOARD = `${exports.SAMPLE_BASE_URL}/overview`;
81
+ exports.emailCatalog = {
82
+ 'booking-received': define({
83
+ name: 'Booking received',
84
+ category: 'Reservations',
85
+ Component: booking_received_1.default,
86
+ subject: (p) => `New booking from ${p.guestName} — ${p.propertyName}`,
87
+ sampleProps: {
88
+ baseUrl: exports.SAMPLE_BASE_URL,
89
+ hostName: 'Sam',
90
+ guestName: 'Helen',
91
+ propertyName: 'Bright & stylish space, Beechwood Grove',
92
+ dateRange: '8 Jan – 20 Jan 2026',
93
+ nights: 12,
94
+ payout: '£1,240',
95
+ dashboardUrl: SAMPLE_DASHBOARD,
96
+ },
97
+ }),
98
+ 'reservation-cancellation': define({
99
+ name: 'Booking cancelled',
100
+ category: 'Reservations',
101
+ Component: reservation_cancellation_1.default,
102
+ subject: (p) => `Booking cancelled — ${p.propertyName}, ${p.dateRange}`,
103
+ sampleProps: {
104
+ baseUrl: exports.SAMPLE_BASE_URL,
105
+ hostName: 'Sam',
106
+ guestName: 'Marko',
107
+ propertyName: 'Seaview Loft',
108
+ dateRange: '12 Feb – 15 Feb 2026',
109
+ dashboardUrl: SAMPLE_DASHBOARD,
110
+ },
111
+ }),
112
+ 'task-completed-host': define({
113
+ name: 'Service completed',
114
+ category: 'Tasks & quotes',
115
+ Component: task_completed_host_1.default,
116
+ subject: (p) => `${p.taskTitle} done — ${p.propertyName}`,
117
+ sampleProps: {
118
+ baseUrl: exports.SAMPLE_BASE_URL,
119
+ hostName: 'Sam',
120
+ taskTitle: 'Turnover cleaning',
121
+ propertyName: 'Riverside Studio',
122
+ propertyImageUrl: 'https://images.unsplash.com/photo-1560448204-e02f11c3d0e2?auto=format&fit=crop&w=600&q=80',
123
+ providerName: 'Ana Petrova',
124
+ providerRole: 'Cleaning · Sparkle Co.',
125
+ providerAvatarUrl: 'https://randomuser.me/api/portraits/women/44.jpg',
126
+ completedAt: '14 Mar 2026, 11 am',
127
+ beforeImageUrl: 'https://images.unsplash.com/photo-1581578731548-c64695cc6952?auto=format&fit=crop&w=400&q=80',
128
+ afterImageUrl: 'https://images.unsplash.com/photo-1584622650111-993a426fbf0a?auto=format&fit=crop&w=400&q=80',
129
+ reportUrl: `${exports.SAMPLE_BASE_URL}/tasks/123/report`,
130
+ },
131
+ }),
132
+ 'quote-submitted-host': define({
133
+ name: 'Quote ready to review',
134
+ category: 'Tasks & quotes',
135
+ Component: quote_submitted_host_1.default,
136
+ subject: (p) => `New quote — ${p.price} for ${p.taskTitle.toLowerCase()}`,
137
+ sampleProps: {
138
+ baseUrl: exports.SAMPLE_BASE_URL,
139
+ hostName: 'Sam',
140
+ taskTitle: 'Plumbing repair',
141
+ propertyName: 'Beechwood Grove',
142
+ propertyImageUrl: 'https://images.unsplash.com/photo-1502672260266-1c1ef2d93688?auto=format&fit=crop&w=400&q=80',
143
+ providerName: 'Marko Ilic',
144
+ providerRole: 'Maintenance',
145
+ providerAvatarUrl: 'https://randomuser.me/api/portraits/men/32.jpg',
146
+ price: '£120',
147
+ reviewUrl: `${exports.SAMPLE_BASE_URL}/tasks/123/quote`,
148
+ },
149
+ }),
150
+ 'payment-failed': define({
151
+ name: 'Payment failed',
152
+ category: 'Payments',
153
+ Component: payment_failed_1.default,
154
+ subject: (p) => `Card declined — payment for ${p.serviceName.toLowerCase()}`,
155
+ sampleProps: {
156
+ baseUrl: exports.SAMPLE_BASE_URL,
157
+ hostName: 'Sam',
158
+ serviceName: 'Guest coordination',
159
+ propertyName: 'Beechwood Grove',
160
+ amount: '£49',
161
+ nextAttempt: '16 Mar 2026',
162
+ payNowUrl: `${exports.SAMPLE_BASE_URL}/billing/pay`,
163
+ updateCardUrl: `${exports.SAMPLE_BASE_URL}/billing/payment-method`,
164
+ },
165
+ }),
166
+ 'payout-requested': define({
167
+ name: 'Payout requested',
168
+ category: 'Payments',
169
+ Component: payout_requested_1.default,
170
+ subject: (p) => `Payout requested — ${p.total}`,
171
+ sampleProps: {
172
+ baseUrl: exports.SAMPLE_BASE_URL,
173
+ requesterName: 'Sam Hartley',
174
+ payoutId: '#PO-4471',
175
+ total: '£1,240',
176
+ requestedAt: '14 Mar 2026, 3:30 pm',
177
+ accountName: 'S Hartley',
178
+ accountNumberMasked: '···· 4471',
179
+ sortCode: '20-00-00',
180
+ payoutsDashboardUrl: `${exports.SAMPLE_BASE_URL}/payouts`,
181
+ },
182
+ }),
183
+ 'new-message': define({
184
+ name: 'New message',
185
+ category: 'Messaging',
186
+ Component: new_message_1.default,
187
+ subject: (p) => `${p.senderName} sent you a message`,
188
+ sampleProps: {
189
+ baseUrl: exports.SAMPLE_BASE_URL,
190
+ hostName: 'Sam',
191
+ senderName: 'Helen',
192
+ senderAvatarUrl: 'https://randomuser.me/api/portraits/women/65.jpg',
193
+ propertyName: 'Beechwood Grove',
194
+ timestamp: '14 Mar 2026, 3:30 pm',
195
+ messagePreview: 'Hi, we land a bit early on Friday. Would an 1 pm check-in be possible?',
196
+ replyUrl: `${exports.SAMPLE_BASE_URL}/chat`,
197
+ },
198
+ }),
199
+ 'welcome-host': define({
200
+ name: 'Welcome host (Hububb)',
201
+ category: 'Lifecycle',
202
+ Component: welcome_host_1.default,
203
+ subject: () => 'Welcome to Hububb',
204
+ sampleProps: {
205
+ baseUrl: exports.SAMPLE_BASE_URL,
206
+ firstName: 'Sam',
207
+ units: [
208
+ {
209
+ name: 'Bright & stylish space',
210
+ location: 'Beechwood Grove, London',
211
+ imageUrl: `${exports.SAMPLE_BASE_URL}/assets/png/airbnb-placeholder-1.png`,
212
+ },
213
+ {
214
+ name: 'Riverside Studio',
215
+ location: 'Wapping, London',
216
+ imageUrl: `${exports.SAMPLE_BASE_URL}/assets/png/airbnb-placeholder-2.png`,
217
+ },
218
+ {
219
+ name: 'Sunlit Two-Bed',
220
+ location: 'Hackney, London',
221
+ imageUrl: `${exports.SAMPLE_BASE_URL}/assets/png/airbnb-placeholder-3.png`,
222
+ },
223
+ ],
224
+ dashboardUrl: SAMPLE_DASHBOARD,
225
+ },
226
+ }),
227
+ 'welcome-provider': define({
228
+ name: 'Welcome provider (Hububb Connect)',
229
+ category: 'Lifecycle',
230
+ Component: welcome_provider_1.default,
231
+ subject: () => 'Welcome to Hububb Connect',
232
+ sampleProps: {
233
+ baseUrl: exports.SAMPLE_BASE_URL,
234
+ firstName: 'Ana',
235
+ setupUrl: `${exports.SAMPLE_BASE_URL}/connect/profile`,
236
+ },
237
+ }),
238
+ 'welcome-guest': define({
239
+ name: 'Welcome guest (Hububb Stay)',
240
+ category: 'Lifecycle',
241
+ Component: welcome_guest_1.default,
242
+ subject: () => 'Welcome to your stay',
243
+ sampleProps: {
244
+ baseUrl: exports.SAMPLE_BASE_URL,
245
+ guestName: 'Tom',
246
+ propertyName: 'Beechwood Grove',
247
+ heroImageUrl: 'https://images.unsplash.com/photo-1502672260266-1c1ef2d93688?auto=format&fit=crop&w=600&q=80',
248
+ checkIn: '8 Jan 2026, 3 pm',
249
+ checkOut: '20 Jan 2026, 11 am',
250
+ openStayUrl: `${exports.SAMPLE_BASE_URL}/guest/stay`,
251
+ },
252
+ }),
253
+ 'reset-password': define({
254
+ name: 'Reset password',
255
+ category: 'Auth',
256
+ Component: reset_password_1.default,
257
+ subject: () => 'Reset your Hububb password',
258
+ sampleProps: {
259
+ baseUrl: exports.SAMPLE_BASE_URL,
260
+ firstName: 'Sam',
261
+ email: 'sam@example.com',
262
+ resetUrl: `${exports.SAMPLE_BASE_URL}/auth/reset?token=sample`,
263
+ expiryLabel: '1 hour',
264
+ },
265
+ }),
266
+ 'guest-portal-stay-invite': define({
267
+ name: 'Guest portal invite',
268
+ category: 'Guest portal',
269
+ Component: guest_portal_stay_invite_1.default,
270
+ subject: (p) => `Your stay at ${p.propertyName}`,
271
+ sampleProps: {
272
+ baseUrl: exports.SAMPLE_BASE_URL,
273
+ inviteeName: 'Tom',
274
+ inviterName: 'Helen',
275
+ propertyName: 'Beechwood Grove',
276
+ propertyCity: 'London',
277
+ heroImageUrl: 'https://images.unsplash.com/photo-1502672260266-1c1ef2d93688?auto=format&fit=crop&w=600&q=80',
278
+ checkIn: '8 Jan 2026, 3 pm',
279
+ checkOut: '20 Jan 2026, 11 am',
280
+ joinUrl: `${exports.SAMPLE_BASE_URL}/guest/join?token=sample`,
281
+ },
282
+ }),
283
+ 'account-deletion-request': define({
284
+ name: 'Account deletion request',
285
+ category: 'Internal ops',
286
+ Component: account_deletion_request_1.default,
287
+ subject: () => 'Action needed — account deletion request',
288
+ sampleProps: {
289
+ baseUrl: exports.SAMPLE_BASE_URL,
290
+ hostName: 'Sam Hartley',
291
+ hostEmail: 'sam@example.com',
292
+ hostPhone: '+44 7700 900123',
293
+ userId: 'usr_9f2a1c',
294
+ propertiesCount: 3,
295
+ hasActiveSubscription: true,
296
+ requestedAt: '14 Mar 2026, 3:30 pm',
297
+ dashboardUrl: `${exports.SAMPLE_BASE_URL}/ops/users/usr_9f2a1c`,
298
+ },
299
+ }),
300
+ 'airbnb-connection-success': define({
301
+ name: 'Airbnb connected',
302
+ category: 'Integrations',
303
+ Component: airbnb_connection_success_1.default,
304
+ subject: (p) => `Airbnb connected — ${p.units.length} ${p.units.length === 1 ? 'listing' : 'listings'} syncing`,
305
+ sampleProps: {
306
+ baseUrl: exports.SAMPLE_BASE_URL,
307
+ hostName: 'Sam',
308
+ units: [
309
+ {
310
+ name: 'Bright & stylish space',
311
+ location: 'Beechwood Grove, London',
312
+ imageUrl: `${exports.SAMPLE_BASE_URL}/assets/png/airbnb-placeholder-1.png`,
313
+ },
314
+ {
315
+ name: 'Riverside Studio',
316
+ location: 'Wapping, London',
317
+ imageUrl: `${exports.SAMPLE_BASE_URL}/assets/png/airbnb-placeholder-2.png`,
318
+ },
319
+ {
320
+ name: 'Sunlit Two-Bed',
321
+ location: 'Hackney, London',
322
+ imageUrl: `${exports.SAMPLE_BASE_URL}/assets/png/airbnb-placeholder-3.png`,
323
+ },
324
+ ],
325
+ dashboardUrl: SAMPLE_DASHBOARD,
326
+ },
327
+ }),
328
+ // ─── Tasks & quotes ──────────────────────────────────────────────────
329
+ 'task-accepted-host': define({
330
+ name: 'Job accepted',
331
+ category: 'Tasks & quotes',
332
+ Component: task_accepted_host_1.default,
333
+ subject: () => 'Your job is scheduled',
334
+ sampleProps: {
335
+ baseUrl: exports.SAMPLE_BASE_URL,
336
+ hostName: 'Sam',
337
+ providerTypeLabel: 'Cleaning',
338
+ workerName: 'Ana Petrova',
339
+ taskTitle: 'Turnover cleaning',
340
+ unit: 'Riverside Studio',
341
+ area: 'Wapping',
342
+ dueDate: '14 Mar 2026, 11 am',
343
+ taskUrl: `${exports.SAMPLE_BASE_URL}/host/tasks/123`,
344
+ },
345
+ }),
346
+ 'task-assigned-worker': define({
347
+ name: 'New job assigned',
348
+ category: 'Tasks & quotes',
349
+ Component: task_assigned_worker_1.default,
350
+ subject: (p) => `New job assigned: ${p.taskTitle}`,
351
+ sampleProps: {
352
+ baseUrl: exports.SAMPLE_BASE_URL,
353
+ workerFirstName: 'Ana',
354
+ taskTitle: 'Turnover cleaning',
355
+ taskType: 'Cleaning',
356
+ unit: 'Riverside Studio',
357
+ area: 'Wapping',
358
+ dueDate: '14 Mar 2026, 11 am',
359
+ taskUrl: `${exports.SAMPLE_BASE_URL}/worker/tasks/123`,
360
+ },
361
+ }),
362
+ 'task-service-assigned-host': define({
363
+ name: 'Provider assigned',
364
+ category: 'Tasks & quotes',
365
+ Component: task_service_assigned_host_1.default,
366
+ subject: (p) => `${p.providerTypeLabel} needed for ${p.unit}`,
367
+ sampleProps: {
368
+ baseUrl: exports.SAMPLE_BASE_URL,
369
+ hostName: 'Sam',
370
+ providerTypeLabel: 'Plumber',
371
+ serviceName: 'Leak repair',
372
+ unit: 'Beechwood Grove',
373
+ area: 'London',
374
+ },
375
+ }),
376
+ // ─── Internal ops — tasks ────────────────────────────────────────────
377
+ 'task-accepted-ops': define({
378
+ name: 'Job accepted (ops)',
379
+ category: 'Internal ops',
380
+ Component: task_accepted_ops_1.default,
381
+ subject: (p) => `${p.workerName} accepted ${p.taskTitle} for ${p.unit}`,
382
+ sampleProps: {
383
+ baseUrl: exports.SAMPLE_BASE_URL,
384
+ workerName: 'Ana Petrova',
385
+ providerTypeLabel: 'Cleaning',
386
+ taskTitle: 'Turnover cleaning',
387
+ unit: 'Riverside Studio',
388
+ area: 'Wapping',
389
+ dueDate: '14 Mar 2026, 11 am',
390
+ },
391
+ }),
392
+ 'task-answers-submitted-ops': define({
393
+ name: 'Task info submitted (ops)',
394
+ category: 'Internal ops',
395
+ Component: task_answers_submitted_ops_1.default,
396
+ subject: (p) => `All information for ${p.taskTitle} ${p.unit} ${p.dueDate} submitted`,
397
+ sampleProps: {
398
+ baseUrl: exports.SAMPLE_BASE_URL,
399
+ taskTitle: 'Plumbing repair',
400
+ unit: 'Beechwood Grove',
401
+ dueDate: '14 Mar 2026, 11 am',
402
+ },
403
+ }),
404
+ 'task-completed-ops': define({
405
+ name: 'Task completed (ops)',
406
+ category: 'Internal ops',
407
+ Component: task_completed_ops_1.default,
408
+ subject: (p) => `${p.taskTitle} for ${p.unit} is completed`,
409
+ sampleProps: {
410
+ baseUrl: exports.SAMPLE_BASE_URL,
411
+ taskTitle: 'Turnover cleaning',
412
+ unit: 'Riverside Studio',
413
+ area: 'Wapping',
414
+ },
415
+ }),
416
+ 'task-purchased-ops': define({
417
+ name: 'Task purchased (ops)',
418
+ category: 'Internal ops',
419
+ Component: task_purchased_ops_1.default,
420
+ subject: (p) => `New ${p.taskTitle} for ${p.unit} in ${p.area ?? ''}`,
421
+ sampleProps: {
422
+ baseUrl: exports.SAMPLE_BASE_URL,
423
+ hostName: 'Sam Hartley',
424
+ taskTitle: 'Leak repair',
425
+ taskType: 'Plumbing',
426
+ unit: 'Beechwood Grove',
427
+ area: 'London',
428
+ dueDate: '14 Mar 2026, 11 am',
429
+ },
430
+ }),
431
+ 'task-rejected-ops': define({
432
+ name: 'Job rejected (ops)',
433
+ category: 'Internal ops',
434
+ Component: task_rejected_ops_1.default,
435
+ subject: (p) => `${p.workerName} has rejected the job`,
436
+ sampleProps: {
437
+ baseUrl: exports.SAMPLE_BASE_URL,
438
+ workerName: 'Marko Ilic',
439
+ taskTitle: 'Leak repair',
440
+ unit: 'Beechwood Grove',
441
+ area: 'London',
442
+ dueDate: '14 Mar 2026, 11 am',
443
+ },
444
+ }),
445
+ 'quote-submitted-ops': define({
446
+ name: 'Quote submitted (ops)',
447
+ category: 'Internal ops',
448
+ Component: quote_submitted_ops_1.default,
449
+ subject: (p) => `${p.workerName} submitted a quote ${p.taskType} for ${p.unit} in ${p.area ?? ''}`,
450
+ sampleProps: {
451
+ baseUrl: exports.SAMPLE_BASE_URL,
452
+ workerName: 'Marko Ilic',
453
+ priceLabel: '£120',
454
+ taskTitle: 'Plumbing repair',
455
+ taskType: 'Plumbing',
456
+ unit: 'Beechwood Grove',
457
+ area: 'London',
458
+ },
459
+ }),
460
+ 'service-booking-employee-notification': define({
461
+ name: 'Service request (ops)',
462
+ category: 'Internal ops',
463
+ Component: service_booking_employee_notification_1.default,
464
+ subject: (p) => (p.paid ? `Payment received for ${p.serviceName}` : `A landlord just requested ${p.serviceName}`),
465
+ sampleProps: {
466
+ baseUrl: exports.SAMPLE_BASE_URL,
467
+ employeeName: 'Jordan',
468
+ landlordName: 'Sam Hartley',
469
+ serviceName: 'Guest coordination',
470
+ paid: true,
471
+ respondUrl: `${exports.SAMPLE_BASE_URL}/dashboard/landlords`,
472
+ landlordMessage: 'Please can you set this up before the weekend?',
473
+ },
474
+ }),
475
+ 'guest-verification-submitted-notification': define({
476
+ name: 'Guest verification submitted',
477
+ category: 'Internal ops',
478
+ Component: guest_verification_submitted_notification_1.default,
479
+ subject: (p) => `Guest identity verification submitted — ${p.guestName}`,
480
+ sampleProps: {
481
+ baseUrl: exports.SAMPLE_BASE_URL,
482
+ guestName: 'Helen Ford',
483
+ guestPhone: '+44 7700 900456',
484
+ guestEmail: 'helen@example.com',
485
+ country: 'United Kingdom',
486
+ documentType: 'Passport',
487
+ submittedAt: '14 Mar 2026, 3:30 pm',
488
+ dashboardUrl: `${exports.SAMPLE_BASE_URL}/ops/verifications/123`,
489
+ },
490
+ }),
491
+ 'new-property-submitted': define({
492
+ name: 'Property submitted (ops)',
493
+ category: 'Internal ops',
494
+ Component: new_property_submitted_1.default,
495
+ subject: () => 'New Property Submitted',
496
+ sampleProps: {
497
+ baseUrl: exports.SAMPLE_BASE_URL,
498
+ userName: 'Sam Hartley',
499
+ userEmail: 'sam@example.com',
500
+ propertyTitle: 'Bright & stylish space, Beechwood Grove',
501
+ dashboardUrl: `${exports.SAMPLE_BASE_URL}/ops/properties/123`,
502
+ },
503
+ }),
504
+ 'airbnb-account-connected': define({
505
+ name: 'Airbnb account connected (ops)',
506
+ category: 'Internal ops',
507
+ Component: airbnb_account_connected_1.default,
508
+ subject: () => 'New AirBNB Account Connected',
509
+ sampleProps: {
510
+ baseUrl: exports.SAMPLE_BASE_URL,
511
+ userName: 'Sam Hartley',
512
+ userEmail: 'sam@example.com',
513
+ airbnbAccount: 'sam-hartley-props',
514
+ properties: [{ title: 'Bright & stylish space' }, { title: 'Riverside Studio' }],
515
+ dashboardUrl: `${exports.SAMPLE_BASE_URL}/ops/users/usr_9f2a1c`,
516
+ },
517
+ }),
518
+ 'internal-bdc-listing-request': define({
519
+ name: 'Booking.com request (ops)',
520
+ category: 'Internal ops',
521
+ Component: internal_bdc_listing_request_1.default,
522
+ subject: () => 'Landlord Subscribed for the Booking.com Listing Service',
523
+ sampleProps: {
524
+ baseUrl: exports.SAMPLE_BASE_URL,
525
+ landlordName: 'Sam Hartley',
526
+ serviceRequestUrl: `${exports.SAMPLE_BASE_URL}/dashboard/property-requests`,
527
+ },
528
+ }),
529
+ 'guest-coordination-employee-notification': define({
530
+ name: 'Guest coordination assigned (ops)',
531
+ category: 'Internal ops',
532
+ Component: guest_coordination_employee_notification_1.default,
533
+ subject: () => 'New Property Assigned - Guest Coordination',
534
+ sampleProps: {
535
+ baseUrl: exports.SAMPLE_BASE_URL,
536
+ employeeName: 'Jordan',
537
+ propertyName: 'Beechwood Grove',
538
+ landlordName: 'Sam Hartley',
539
+ dashboardUrl: `${exports.SAMPLE_BASE_URL}/dashboard/landlords`,
540
+ },
541
+ }),
542
+ 'service-request': define({
543
+ name: 'Service connected (ops)',
544
+ category: 'Internal ops',
545
+ Component: service_request_1.default,
546
+ subject: () => 'New Service Connected',
547
+ sampleProps: {
548
+ baseUrl: exports.SAMPLE_BASE_URL,
549
+ userName: 'Sam Hartley',
550
+ userEmail: 'sam@example.com',
551
+ serviceName: 'Guest coordination',
552
+ propertyName: 'Beechwood Grove',
553
+ },
554
+ }),
555
+ 'service-request-notification': define({
556
+ name: 'Service request submitted (ops)',
557
+ category: 'Internal ops',
558
+ Component: service_request_notification_1.default,
559
+ subject: (p) => `New service request: ${p.serviceName}`,
560
+ sampleProps: {
561
+ baseUrl: exports.SAMPLE_BASE_URL,
562
+ serviceName: 'Furniture hire',
563
+ description: 'Two-bed furnished setup needed before the first booking.',
564
+ estimatedPrice: '£1,200.00',
565
+ contactEmail: 'sam@example.com',
566
+ additionalInfo: 'Flexible on delivery date.',
567
+ submittedAt: '14 March 2026, 3:30 PM',
568
+ serviceProviderDetails: {
569
+ name: 'FurnishCo',
570
+ type: 'Furniture hire',
571
+ email: 'requests@furnishco.example',
572
+ ownerName: 'Priya Shah',
573
+ },
574
+ },
575
+ }),
576
+ // ─── Messaging ───────────────────────────────────────────────────────
577
+ 'new-landlord-message-notification': define({
578
+ name: 'Message from Hububb',
579
+ category: 'Messaging',
580
+ Component: new_landlord_message_notification_1.default,
581
+ subject: () => 'New Message from Hububb',
582
+ sampleProps: {
583
+ baseUrl: exports.SAMPLE_BASE_URL,
584
+ landlordName: 'Sam',
585
+ messagePreview: 'We noticed your listing photos could use an update — want a hand?',
586
+ dashboardLink: `${exports.SAMPLE_BASE_URL}/host/chat/thread?id=abc`,
587
+ },
588
+ }),
589
+ 'support-direct-message-notification': define({
590
+ name: 'Direct message from Hububb',
591
+ category: 'Messaging',
592
+ Component: support_direct_message_notification_1.default,
593
+ subject: () => "You've received a message from Hububb",
594
+ sampleProps: {
595
+ baseUrl: exports.SAMPLE_BASE_URL,
596
+ landlordName: 'Sam',
597
+ senderName: 'Priya',
598
+ senderRole: 'Operations',
599
+ messageDate: '14 Mar 2026, 3:30 pm',
600
+ messageContent: "Just checking in — how's the new listing going?",
601
+ messageUrl: `${exports.SAMPLE_BASE_URL}/host/chat`,
602
+ },
603
+ }),
604
+ 'new-message-coordinator-notification': define({
605
+ name: 'Guest message (ops)',
606
+ category: 'Internal ops',
607
+ Component: new_message_coordinator_notification_1.default,
608
+ subject: () => 'Guest Message Requires Your Attention',
609
+ sampleProps: {
610
+ baseUrl: exports.SAMPLE_BASE_URL,
611
+ propertyName: 'Beechwood Grove',
612
+ landlordName: 'Sam Hartley',
613
+ senderName: 'Helen',
614
+ messageDate: '14 Mar 2026',
615
+ messagePreview: 'Hi, we land a bit early on Friday. Would an 1 pm check-in be possible?',
616
+ inboxUrl: `${exports.SAMPLE_BASE_URL}/dashboard/chat/thread?id=abc`,
617
+ },
618
+ }),
619
+ 'new-support-message-notification': define({
620
+ name: 'Support request (ops)',
621
+ category: 'Internal ops',
622
+ Component: new_support_message_notification_1.default,
623
+ subject: () => 'New Landlord Support Request',
624
+ sampleProps: {
625
+ baseUrl: exports.SAMPLE_BASE_URL,
626
+ landlordName: 'Sam Hartley',
627
+ landlordEmail: 'sam@example.com',
628
+ messageDate: '14 Mar 2026, 3:30 pm',
629
+ messageContent: 'My payout is a day late, can someone check on this?',
630
+ supportDashboardUrl: `${exports.SAMPLE_BASE_URL}/dashboard/support/thread?id=abc`,
631
+ },
632
+ }),
633
+ 'host-to-operations-message-notification': define({
634
+ name: 'Host message (ops)',
635
+ category: 'Internal ops',
636
+ Component: host_to_operations_message_notification_1.default,
637
+ subject: () => 'New Message from Host',
638
+ sampleProps: {
639
+ baseUrl: exports.SAMPLE_BASE_URL,
640
+ operationsTeamMemberName: 'Jordan',
641
+ hostName: 'Sam Hartley',
642
+ hostEmail: 'sam@example.com',
643
+ propertyName: 'Beechwood Grove',
644
+ propertyAddress: 'London, UK',
645
+ messageDate: '14 Mar 2026',
646
+ messageContent: 'Can someone help me update my listing photos?',
647
+ messageUrl: `${exports.SAMPLE_BASE_URL}/dashboard/support/thread?id=abc`,
648
+ },
649
+ }),
650
+ // ─── Payments ────────────────────────────────────────────────────────
651
+ 'task-payment-failed': define({
652
+ name: 'Automated task payment failed',
653
+ category: 'Payments',
654
+ Component: task_payment_failed_1.default,
655
+ subject: () => 'Automated Tasks Payment Failed',
656
+ sampleProps: {
657
+ baseUrl: exports.SAMPLE_BASE_URL,
658
+ propertyName: 'Riverside Studio',
659
+ guestName: 'Helen Ford',
660
+ checkIn: '8 Jan 2026',
661
+ checkOut: '20 Jan 2026',
662
+ failedTasks: [
663
+ { title: 'Turnover cleaning', serviceName: 'Cleaning', reason: 'Card declined', dueDate: '20 Jan 2026' },
664
+ ],
665
+ dashboardUrl: `${exports.SAMPLE_BASE_URL}/host/tasks`,
666
+ },
667
+ }),
668
+ 'task-payment-successful': define({
669
+ name: 'Automated task payment confirmed',
670
+ category: 'Payments',
671
+ Component: task_payment_successful_1.default,
672
+ subject: () => 'Automated Tasks Payment Successful',
673
+ sampleProps: {
674
+ baseUrl: exports.SAMPLE_BASE_URL,
675
+ propertyName: 'Riverside Studio',
676
+ guestName: 'Helen Ford',
677
+ checkIn: '8 Jan 2026',
678
+ checkOut: '20 Jan 2026',
679
+ successfulTasks: [{ title: 'Turnover cleaning', dueDate: '20 Jan 2026' }],
680
+ dashboardUrl: `${exports.SAMPLE_BASE_URL}/host/tasks`,
681
+ },
682
+ }),
683
+ 'payment-action-required': define({
684
+ name: 'Payment authentication needed',
685
+ category: 'Payments',
686
+ Component: payment_action_required_1.default,
687
+ subject: () => 'Payment Authentication Required',
688
+ sampleProps: {
689
+ baseUrl: exports.SAMPLE_BASE_URL,
690
+ firstName: 'Sam',
691
+ amount: '£49.00',
692
+ actionUrl: `${exports.SAMPLE_BASE_URL}/host/profile?pendingPayment=true`,
693
+ },
694
+ }),
695
+ 'payment-confirmation': define({
696
+ name: 'Payment received',
697
+ category: 'Payments',
698
+ Component: payment_confirmation_1.default,
699
+ subject: () => 'Payment Received - Service Now Active',
700
+ sampleProps: {
701
+ baseUrl: exports.SAMPLE_BASE_URL,
702
+ firstName: 'Sam',
703
+ serviceName: 'Guest coordination',
704
+ propertyName: 'Beechwood Grove',
705
+ amount: '£49.00',
706
+ startDate: '14 March 2026',
707
+ nextBillingDate: '14 April 2026',
708
+ dashboardUrl: SAMPLE_DASHBOARD,
709
+ },
710
+ }),
711
+ 'payout-completed-notification': define({
712
+ name: 'Payout sent',
713
+ category: 'Payments',
714
+ Component: payout_completed_notification_1.default,
715
+ subject: () => 'Your payout is on the way',
716
+ sampleProps: {
717
+ baseUrl: exports.SAMPLE_BASE_URL,
718
+ firstName: 'Sam',
719
+ amountLabel: '£1,240.00',
720
+ payoutUrl: `${exports.SAMPLE_BASE_URL}/host/payouts`,
721
+ },
722
+ }),
723
+ 'payout-rejected-notification': define({
724
+ name: 'Payout not approved',
725
+ category: 'Payments',
726
+ Component: payout_rejected_notification_1.default,
727
+ subject: (p) => (p.cancelled ? 'Your payout was cancelled' : 'Your payout was not approved'),
728
+ sampleProps: {
729
+ baseUrl: exports.SAMPLE_BASE_URL,
730
+ firstName: 'Sam',
731
+ cancelled: false,
732
+ amountLabel: '£1,240.00',
733
+ payoutUrl: `${exports.SAMPLE_BASE_URL}/host/payouts`,
734
+ },
735
+ }),
736
+ 'service-booking-confirmation': define({
737
+ name: 'Service request confirmed',
738
+ category: 'Payments',
739
+ Component: service_booking_confirmation_1.default,
740
+ subject: (p) => (p.paid ? `Payment confirmed! Your ${p.serviceName} service is now paid` : "Thanks! We've received your service request"),
741
+ sampleProps: {
742
+ baseUrl: exports.SAMPLE_BASE_URL,
743
+ firstName: 'Sam',
744
+ serviceName: 'Furniture hire',
745
+ paid: true,
746
+ servicesUrl: `${exports.SAMPLE_BASE_URL}/host/services`,
747
+ },
748
+ }),
749
+ 'guest-coordination-subscription': define({
750
+ name: 'Guest coordination live',
751
+ category: 'Payments',
752
+ Component: guest_coordination_subscription_1.default,
753
+ subject: () => "You're All Set - Guest Coordination Is Live",
754
+ sampleProps: {
755
+ baseUrl: exports.SAMPLE_BASE_URL,
756
+ landlordName: 'Sam',
757
+ propertyName: 'Beechwood Grove',
758
+ supportChatUrl: `${exports.SAMPLE_BASE_URL}/host/chat`,
759
+ },
760
+ }),
761
+ // ─── Integrations ────────────────────────────────────────────────────
762
+ 'airbnb-property-unlisted': define({
763
+ name: 'Airbnb listing inactive',
764
+ category: 'Integrations',
765
+ Component: airbnb_property_unlisted_1.default,
766
+ subject: () => 'Airbnb Listing Inactive',
767
+ sampleProps: {
768
+ baseUrl: exports.SAMPLE_BASE_URL,
769
+ propertyTitle: 'Bright & stylish space, Beechwood Grove',
770
+ dashboardUrl: SAMPLE_DASHBOARD,
771
+ },
772
+ }),
773
+ 'bdc-listing-live': define({
774
+ name: 'Booking.com listing live',
775
+ category: 'Integrations',
776
+ Component: bdc_listing_live_1.default,
777
+ subject: () => 'Your Property Is Now Live on Booking.com',
778
+ sampleProps: {
779
+ baseUrl: exports.SAMPLE_BASE_URL,
780
+ firstName: 'Sam',
781
+ dashboardUrl: SAMPLE_DASHBOARD,
782
+ },
783
+ }),
784
+ 'subscription-confirmation-bdc': define({
785
+ name: 'Booking.com request received',
786
+ category: 'Integrations',
787
+ Component: subscription_confirmation_bdc_1.default,
788
+ subject: () => "Thanks! We've Received your Booking.com Listing Request",
789
+ sampleProps: {
790
+ baseUrl: exports.SAMPLE_BASE_URL,
791
+ firstName: 'Sam',
792
+ allServicesUrl: `${exports.SAMPLE_BASE_URL}/host/services`,
793
+ },
794
+ }),
795
+ // ─── Reservations ────────────────────────────────────────────────────
796
+ 'guest-automated-message': define({
797
+ name: 'Reservation confirmation (automated)',
798
+ category: 'Reservations',
799
+ Component: guest_automated_message_1.default,
800
+ subject: () => 'Hububb - Reservation Confirmation',
801
+ sampleProps: {
802
+ baseUrl: exports.SAMPLE_BASE_URL,
803
+ guestName: 'Tom Reid',
804
+ propertyName: 'Beechwood Grove',
805
+ checkInDate: 'Thu Jan 08 2026',
806
+ checkOutDate: 'Tue Jan 20 2026',
807
+ messageContent: "Looking forward to hosting you! Check-in details will follow closer to your stay.",
808
+ },
809
+ }),
810
+ 'guest-direct-booking-confirmation': define({
811
+ name: 'Direct booking confirmed',
812
+ category: 'Reservations',
813
+ Component: guest_direct_booking_confirmation_1.default,
814
+ subject: (p) => `Your booking is confirmed — ${p.propertyName}`,
815
+ sampleProps: {
816
+ baseUrl: exports.SAMPLE_BASE_URL,
817
+ firstName: 'Tom',
818
+ propertyName: 'Beechwood Grove',
819
+ refNumber: 'HB-4471',
820
+ checkInDate: '08 Jan 2026',
821
+ checkOutDate: '20 Jan 2026',
822
+ totalPaid: '£1,240.00',
823
+ receiptUrl: 'https://pay.stripe.com/receipts/sample',
824
+ },
825
+ }),
826
+ 'check-in-notification': define({
827
+ name: 'Guest checked in',
828
+ category: 'Reservations',
829
+ Component: check_in_notification_1.default,
830
+ subject: () => 'Your Guest Has Checked In',
831
+ sampleProps: {
832
+ baseUrl: exports.SAMPLE_BASE_URL,
833
+ firstName: 'Sam',
834
+ guestName: 'Helen Ford',
835
+ propertyName: 'Beechwood Grove',
836
+ dashboardUrl: SAMPLE_DASHBOARD,
837
+ },
838
+ }),
839
+ 'check-out-notification': define({
840
+ name: 'Guest checked out',
841
+ category: 'Reservations',
842
+ Component: check_out_notification_1.default,
843
+ subject: () => 'Guest Checked Out - Time to Reset',
844
+ sampleProps: {
845
+ baseUrl: exports.SAMPLE_BASE_URL,
846
+ firstName: 'Sam',
847
+ guestName: 'Helen Ford',
848
+ propertyName: 'Beechwood Grove',
849
+ dashboardUrl: SAMPLE_DASHBOARD,
850
+ },
851
+ }),
852
+ // ─── Guest portal ────────────────────────────────────────────────────
853
+ 'guest-portal-email-code': define({
854
+ name: 'Guest access code',
855
+ category: 'Guest portal',
856
+ Component: guest_portal_email_code_1.default,
857
+ subject: () => 'Your Hububb access code',
858
+ sampleProps: {
859
+ baseUrl: exports.SAMPLE_BASE_URL,
860
+ code: '482913',
861
+ },
862
+ }),
863
+ // ─── Lifecycle ───────────────────────────────────────────────────────
864
+ 'welcome-no-listing': define({
865
+ name: 'Welcome (no listing yet)',
866
+ category: 'Lifecycle',
867
+ Component: welcome_no_listing_1.default,
868
+ subject: () => 'Welcome to Hububb - A Smarter Way to Manage Rentals',
869
+ sampleProps: {
870
+ baseUrl: exports.SAMPLE_BASE_URL,
871
+ firstName: 'Sam',
872
+ dashboardUrl: SAMPLE_DASHBOARD,
873
+ },
874
+ }),
875
+ 'how-it-works': define({
876
+ name: 'How it works nudge',
877
+ category: 'Lifecycle',
878
+ Component: how_it_works_1.default,
879
+ subject: () => 'Managing Your Rental Just Got Easier',
880
+ sampleProps: {
881
+ baseUrl: exports.SAMPLE_BASE_URL,
882
+ firstName: 'Sam',
883
+ dashboardUrl: SAMPLE_DASHBOARD,
884
+ },
885
+ }),
886
+ 'new-landlord-notification': define({
887
+ name: 'New landlord signed up (ops)',
888
+ category: 'Internal ops',
889
+ Component: new_landlord_notification_1.default,
890
+ subject: () => 'New Landlord Signed Up',
891
+ sampleProps: {
892
+ baseUrl: exports.SAMPLE_BASE_URL,
893
+ firstName: 'Sam',
894
+ lastName: 'Hartley',
895
+ email: 'sam@example.com',
896
+ phone: '+44 7700 900123',
897
+ signUpDate: '14 Mar 2026, 3:30 pm',
898
+ },
899
+ }),
900
+ // ─── Sharing ─────────────────────────────────────────────────────────
901
+ 'direct-catalog-share': define({
902
+ name: 'Catalog shared',
903
+ category: 'Sharing',
904
+ Component: direct_catalog_share_1.default,
905
+ subject: (p) => `${p.hostDisplayName} shared their direct booking catalog`,
906
+ sampleProps: {
907
+ baseUrl: exports.SAMPLE_BASE_URL,
908
+ hostDisplayName: 'Sam Hartley',
909
+ catalogUrl: `${exports.SAMPLE_BASE_URL}/book/sam-hartley`,
910
+ listingCount: 3,
911
+ },
912
+ }),
913
+ 'direct-property-share': define({
914
+ name: 'Property shared',
915
+ category: 'Sharing',
916
+ Component: direct_property_share_1.default,
917
+ subject: (p) => `${p.hostDisplayName} shared a property with you`,
918
+ sampleProps: {
919
+ baseUrl: exports.SAMPLE_BASE_URL,
920
+ hostDisplayName: 'Sam Hartley',
921
+ propertyTitle: 'Beechwood Grove',
922
+ propertyUrl: `${exports.SAMPLE_BASE_URL}/book/sam-hartley/beechwood-grove`,
923
+ },
924
+ }),
925
+ // ─── Property ────────────────────────────────────────────────────────
926
+ 'property-submission-confirmation': define({
927
+ name: 'Property submission received',
928
+ category: 'Property',
929
+ Component: property_submission_confirmation_1.default,
930
+ subject: () => "We've Received Your Property Submission",
931
+ sampleProps: {
932
+ baseUrl: exports.SAMPLE_BASE_URL,
933
+ userName: 'Sam Hartley',
934
+ propertyTitle: 'Bright & stylish space, Beechwood Grove',
935
+ dashboardUrl: SAMPLE_DASHBOARD,
936
+ },
937
+ }),
938
+ // ─── Home hold ───────────────────────────────────────────────────────
939
+ 'home-hold-declaration-approved': define({
940
+ name: 'Declaration approved',
941
+ category: 'Home hold',
942
+ Component: home_hold_declaration_approved_1.default,
943
+ subject: (p) => `You're cleared to book your held nights at ${p.propertyName}`,
944
+ sampleProps: {
945
+ baseUrl: exports.SAMPLE_BASE_URL,
946
+ firstName: 'Tom',
947
+ propertyName: 'Beechwood Grove',
948
+ checkIn: '1 Apr 2026',
949
+ lastNight: '28 Apr 2026',
950
+ nights: 28,
951
+ decideBy: '20 Mar 2026',
952
+ holdUrl: `${exports.SAMPLE_BASE_URL}/holds/123`,
953
+ },
954
+ }),
955
+ 'home-hold-declaration-now-required': define({
956
+ name: 'Declaration now required',
957
+ category: 'Home hold',
958
+ Component: home_hold_declaration_now_required_1.default,
959
+ subject: () => 'A short declaration is now needed for your held nights',
960
+ sampleProps: {
961
+ baseUrl: exports.SAMPLE_BASE_URL,
962
+ firstName: 'Tom',
963
+ propertyName: 'Beechwood Grove',
964
+ continuousNights: 30,
965
+ nights: 28,
966
+ checkIn: '1 Apr 2026',
967
+ lastNight: '28 Apr 2026',
968
+ decideBy: '20 Mar 2026',
969
+ holdUrl: `${exports.SAMPLE_BASE_URL}/holds/123`,
970
+ },
971
+ }),
972
+ 'home-hold-declaration-rejected': define({
973
+ name: 'Declaration rejected',
974
+ category: 'Home hold',
975
+ Component: home_hold_declaration_rejected_1.default,
976
+ subject: (p) => `One more document needed for ${p.propertyName}`,
977
+ sampleProps: {
978
+ baseUrl: exports.SAMPLE_BASE_URL,
979
+ firstName: 'Tom',
980
+ propertyName: 'Beechwood Grove',
981
+ reason: 'The uploaded document photo was too blurry to read — please resubmit a clearer copy.',
982
+ checkIn: '1 Apr 2026',
983
+ lastNight: '28 Apr 2026',
984
+ nights: 28,
985
+ decideBy: '20 Mar 2026',
986
+ holdUrl: `${exports.SAMPLE_BASE_URL}/holds/123`,
987
+ },
988
+ }),
989
+ 'home-hold-lapsed': define({
990
+ name: 'Hold lapsed (guest)',
991
+ category: 'Home hold',
992
+ Component: home_hold_lapsed_1.default,
993
+ subject: (p) => `Your HomeHold on ${p.propertyName} has ended`,
994
+ sampleProps: {
995
+ baseUrl: exports.SAMPLE_BASE_URL,
996
+ firstName: 'Tom',
997
+ propertyName: 'Beechwood Grove',
998
+ checkInDate: '1 Apr 2026',
999
+ checkOutDate: '28 Apr 2026',
1000
+ nights: 28,
1001
+ freeHold: false,
1002
+ holdFee: '£45.00',
1003
+ decideByDate: '20 Mar 2026',
1004
+ },
1005
+ }),
1006
+ 'home-hold-lapsed-host': define({
1007
+ name: 'Hold lapsed (host)',
1008
+ category: 'Home hold',
1009
+ Component: home_hold_lapsed_host_1.default,
1010
+ subject: (p) => `${p.nights} night(s) are back on sale at ${p.unitName}`,
1011
+ sampleProps: {
1012
+ baseUrl: exports.SAMPLE_BASE_URL,
1013
+ firstName: 'Sam',
1014
+ unitName: 'Beechwood Grove',
1015
+ nights: 28,
1016
+ freeHold: false,
1017
+ holdFee: '£45.00',
1018
+ },
1019
+ }),
1020
+ 'home-hold-reminder': define({
1021
+ name: 'Hold reminder',
1022
+ category: 'Home hold',
1023
+ Component: home_hold_reminder_1.default,
1024
+ subject: (p) => `${p.daysLeftLabel} to book your held nights at ${p.propertyName}`,
1025
+ sampleProps: {
1026
+ baseUrl: exports.SAMPLE_BASE_URL,
1027
+ firstName: 'Tom',
1028
+ daysLeftLabel: '3 days left',
1029
+ propertyName: 'Beechwood Grove',
1030
+ checkInDate: '1 Apr 2026',
1031
+ checkOutDate: '28 Apr 2026',
1032
+ nights: 28,
1033
+ stayPrice: '£1,240.00',
1034
+ holdFee: '£45.00',
1035
+ balanceDue: '£1,195.00',
1036
+ freeHold: false,
1037
+ requiresDeclaration: true,
1038
+ decideByDate: '20 Mar 2026',
1039
+ holdUrl: `${exports.SAMPLE_BASE_URL}/holds/123`,
1040
+ },
1041
+ }),
1042
+ };
1043
+ exports.emailTemplateIds = Object.keys(exports.emailCatalog);
1044
+ /**
1045
+ * A template's sample props, with every `SAMPLE_BASE_URL` occurrence rebased onto
1046
+ * `baseUrl`. The preview gallery needs this so the logo and placeholder images
1047
+ * resolve against whatever origin the gallery is being served from, not localhost.
1048
+ *
1049
+ * Safe as a string swap because catalog props are JSON-serializable by contract —
1050
+ * the queued send path persists them as JSON too.
1051
+ */
1052
+ function sampleProps(id, baseUrl) {
1053
+ const props = exports.emailCatalog[id].sampleProps;
1054
+ if (!baseUrl || baseUrl === exports.SAMPLE_BASE_URL)
1055
+ return props;
1056
+ return JSON.parse(JSON.stringify(props).split(exports.SAMPLE_BASE_URL).join(baseUrl));
1057
+ }
1058
+ function isEmailTemplateId(value) {
1059
+ return Object.prototype.hasOwnProperty.call(exports.emailCatalog, value);
1060
+ }
1061
+ const CATEGORY_ORDER = [
1062
+ 'Reservations',
1063
+ 'Tasks & quotes',
1064
+ 'Payments',
1065
+ 'Messaging',
1066
+ 'Lifecycle',
1067
+ 'Auth',
1068
+ 'Guest portal',
1069
+ 'Sharing',
1070
+ 'Property',
1071
+ 'Home hold',
1072
+ 'Integrations',
1073
+ 'Internal ops',
1074
+ ];
1075
+ /** Gallery grouping, in a deliberate reading order rather than declaration order. */
1076
+ function emailsByCategory() {
1077
+ return CATEGORY_ORDER.map((category) => ({
1078
+ category,
1079
+ ids: exports.emailTemplateIds.filter((id) => exports.emailCatalog[id].category === category),
1080
+ })).filter((group) => group.ids.length > 0);
1081
+ }
1082
+ //# sourceMappingURL=catalog.js.map