@rovela-ai/sdk 0.18.3 → 0.18.5

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 (53) hide show
  1. package/dist/admin/components/AdminLayout.d.ts.map +1 -1
  2. package/dist/admin/components/AdminLayout.js +2 -1
  3. package/dist/admin/components/AdminLayout.js.map +1 -1
  4. package/dist/admin/components/AdminSaveBar.d.ts.map +1 -1
  5. package/dist/admin/components/AdminSaveBar.js +8 -0
  6. package/dist/admin/components/AdminSaveBar.js.map +1 -1
  7. package/dist/admin/components/AdminToaster.d.ts +20 -0
  8. package/dist/admin/components/AdminToaster.d.ts.map +1 -0
  9. package/dist/admin/components/AdminToaster.js +137 -0
  10. package/dist/admin/components/AdminToaster.js.map +1 -0
  11. package/dist/admin/components/BrandingAssetUpload.d.ts.map +1 -1
  12. package/dist/admin/components/BrandingAssetUpload.js +5 -8
  13. package/dist/admin/components/BrandingAssetUpload.js.map +1 -1
  14. package/dist/admin/components/EmailsManager.d.ts.map +1 -1
  15. package/dist/admin/components/EmailsManager.js +7 -11
  16. package/dist/admin/components/EmailsManager.js.map +1 -1
  17. package/dist/admin/components/LowStockAlert.d.ts.map +1 -1
  18. package/dist/admin/components/LowStockAlert.js +8 -4
  19. package/dist/admin/components/LowStockAlert.js.map +1 -1
  20. package/dist/admin/components/RecentOrders.d.ts.map +1 -1
  21. package/dist/admin/components/RecentOrders.js +5 -2
  22. package/dist/admin/components/RecentOrders.js.map +1 -1
  23. package/dist/admin/components/ShippingSettings.d.ts.map +1 -1
  24. package/dist/admin/components/ShippingSettings.js +8 -10
  25. package/dist/admin/components/ShippingSettings.js.map +1 -1
  26. package/dist/admin/components/StoreSettings.d.ts.map +1 -1
  27. package/dist/admin/components/StoreSettings.js +8 -8
  28. package/dist/admin/components/StoreSettings.js.map +1 -1
  29. package/dist/admin/components/TaxSettings.d.ts.map +1 -1
  30. package/dist/admin/components/TaxSettings.js +8 -7
  31. package/dist/admin/components/TaxSettings.js.map +1 -1
  32. package/dist/admin/components/UsersTable.d.ts.map +1 -1
  33. package/dist/admin/components/UsersTable.js +8 -6
  34. package/dist/admin/components/UsersTable.js.map +1 -1
  35. package/dist/admin/components/emails/EmailThemePanel.d.ts +1 -2
  36. package/dist/admin/components/emails/EmailThemePanel.d.ts.map +1 -1
  37. package/dist/admin/components/emails/EmailThemePanel.js +3 -3
  38. package/dist/admin/components/emails/EmailThemePanel.js.map +1 -1
  39. package/dist/admin/components/index.d.ts +2 -0
  40. package/dist/admin/components/index.d.ts.map +1 -1
  41. package/dist/admin/components/index.js +1 -0
  42. package/dist/admin/components/index.js.map +1 -1
  43. package/dist/admin/hooks/useAdminStats.d.ts.map +1 -1
  44. package/dist/admin/hooks/useAdminStats.js +10 -0
  45. package/dist/admin/hooks/useAdminStats.js.map +1 -1
  46. package/dist/admin/index.d.ts +2 -2
  47. package/dist/admin/index.d.ts.map +1 -1
  48. package/dist/admin/index.js +2 -0
  49. package/dist/admin/index.js.map +1 -1
  50. package/dist/admin/styles/admin-theme.css +118 -0
  51. package/dist/admin/types.d.ts +6 -0
  52. package/dist/admin/types.d.ts.map +1 -1
  53. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AdminLayout.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminLayout.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAQtC,OAAO,2BAA2B,CAAA;AAMlC,UAAU,wBAAyB,SAAQ,gBAAgB;IACzD,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,SAAmB,EACnB,QAAc,EACd,QAAQ,EACR,IAAI,EACJ,SAAc,GACf,EAAE,wBAAwB,2CA2B1B"}
1
+ {"version":3,"file":"AdminLayout.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminLayout.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,YAAY,CAAA;AAGnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAChD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAQtC,OAAO,2BAA2B,CAAA;AAMlC,UAAU,wBAAyB,SAAQ,gBAAgB;IACzD,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB,+BAA+B;IAC/B,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,SAAmB,EACnB,QAAc,EACd,QAAQ,EACR,IAAI,EACJ,SAAc,GACf,EAAE,wBAAwB,2CA+B1B"}
@@ -9,6 +9,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
9
  */
10
10
  import { AdminNav } from './AdminNav';
11
11
  import { AdminTopBar } from './AdminTopBar';
12
+ import { AdminToaster } from './AdminToaster';
12
13
  // `ExampleContentBanner` (R107) was retired in favor of the SetupGuide,
13
14
  // which subsumes the "review your example content" nudge into its
14
15
  // "Add or edit your first product" task. The banner component is still
