@rovela-ai/sdk 0.1.18 → 0.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/api/auth.js +5 -11
- package/dist/admin/api/auth.js.map +1 -1
- package/dist/admin/api/categories.js +43 -50
- package/dist/admin/api/categories.js.map +1 -1
- package/dist/admin/api/check.js +6 -9
- package/dist/admin/api/check.js.map +1 -1
- package/dist/admin/api/customers.js +17 -21
- package/dist/admin/api/customers.js.map +1 -1
- package/dist/admin/api/index.js +10 -38
- package/dist/admin/api/index.js.map +1 -1
- package/dist/admin/api/orders.js +30 -35
- package/dist/admin/api/orders.js.map +1 -1
- package/dist/admin/api/products.js +56 -66
- package/dist/admin/api/products.js.map +1 -1
- package/dist/admin/api/refund.js +26 -29
- package/dist/admin/api/refund.js.map +1 -1
- package/dist/admin/api/settings.js +17 -21
- package/dist/admin/api/settings.js.map +1 -1
- package/dist/admin/api/setup.js +17 -20
- package/dist/admin/api/setup.js.map +1 -1
- package/dist/admin/api/stats.js +14 -17
- package/dist/admin/api/stats.js.map +1 -1
- package/dist/admin/components/AdminGuard.js +13 -17
- package/dist/admin/components/AdminGuard.js.map +1 -1
- package/dist/admin/components/AdminHeader.js +8 -11
- package/dist/admin/components/AdminHeader.js.map +1 -1
- package/dist/admin/components/AdminLayout.js +5 -8
- package/dist/admin/components/AdminLayout.js.map +1 -1
- package/dist/admin/components/AdminLoginForm.js +11 -14
- package/dist/admin/components/AdminLoginForm.js.map +1 -1
- package/dist/admin/components/AdminNav.d.ts.map +1 -1
- package/dist/admin/components/AdminNav.js +16 -14
- package/dist/admin/components/AdminNav.js.map +1 -1
- package/dist/admin/components/AdminSetupForm.js +11 -14
- package/dist/admin/components/AdminSetupForm.js.map +1 -1
- package/dist/admin/components/CategoryForm.d.ts +30 -0
- package/dist/admin/components/CategoryForm.d.ts.map +1 -0
- package/dist/admin/components/CategoryForm.js +153 -0
- package/dist/admin/components/CategoryForm.js.map +1 -0
- package/dist/admin/components/CategorySelect.d.ts +32 -0
- package/dist/admin/components/CategorySelect.d.ts.map +1 -0
- package/dist/admin/components/CategorySelect.js +148 -0
- package/dist/admin/components/CategorySelect.js.map +1 -0
- package/dist/admin/components/InventoryEditor.js +16 -19
- package/dist/admin/components/InventoryEditor.js.map +1 -1
- package/dist/admin/components/LowStockAlert.js +6 -9
- package/dist/admin/components/LowStockAlert.js.map +1 -1
- package/dist/admin/components/OrderDetails.js +15 -18
- package/dist/admin/components/OrderDetails.js.map +1 -1
- package/dist/admin/components/OrderTable.js +13 -16
- package/dist/admin/components/OrderTable.js.map +1 -1
- package/dist/admin/components/ProductForm.d.ts +2 -2
- package/dist/admin/components/ProductForm.d.ts.map +1 -1
- package/dist/admin/components/ProductForm.js +140 -27
- package/dist/admin/components/ProductForm.js.map +1 -1
- package/dist/admin/components/ProductTable.js +15 -18
- package/dist/admin/components/ProductTable.js.map +1 -1
- package/dist/admin/components/RecentOrders.js +6 -9
- package/dist/admin/components/RecentOrders.js.map +1 -1
- package/dist/admin/components/RefundDialog.js +12 -15
- package/dist/admin/components/RefundDialog.js.map +1 -1
- package/dist/admin/components/SEOPreview.d.ts +32 -0
- package/dist/admin/components/SEOPreview.d.ts.map +1 -0
- package/dist/admin/components/SEOPreview.js +30 -0
- package/dist/admin/components/SEOPreview.js.map +1 -0
- package/dist/admin/components/StatsCards.js +7 -10
- package/dist/admin/components/StatsCards.js.map +1 -1
- package/dist/admin/components/StoreSettings.js +10 -13
- package/dist/admin/components/StoreSettings.js.map +1 -1
- package/dist/admin/components/TagInput.d.ts +29 -0
- package/dist/admin/components/TagInput.d.ts.map +1 -0
- package/dist/admin/components/TagInput.js +73 -0
- package/dist/admin/components/TagInput.js.map +1 -0
- package/dist/admin/components/VariantManager.d.ts +42 -0
- package/dist/admin/components/VariantManager.d.ts.map +1 -0
- package/dist/admin/components/VariantManager.js +175 -0
- package/dist/admin/components/VariantManager.js.map +1 -0
- package/dist/admin/components/index.d.ts +5 -0
- package/dist/admin/components/index.d.ts.map +1 -1
- package/dist/admin/components/index.js +27 -35
- package/dist/admin/components/index.js.map +1 -1
- package/dist/admin/config.js +12 -54
- package/dist/admin/config.js.map +1 -1
- package/dist/admin/hooks/index.d.ts +2 -0
- package/dist/admin/hooks/index.d.ts.map +1 -1
- package/dist/admin/hooks/index.js +5 -11
- package/dist/admin/hooks/index.js.map +1 -1
- package/dist/admin/hooks/useAdminAuth.js +9 -12
- package/dist/admin/hooks/useAdminAuth.js.map +1 -1
- package/dist/admin/hooks/useAdminCategories.d.ts +36 -0
- package/dist/admin/hooks/useAdminCategories.d.ts.map +1 -0
- package/dist/admin/hooks/useAdminCategories.js +217 -0
- package/dist/admin/hooks/useAdminCategories.js.map +1 -0
- package/dist/admin/hooks/useAdminOrders.js +11 -14
- package/dist/admin/hooks/useAdminOrders.js.map +1 -1
- package/dist/admin/hooks/useAdminProducts.js +13 -16
- package/dist/admin/hooks/useAdminProducts.js.map +1 -1
- package/dist/admin/hooks/useAdminStats.js +11 -14
- package/dist/admin/hooks/useAdminStats.js.map +1 -1
- package/dist/admin/index.d.ts +3 -2
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +17 -66
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/server/admin-service.js +39 -83
- package/dist/admin/server/admin-service.js.map +1 -1
- package/dist/admin/server/index.js +3 -13
- package/dist/admin/server/index.js.map +1 -1
- package/dist/admin/types.js +1 -2
- package/dist/admin/types.js.map +1 -1
- package/dist/auth/api/auth.js +6 -14
- package/dist/auth/api/auth.js.map +1 -1
- package/dist/auth/api/forgot-password.js +8 -11
- package/dist/auth/api/forgot-password.js.map +1 -1
- package/dist/auth/api/index.js +6 -18
- package/dist/auth/api/index.js.map +1 -1
- package/dist/auth/api/register.js +17 -20
- package/dist/auth/api/register.js.map +1 -1
- package/dist/auth/api/resend-verification.js +9 -12
- package/dist/auth/api/resend-verification.js.map +1 -1
- package/dist/auth/api/reset-password.js +18 -22
- package/dist/auth/api/reset-password.js.map +1 -1
- package/dist/auth/api/verify-email.js +14 -18
- package/dist/auth/api/verify-email.js.map +1 -1
- package/dist/auth/components/AuthGuard.js +13 -17
- package/dist/auth/components/AuthGuard.js.map +1 -1
- package/dist/auth/components/ForgotPasswordForm.js +11 -14
- package/dist/auth/components/ForgotPasswordForm.js.map +1 -1
- package/dist/auth/components/ResetPasswordForm.js +18 -21
- package/dist/auth/components/ResetPasswordForm.js.map +1 -1
- package/dist/auth/components/SignInForm.js +13 -16
- package/dist/auth/components/SignInForm.js.map +1 -1
- package/dist/auth/components/SignUpForm.js +15 -18
- package/dist/auth/components/SignUpForm.js.map +1 -1
- package/dist/auth/components/UserMenu.js +13 -16
- package/dist/auth/components/UserMenu.js.map +1 -1
- package/dist/auth/components/VerifyEmailNotice.js +10 -13
- package/dist/auth/components/VerifyEmailNotice.js.map +1 -1
- package/dist/auth/components/index.js +7 -18
- package/dist/auth/components/index.js.map +1 -1
- package/dist/auth/config.js +9 -49
- package/dist/auth/config.js.map +1 -1
- package/dist/auth/hooks/index.js +1 -5
- package/dist/auth/hooks/index.js.map +1 -1
- package/dist/auth/hooks/useAuth.js +14 -17
- package/dist/auth/hooks/useAuth.js.map +1 -1
- package/dist/auth/index.js +15 -37
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/server/customer-service.js +39 -83
- package/dist/auth/server/customer-service.js.map +1 -1
- package/dist/auth/server/email-sender.js +11 -17
- package/dist/auth/server/email-sender.js.map +1 -1
- package/dist/auth/server/index.js +5 -36
- package/dist/auth/server/index.js.map +1 -1
- package/dist/auth/server/password-reset-service.js +30 -70
- package/dist/auth/server/password-reset-service.js.map +1 -1
- package/dist/auth/server/password.js +9 -18
- package/dist/auth/server/password.js.map +1 -1
- package/dist/auth/server/verification-service.js +35 -76
- package/dist/auth/server/verification-service.js.map +1 -1
- package/dist/auth/types.js +1 -2
- package/dist/auth/types.js.map +1 -1
- package/dist/cart/CartProvider.js +13 -17
- package/dist/cart/CartProvider.js.map +1 -1
- package/dist/cart/components/AddToCartButton.js +16 -19
- package/dist/cart/components/AddToCartButton.js.map +1 -1
- package/dist/cart/components/CartDrawer.js +17 -23
- package/dist/cart/components/CartDrawer.js.map +1 -1
- package/dist/cart/components/CartIcon.js +9 -12
- package/dist/cart/components/CartIcon.js.map +1 -1
- package/dist/cart/components/CartItem.js +7 -13
- package/dist/cart/components/CartItem.js.map +1 -1
- package/dist/cart/components/CartSummary.js +12 -15
- package/dist/cart/components/CartSummary.js.map +1 -1
- package/dist/cart/components/QuantitySelector.js +9 -12
- package/dist/cart/components/QuantitySelector.js.map +1 -1
- package/dist/cart/components/index.js +6 -15
- package/dist/cart/components/index.js.map +1 -1
- package/dist/cart/index.js +3 -17
- package/dist/cart/index.js.map +1 -1
- package/dist/cart/store.js +8 -13
- package/dist/cart/store.js.map +1 -1
- package/dist/checkout/api/checkout.js +12 -15
- package/dist/checkout/api/checkout.js.map +1 -1
- package/dist/checkout/api/index.js +2 -7
- package/dist/checkout/api/index.js.map +1 -1
- package/dist/checkout/api/webhook.js +8 -11
- package/dist/checkout/api/webhook.js.map +1 -1
- package/dist/checkout/components/CheckoutButton.js +8 -11
- package/dist/checkout/components/CheckoutButton.js.map +1 -1
- package/dist/checkout/components/CheckoutSuccess.js +11 -14
- package/dist/checkout/components/CheckoutSuccess.js.map +1 -1
- package/dist/checkout/components/OrderSummary.js +8 -11
- package/dist/checkout/components/OrderSummary.js.map +1 -1
- package/dist/checkout/components/ShippingForm.js +14 -17
- package/dist/checkout/components/ShippingForm.js.map +1 -1
- package/dist/checkout/components/index.js +4 -11
- package/dist/checkout/components/index.js.map +1 -1
- package/dist/checkout/hooks/index.js +1 -6
- package/dist/checkout/hooks/index.js.map +1 -1
- package/dist/checkout/hooks/useCheckout.js +10 -19
- package/dist/checkout/hooks/useCheckout.js.map +1 -1
- package/dist/checkout/index.js +7 -28
- package/dist/checkout/index.js.map +1 -1
- package/dist/checkout/server/create-checkout-session.js +11 -16
- package/dist/checkout/server/create-checkout-session.js.map +1 -1
- package/dist/checkout/server/handle-webhook.js +21 -24
- package/dist/checkout/server/handle-webhook.js.map +1 -1
- package/dist/checkout/server/index.js +3 -13
- package/dist/checkout/server/index.js.map +1 -1
- package/dist/checkout/server/order-service.js +11 -16
- package/dist/checkout/server/order-service.js.map +1 -1
- package/dist/checkout/stripe/client.js +13 -29
- package/dist/checkout/stripe/client.js.map +1 -1
- package/dist/checkout/stripe/index.js +1 -15
- package/dist/checkout/stripe/index.js.map +1 -1
- package/dist/checkout/types.js +1 -2
- package/dist/checkout/types.js.map +1 -1
- package/dist/core/StoreSettingsProvider.d.ts +104 -0
- package/dist/core/StoreSettingsProvider.d.ts.map +1 -0
- package/dist/core/StoreSettingsProvider.js +195 -0
- package/dist/core/StoreSettingsProvider.js.map +1 -0
- package/dist/core/api/index.d.ts +7 -0
- package/dist/core/api/index.d.ts.map +1 -0
- package/dist/core/api/index.js +7 -0
- package/dist/core/api/index.js.map +1 -0
- package/dist/core/api/settings.d.ts +42 -0
- package/dist/core/api/settings.d.ts.map +1 -0
- package/dist/core/api/settings.js +74 -0
- package/dist/core/api/settings.js.map +1 -0
- package/dist/core/config.js +12 -57
- package/dist/core/config.js.map +1 -1
- package/dist/core/db/client.js +16 -62
- package/dist/core/db/client.js.map +1 -1
- package/dist/core/db/index.js +14 -93
- package/dist/core/db/index.js.map +1 -1
- package/dist/core/db/queries.d.ts +6 -6
- package/dist/core/db/queries.js +207 -284
- package/dist/core/db/queries.js.map +1 -1
- package/dist/core/db/schema.js +179 -182
- package/dist/core/db/schema.js.map +1 -1
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +14 -42
- package/dist/core/index.js.map +1 -1
- package/dist/core/server/index.js +16 -68
- package/dist/core/server/index.js.map +1 -1
- package/dist/core/types.js +1 -2
- package/dist/core/types.js.map +1 -1
- package/dist/core/utils.js +26 -51
- package/dist/core/utils.js.map +1 -1
- package/dist/emails/config.js +13 -21
- package/dist/emails/config.js.map +1 -1
- package/dist/emails/index.js +10 -72
- package/dist/emails/index.js.map +1 -1
- package/dist/emails/send/auth.js +26 -34
- package/dist/emails/send/auth.js.map +1 -1
- package/dist/emails/send/index.js +2 -21
- package/dist/emails/send/index.js.map +1 -1
- package/dist/emails/send/orders.js +38 -50
- package/dist/emails/send/orders.js.map +1 -1
- package/dist/emails/sender.js +7 -12
- package/dist/emails/sender.js.map +1 -1
- package/dist/emails/templates/base.js +37 -53
- package/dist/emails/templates/base.js.map +1 -1
- package/dist/emails/templates/email-verification.js +12 -16
- package/dist/emails/templates/email-verification.js.map +1 -1
- package/dist/emails/templates/index.js +9 -43
- package/dist/emails/templates/index.js.map +1 -1
- package/dist/emails/templates/order-cancelled.js +18 -22
- package/dist/emails/templates/order-cancelled.js.map +1 -1
- package/dist/emails/templates/order-confirmation.js +30 -34
- package/dist/emails/templates/order-confirmation.js.map +1 -1
- package/dist/emails/templates/order-delivered.js +20 -24
- package/dist/emails/templates/order-delivered.js.map +1 -1
- package/dist/emails/templates/order-shipped.js +19 -23
- package/dist/emails/templates/order-shipped.js.map +1 -1
- package/dist/emails/templates/password-reset.js +12 -16
- package/dist/emails/templates/password-reset.js.map +1 -1
- package/dist/emails/templates/refund-processed.js +17 -21
- package/dist/emails/templates/refund-processed.js.map +1 -1
- package/dist/emails/templates/welcome.js +11 -15
- package/dist/emails/templates/welcome.js.map +1 -1
- package/dist/emails/types.js +1 -2
- package/dist/emails/types.js.map +1 -1
- package/dist/emails/utils.js +9 -20
- package/dist/emails/utils.js.map +1 -1
- package/dist/index.js +24 -176
- package/dist/index.js.map +1 -1
- package/dist/products/api/categories.js +7 -10
- package/dist/products/api/categories.js.map +1 -1
- package/dist/products/api/index.js +3 -9
- package/dist/products/api/index.js.map +1 -1
- package/dist/products/api/product.js +10 -13
- package/dist/products/api/product.js.map +1 -1
- package/dist/products/api/products.js +8 -11
- package/dist/products/api/products.js.map +1 -1
- package/dist/products/components/CategoryNav.js +20 -26
- package/dist/products/components/CategoryNav.js.map +1 -1
- package/dist/products/components/ProductBreadcrumb.js +7 -13
- package/dist/products/components/ProductBreadcrumb.js.map +1 -1
- package/dist/products/components/ProductCard.js +6 -12
- package/dist/products/components/ProductCard.js.map +1 -1
- package/dist/products/components/ProductDetails.js +14 -17
- package/dist/products/components/ProductDetails.js.map +1 -1
- package/dist/products/components/ProductFilters.js +15 -18
- package/dist/products/components/ProductFilters.js.map +1 -1
- package/dist/products/components/ProductGallery.js +17 -23
- package/dist/products/components/ProductGallery.js.map +1 -1
- package/dist/products/components/ProductGrid.js +10 -13
- package/dist/products/components/ProductGrid.js.map +1 -1
- package/dist/products/components/ProductSearch.js +14 -17
- package/dist/products/components/ProductSearch.js.map +1 -1
- package/dist/products/components/ProductSort.js +8 -11
- package/dist/products/components/ProductSort.js.map +1 -1
- package/dist/products/components/VariantSelector.js +16 -19
- package/dist/products/components/VariantSelector.js.map +1 -1
- package/dist/products/components/index.js +10 -23
- package/dist/products/components/index.js.map +1 -1
- package/dist/products/hooks/index.js +4 -11
- package/dist/products/hooks/index.js.map +1 -1
- package/dist/products/hooks/useCategories.js +12 -15
- package/dist/products/hooks/useCategories.js.map +1 -1
- package/dist/products/hooks/useProduct.js +9 -12
- package/dist/products/hooks/useProduct.js.map +1 -1
- package/dist/products/hooks/useProductAttributes.js +10 -13
- package/dist/products/hooks/useProductAttributes.js.map +1 -1
- package/dist/products/hooks/useProducts.js +15 -18
- package/dist/products/hooks/useProducts.js.map +1 -1
- package/dist/products/index.js +6 -23
- package/dist/products/index.js.map +1 -1
- package/dist/theme/ThemeProvider.js +12 -14
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/colors.js +3 -8
- package/dist/theme/colors.js.map +1 -1
- package/dist/theme/defaults.js +27 -30
- package/dist/theme/defaults.js.map +1 -1
- package/dist/theme/fonts.js +12 -18
- package/dist/theme/fonts.js.map +1 -1
- package/dist/theme/generator.js +63 -69
- package/dist/theme/generator.js.map +1 -1
- package/dist/theme/hooks.js +11 -16
- package/dist/theme/hooks.js.map +1 -1
- package/dist/theme/index.js +6 -42
- package/dist/theme/index.js.map +1 -1
- package/package.json +35 -30
|
@@ -1,23 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/emails/send/orders
|
|
4
3
|
*
|
|
5
4
|
* Send functions for order-related emails.
|
|
6
5
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
exports.sendOrderShipped = sendOrderShipped;
|
|
11
|
-
exports.sendOrderShippedAsync = sendOrderShippedAsync;
|
|
12
|
-
exports.sendOrderDelivered = sendOrderDelivered;
|
|
13
|
-
exports.sendOrderDeliveredAsync = sendOrderDeliveredAsync;
|
|
14
|
-
exports.sendOrderCancelled = sendOrderCancelled;
|
|
15
|
-
exports.sendOrderCancelledAsync = sendOrderCancelledAsync;
|
|
16
|
-
exports.sendRefundProcessed = sendRefundProcessed;
|
|
17
|
-
exports.sendRefundProcessedAsync = sendRefundProcessedAsync;
|
|
18
|
-
const sender_1 = require("../sender");
|
|
19
|
-
const config_1 = require("../config");
|
|
20
|
-
const templates_1 = require("../templates");
|
|
6
|
+
import { sendEmail } from '../sender';
|
|
7
|
+
import { getEmailConfig, getStoreName } from '../config';
|
|
8
|
+
import { renderOrderConfirmation, getOrderConfirmationSubject, renderOrderShipped, getOrderShippedSubject, renderOrderDelivered, getOrderDeliveredSubject, renderOrderCancelled, getOrderCancelledSubject, renderRefundProcessed, getRefundProcessedSubject, } from '../templates';
|
|
21
9
|
/**
|
|
22
10
|
* Send an order confirmation email.
|
|
23
11
|
*
|
|
@@ -41,12 +29,12 @@ const templates_1 = require("../templates");
|
|
|
41
29
|
* })
|
|
42
30
|
* ```
|
|
43
31
|
*/
|
|
44
|
-
async function sendOrderConfirmation(params) {
|
|
32
|
+
export async function sendOrderConfirmation(params) {
|
|
45
33
|
const [config, storeName] = await Promise.all([
|
|
46
|
-
|
|
47
|
-
|
|
34
|
+
getEmailConfig(),
|
|
35
|
+
getStoreName(),
|
|
48
36
|
]);
|
|
49
|
-
const html =
|
|
37
|
+
const html = renderOrderConfirmation({
|
|
50
38
|
config,
|
|
51
39
|
customerName: params.customerName,
|
|
52
40
|
customerEmail: params.to,
|
|
@@ -61,9 +49,9 @@ async function sendOrderConfirmation(params) {
|
|
|
61
49
|
shippingAddress: params.shippingAddress,
|
|
62
50
|
orderTrackingUrl: params.orderTrackingUrl,
|
|
63
51
|
});
|
|
64
|
-
return
|
|
52
|
+
return sendEmail({
|
|
65
53
|
to: params.to,
|
|
66
|
-
subject:
|
|
54
|
+
subject: getOrderConfirmationSubject(storeName, params.orderNumber),
|
|
67
55
|
html,
|
|
68
56
|
});
|
|
69
57
|
}
|
|
@@ -71,7 +59,7 @@ async function sendOrderConfirmation(params) {
|
|
|
71
59
|
* Send order confirmation without waiting (fire-and-forget).
|
|
72
60
|
* Use this in webhooks to not block the response.
|
|
73
61
|
*/
|
|
74
|
-
function sendOrderConfirmationAsync(params) {
|
|
62
|
+
export function sendOrderConfirmationAsync(params) {
|
|
75
63
|
sendOrderConfirmation(params).catch((err) => {
|
|
76
64
|
console.error('[Email] Failed to send order confirmation:', err);
|
|
77
65
|
});
|
|
@@ -95,12 +83,12 @@ function sendOrderConfirmationAsync(params) {
|
|
|
95
83
|
* })
|
|
96
84
|
* ```
|
|
97
85
|
*/
|
|
98
|
-
async function sendOrderShipped(params) {
|
|
86
|
+
export async function sendOrderShipped(params) {
|
|
99
87
|
const [config, storeName] = await Promise.all([
|
|
100
|
-
|
|
101
|
-
|
|
88
|
+
getEmailConfig(),
|
|
89
|
+
getStoreName(),
|
|
102
90
|
]);
|
|
103
|
-
const html =
|
|
91
|
+
const html = renderOrderShipped({
|
|
104
92
|
config,
|
|
105
93
|
customerName: params.customerName,
|
|
106
94
|
customerEmail: params.to,
|
|
@@ -111,16 +99,16 @@ async function sendOrderShipped(params) {
|
|
|
111
99
|
shippingAddress: params.shippingAddress,
|
|
112
100
|
trackingUrl: params.trackingUrl,
|
|
113
101
|
});
|
|
114
|
-
return
|
|
102
|
+
return sendEmail({
|
|
115
103
|
to: params.to,
|
|
116
|
-
subject:
|
|
104
|
+
subject: getOrderShippedSubject(storeName, params.orderNumber),
|
|
117
105
|
html,
|
|
118
106
|
});
|
|
119
107
|
}
|
|
120
108
|
/**
|
|
121
109
|
* Send order shipped without waiting (fire-and-forget).
|
|
122
110
|
*/
|
|
123
|
-
function sendOrderShippedAsync(params) {
|
|
111
|
+
export function sendOrderShippedAsync(params) {
|
|
124
112
|
sendOrderShipped(params).catch((err) => {
|
|
125
113
|
console.error('[Email] Failed to send order shipped email:', err);
|
|
126
114
|
});
|
|
@@ -143,12 +131,12 @@ function sendOrderShippedAsync(params) {
|
|
|
143
131
|
* })
|
|
144
132
|
* ```
|
|
145
133
|
*/
|
|
146
|
-
async function sendOrderDelivered(params) {
|
|
134
|
+
export async function sendOrderDelivered(params) {
|
|
147
135
|
const [config, storeName] = await Promise.all([
|
|
148
|
-
|
|
149
|
-
|
|
136
|
+
getEmailConfig(),
|
|
137
|
+
getStoreName(),
|
|
150
138
|
]);
|
|
151
|
-
const html =
|
|
139
|
+
const html = renderOrderDelivered({
|
|
152
140
|
config,
|
|
153
141
|
customerName: params.customerName,
|
|
154
142
|
customerEmail: params.to,
|
|
@@ -158,16 +146,16 @@ async function sendOrderDelivered(params) {
|
|
|
158
146
|
reviewUrl: params.reviewUrl,
|
|
159
147
|
returnCenterUrl: params.returnCenterUrl,
|
|
160
148
|
});
|
|
161
|
-
return
|
|
149
|
+
return sendEmail({
|
|
162
150
|
to: params.to,
|
|
163
|
-
subject:
|
|
151
|
+
subject: getOrderDeliveredSubject(storeName, params.orderNumber),
|
|
164
152
|
html,
|
|
165
153
|
});
|
|
166
154
|
}
|
|
167
155
|
/**
|
|
168
156
|
* Send order delivered without waiting (fire-and-forget).
|
|
169
157
|
*/
|
|
170
|
-
function sendOrderDeliveredAsync(params) {
|
|
158
|
+
export function sendOrderDeliveredAsync(params) {
|
|
171
159
|
sendOrderDelivered(params).catch((err) => {
|
|
172
160
|
console.error('[Email] Failed to send order delivered email:', err);
|
|
173
161
|
});
|
|
@@ -189,12 +177,12 @@ function sendOrderDeliveredAsync(params) {
|
|
|
189
177
|
* })
|
|
190
178
|
* ```
|
|
191
179
|
*/
|
|
192
|
-
async function sendOrderCancelled(params) {
|
|
180
|
+
export async function sendOrderCancelled(params) {
|
|
193
181
|
const [config, storeName] = await Promise.all([
|
|
194
|
-
|
|
195
|
-
|
|
182
|
+
getEmailConfig(),
|
|
183
|
+
getStoreName(),
|
|
196
184
|
]);
|
|
197
|
-
const html =
|
|
185
|
+
const html = renderOrderCancelled({
|
|
198
186
|
config,
|
|
199
187
|
customerName: params.customerName,
|
|
200
188
|
customerEmail: params.to,
|
|
@@ -203,16 +191,16 @@ async function sendOrderCancelled(params) {
|
|
|
203
191
|
cancellationDate: params.cancellationDate,
|
|
204
192
|
refundMessage: params.refundMessage,
|
|
205
193
|
});
|
|
206
|
-
return
|
|
194
|
+
return sendEmail({
|
|
207
195
|
to: params.to,
|
|
208
|
-
subject:
|
|
196
|
+
subject: getOrderCancelledSubject(storeName, params.orderNumber),
|
|
209
197
|
html,
|
|
210
198
|
});
|
|
211
199
|
}
|
|
212
200
|
/**
|
|
213
201
|
* Send order cancelled without waiting (fire-and-forget).
|
|
214
202
|
*/
|
|
215
|
-
function sendOrderCancelledAsync(params) {
|
|
203
|
+
export function sendOrderCancelledAsync(params) {
|
|
216
204
|
sendOrderCancelled(params).catch((err) => {
|
|
217
205
|
console.error('[Email] Failed to send order cancelled email:', err);
|
|
218
206
|
});
|
|
@@ -236,12 +224,12 @@ function sendOrderCancelledAsync(params) {
|
|
|
236
224
|
* })
|
|
237
225
|
* ```
|
|
238
226
|
*/
|
|
239
|
-
async function sendRefundProcessed(params) {
|
|
227
|
+
export async function sendRefundProcessed(params) {
|
|
240
228
|
const [config, storeName] = await Promise.all([
|
|
241
|
-
|
|
242
|
-
|
|
229
|
+
getEmailConfig(),
|
|
230
|
+
getStoreName(),
|
|
243
231
|
]);
|
|
244
|
-
const html =
|
|
232
|
+
const html = renderRefundProcessed({
|
|
245
233
|
config,
|
|
246
234
|
customerName: params.customerName,
|
|
247
235
|
customerEmail: params.to,
|
|
@@ -252,16 +240,16 @@ async function sendRefundProcessed(params) {
|
|
|
252
240
|
estimatedArrival: params.estimatedArrival,
|
|
253
241
|
businessDays: params.businessDays,
|
|
254
242
|
});
|
|
255
|
-
return
|
|
243
|
+
return sendEmail({
|
|
256
244
|
to: params.to,
|
|
257
|
-
subject:
|
|
245
|
+
subject: getRefundProcessedSubject(storeName, params.orderNumber),
|
|
258
246
|
html,
|
|
259
247
|
});
|
|
260
248
|
}
|
|
261
249
|
/**
|
|
262
250
|
* Send refund processed without waiting (fire-and-forget).
|
|
263
251
|
*/
|
|
264
|
-
function sendRefundProcessedAsync(params) {
|
|
252
|
+
export function sendRefundProcessedAsync(params) {
|
|
265
253
|
sendRefundProcessed(params).catch((err) => {
|
|
266
254
|
console.error('[Email] Failed to send refund processed email:', err);
|
|
267
255
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orders.js","sourceRoot":"","sources":["../../../src/emails/send/orders.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"orders.js","sourceRoot":"","sources":["../../../src/emails/send/orders.ts"],"names":[],"mappings":"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"}
|
package/dist/emails/sender.js
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/emails/sender
|
|
4
3
|
*
|
|
5
4
|
* Core email sending functionality using Resend.
|
|
6
5
|
*/
|
|
7
|
-
|
|
8
|
-
exports.sendEmail = sendEmail;
|
|
9
|
-
exports.sendEmailAsync = sendEmailAsync;
|
|
10
|
-
exports.sendEmailBatch = sendEmailBatch;
|
|
11
|
-
const config_1 = require("./config");
|
|
6
|
+
import { getResend, getFromEmail, getSupportEmail } from './config';
|
|
12
7
|
// =============================================================================
|
|
13
8
|
// Email Sender
|
|
14
9
|
// =============================================================================
|
|
@@ -35,12 +30,12 @@ const config_1 = require("./config");
|
|
|
35
30
|
* }
|
|
36
31
|
* ```
|
|
37
32
|
*/
|
|
38
|
-
async function sendEmail(options) {
|
|
33
|
+
export async function sendEmail(options) {
|
|
39
34
|
try {
|
|
40
|
-
const resend =
|
|
35
|
+
const resend = getResend();
|
|
41
36
|
const [from, replyTo] = await Promise.all([
|
|
42
|
-
|
|
43
|
-
options.replyTo ? Promise.resolve(options.replyTo) :
|
|
37
|
+
getFromEmail(),
|
|
38
|
+
options.replyTo ? Promise.resolve(options.replyTo) : getSupportEmail(),
|
|
44
39
|
]);
|
|
45
40
|
const { data, error } = await resend.emails.send({
|
|
46
41
|
from,
|
|
@@ -92,7 +87,7 @@ async function sendEmail(options) {
|
|
|
92
87
|
* return Response.json({ received: true })
|
|
93
88
|
* ```
|
|
94
89
|
*/
|
|
95
|
-
function sendEmailAsync(options) {
|
|
90
|
+
export function sendEmailAsync(options) {
|
|
96
91
|
sendEmail(options).catch((err) => {
|
|
97
92
|
console.error('[Email] Async send failed:', err);
|
|
98
93
|
});
|
|
@@ -115,7 +110,7 @@ function sendEmailAsync(options) {
|
|
|
115
110
|
* console.log(`Sent ${successful}/${results.length} emails`)
|
|
116
111
|
* ```
|
|
117
112
|
*/
|
|
118
|
-
async function sendEmailBatch(emails) {
|
|
113
|
+
export async function sendEmailBatch(emails) {
|
|
119
114
|
return Promise.all(emails.map(sendEmail));
|
|
120
115
|
}
|
|
121
116
|
//# sourceMappingURL=sender.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sender.js","sourceRoot":"","sources":["../../src/emails/sender.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sender.js","sourceRoot":"","sources":["../../src/emails/sender.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAGnE,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,OAAyB;IAEzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;QAC1B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACxC,YAAY,EAAE;YACd,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,eAAe,EAAE;SACvE,CAAC,CAAA;QAEF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;YAC/C,IAAI;YACJ,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO;SACR,CAAC,CAAA;QAEF,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAA;YAC7C,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,CAAC,OAAO,IAAI,sBAAsB;aAC/C,CAAA;QACH,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;QACtE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI,EAAE,EAAE;SACpB,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAA;QACpE,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAA;QACjD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,YAAY;SACpB,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,cAAc,CAAC,OAAyB;IACtD,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC/B,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAA0B;IAE1B,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAA;AAC3C,CAAC"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* @rovela/sdk/emails/templates/base
|
|
4
3
|
*
|
|
@@ -8,23 +7,7 @@
|
|
|
8
7
|
* Uses consistent brand defaults for reliable email client rendering.
|
|
9
8
|
* Email clients have limited CSS support, so we use reliable fallback colors.
|
|
10
9
|
*/
|
|
11
|
-
|
|
12
|
-
exports.STYLES = void 0;
|
|
13
|
-
exports.baseLayout = baseLayout;
|
|
14
|
-
exports.primaryButton = primaryButton;
|
|
15
|
-
exports.heading = heading;
|
|
16
|
-
exports.paragraph = paragraph;
|
|
17
|
-
exports.infoBox = infoBox;
|
|
18
|
-
exports.linkFallback = linkFallback;
|
|
19
|
-
exports.detailBox = detailBox;
|
|
20
|
-
exports.statusBadge = statusBadge;
|
|
21
|
-
exports.labeledValue = labeledValue;
|
|
22
|
-
exports.labeledValueRow = labeledValueRow;
|
|
23
|
-
exports.highlightBox = highlightBox;
|
|
24
|
-
exports.secondaryButton = secondaryButton;
|
|
25
|
-
exports.addressSection = addressSection;
|
|
26
|
-
exports.sectionHeading = sectionHeading;
|
|
27
|
-
const utils_1 = require("../utils");
|
|
10
|
+
import { escapeHtml } from '../utils';
|
|
28
11
|
// =============================================================================
|
|
29
12
|
// Theme Loading
|
|
30
13
|
// =============================================================================
|
|
@@ -86,7 +69,6 @@ const STYLES = {
|
|
|
86
69
|
textSecondary: THEME.colors.neutral500,
|
|
87
70
|
textMuted: THEME.colors.neutral800,
|
|
88
71
|
};
|
|
89
|
-
exports.STYLES = STYLES;
|
|
90
72
|
// =============================================================================
|
|
91
73
|
// Layout Components
|
|
92
74
|
// =============================================================================
|
|
@@ -106,7 +88,7 @@ function renderHeader(logoUrl) {
|
|
|
106
88
|
return `
|
|
107
89
|
<tr>
|
|
108
90
|
<td align="center" style="padding: 48px 32px 32px 32px;">
|
|
109
|
-
<img src="${
|
|
91
|
+
<img src="${escapeHtml(logoUrl)}" alt="Store Logo" style="max-width: 180px; height: auto;" />
|
|
110
92
|
</td>
|
|
111
93
|
</tr>
|
|
112
94
|
`;
|
|
@@ -119,15 +101,15 @@ function renderFooter(config) {
|
|
|
119
101
|
<tr>
|
|
120
102
|
<td style="padding: 32px 48px; background-color: ${STYLES.footerBackground}; border-top: 1px solid ${STYLES.cardBorder};">
|
|
121
103
|
<p style="margin: 0 0 8px 0; font-family: ${STYLES.fontFamily}; font-size: 14px; font-weight: 500; line-height: 1.5; color: ${STYLES.textMuted}; text-align: center;">
|
|
122
|
-
${
|
|
104
|
+
${escapeHtml(config.storeName)}
|
|
123
105
|
</p>
|
|
124
106
|
${config.storeAddress
|
|
125
107
|
? `<p style="margin: 0 0 16px 0; font-family: ${STYLES.fontFamily}; font-size: 14px; font-weight: 400; line-height: 1.5; color: ${STYLES.textSecondary}; text-align: center;">
|
|
126
|
-
${
|
|
108
|
+
${escapeHtml(config.storeAddress)}
|
|
127
109
|
</p>`
|
|
128
110
|
: ''}
|
|
129
111
|
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: 14px; font-weight: 400; line-height: 1.5; color: ${STYLES.textSecondary}; text-align: center;">
|
|
130
|
-
Need help? Contact us at <a href="mailto:${
|
|
112
|
+
Need help? Contact us at <a href="mailto:${escapeHtml(config.supportEmail)}" style="color: ${STYLES.primaryColor}; text-decoration: none; font-weight: 500;">${escapeHtml(config.supportEmail)}</a>
|
|
131
113
|
</p>
|
|
132
114
|
</td>
|
|
133
115
|
</tr>
|
|
@@ -146,7 +128,7 @@ function renderFooter(config) {
|
|
|
146
128
|
* })
|
|
147
129
|
* ```
|
|
148
130
|
*/
|
|
149
|
-
function baseLayout({ config, title, content }) {
|
|
131
|
+
export function baseLayout({ config, title, content }) {
|
|
150
132
|
// Build Google Fonts URL with dynamic font name
|
|
151
133
|
const fontNameEncoded = STYLES.fontName.replace(/ /g, '+');
|
|
152
134
|
const googleFontsUrl = `https://fonts.googleapis.com/css2?family=${fontNameEncoded}:wght@400;500;600;700&display=swap`;
|
|
@@ -155,7 +137,7 @@ function baseLayout({ config, title, content }) {
|
|
|
155
137
|
<head>
|
|
156
138
|
<meta charset="UTF-8">
|
|
157
139
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
158
|
-
<title>${
|
|
140
|
+
<title>${escapeHtml(title)}</title>
|
|
159
141
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
160
142
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
161
143
|
<link href="${googleFontsUrl}" rel="stylesheet">
|
|
@@ -185,12 +167,12 @@ function baseLayout({ config, title, content }) {
|
|
|
185
167
|
/**
|
|
186
168
|
* Render a primary CTA button.
|
|
187
169
|
*/
|
|
188
|
-
function primaryButton(text, href) {
|
|
170
|
+
export function primaryButton(text, href) {
|
|
189
171
|
return `
|
|
190
172
|
<table width="100%" cellpadding="0" cellspacing="0" style="margin: 0 0 32px 0;">
|
|
191
173
|
<tr>
|
|
192
174
|
<td align="center">
|
|
193
|
-
<a href="${
|
|
175
|
+
<a href="${escapeHtml(href)}" style="display: inline-block; padding: 12px 32px; background-color: ${STYLES.primaryColor}; color: #FFFFFF; text-decoration: none; border-radius: 12px; font-family: ${STYLES.fontFamily}; font-size: 16px; font-weight: 600;">${escapeHtml(text)}</a>
|
|
194
176
|
</td>
|
|
195
177
|
</tr>
|
|
196
178
|
</table>
|
|
@@ -199,19 +181,19 @@ function primaryButton(text, href) {
|
|
|
199
181
|
/**
|
|
200
182
|
* Render a heading (h1).
|
|
201
183
|
*/
|
|
202
|
-
function heading(text) {
|
|
203
|
-
return `<h1 style="margin: 0 0 24px 0; font-family: ${STYLES.fontFamily}; font-size: 30px; font-weight: 700; color: ${STYLES.textPrimary}; text-align: center; line-height: 1.1;">${
|
|
184
|
+
export function heading(text) {
|
|
185
|
+
return `<h1 style="margin: 0 0 24px 0; font-family: ${STYLES.fontFamily}; font-size: 30px; font-weight: 700; color: ${STYLES.textPrimary}; text-align: center; line-height: 1.1;">${escapeHtml(text)}</h1>`;
|
|
204
186
|
}
|
|
205
187
|
/**
|
|
206
188
|
* Render a paragraph of text.
|
|
207
189
|
*/
|
|
208
|
-
function paragraph(text, marginBottom = '16px') {
|
|
190
|
+
export function paragraph(text, marginBottom = '16px') {
|
|
209
191
|
return `<p style="margin: 0 0 ${marginBottom} 0; font-family: ${STYLES.fontFamily}; font-size: 16px; font-weight: 400; line-height: 1.625; color: ${STYLES.textSecondary};">${text}</p>`;
|
|
210
192
|
}
|
|
211
193
|
/**
|
|
212
194
|
* Render an info box (muted background).
|
|
213
195
|
*/
|
|
214
|
-
function infoBox(content) {
|
|
196
|
+
export function infoBox(content) {
|
|
215
197
|
return `
|
|
216
198
|
<div style="padding: 16px; background-color: ${STYLES.footerBackground}; border-radius: 12px; border: 1px solid ${STYLES.cardBorder};">
|
|
217
199
|
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: 14px; font-weight: 400; line-height: 1.5; color: ${STYLES.textSecondary};">
|
|
@@ -223,26 +205,26 @@ function infoBox(content) {
|
|
|
223
205
|
/**
|
|
224
206
|
* Render a link with fallback text.
|
|
225
207
|
*/
|
|
226
|
-
function linkFallback(href) {
|
|
208
|
+
export function linkFallback(href) {
|
|
227
209
|
return infoBox(`
|
|
228
210
|
If the button doesn't work, copy and paste this link into your browser:<br>
|
|
229
|
-
<a href="${
|
|
211
|
+
<a href="${escapeHtml(href)}" style="color: ${STYLES.primaryColor}; word-break: break-all; text-decoration: none;">${escapeHtml(href)}</a>
|
|
230
212
|
`);
|
|
231
213
|
}
|
|
232
214
|
/**
|
|
233
215
|
* Render a detail box with label-value pairs.
|
|
234
216
|
*/
|
|
235
|
-
function detailBox(title, details) {
|
|
217
|
+
export function detailBox(title, details) {
|
|
236
218
|
const detailsHtml = details
|
|
237
219
|
.map((d) => `
|
|
238
220
|
<p style="margin: 0 0 8px 0; font-family: ${STYLES.fontFamily}; font-size: 14px; font-weight: 400; line-height: 1.5; color: ${STYLES.textSecondary};">
|
|
239
|
-
<strong style="color: ${STYLES.textMuted};">${
|
|
221
|
+
<strong style="color: ${STYLES.textMuted};">${escapeHtml(d.label)}:</strong> ${escapeHtml(d.value)}
|
|
240
222
|
</p>
|
|
241
223
|
`)
|
|
242
224
|
.join('');
|
|
243
225
|
return `
|
|
244
226
|
<div style="padding: 20px; background-color: ${STYLES.footerBackground}; border-radius: 12px; border: 1px solid ${STYLES.cardBorder};">
|
|
245
|
-
<h3 style="margin: 0 0 12px 0; font-family: ${STYLES.fontFamily}; font-size: 18px; font-weight: 600; color: ${STYLES.textPrimary};">${
|
|
227
|
+
<h3 style="margin: 0 0 12px 0; font-family: ${STYLES.fontFamily}; font-size: 18px; font-weight: 600; color: ${STYLES.textPrimary};">${escapeHtml(title)}</h3>
|
|
246
228
|
${detailsHtml}
|
|
247
229
|
</div>
|
|
248
230
|
`;
|
|
@@ -253,14 +235,14 @@ function detailBox(title, details) {
|
|
|
253
235
|
/**
|
|
254
236
|
* Render a success status badge.
|
|
255
237
|
*/
|
|
256
|
-
function statusBadge(text, emoji) {
|
|
238
|
+
export function statusBadge(text, emoji) {
|
|
257
239
|
const displayText = emoji ? `${emoji} ${text}` : `✓ ${text}`;
|
|
258
240
|
return `
|
|
259
241
|
<table width="100%" cellpadding="0" cellspacing="0">
|
|
260
242
|
<tr>
|
|
261
243
|
<td align="center" style="padding: 0 48px 24px 48px;">
|
|
262
244
|
<div style="display: inline-block; padding: 8px 16px; background-color: ${hexToRgba(STYLES.primaryColor, 0.1)}; border-radius: 9999px; border: 1px solid ${hexToRgba(STYLES.primaryColor, 0.3)};">
|
|
263
|
-
<span style="font-family: ${STYLES.fontFamily}; font-size: 14px; font-weight: 600; color: ${STYLES.primaryColor};">${
|
|
245
|
+
<span style="font-family: ${STYLES.fontFamily}; font-size: 14px; font-weight: 600; color: ${STYLES.primaryColor};">${escapeHtml(displayText)}</span>
|
|
264
246
|
</div>
|
|
265
247
|
</td>
|
|
266
248
|
</tr>
|
|
@@ -273,15 +255,15 @@ function statusBadge(text, emoji) {
|
|
|
273
255
|
/**
|
|
274
256
|
* Render a labeled value row.
|
|
275
257
|
*/
|
|
276
|
-
function labeledValue(label, value, options = {}) {
|
|
258
|
+
export function labeledValue(label, value, options = {}) {
|
|
277
259
|
const { valueColor = STYLES.textPrimary, valueSize = '18px', borderTop = false, borderBottom = false, } = options;
|
|
278
260
|
const borderTopStyle = borderTop ? `padding-top: 16px; border-top: 1px solid ${STYLES.cardBorder};` : '';
|
|
279
261
|
const borderBottomStyle = borderBottom ? 'padding-bottom: 16px;' : '';
|
|
280
262
|
return `
|
|
281
263
|
<tr>
|
|
282
264
|
<td style="${borderTopStyle} ${borderBottomStyle}">
|
|
283
|
-
<p style="margin: 0 0 4px 0; font-family: ${STYLES.fontFamily}; font-size: 12px; font-weight: 400; color: ${STYLES.textSecondary}; text-transform: uppercase; letter-spacing: 0.05em;">${
|
|
284
|
-
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: ${valueSize}; font-weight: 600; color: ${valueColor};">${
|
|
265
|
+
<p style="margin: 0 0 4px 0; font-family: ${STYLES.fontFamily}; font-size: 12px; font-weight: 400; color: ${STYLES.textSecondary}; text-transform: uppercase; letter-spacing: 0.05em;">${escapeHtml(label)}</p>
|
|
266
|
+
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: ${valueSize}; font-weight: 600; color: ${valueColor};">${escapeHtml(value)}</p>
|
|
285
267
|
</td>
|
|
286
268
|
</tr>
|
|
287
269
|
`;
|
|
@@ -289,17 +271,17 @@ function labeledValue(label, value, options = {}) {
|
|
|
289
271
|
/**
|
|
290
272
|
* Render a two-column labeled value row.
|
|
291
273
|
*/
|
|
292
|
-
function labeledValueRow(left, right, borderBottom) {
|
|
274
|
+
export function labeledValueRow(left, right, borderBottom) {
|
|
293
275
|
const borderStyle = borderBottom ? 'padding-bottom: 16px;' : '';
|
|
294
276
|
return `
|
|
295
277
|
<tr>
|
|
296
278
|
<td style="${borderStyle}">
|
|
297
|
-
<p style="margin: 0 0 4px 0; font-family: ${STYLES.fontFamily}; font-size: 12px; font-weight: 400; color: ${STYLES.textSecondary}; text-transform: uppercase; letter-spacing: 0.05em;">${
|
|
298
|
-
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: 18px; font-weight: 600; color: ${STYLES.textPrimary};">${
|
|
279
|
+
<p style="margin: 0 0 4px 0; font-family: ${STYLES.fontFamily}; font-size: 12px; font-weight: 400; color: ${STYLES.textSecondary}; text-transform: uppercase; letter-spacing: 0.05em;">${escapeHtml(left.label)}</p>
|
|
280
|
+
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: 18px; font-weight: 600; color: ${STYLES.textPrimary};">${escapeHtml(left.value)}</p>
|
|
299
281
|
</td>
|
|
300
282
|
<td align="right" style="${borderStyle}">
|
|
301
|
-
<p style="margin: 0 0 4px 0; font-family: ${STYLES.fontFamily}; font-size: 12px; font-weight: 400; color: ${STYLES.textSecondary}; text-transform: uppercase; letter-spacing: 0.05em;">${
|
|
302
|
-
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: 18px; font-weight: 600; color: ${STYLES.textPrimary};">${
|
|
283
|
+
<p style="margin: 0 0 4px 0; font-family: ${STYLES.fontFamily}; font-size: 12px; font-weight: 400; color: ${STYLES.textSecondary}; text-transform: uppercase; letter-spacing: 0.05em;">${escapeHtml(right.label)}</p>
|
|
284
|
+
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: 18px; font-weight: 600; color: ${STYLES.textPrimary};">${escapeHtml(right.value)}</p>
|
|
303
285
|
</td>
|
|
304
286
|
</tr>
|
|
305
287
|
`;
|
|
@@ -307,7 +289,7 @@ function labeledValueRow(left, right, borderBottom) {
|
|
|
307
289
|
/**
|
|
308
290
|
* Render a highlighted box (green tinted).
|
|
309
291
|
*/
|
|
310
|
-
function highlightBox(content) {
|
|
292
|
+
export function highlightBox(content) {
|
|
311
293
|
return `
|
|
312
294
|
<div style="padding: 20px; background-color: ${hexToRgba(STYLES.primaryColor, 0.05)}; border-radius: 12px; border: 1px solid ${hexToRgba(STYLES.primaryColor, 0.2)}; margin-bottom: 32px;">
|
|
313
295
|
${content}
|
|
@@ -317,12 +299,12 @@ function highlightBox(content) {
|
|
|
317
299
|
/**
|
|
318
300
|
* Render a secondary/outline button.
|
|
319
301
|
*/
|
|
320
|
-
function secondaryButton(text, href) {
|
|
302
|
+
export function secondaryButton(text, href) {
|
|
321
303
|
return `
|
|
322
304
|
<table width="100%" cellpadding="0" cellspacing="0">
|
|
323
305
|
<tr>
|
|
324
306
|
<td align="center">
|
|
325
|
-
<a href="${
|
|
307
|
+
<a href="${escapeHtml(href)}" style="display: inline-block; padding: 12px 32px; background-color: transparent; color: ${STYLES.primaryColor}; text-decoration: none; border-radius: 12px; border: 1px solid ${hexToRgba(STYLES.primaryColor, 0.3)}; font-family: ${STYLES.fontFamily}; font-size: 16px; font-weight: 600;">${escapeHtml(text)}</a>
|
|
326
308
|
</td>
|
|
327
309
|
</tr>
|
|
328
310
|
</table>
|
|
@@ -331,10 +313,10 @@ function secondaryButton(text, href) {
|
|
|
331
313
|
/**
|
|
332
314
|
* Render address section.
|
|
333
315
|
*/
|
|
334
|
-
function addressSection(title, addressHtml) {
|
|
316
|
+
export function addressSection(title, addressHtml) {
|
|
335
317
|
return `
|
|
336
318
|
<div style="margin-bottom: 32px;">
|
|
337
|
-
<h3 style="margin: 0 0 12px 0; font-family: ${STYLES.fontFamily}; font-size: 18px; font-weight: 600; color: ${STYLES.textPrimary};">${
|
|
319
|
+
<h3 style="margin: 0 0 12px 0; font-family: ${STYLES.fontFamily}; font-size: 18px; font-weight: 600; color: ${STYLES.textPrimary};">${escapeHtml(title)}</h3>
|
|
338
320
|
<p style="margin: 0; font-family: ${STYLES.fontFamily}; font-size: 14px; font-weight: 400; line-height: 1.5; color: ${STYLES.textSecondary};">
|
|
339
321
|
${addressHtml}
|
|
340
322
|
</p>
|
|
@@ -344,7 +326,9 @@ function addressSection(title, addressHtml) {
|
|
|
344
326
|
/**
|
|
345
327
|
* Render a section heading.
|
|
346
328
|
*/
|
|
347
|
-
function sectionHeading(text) {
|
|
348
|
-
return `<h3 style="margin: 0 0 16px 0; font-family: ${STYLES.fontFamily}; font-size: 18px; font-weight: 600; color: ${STYLES.textPrimary};">${
|
|
329
|
+
export function sectionHeading(text) {
|
|
330
|
+
return `<h3 style="margin: 0 0 16px 0; font-family: ${STYLES.fontFamily}; font-size: 18px; font-weight: 600; color: ${STYLES.textPrimary};">${escapeHtml(text)}</h3>`;
|
|
349
331
|
}
|
|
332
|
+
// Export styles for use in specialized templates
|
|
333
|
+
export { STYLES };
|
|
350
334
|
//# sourceMappingURL=base.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/emails/templates/base.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/emails/templates/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAErC,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,cAAc,GAAG;IACrB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;CACb,CAAA;AAEV;;GAEG;AACH,MAAM,kBAAkB,GAAG;IACzB,UAAU,EAAE,4CAA4C;IACxD,QAAQ,EAAE,mBAAmB;CACrB,CAAA;AAEV;;;GAGG;AACH,MAAM,KAAK,GAAG;IACZ,MAAM,EAAE,cAAc;IACtB,UAAU,EAAE,kBAAkB,CAAC,UAAU;IACzC,QAAQ,EAAE,kBAAkB,CAAC,QAAQ;CAC7B,CAAA;AAEV,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF;;;GAGG;AACH,SAAS,SAAS,CAAC,GAAW,EAAE,OAAe;IAC7C,MAAM,MAAM,GAAG,2CAA2C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACpE,IAAI,CAAC,MAAM;QAAE,OAAO,iBAAiB,OAAO,GAAG,CAAA;IAE/C,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACjC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACjC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEjC,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,GAAG,CAAA;AAC7C,CAAC;AAED,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,MAAM,MAAM,GAAG;IACb,UAAU,EAAE,KAAK,CAAC,UAAU;IAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,eAAe,EAAE,SAAS;IAC1B,cAAc,EAAE,SAAS;IACzB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;IACnC,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS;IACxC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;IAClC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;IACpC,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;IACtC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;CAC1B,CAAA;AAEV,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;;GAGG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,mDAAmD;QACnD,OAAO;;;;GAIR,CAAA;IACD,CAAC;IAED,OAAO;;;oBAGW,UAAU,CAAC,OAAO,CAAC;;;GAGpC,CAAA;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,MAAmB;IACvC,OAAO;;yDAEgD,MAAM,CAAC,gBAAgB,2BAA2B,MAAM,CAAC,UAAU;oDACxE,MAAM,CAAC,UAAU,iEAAiE,MAAM,CAAC,SAAS;YAC1I,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;;UAG9B,MAAM,CAAC,YAAY;QACjB,CAAC,CAAC,8CAA8C,MAAM,CAAC,UAAU,iEAAiE,MAAM,CAAC,aAAa;cACpJ,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC;eAC9B;QACH,CAAC,CAAC,EACN;4CACoC,MAAM,CAAC,UAAU,iEAAiE,MAAM,CAAC,aAAa;qDAC7F,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,mBAAmB,MAAM,CAAC,YAAY,+CAA+C,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC;;;;GAIrM,CAAA;AACH,CAAC;AAYD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAqB;IACtE,gDAAgD;IAChD,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC1D,MAAM,cAAc,GAAG,4CAA4C,eAAe,oCAAoC,CAAA;IAEtH,OAAO;;;;;WAKE,UAAU,CAAC,KAAK,CAAC;;;gBAGZ,cAAc;;mDAEqB,MAAM,CAAC,UAAU,uBAAuB,MAAM,CAAC,eAAe;iFAChC,MAAM,CAAC,eAAe;;;sFAGjB,MAAM,CAAC,cAAc,8DAA8D,MAAM,CAAC,UAAU;YAC9K,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;;;gBAGxB,OAAO;;;YAGX,YAAY,CAAC,MAAM,CAAC;;;;;;QAMxB,CAAA;AACR,CAAC;AAED,gFAAgF;AAChF,oBAAoB;AACpB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAY;IACtD,OAAO;;;;qBAIY,UAAU,CAAC,IAAI,CAAC,yEAAyE,MAAM,CAAC,YAAY,8EAA8E,MAAM,CAAC,UAAU,yCAAyC,UAAU,CAAC,IAAI,CAAC;;;;GAItR,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,+CAA+C,MAAM,CAAC,UAAU,+CAA+C,MAAM,CAAC,WAAW,4CAA4C,UAAU,CAAC,IAAI,CAAC,OAAO,CAAA;AAC7M,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,eAAuB,MAAM;IACnE,OAAO,yBAAyB,YAAY,oBAAoB,MAAM,CAAC,UAAU,mEAAmE,MAAM,CAAC,aAAa,MAAM,IAAI,MAAM,CAAA;AAC1L,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO;mDAC0C,MAAM,CAAC,gBAAgB,4CAA4C,MAAM,CAAC,UAAU;0CAC7F,MAAM,CAAC,UAAU,iEAAiE,MAAM,CAAC,aAAa;UACtI,OAAO;;;GAGd,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,OAAO,CAAC;;eAEF,UAAU,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,YAAY,oDAAoD,UAAU,CAAC,IAAI,CAAC;GACtI,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,KAAa,EACb,OAAgD;IAEhD,MAAM,WAAW,GAAG,OAAO;SACxB,GAAG,CACF,CAAC,CAAC,EAAE,EAAE,CAAC;kDACqC,MAAM,CAAC,UAAU,iEAAiE,MAAM,CAAC,aAAa;gCACxH,MAAM,CAAC,SAAS,MAAM,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;;KAErG,CACA;SACA,IAAI,CAAC,EAAE,CAAC,CAAA;IAEX,OAAO;mDAC0C,MAAM,CAAC,gBAAgB,4CAA4C,MAAM,CAAC,UAAU;oDACnF,MAAM,CAAC,UAAU,+CAA+C,MAAM,CAAC,WAAW,MAAM,UAAU,CAAC,KAAK,CAAC;QACrJ,WAAW;;GAEhB,CAAA;AACH,CAAC;AAED,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,KAAc;IACtD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAA;IAC5D,OAAO;;;;oFAI2E,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,8CAA8C,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC;wCAChK,MAAM,CAAC,UAAU,+CAA+C,MAAM,CAAC,YAAY,MAAM,UAAU,CAAC,WAAW,CAAC;;;;;GAKrJ,CAAA;AACH,CAAC;AAED,gFAAgF;AAChF,0BAA0B;AAC1B,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,KAAa,EACb,UAKI,EAAE;IAEN,MAAM,EACJ,UAAU,GAAG,MAAM,CAAC,WAAW,EAC/B,SAAS,GAAG,MAAM,EAClB,SAAS,GAAG,KAAK,EACjB,YAAY,GAAG,KAAK,GACrB,GAAG,OAAO,CAAA;IAEX,MAAM,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,4CAA4C,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IACxG,MAAM,iBAAiB,GAAG,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAA;IAErE,OAAO;;mBAEU,cAAc,IAAI,iBAAiB;oDACF,MAAM,CAAC,UAAU,+CAA+C,MAAM,CAAC,aAAa,yDAAyD,UAAU,CAAC,KAAK,CAAC;4CACtK,MAAM,CAAC,UAAU,gBAAgB,SAAS,8BAA8B,UAAU,MAAM,UAAU,CAAC,KAAK,CAAC;;;GAGlJ,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAsC,EACtC,KAAuC,EACvC,YAAsB;IAEtB,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAA;IAE/D,OAAO;;mBAEU,WAAW;oDACsB,MAAM,CAAC,UAAU,+CAA+C,MAAM,CAAC,aAAa,yDAAyD,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;4CAC3K,MAAM,CAAC,UAAU,+CAA+C,MAAM,CAAC,WAAW,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;iCAEzH,WAAW;oDACQ,MAAM,CAAC,UAAU,+CAA+C,MAAM,CAAC,aAAa,yDAAyD,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;4CAC5K,MAAM,CAAC,UAAU,+CAA+C,MAAM,CAAC,WAAW,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;;;GAGxJ,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO;mDAC0C,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,4CAA4C,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC;QAC9J,OAAO;;GAEZ,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,IAAY;IACxD,OAAO;;;;qBAIY,UAAU,CAAC,IAAI,CAAC,6FAA6F,MAAM,CAAC,YAAY,mEAAmE,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,kBAAkB,MAAM,CAAC,UAAU,yCAAyC,UAAU,CAAC,IAAI,CAAC;;;;GAIpV,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,WAAmB;IAC/D,OAAO;;oDAE2C,MAAM,CAAC,UAAU,+CAA+C,MAAM,CAAC,WAAW,MAAM,UAAU,CAAC,KAAK,CAAC;0CACnH,MAAM,CAAC,UAAU,iEAAiE,MAAM,CAAC,aAAa;UACtI,WAAW;;;GAGlB,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,OAAO,+CAA+C,MAAM,CAAC,UAAU,+CAA+C,MAAM,CAAC,WAAW,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAA;AACvK,CAAC;AAED,iDAAiD;AACjD,OAAO,EAAE,MAAM,EAAE,CAAA"}
|