@@ -35,6 +36,6 @@ import '../styles/admin-theme.css';
35
36
  * ```
36
37
  */
37
38
  export function AdminLayout({ children, activeNav, storeName = 'Admin', storeUrl = '/', navItems, logo, className = '', }) {
38
- return (_jsx("div", { className: `rovela-admin-theme ${className}`, children: _jsxs("div", { className: "admin-shell", children: [_jsx(AdminTopBar, { storeName: storeName, logo: logo, storeUrl: storeUrl }), _jsxs("div", { className: "admin-shell-body", children: [_jsx(AdminNav, { activeNav: activeNav, items: navItems }), _jsx("div", { className: "admin-layout-main", children: _jsx("main", { className: "admin-layout-content", children: children }) })] })] }) }));
39
+ return (_jsxs("div", { className: `rovela-admin-theme ${className}`, children: [_jsxs("div", { className: "admin-shell", children: [_jsx(AdminTopBar, { storeName: storeName, logo: logo, storeUrl: storeUrl }), _jsxs("div", { className: "admin-shell-body", children: [_jsx(AdminNav, { activeNav: activeNav, items: navItems }), _jsx("div", { className: "admin-layout-main", children: _jsx("main", { className: "admin-layout-content", children: children }) })] })] }), _jsx(AdminToaster, {})] }));
39
40
  }
40
41
  //# sourceMappingURL=AdminLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdminLayout.js","sourceRoot":"","sources":["../../../src/admin/components/AdminLayout.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAI3C,wEAAwE;AACxE,kEAAkE;AAClE,uEAAuE;AACvE,2DAA2D;AAE3D,gCAAgC;AAChC,OAAO,2BAA2B,CAAA;AAiBlC,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,SAAS,GAAG,OAAO,EACnB,QAAQ,GAAG,GAAG,EACd,QAAQ,EACR,IAAI,EACJ,SAAS,GAAG,EAAE,GACW;IACzB,OAAO,CACL,cAAK,SAAS,EAAE,sBAAsB,SAAS,EAAE,YAI/C,eAAK,SAAS,EAAC,aAAa,aAC1B,KAAC,WAAW,IAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAErE,eAAK,SAAS,EAAC,kBAAkB,aAE/B,KAAC,QAAQ,IAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,GAAI,EAGnD,cAAK,SAAS,EAAC,mBAAmB,YAChC,eAAM,SAAS,EAAC,sBAAsB,YAKnC,QAAQ,GACJ,GACH,IACF,IACF,GACF,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"AdminLayout.js","sourceRoot":"","sources":["../../../src/admin/components/AdminLayout.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAgB,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAI7C,wEAAwE;AACxE,kEAAkE;AAClE,uEAAuE;AACvE,2DAA2D;AAE3D,gCAAgC;AAChC,OAAO,2BAA2B,CAAA;AAiBlC,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,SAAS,GAAG,OAAO,EACnB,QAAQ,GAAG,GAAG,EACd,QAAQ,EACR,IAAI,EACJ,SAAS,GAAG,EAAE,GACW;IACzB,OAAO,CACL,eAAK,SAAS,EAAE,sBAAsB,SAAS,EAAE,aAI/C,eAAK,SAAS,EAAC,aAAa,aAC1B,KAAC,WAAW,IAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAErE,eAAK,SAAS,EAAC,kBAAkB,aAE/B,KAAC,QAAQ,IAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,GAAI,EAGnD,cAAK,SAAS,EAAC,mBAAmB,YAChC,eAAM,SAAS,EAAC,sBAAsB,YAKnC,QAAQ,GACJ,GACH,IACF,IACF,EAIN,KAAC,YAAY,KAAG,IACZ,CACP,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AdminSaveBar.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminSaveBar.tsx"],"names":[],"mappings":"AAyCA,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,OAAO,EAAE,OAAO,CAAA;IAChB,gEAAgE;IAChE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,MAAM,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3D,sEAAsE;IACtE,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAUD,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,YAAoB,EACpB,aAAa,EACb,SAAkB,EAClB,MAAM,EACN,SAAS,EACT,SAAc,GACf,EAAE,iBAAiB,kDA6JnB"}
1
+ {"version":3,"file":"AdminSaveBar.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminSaveBar.tsx"],"names":[],"mappings":"AAyCA,MAAM,WAAW,iBAAiB;IAChC,oEAAoE;IACpE,OAAO,EAAE,OAAO,CAAA;IAChB,gEAAgE;IAChE,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,MAAM,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC3D,sEAAsE;IACtE,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAUD,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,YAAoB,EACpB,aAAa,EACb,SAAkB,EAClB,MAAM,EACN,SAAS,EACT,SAAc,GACf,EAAE,iBAAiB,kDAqKnB"}
@@ -77,6 +77,14 @@ export function AdminSaveBar({ isDirty, forceVisible = false, changedFields, sav
77
77
  if (shakeTimer.current)
78
78
  window.clearTimeout(shakeTimer.current);
79
79
  }, []);
80
+ // Signal the bar's presence to the rest of the chrome — the AdminToaster
81
+ // reads `body[data-admin-savebar]` to raise its stack above the bar.
82
+ useEffect(() => {
83
+ if (!visible)
84
+ return;
85
+ document.body.setAttribute('data-admin-savebar', '');
86
+ return () => document.body.removeAttribute('data-admin-savebar');
87
+ }, [visible]);
80
88
  // Guard: browser-native leave warning while dirty
81
89
  useEffect(() => {
82
90
  if (!isDirty)
@@ -1 +1 @@
1
- {"version":3,"file":"AdminSaveBar.js","sourceRoot":"","sources":["../../../src/admin/components/AdminSaveBar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AdminSaveBar.js","sourceRoot":"","sources":["../../../src/admin/components/AdminSaveBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ export interface AdminToastAction {
2
+ label: string;
3
+ onClick: () => void;
4
+ }
5
+ /**
6
+ * Fire an admin notification (an EVENT — see the grammar above).
7
+ *
8
+ * @example
9
+ * adminToast.success('Discount deleted')
10
+ * adminToast.success('Test email sent to you', { action: { label: 'View', onClick } })
11
+ * adminToast.error("Couldn't send the invite. Check the email address and try again.")
12
+ */
13
+ export declare const adminToast: {
14
+ success(message: string, opts?: {
15
+ action?: AdminToastAction;
16
+ }): void;
17
+ error(message: string): void;
18
+ };
19
+ export declare function AdminToaster(): import("react/jsx-runtime").JSX.Element | null;
20
+ //# sourceMappingURL=AdminToaster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminToaster.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminToaster.tsx"],"names":[],"mappings":"AAuCA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAsBD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU;qBACJ,MAAM,SAAS;QAAE,MAAM,CAAC,EAAE,gBAAgB,CAAA;KAAE;mBAG9C,MAAM;CAGtB,CAAA;AAUD,wBAAgB,YAAY,mDAuH3B"}
@@ -0,0 +1,137 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * @rovela-ai/sdk/admin/components/AdminToaster + adminToast
5
+ *
6
+ * THE notification system for the admin (LEDGER grammar — events vs states):
7
+ *
8
+ * · An EVENT (something just happened: deleted, sent, marked paid, failed
9
+ * to send) is ALWAYS a toast fired through the `adminToast` singleton —
10
+ * an ink pill in the bottom-right stack.
11
+ * · A STATE (something is wrong here and stays wrong: fetch failed,
12
+ * invalid field, auth error) is an inline `admin-alert` at the thing it
13
+ * describes, and never auto-dismisses. Not this system.
14
+ * · Document saves are neither — the AdminSaveBar's morph is their
15
+ * feedback. Never two channels for one outcome.
16
+ *
17
+ * Behavior: success toasts speak the button's words ("Delete discount" →
18
+ * "Discount deleted") and auto-dismiss after 3s (hover pauses the timer);
19
+ * error toasts are STICKY with a dismiss ✕ and say what went wrong and how
20
+ * to fix it. Stack caps at 3 (oldest collapses). The stack rises above the
21
+ * AdminSaveBar when both exist (via `body[data-admin-savebar]`).
22
+ *
23
+ * Architecture: a module-level emitter instead of a React context — usable
24
+ * from any hook, handler or non-React call site with a plain import, no
25
+ * provider threading. `<AdminToaster/>` is mounted ONCE by AdminLayout;
26
+ * events fired before it mounts queue and drain on mount.
27
+ *
28
+ * The legacy single-slot `AdminToast` component remains exported for
29
+ * back-compat (older stores + CC-generated custom pages) but new code MUST
30
+ * use `adminToast`.
31
+ */
32
+ import { useCallback, useEffect, useRef, useState } from 'react';
33
+ import { Check, X } from 'lucide-react';
34
+ let activeListener = null;
35
+ let preMountQueue = [];
36
+ function emit(t) {
37
+ if (activeListener)
38
+ activeListener(t);
39
+ else
40
+ preMountQueue.push(t);
41
+ }
42
+ /**
43
+ * Fire an admin notification (an EVENT — see the grammar above).
44
+ *
45
+ * @example
46
+ * adminToast.success('Discount deleted')
47
+ * adminToast.success('Test email sent to you', { action: { label: 'View', onClick } })
48
+ * adminToast.error("Couldn't send the invite. Check the email address and try again.")
49
+ */
50
+ export const adminToast = {
51
+ success(message, opts) {
52
+ emit({ type: 'success', message, action: opts?.action });
53
+ },
54
+ error(message) {
55
+ emit({ type: 'error', message });
56
+ },
57
+ };
58
+ // =============================================================================
59
+ // Component (mounted once by AdminLayout)
60
+ // =============================================================================
61
+ const SUCCESS_DISMISS_MS = 3000;
62
+ const HOVER_RESUME_MS = 1500;
63
+ const MAX_STACK = 3;
64
+ export function AdminToaster() {
65
+ const [toasts, setToasts] = useState([]);
66
+ const nextId = useRef(0);
67
+ const timers = useRef(new Map());
68
+ const remove = useCallback((id) => {
69
+ setToasts((prev) => prev.filter((t) => t.id !== id));
70
+ const timer = timers.current.get(id);
71
+ if (timer)
72
+ window.clearTimeout(timer);
73
+ timers.current.delete(id);
74
+ }, []);
75
+ const scheduleDismiss = useCallback((id, ms) => {
76
+ const timer = window.setTimeout(() => remove(id), ms);
77
+ timers.current.set(id, timer);
78
+ }, [remove]);
79
+ useEffect(() => {
80
+ const timersMap = timers.current;
81
+ const push = (t) => {
82
+ const id = ++nextId.current;
83
+ setToasts((prev) => {
84
+ const next = [...prev, { ...t, id }];
85
+ // Cap the stack — the oldest collapses (its timer is cleaned lazily
86
+ // by remove() never finding it; clear it here to be tidy).
87
+ if (next.length > MAX_STACK) {
88
+ const dropped = next.slice(0, next.length - MAX_STACK);
89
+ for (const d of dropped) {
90
+ const timer = timersMap.get(d.id);
91
+ if (timer)
92
+ window.clearTimeout(timer);
93
+ timersMap.delete(d.id);
94
+ }
95
+ return next.slice(next.length - MAX_STACK);
96
+ }
97
+ return next;
98
+ });
99
+ if (t.type === 'success')
100
+ scheduleDismiss(id, SUCCESS_DISMISS_MS);
101
+ };
102
+ activeListener = push;
103
+ // Drain events fired before mount — async so setState never runs
104
+ // synchronously inside the effect body.
105
+ const pending = preMountQueue;
106
+ preMountQueue = [];
107
+ const raf = pending.length
108
+ ? window.requestAnimationFrame(() => pending.forEach(push))
109
+ : null;
110
+ return () => {
111
+ activeListener = null;
112
+ if (raf !== null)
113
+ window.cancelAnimationFrame(raf);
114
+ timersMap.forEach((timer) => window.clearTimeout(timer));
115
+ timersMap.clear();
116
+ };
117
+ }, [scheduleDismiss]);
118
+ // Hover pauses a success toast's timer; leaving restarts a short fuse.
119
+ const pause = useCallback((id) => {
120
+ const timer = timers.current.get(id);
121
+ if (timer) {
122
+ window.clearTimeout(timer);
123
+ timers.current.delete(id);
124
+ }
125
+ }, []);
126
+ const resume = useCallback((t) => {
127
+ if (t.type === 'success')
128
+ scheduleDismiss(t.id, HOVER_RESUME_MS);
129
+ }, [scheduleDismiss]);
130
+ if (toasts.length === 0)
131
+ return null;
132
+ return (_jsx("div", { className: "admin-toaster", "aria-live": "polite", children: toasts.map((t) => (_jsxs("div", { role: t.type === 'error' ? 'alert' : 'status', className: `admin-toast-v2 ${t.type === 'error' ? 'admin-toast-v2-error' : ''}`.trim(), onMouseEnter: () => pause(t.id), onMouseLeave: () => resume(t), children: [t.type === 'success' ? (_jsx(Check, { className: "admin-toast-v2-icon", "aria-hidden": "true" })) : (_jsx(X, { className: "admin-toast-v2-icon", "aria-hidden": "true" })), _jsx("span", { className: "admin-toast-v2-msg", children: t.message }), t.action && (_jsx("button", { type: "button", className: "admin-toast-v2-action", onClick: () => {
133
+ t.action?.onClick();
134
+ remove(t.id);
135
+ }, children: t.action.label })), t.type === 'error' && (_jsx("button", { type: "button", className: "admin-toast-v2-x", onClick: () => remove(t.id), "aria-label": "Dismiss notification", children: _jsx(X, { "aria-hidden": "true" }) }))] }, t.id))) }));
136
+ }
137
+ //# sourceMappingURL=AdminToaster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminToaster.js","sourceRoot":"","sources":["../../../src/admin/components/AdminToaster.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BrandingAssetUpload.d.ts","sourceRoot":"","sources":["../../../src/admin/components/BrandingAssetUpload.tsx"],"names":[],"mappings":"AAuBA,MAAM,WAAW,wBAAwB;IACvC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA0DD,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,SAAc,GACf,EAAE,wBAAwB,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,2CAuTzD;AAMD,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,CAAA;AAEzD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CAEtD"}
1
+ {"version":3,"file":"BrandingAssetUpload.d.ts","sourceRoot":"","sources":["../../../src/admin/components/BrandingAssetUpload.tsx"],"names":[],"mappings":"AAwBA,MAAM,WAAW,wBAAwB;IACvC,uDAAuD;IACvD,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA0DD,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,SAAc,GACf,EAAE,wBAAwB,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,2CA6SzD;AAMD,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,CAAA;AAEzD,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,2CAEtD"}
@@ -15,6 +15,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
15
  */
16
16
  import { useState, useEffect, useRef, useCallback } from 'react';
17
17
  import { fetchAdminApi } from '../hooks/fetchAdminApi';
18
+ import { adminToast } from './AdminToaster';
18
19
  const BASE_TYPES = ['image/png', 'image/jpeg', 'image/jpg', 'image/webp', 'image/svg+xml'];
19
20
  const BASE_ACCEPT = 'image/png,image/jpeg,image/jpg,image/webp,image/svg+xml';
20
21
  const KIND_CONFIG = {
@@ -55,7 +56,6 @@ export function BrandingAssetUpload({ kind, onUpload, onDelete, className = '',
55
56
  });
56
57
  const [preview, setPreview] = useState(null);
57
58
  const [isDragging, setIsDragging] = useState(false);
58
- const [successMessage, setSuccessMessage] = useState(null);
59
59
  const [cacheBuster, setCacheBuster] = useState(() => Date.now());
60
60
  const fileInputRef = useRef(null);
61
61
  // Fetch status on mount — the GET is an R2 HEAD, so this reflects the
@@ -107,13 +107,12 @@ export function BrandingAssetUpload({ kind, onUpload, onDelete, className = '',
107
107
  error: null,
108
108
  });
109
109
  setPreview(null);
110
- setSuccessMessage(`${cfg.label} uploaded successfully!`);
111
- setTimeout(() => setSuccessMessage(null), 3000);
110
+ // Event → THE toaster (the error banner below stays inline: a state).
111
+ adminToast.success(`${cfg.label} uploaded`);
112
112
  onUpload?.(res.data.data.url);
113
113
  }, [cfg.endpoint, cfg.formField, cfg.label, onUpload]);
114
114
  const handleFileSelect = useCallback((file) => {
115
115
  setAsset((prev) => ({ ...prev, error: null }));
116
- setSuccessMessage(null);
117
116
  if (!cfg.allowedTypes.includes(file.type)) {
118
117
  setAsset((prev) => ({ ...prev, error: cfg.invalidTypeMessage }));
119
118
  return;
@@ -133,7 +132,6 @@ export function BrandingAssetUpload({ kind, onUpload, onDelete, className = '',
133
132
  if (!asset.exists)
134
133
  return;
135
134
  setAsset((prev) => ({ ...prev, isDeleting: true, error: null }));
136
- setSuccessMessage(null);
137
135
  const res = await fetchAdminApi(cfg.endpoint, { method: 'DELETE' });
138
136
  if (!res.ok) {
139
137
  setAsset((prev) => ({ ...prev, isDeleting: false, error: res.error }));
@@ -147,8 +145,7 @@ export function BrandingAssetUpload({ kind, onUpload, onDelete, className = '',
147
145
  isDeleting: false,
148
146
  error: null,
149
147
  });
150
- setSuccessMessage(`${cfg.label} removed successfully!`);
151
- setTimeout(() => setSuccessMessage(null), 3000);
148
+ adminToast.success(`${cfg.label} removed`);
152
149
  onDelete?.();
153
150
  };
154
151
  const handleFileInputChange = (e) => {
@@ -185,7 +182,7 @@ export function BrandingAssetUpload({ kind, onUpload, onDelete, className = '',
185
182
  };
186
183
  const displayUrl = getDisplayUrl();
187
184
  const isWorking = asset.isLoading || asset.isUploading || asset.isDeleting;
188
- return (_jsxs("div", { className: className, children: [_jsx("label", { className: "admin-label", children: cfg.label }), _jsx("p", { className: "admin-helper-text mb-3", children: cfg.helper }), asset.error && (_jsx("div", { className: "admin-alert admin-alert-error mb-3", children: _jsx("div", { className: "admin-alert-description text-sm", children: asset.error }) })), successMessage && (_jsx("div", { className: "admin-alert admin-alert-success mb-3", children: _jsx("div", { className: "admin-alert-description text-sm", children: successMessage }) })), displayUrl ? (_jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "relative rounded-lg border border-[hsl(var(--admin-border))] bg-[hsl(var(--admin-background-subtle))] p-4", children: [_jsx("div", { className: cfg.preview === 'tile'
185
+ return (_jsxs("div", { className: className, children: [_jsx("label", { className: "admin-label", children: cfg.label }), _jsx("p", { className: "admin-helper-text mb-3", children: cfg.helper }), asset.error && (_jsx("div", { className: "admin-alert admin-alert-error mb-3", children: _jsx("div", { className: "admin-alert-description text-sm", children: asset.error }) })), displayUrl ? (_jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "relative rounded-lg border border-[hsl(var(--admin-border))] bg-[hsl(var(--admin-background-subtle))] p-4", children: [_jsx("div", { className: cfg.preview === 'tile'
189
186
  ? 'flex items-center justify-center min-h-[56px]'
190
187
  : 'flex items-center justify-center min-h-[80px]', children: _jsx("img", { src: displayUrl, alt: cfg.label, className: cfg.preview === 'tile'
191
188
  ? 'h-12 w-12 rounded-md object-contain'
@@ -1 +1 @@
1
- {"version":3,"file":"BrandingAssetUpload.js","sourceRoot":"","sources":["../../../src/admin/components/BrandingAssetUpload.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrandingAssetUpload.js","sourceRoot":"","sources":["../../../src/admin/components/BrandingAssetUpload.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"EmailsManager.d.ts","sourceRoot":"","sources":["../../../src/admin/components/EmailsManager.tsx"],"names":[],"mappings":"AAiHA,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAc,EAAE,EAAE,kBAAkB,2CAs3BnE"}
1
+ {"version":3,"file":"EmailsManager.d.ts","sourceRoot":"","sources":["../../../src/admin/components/EmailsManager.tsx"],"names":[],"mappings":"AAiHA,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAc,EAAE,EAAE,kBAAkB,2CA22BnE"}
@@ -26,10 +26,11 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
26
26
  * displayed in an inbox-style crossfading preview pane.
27
27
  */
28
28
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
29
- import { Mail, Palette, ChevronRight, Send, Check, Plus, Trash2, RotateCcw, PenLine, Globe, } from 'lucide-react';
29
+ import { Mail, Palette, ChevronRight, Send, Plus, Trash2, RotateCcw, PenLine, Globe, } from 'lucide-react';
30
30
  import { LOCALE_LABELS } from '../../core/i18n/types';
31
31
  import { AdminSelect } from './AdminSelect';
32
32
  import { AdminPageHeader } from './AdminPageHeader';
33
+ import { adminToast } from './AdminToaster';
33
34
  import { DeleteConfirmDialog } from './DeleteConfirmDialog';
34
35
  import { EmailPreviewPane } from './emails/EmailPreviewPane';
35
36
  import { EmailThemePanel } from './emails/EmailThemePanel';
@@ -57,7 +58,6 @@ export function EmailsManager({ className = '' }) {
57
58
  const [nameDraft, setNameDraft] = useState('');
58
59
  const [themeDraft, setThemeDraft] = useState({});
59
60
  const [isSaving, setIsSaving] = useState(false);
60
- const [saveFlash, setSaveFlash] = useState(null);
61
61
  const [actionError, setActionError] = useState(null);
62
62
  const [isSendingTest, setIsSendingTest] = useState(false);
63
63
  const [createOpen, setCreateOpen] = useState(false);
@@ -150,7 +150,6 @@ export function EmailsManager({ className = '' }) {
150
150
  setNameDraft(rows.find((r) => r.locale === DEFAULT_ROW)?.name ?? '');
151
151
  setActiveLocale(DEFAULT_ROW);
152
152
  setActionError(null);
153
- setSaveFlash(null);
154
153
  setSendToOpen(false);
155
154
  setConfirmDelete(false);
156
155
  clearPreview();
@@ -244,8 +243,7 @@ export function EmailsManager({ className = '' }) {
244
243
  });
245
244
  if (!res.ok)
246
245
  throw new Error();
247
- setSaveFlash('Saved');
248
- window.setTimeout(() => setSaveFlash(null), 2000);
246
+ adminToast.success('Saved');
249
247
  // Refresh the module state so list badges stay accurate.
250
248
  const fresh = await fetch('/api/admin/emails').then((r) => (r.ok ? r.json() : null));
251
249
  if (fresh)
@@ -269,8 +267,7 @@ export function EmailsManager({ className = '' }) {
269
267
  });
270
268
  if (!res.ok)
271
269
  throw new Error();
272
- setSaveFlash('Saved');
273
- window.setTimeout(() => setSaveFlash(null), 2000);
270
+ adminToast.success('Saved');
274
271
  const fresh = await fetch('/api/admin/emails').then((r) => (r.ok ? r.json() : null));
275
272
  if (fresh) {
276
273
  setData(fresh);
@@ -302,8 +299,7 @@ export function EmailsManager({ className = '' }) {
302
299
  const json = await res.json().catch(() => null);
303
300
  if (!res.ok)
304
301
  throw new Error(json?.error);
305
- setSaveFlash(`Sent to ${json?.to ?? 'your address'}`);
306
- window.setTimeout(() => setSaveFlash(null), 3500);
302
+ adminToast.success(`Sent to ${json?.to ?? 'your address'}`);
307
303
  if (sendTo) {
308
304
  setSendToOpen(false);
309
305
  setSendToEmail('');
@@ -402,7 +398,7 @@ export function EmailsManager({ className = '' }) {
402
398
  return (_jsxs("div", { className: `space-y-6 ${className}`, children: [_jsx(AdminPageHeader, { onBack: () => setView('list'), backLabel: "Back to emails", eyebrow: "Emails", title: "Email theme", subtitle: "One shared theme styles every email your store sends. It starts from your brand (logo, colors, fonts). Adjust anything below and every email updates at once." }), _jsxs("div", { className: "admin-card admin-card-body", children: [actionError && (_jsx("div", { className: "admin-alert-inline admin-alert-inline-error mb-4", children: actionError })), _jsxs("div", { className: "flex flex-col gap-8 lg:flex-row", children: [_jsx(EmailThemePanel, { draft: themeDraft, derived: data.theme.derived, palette: data.theme.palette, suggestedFonts: data.theme.suggestedFonts, onChange: (patch) => setThemeDraft((p) => ({ ...p, ...patch })), onSave: () => saveTheme(themeDraft), onReset: () => {
403
399
  setThemeDraft({});
404
400
  saveTheme({});
405
- }, isSaving: isSaving, saveFlash: saveFlash }), previewPane] })] })] }));
401
+ }, isSaving: isSaving }), previewPane] })] })] }));
406
402
  }
407
403
  // ── EMAIL DETAIL VIEW ──────────────────────────────────────────────────────
408
404
  if (activeKey) {
@@ -426,7 +422,7 @@ export function EmailsManager({ className = '' }) {
426
422
  return (_jsxs("div", { className: `space-y-6 ${className}`, children: [_jsx(AdminPageHeader, { onBack: () => {
427
423
  setView('list');
428
424
  load();
429
- }, backLabel: "Back to emails", eyebrow: "Emails", title: displayName, badge: _jsxs(_Fragment, { children: [isCustomKey && (_jsx("span", { className: "admin-badge admin-badge-neutral", children: "Your email" })), activeKey && disabledKeys.has(activeKey) && (_jsx("span", { className: "admin-badge admin-badge-neutral", children: "Off" }))] }) }), _jsxs("div", { className: "admin-card admin-card-body", children: [_jsxs("div", { className: "mb-2 flex flex-wrap items-center justify-between gap-x-6 gap-y-2", children: [_jsx("p", { className: "max-w-xl text-sm text-[hsl(var(--admin-foreground-muted))]", children: activeEntry?.trigger ?? 'Your own email — send it to a customer whenever you like.' }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Globe, { className: "h-4 w-4 shrink-0 text-[hsl(var(--admin-foreground-muted))]" }), _jsx("span", { className: "text-xs font-semibold uppercase tracking-wide text-[hsl(var(--admin-foreground-muted))]", children: "Language" }), isMultilingual ? (_jsx(AdminSelect, { className: "w-48", size: "sm", value: activeLocale, onChange: (v) => setActiveLocale(v), options: localeRows.map((row) => ({ value: row, label: localeRowLabel(row) })) })) : (_jsx("span", { className: "text-sm font-medium", children: localeRowLabel(DEFAULT_ROW) }))] })] }), _jsx("div", { className: "mb-4 flex justify-end", children: isMultilingual && activeLocale !== DEFAULT_ROW && !rowHasOwnContent ? (_jsxs("p", { className: "text-xs text-[hsl(var(--admin-foreground-muted))]", children: ["Showing your ", localeName(data.defaultLocale), " content \u2014 anything you save here becomes the ", localeName(editingLocale), " version."] })) : !isMultilingual ? (_jsxs("p", { className: "text-xs text-[hsl(var(--admin-foreground-subtle))]", children: ["Your store sends emails in ", localeName(editingLocale), ". Add languages in", ' ', _jsx("a", { href: "/admin/settings", className: "underline hover:text-[hsl(var(--admin-primary))]", children: "Settings \u2192 Languages" }), "."] })) : (_jsx("span", {})) }), actionError && (_jsx("div", { className: "admin-alert-inline admin-alert-inline-error mb-4", children: actionError })), _jsxs("div", { className: "flex flex-col gap-8 lg:flex-row", children: [_jsxs("div", { className: "w-full space-y-4 lg:max-w-md", children: [isCustomKey && (_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Name" }), _jsx("input", { className: "admin-input w-full", value: nameDraft, onChange: (e) => setNameDraft(e.target.value), maxLength: 80 })] })), activeEntry?.canDisable && (_jsxs("label", { className: "flex cursor-pointer items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", className: "admin-checkbox", checked: enabledDraft, onChange: (e) => setEnabledDraft(e.target.checked) }), "Send this email"] })), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Subject" }), _jsx("input", { className: "admin-input w-full", value: draft.subject, onChange: (e) => setDraftField('subject', e.target.value), placeholder: isCustomKey ? 'The subject your customer sees' : 'Leave empty to use the standard subject', maxLength: 200 }), _jsx("div", { className: "mt-1.5 flex flex-wrap gap-1", children: variables.map((v) => (_jsxs("button", { type: "button", onClick: () => setDraftField('subject', `${draft.subject}{{${v}}}`), className: "rounded-full border border-[hsl(var(--admin-border))] px-2 py-0.5 text-xs text-[hsl(var(--admin-foreground-muted))] hover:border-[hsl(var(--admin-primary))] hover:text-[hsl(var(--admin-primary))]", children: ['{{', v, '}}'] }, v))) })] }), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("label", { className: "admin-label !mb-0", children: "Content" }), isCustomKey || hasRowBlocks ? (!isCustomKey && (_jsxs("button", { type: "button", onClick: () => setResetConfirmOpen(true), className: "admin-action-link inline-flex items-center gap-1 text-xs", children: [_jsx(RotateCcw, { className: "h-3 w-3" }), " Reset to standard layout"] }))) : (_jsxs("button", { type: "button", onClick: seedBlocks, className: "admin-action-link inline-flex items-center gap-1 text-xs", children: [_jsx(PenLine, { className: "h-3 w-3" }), " Customize layout"] }))] }), !hasRowBlocks && !isCustomKey && defaultRowBlocks !== null && activeLocale !== DEFAULT_ROW && (_jsxs("p", { className: "text-xs text-[hsl(var(--admin-foreground-muted))]", children: ["This language currently uses your ", localeName(data.defaultLocale), " layout \u2014 customizing creates a ", localeName(editingLocale), " version."] }))] }), isCustomKey || hasRowBlocks ? (_jsx(BlocksEditor, { blocks: rowBlocks ?? defaultRowBlocks ?? [], onChange: (next) => setBlockDrafts((prev) => ({ ...prev, [activeLocale]: next })), slots: slots, variables: variables, locale: editingLocale })) : (_jsxs(_Fragment, { children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Intro note (optional)" }), _jsx("textarea", { className: "admin-input w-full", rows: 3, value: draft.intro, onChange: (e) => setDraftField('intro', e.target.value), placeholder: "A short personal note shown at the top of the email", maxLength: 2000 })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Footer note (optional)" }), _jsx("textarea", { className: "admin-input w-full", rows: 3, value: draft.outro, onChange: (e) => setDraftField('outro', e.target.value), placeholder: "A short note shown at the bottom, before the footer", maxLength: 2000 })] })] })), _jsxs("div", { className: "flex flex-wrap items-center gap-2 pt-2", children: [_jsx("button", { type: "button", onClick: saveOverride, disabled: isSaving, className: "admin-btn admin-btn-primary admin-btn-sm disabled:opacity-50", children: isSaving ? 'Saving…' : 'Save' }), _jsxs("button", { type: "button", onClick: () => sendTest(), disabled: isSendingTest, title: `Sends a test to you — ${data.viewer.email}`, className: "admin-btn admin-btn-secondary admin-btn-sm inline-flex items-center gap-1 disabled:opacity-50", children: [_jsx(Send, { className: "h-3.5 w-3.5" }), " ", isSendingTest ? 'Sending…' : 'Send test'] }), isCustomKey && (_jsxs("button", { type: "button", onClick: () => setSendToOpen((o) => !o), className: "admin-btn admin-btn-secondary admin-btn-sm inline-flex items-center gap-1", children: [_jsx(Mail, { className: "h-3.5 w-3.5" }), " Send to a customer"] })), saveFlash && (_jsxs("span", { className: "inline-flex items-center gap-1 text-sm text-[hsl(var(--admin-success,142_71%_45%))]", children: [_jsx(Check, { className: "h-4 w-4" }), " ", saveFlash] }))] }), _jsxs("p", { className: "text-xs text-[hsl(var(--admin-foreground-subtle))]", children: ["Tests go to you \u2014 ", data.viewer.email] }), isCustomKey && sendToOpen && (_jsxs("div", { className: "space-y-2 rounded-lg border border-[hsl(var(--admin-border))] p-3", children: [_jsx("p", { className: "text-xs font-semibold uppercase tracking-wide text-[hsl(var(--admin-foreground-muted))]", children: "Send to a customer" }), _jsx("p", { className: "text-xs text-[hsl(var(--admin-foreground-muted))]", children: "Sends the SAVED version of this email \u2014 save your changes first." }), _jsx(CustomerPicker, { onPick: (c) => {
425
+ }, backLabel: "Back to emails", eyebrow: "Emails", title: displayName, badge: _jsxs(_Fragment, { children: [isCustomKey && (_jsx("span", { className: "admin-badge admin-badge-neutral", children: "Your email" })), activeKey && disabledKeys.has(activeKey) && (_jsx("span", { className: "admin-badge admin-badge-neutral", children: "Off" }))] }) }), _jsxs("div", { className: "admin-card admin-card-body", children: [_jsxs("div", { className: "mb-2 flex flex-wrap items-center justify-between gap-x-6 gap-y-2", children: [_jsx("p", { className: "max-w-xl text-sm text-[hsl(var(--admin-foreground-muted))]", children: activeEntry?.trigger ?? 'Your own email — send it to a customer whenever you like.' }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Globe, { className: "h-4 w-4 shrink-0 text-[hsl(var(--admin-foreground-muted))]" }), _jsx("span", { className: "text-xs font-semibold uppercase tracking-wide text-[hsl(var(--admin-foreground-muted))]", children: "Language" }), isMultilingual ? (_jsx(AdminSelect, { className: "w-48", size: "sm", value: activeLocale, onChange: (v) => setActiveLocale(v), options: localeRows.map((row) => ({ value: row, label: localeRowLabel(row) })) })) : (_jsx("span", { className: "text-sm font-medium", children: localeRowLabel(DEFAULT_ROW) }))] })] }), _jsx("div", { className: "mb-4 flex justify-end", children: isMultilingual && activeLocale !== DEFAULT_ROW && !rowHasOwnContent ? (_jsxs("p", { className: "text-xs text-[hsl(var(--admin-foreground-muted))]", children: ["Showing your ", localeName(data.defaultLocale), " content \u2014 anything you save here becomes the ", localeName(editingLocale), " version."] })) : !isMultilingual ? (_jsxs("p", { className: "text-xs text-[hsl(var(--admin-foreground-subtle))]", children: ["Your store sends emails in ", localeName(editingLocale), ". Add languages in", ' ', _jsx("a", { href: "/admin/settings", className: "underline hover:text-[hsl(var(--admin-primary))]", children: "Settings \u2192 Languages" }), "."] })) : (_jsx("span", {})) }), actionError && (_jsx("div", { className: "admin-alert-inline admin-alert-inline-error mb-4", children: actionError })), _jsxs("div", { className: "flex flex-col gap-8 lg:flex-row", children: [_jsxs("div", { className: "w-full space-y-4 lg:max-w-md", children: [isCustomKey && (_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Name" }), _jsx("input", { className: "admin-input w-full", value: nameDraft, onChange: (e) => setNameDraft(e.target.value), maxLength: 80 })] })), activeEntry?.canDisable && (_jsxs("label", { className: "flex cursor-pointer items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", className: "admin-checkbox", checked: enabledDraft, onChange: (e) => setEnabledDraft(e.target.checked) }), "Send this email"] })), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Subject" }), _jsx("input", { className: "admin-input w-full", value: draft.subject, onChange: (e) => setDraftField('subject', e.target.value), placeholder: isCustomKey ? 'The subject your customer sees' : 'Leave empty to use the standard subject', maxLength: 200 }), _jsx("div", { className: "mt-1.5 flex flex-wrap gap-1", children: variables.map((v) => (_jsxs("button", { type: "button", onClick: () => setDraftField('subject', `${draft.subject}{{${v}}}`), className: "rounded-full border border-[hsl(var(--admin-border))] px-2 py-0.5 text-xs text-[hsl(var(--admin-foreground-muted))] hover:border-[hsl(var(--admin-primary))] hover:text-[hsl(var(--admin-primary))]", children: ['{{', v, '}}'] }, v))) })] }), _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("label", { className: "admin-label !mb-0", children: "Content" }), isCustomKey || hasRowBlocks ? (!isCustomKey && (_jsxs("button", { type: "button", onClick: () => setResetConfirmOpen(true), className: "admin-action-link inline-flex items-center gap-1 text-xs", children: [_jsx(RotateCcw, { className: "h-3 w-3" }), " Reset to standard layout"] }))) : (_jsxs("button", { type: "button", onClick: seedBlocks, className: "admin-action-link inline-flex items-center gap-1 text-xs", children: [_jsx(PenLine, { className: "h-3 w-3" }), " Customize layout"] }))] }), !hasRowBlocks && !isCustomKey && defaultRowBlocks !== null && activeLocale !== DEFAULT_ROW && (_jsxs("p", { className: "text-xs text-[hsl(var(--admin-foreground-muted))]", children: ["This language currently uses your ", localeName(data.defaultLocale), " layout \u2014 customizing creates a ", localeName(editingLocale), " version."] }))] }), isCustomKey || hasRowBlocks ? (_jsx(BlocksEditor, { blocks: rowBlocks ?? defaultRowBlocks ?? [], onChange: (next) => setBlockDrafts((prev) => ({ ...prev, [activeLocale]: next })), slots: slots, variables: variables, locale: editingLocale })) : (_jsxs(_Fragment, { children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Intro note (optional)" }), _jsx("textarea", { className: "admin-input w-full", rows: 3, value: draft.intro, onChange: (e) => setDraftField('intro', e.target.value), placeholder: "A short personal note shown at the top of the email", maxLength: 2000 })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Footer note (optional)" }), _jsx("textarea", { className: "admin-input w-full", rows: 3, value: draft.outro, onChange: (e) => setDraftField('outro', e.target.value), placeholder: "A short note shown at the bottom, before the footer", maxLength: 2000 })] })] })), _jsxs("div", { className: "flex flex-wrap items-center gap-2 pt-2", children: [_jsx("button", { type: "button", onClick: saveOverride, disabled: isSaving, className: "admin-btn admin-btn-primary admin-btn-sm disabled:opacity-50", children: isSaving ? 'Saving…' : 'Save' }), _jsxs("button", { type: "button", onClick: () => sendTest(), disabled: isSendingTest, title: `Sends a test to you — ${data.viewer.email}`, className: "admin-btn admin-btn-secondary admin-btn-sm inline-flex items-center gap-1 disabled:opacity-50", children: [_jsx(Send, { className: "h-3.5 w-3.5" }), " ", isSendingTest ? 'Sending…' : 'Send test'] }), isCustomKey && (_jsxs("button", { type: "button", onClick: () => setSendToOpen((o) => !o), className: "admin-btn admin-btn-secondary admin-btn-sm inline-flex items-center gap-1", children: [_jsx(Mail, { className: "h-3.5 w-3.5" }), " Send to a customer"] }))] }), _jsxs("p", { className: "text-xs text-[hsl(var(--admin-foreground-subtle))]", children: ["Tests go to you \u2014 ", data.viewer.email] }), isCustomKey && sendToOpen && (_jsxs("div", { className: "space-y-2 rounded-lg border border-[hsl(var(--admin-border))] p-3", children: [_jsx("p", { className: "text-xs font-semibold uppercase tracking-wide text-[hsl(var(--admin-foreground-muted))]", children: "Send to a customer" }), _jsx("p", { className: "text-xs text-[hsl(var(--admin-foreground-muted))]", children: "Sends the SAVED version of this email \u2014 save your changes first." }), _jsx(CustomerPicker, { onPick: (c) => {
430
426
  setSendToEmail(c.email);
431
427
  setSendToName(c.name);
432
428
  } }), _jsx("p", { className: "text-xs text-[hsl(var(--admin-foreground-subtle))]", children: "Or enter an email manually:" }), _jsx("input", { className: "admin-input w-full", type: "email", value: sendToEmail, onChange: (e) => setSendToEmail(e.target.value), placeholder: "customer@example.com" }), _jsx("input", { className: "admin-input w-full", value: sendToName, onChange: (e) => setSendToName(e.target.value), placeholder: "Customer's first name (for {{customerName}})" }), _jsx("button", { type: "button", disabled: isSendingTest || !sendToEmail.trim(), onClick: () => sendTest({ email: sendToEmail.trim(), name: sendToName }), className: "admin-btn admin-btn-primary admin-btn-sm disabled:opacity-50", children: isSendingTest ? 'Sending…' : 'Send now' })] })), isCustomKey && (_jsx("div", { className: "border-t border-[hsl(var(--admin-border))] pt-3", children: confirmDelete ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm", children: "Delete this email for good?" }), _jsx("button", { type: "button", onClick: deleteCustomEmail, disabled: isSaving, className: "admin-btn admin-btn-sm bg-red-600 text-white hover:bg-red-700 disabled:opacity-50", children: "Delete" }), _jsx("button", { type: "button", onClick: () => setConfirmDelete(false), className: "admin-btn admin-btn-secondary admin-btn-sm", children: "Cancel" })] })) : (_jsxs("button", { type: "button", onClick: () => setConfirmDelete(true), className: "inline-flex items-center gap-1 text-sm text-red-600 hover:underline", children: [_jsx(Trash2, { className: "h-3.5 w-3.5" }), " Delete this email"] })) }))] }), previewPane] })] }), _jsx(DeleteConfirmDialog, { isOpen: resetConfirmOpen, title: "Reset layout", itemName: displayName, description: `Go back to the standard layout? Your customized layout${isMultilingual ? ` for ${localeName(editingLocale)}` : ''} will be removed when you save.`, confirmLabel: "Reset layout", variant: "primary", onConfirm: () => {