@rovela-ai/sdk 0.7.1 → 0.7.2

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 (31) hide show
  1. package/dist/admin/components/AdminDateTimePicker.d.ts +13 -0
  2. package/dist/admin/components/AdminDateTimePicker.d.ts.map +1 -0
  3. package/dist/admin/components/AdminDateTimePicker.js +161 -0
  4. package/dist/admin/components/AdminDateTimePicker.js.map +1 -0
  5. package/dist/admin/components/CustomerAddressPanel.d.ts.map +1 -1
  6. package/dist/admin/components/CustomerAddressPanel.js +1 -1
  7. package/dist/admin/components/CustomerAddressPanel.js.map +1 -1
  8. package/dist/admin/components/CustomerGroupsManager.d.ts.map +1 -1
  9. package/dist/admin/components/CustomerGroupsManager.js +1 -1
  10. package/dist/admin/components/CustomerGroupsManager.js.map +1 -1
  11. package/dist/admin/components/DiscountsManager.d.ts.map +1 -1
  12. package/dist/admin/components/DiscountsManager.js +23 -19
  13. package/dist/admin/components/DiscountsManager.js.map +1 -1
  14. package/dist/admin/components/PaymentMethodsManager.d.ts.map +1 -1
  15. package/dist/admin/components/PaymentMethodsManager.js +8 -8
  16. package/dist/admin/components/PaymentMethodsManager.js.map +1 -1
  17. package/dist/admin/components/TaxSettings.js +2 -2
  18. package/dist/admin/components/TaxSettings.js.map +1 -1
  19. package/dist/admin/components/index.d.ts +2 -0
  20. package/dist/admin/components/index.d.ts.map +1 -1
  21. package/dist/admin/components/index.js +1 -0
  22. package/dist/admin/components/index.js.map +1 -1
  23. package/dist/admin/index.d.ts +1 -1
  24. package/dist/admin/index.d.ts.map +1 -1
  25. package/dist/admin/index.js +1 -1
  26. package/dist/admin/index.js.map +1 -1
  27. package/dist/admin/styles/admin-theme.css +170 -0
  28. package/dist/checkout/components/CheckoutFlow.d.ts.map +1 -1
  29. package/dist/checkout/components/CheckoutFlow.js +33 -29
  30. package/dist/checkout/components/CheckoutFlow.js.map +1 -1
  31. package/package.json +1 -1
@@ -0,0 +1,13 @@
1
+ export interface AdminDateTimePickerProps {
2
+ /** '' = unset; 'YYYY-MM-DD' (date mode) or 'YYYY-MM-DDTHH:mm' (datetime). */
3
+ value: string;
4
+ onChange: (value: string) => void;
5
+ /** 'datetime' (default) shows hour/minute selects under the calendar. */
6
+ mode?: 'date' | 'datetime';
7
+ placeholder?: string;
8
+ id?: string;
9
+ disabled?: boolean;
10
+ className?: string;
11
+ }
12
+ export declare function AdminDateTimePicker({ value, onChange, mode, placeholder, id, disabled, className, }: AdminDateTimePickerProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=AdminDateTimePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminDateTimePicker.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AdminDateTimePicker.tsx"],"names":[],"mappings":"AAwBA,MAAM,WAAW,wBAAwB;IACvC,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAsDD,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,QAAQ,EACR,IAAiB,EACjB,WAA2B,EAC3B,EAAE,EACF,QAAgB,EAChB,SAAc,GACf,EAAE,wBAAwB,2CAsO1B"}
@@ -0,0 +1,161 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * @rovela/sdk/admin/components/AdminDateTimePicker
5
+ *
6
+ * The admin design system's OWN date / date-time picker — replaces native
7
+ * `type="date"` / `type="datetime-local"` inputs everywhere in the admin
8
+ * (native pickers are browser-chrome styled and clash with the panel).
9
+ *
10
+ * Drop-in value contract: the `value` string uses the exact same shape as a
11
+ * native `datetime-local` input — `'YYYY-MM-DDTHH:mm'` ('' = unset) — and
12
+ * `'YYYY-MM-DD'` in `mode="date"`. Callers keep their existing parse/format
13
+ * helpers untouched.
14
+ *
15
+ * Zero dependencies: plain React + lucide icons + `admin-datepicker-*`
16
+ * classes (admin-theme.css). Popover closes on outside click and Escape.
17
+ *
18
+ * Deliberately out of v1 (additive later, no API change): range selection,
19
+ * arrow-key grid navigation, min/max constraints.
20
+ */
21
+ import { useEffect, useMemo, useRef, useState } from 'react';
22
+ import { Calendar, ChevronLeft, ChevronRight, X } from 'lucide-react';
23
+ // =============================================================================
24
+ // Value helpers (local-time semantics, identical to datetime-local)
25
+ // =============================================================================
26
+ const pad = (n) => String(n).padStart(2, '0');
27
+ function parseValue(value) {
28
+ if (!value)
29
+ return null;
30
+ // 'YYYY-MM-DD' or 'YYYY-MM-DDTHH:mm' — parsed as LOCAL time (explicit
31
+ // fields; never the Date-string parser, whose date-only form is UTC).
32
+ const m = value.match(/^(\d{4})-(\d{2})-(\d{2})(?:T(\d{2}):(\d{2}))?/);
33
+ if (!m)
34
+ return null;
35
+ const d = new Date(Number(m[1]), Number(m[2]) - 1, Number(m[3]), Number(m[4] ?? 0), Number(m[5] ?? 0));
36
+ return Number.isNaN(d.getTime()) ? null : d;
37
+ }
38
+ function serialize(d, mode) {
39
+ const date = `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
40
+ return mode === 'date' ? date : `${date}T${pad(d.getHours())}:${pad(d.getMinutes())}`;
41
+ }
42
+ function sameDay(a, b) {
43
+ return (a.getFullYear() === b.getFullYear() &&
44
+ a.getMonth() === b.getMonth() &&
45
+ a.getDate() === b.getDate());
46
+ }
47
+ /** 42 cells (6 weeks), Monday-start, covering the given month. */
48
+ function calendarCells(year, month) {
49
+ const first = new Date(year, month, 1);
50
+ // getDay(): 0=Sunday … 6=Saturday → offset so Monday leads the row.
51
+ const lead = (first.getDay() + 6) % 7;
52
+ const start = new Date(year, month, 1 - lead);
53
+ return Array.from({ length: 42 }, (_, i) => {
54
+ const d = new Date(start);
55
+ d.setDate(start.getDate() + i);
56
+ return d;
57
+ });
58
+ }
59
+ // =============================================================================
60
+ // Component
61
+ // =============================================================================
62
+ export function AdminDateTimePicker({ value, onChange, mode = 'datetime', placeholder = 'Pick a date', id, disabled = false, className = '', }) {
63
+ const [open, setOpen] = useState(false);
64
+ const selected = useMemo(() => parseValue(value), [value]);
65
+ const today = new Date();
66
+ // The month shown in the grid (first-of-month anchor).
67
+ const [viewDate, setViewDate] = useState(() => new Date((selected ?? today).getFullYear(), (selected ?? today).getMonth(), 1));
68
+ const rootRef = useRef(null);
69
+ // Close on outside click + Escape while open.
70
+ useEffect(() => {
71
+ if (!open)
72
+ return;
73
+ const onPointerDown = (e) => {
74
+ if (rootRef.current && !rootRef.current.contains(e.target)) {
75
+ setOpen(false);
76
+ }
77
+ };
78
+ const onKeyDown = (e) => {
79
+ if (e.key === 'Escape')
80
+ setOpen(false);
81
+ };
82
+ document.addEventListener('mousedown', onPointerDown);
83
+ document.addEventListener('keydown', onKeyDown);
84
+ return () => {
85
+ document.removeEventListener('mousedown', onPointerDown);
86
+ document.removeEventListener('keydown', onKeyDown);
87
+ };
88
+ }, [open]);
89
+ function openPopover() {
90
+ if (disabled)
91
+ return;
92
+ // Re-anchor the grid on the current selection each time it opens.
93
+ const anchor = selected ?? new Date();
94
+ setViewDate(new Date(anchor.getFullYear(), anchor.getMonth(), 1));
95
+ setOpen((prev) => !prev);
96
+ }
97
+ function pickDay(day) {
98
+ const next = new Date(day);
99
+ if (mode === 'datetime') {
100
+ // Keep the already-chosen time (or a sensible 00:00 default).
101
+ next.setHours(selected?.getHours() ?? 0, selected?.getMinutes() ?? 0, 0, 0);
102
+ }
103
+ onChange(serialize(next, mode));
104
+ if (mode === 'date')
105
+ setOpen(false);
106
+ }
107
+ function pickTime(part, raw) {
108
+ const base = selected ?? new Date(viewDate);
109
+ const next = new Date(base);
110
+ if (part === 'hours')
111
+ next.setHours(Number(raw));
112
+ else
113
+ next.setMinutes(Number(raw));
114
+ onChange(serialize(next, mode));
115
+ }
116
+ function pickToday() {
117
+ const now = new Date();
118
+ if (mode === 'date')
119
+ now.setHours(0, 0, 0, 0);
120
+ onChange(serialize(now, mode));
121
+ setViewDate(new Date(now.getFullYear(), now.getMonth(), 1));
122
+ if (mode === 'date')
123
+ setOpen(false);
124
+ }
125
+ const monthLabel = viewDate.toLocaleDateString(undefined, {
126
+ month: 'long',
127
+ year: 'numeric',
128
+ });
129
+ const display = selected
130
+ ? selected.toLocaleDateString(undefined, {
131
+ day: 'numeric',
132
+ month: 'short',
133
+ year: 'numeric',
134
+ ...(mode === 'datetime' && { hour: '2-digit', minute: '2-digit' }),
135
+ })
136
+ : null;
137
+ // Localized Monday-start day-of-week labels (Mon 2026-01-05 anchor week).
138
+ const dowLabels = useMemo(() => Array.from({ length: 7 }, (_, i) => new Date(2026, 0, 5 + i).toLocaleDateString(undefined, { weekday: 'short' })), []);
139
+ const cells = calendarCells(viewDate.getFullYear(), viewDate.getMonth());
140
+ return (_jsxs("div", { ref: rootRef, className: `admin-datepicker ${className}`, children: [_jsxs("button", { type: "button", id: id, disabled: disabled, onClick: openPopover, "aria-expanded": open, "aria-haspopup": "dialog", className: "admin-input admin-datepicker-trigger w-full", children: [display ? (_jsx("span", { children: display })) : (_jsx("span", { className: "admin-datepicker-placeholder", children: placeholder })), _jsx(Calendar, { className: "admin-datepicker-trigger-icon" })] }), open && (_jsxs("div", { className: "admin-datepicker-popover", role: "dialog", "aria-label": "Choose a date", children: [_jsxs("div", { className: "admin-datepicker-header", children: [_jsx("button", { type: "button", className: "admin-datepicker-nav", "aria-label": "Previous month", onClick: () => setViewDate((v) => new Date(v.getFullYear(), v.getMonth() - 1, 1)), children: _jsx(ChevronLeft, { className: "h-4 w-4" }) }), _jsx("span", { className: "admin-datepicker-month-label", children: monthLabel }), _jsx("button", { type: "button", className: "admin-datepicker-nav", "aria-label": "Next month", onClick: () => setViewDate((v) => new Date(v.getFullYear(), v.getMonth() + 1, 1)), children: _jsx(ChevronRight, { className: "h-4 w-4" }) })] }), _jsxs("div", { className: "admin-datepicker-grid", children: [dowLabels.map((label) => (_jsx("span", { className: "admin-datepicker-dow", children: label }, label))), cells.map((day) => {
141
+ const isOutside = day.getMonth() !== viewDate.getMonth();
142
+ const isSelected = !!selected && sameDay(day, selected);
143
+ const isToday = sameDay(day, today);
144
+ return (_jsx("button", { type: "button", onClick: () => pickDay(day), "aria-label": day.toLocaleDateString(undefined, {
145
+ day: 'numeric',
146
+ month: 'long',
147
+ year: 'numeric',
148
+ }), "aria-pressed": isSelected, className: [
149
+ 'admin-datepicker-day',
150
+ isOutside && 'is-outside',
151
+ isToday && 'is-today',
152
+ isSelected && 'is-selected',
153
+ ]
154
+ .filter(Boolean)
155
+ .join(' '), children: day.getDate() }, day.toISOString().slice(0, 10)));
156
+ })] }), _jsxs("div", { className: "admin-datepicker-footer", children: [mode === 'datetime' ? (_jsxs("div", { className: "admin-datepicker-time", children: [_jsxs("select", { "aria-label": "Hours", value: selected ? selected.getHours() : '', onChange: (e) => pickTime('hours', e.target.value), children: [selected === null && _jsx("option", { value: "", children: "--" }), Array.from({ length: 24 }, (_, h) => (_jsx("option", { value: h, children: pad(h) }, h)))] }), _jsx("span", { children: ":" }), _jsxs("select", { "aria-label": "Minutes", value: selected ? selected.getMinutes() : '', onChange: (e) => pickTime('minutes', e.target.value), children: [selected === null && _jsx("option", { value: "", children: "--" }), Array.from({ length: 60 }, (_, m) => (_jsx("option", { value: m, children: pad(m) }, m)))] })] })) : (_jsx("span", {})), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("button", { type: "button", className: "admin-datepicker-action is-primary", onClick: pickToday, children: "Today" }), value && (_jsxs("button", { type: "button", className: "admin-datepicker-action inline-flex items-center gap-0.5", onClick: () => {
157
+ onChange('');
158
+ setOpen(false);
159
+ }, children: [_jsx(X, { className: "h-3 w-3" }), "Clear"] }))] })] })] }))] }));
160
+ }
161
+ //# sourceMappingURL=AdminDateTimePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminDateTimePicker.js","sourceRoot":"","sources":["../../../src/admin/components/AdminDateTimePicker.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CustomerAddressPanel.d.ts","sourceRoot":"","sources":["../../../src/admin/components/CustomerAddressPanel.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAEnF,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,oBAAoB,EAAE,CAAA;IACjC,QAAQ,EAAE,CACR,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,iBAAiB,KACpB,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAC9C,QAAQ,EAAE,CACR,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAA;KAAE,KAChF,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAC9C,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;CAC/E;AA0ED,wBAAgB,oBAAoB,CAAC,EACnC,UAAU,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE,yBAAyB,2CA6V3B"}
1
+ {"version":3,"file":"CustomerAddressPanel.d.ts","sourceRoot":"","sources":["../../../src/admin/components/CustomerAddressPanel.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAEnF,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,oBAAoB,EAAE,CAAA;IACjC,QAAQ,EAAE,CACR,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,iBAAiB,KACpB,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAC9C,QAAQ,EAAE,CACR,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAA;KAAE,KAChF,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAC9C,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;CAC/E;AA0ED,wBAAgB,oBAAoB,CAAC,EACnC,UAAU,EACV,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE,yBAAyB,2CA+V3B"}
@@ -153,7 +153,7 @@ export function CustomerAddressPanel({ customerId, addresses, onCreate, onUpdate
153
153
  country,
154
154
  state: countryRequiresState(country) ? form.state : '',
155
155
  });
156
- }, children: countryOptions.map((c) => (_jsx("option", { value: c.code, children: c.name }, c.code))) })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: requiresState ? 'State / Province' : 'State / Province (optional)' }), form.country === 'US' ? (_jsxs("select", { className: "admin-input w-full", value: form.state, onChange: (e) => setForm({ ...form, state: e.target.value }), children: [_jsx("option", { value: "", children: "Select a state" }), US_STATES.map((s) => (_jsx("option", { value: s.code, children: s.name }, s.code)))] })) : (_jsx("input", { className: "admin-input w-full", value: form.state, onChange: (e) => setForm({ ...form, state: e.target.value }) }))] })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Phone (optional)" }), _jsx("input", { className: "admin-input w-full", value: form.phone, onChange: (e) => setForm({ ...form, phone: e.target.value }) })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsxs("label", { className: "flex items-center gap-2 text-sm admin-text-muted", children: [_jsx("input", { type: "checkbox", checked: form.isDefaultShipping, onChange: (e) => setForm({ ...form, isDefaultShipping: e.target.checked }) }), "Default shipping address"] }), _jsxs("label", { className: "flex items-center gap-2 text-sm admin-text-muted", children: [_jsx("input", { type: "checkbox", checked: form.isDefaultBilling, onChange: (e) => setForm({ ...form, isDefaultBilling: e.target.checked }) }), "Default billing address"] })] }), error && _jsx("p", { className: "admin-error-text text-sm", children: error }), _jsxs("div", { className: "flex gap-2", children: [_jsxs("button", { onClick: handleSave, disabled: submitting, className: "admin-btn admin-btn-primary admin-btn-sm inline-flex items-center gap-1 disabled:opacity-50", children: [_jsx(Check, { className: "h-3 w-3" }), submitting ? 'Saving…' : 'Save address'] }), _jsxs("button", { onClick: () => {
156
+ }, children: countryOptions.map((c) => (_jsx("option", { value: c.code, children: c.name }, c.code))) })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: requiresState ? 'State / Province' : 'State / Province (optional)' }), form.country === 'US' ? (_jsxs("select", { className: "admin-input w-full", value: form.state, onChange: (e) => setForm({ ...form, state: e.target.value }), children: [_jsx("option", { value: "", children: "Select a state" }), US_STATES.map((s) => (_jsx("option", { value: s.code, children: s.name }, s.code)))] })) : (_jsx("input", { className: "admin-input w-full", value: form.state, onChange: (e) => setForm({ ...form, state: e.target.value }) }))] })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Phone (optional)" }), _jsx("input", { className: "admin-input w-full", value: form.phone, onChange: (e) => setForm({ ...form, phone: e.target.value }) })] }), _jsxs("div", { className: "flex flex-col gap-2", children: [_jsxs("label", { className: "flex items-center gap-2 text-sm admin-text-muted", children: [_jsx("input", { type: "checkbox", className: "admin-checkbox", checked: form.isDefaultShipping, onChange: (e) => setForm({ ...form, isDefaultShipping: e.target.checked }) }), "Default shipping address"] }), _jsxs("label", { className: "flex items-center gap-2 text-sm admin-text-muted", children: [_jsx("input", { type: "checkbox", className: "admin-checkbox", checked: form.isDefaultBilling, onChange: (e) => setForm({ ...form, isDefaultBilling: e.target.checked }) }), "Default billing address"] })] }), error && _jsx("p", { className: "admin-error-text text-sm", children: error }), _jsxs("div", { className: "flex gap-2", children: [_jsxs("button", { onClick: handleSave, disabled: submitting, className: "admin-btn admin-btn-primary admin-btn-sm inline-flex items-center gap-1 disabled:opacity-50", children: [_jsx(Check, { className: "h-3 w-3" }), submitting ? 'Saving…' : 'Save address'] }), _jsxs("button", { onClick: () => {
157
157
  setError(null);
158
158
  setView({ mode: 'list' });
159
159
  }, disabled: submitting, className: "admin-btn admin-btn-secondary admin-btn-sm inline-flex items-center gap-1 disabled:opacity-50", children: [_jsx(X, { className: "h-3 w-3" }), "Cancel"] })] })] })] }));
@@ -1 +1 @@
1
- {"version":3,"file":"CustomerAddressPanel.js","sourceRoot":"","sources":["../../../src/admin/components/CustomerAddressPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CustomerAddressPanel.js","sourceRoot":"","sources":["../../../src/admin/components/CustomerAddressPanel.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CustomerGroupsManager.d.ts","sourceRoot":"","sources":["../../../src/admin/components/CustomerGroupsManager.tsx"],"names":[],"mappings":"AAgBA,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAID,wBAAgB,qBAAqB,CAAC,EAAE,SAAc,EAAE,SAAS,EAAE,EAAE,0BAA0B,2CAyN9F"}
1
+ {"version":3,"file":"CustomerGroupsManager.d.ts","sourceRoot":"","sources":["../../../src/admin/components/CustomerGroupsManager.tsx"],"names":[],"mappings":"AAgBA,MAAM,WAAW,0BAA0B;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;CACvB;AAID,wBAAgB,qBAAqB,CAAC,EAAE,SAAc,EAAE,SAAS,EAAE,EAAE,0BAA0B,2CA0N9F"}
@@ -77,7 +77,7 @@ export function CustomerGroupsManager({ className = '', onChanged }) {
77
77
  else
78
78
  onChanged?.();
79
79
  }
80
- return (_jsxs("div", { className: `admin-card overflow-hidden ${className}`, children: [_jsxs("div", { className: "admin-card-header flex items-center gap-2", children: [_jsx(Tags, { className: "h-4 w-4 admin-text-muted" }), _jsx("h2", { className: "admin-card-title", children: "Customer groups" })] }), _jsxs("div", { className: "p-4", children: [_jsx("p", { className: "mb-4 text-sm admin-text-muted", children: "Group your customers by type (Company, Individual, VIP\u2026). Groups show as a tag on the customer profile and can be used to filter the list. Deleting a group never deletes its customers \u2014 they just become ungrouped." }), (error || actionError) && (_jsx("div", { className: "admin-alert-inline admin-alert-inline-error mb-4", children: actionError || error })), isLoading ? (_jsx("div", { className: "space-y-2", children: Array.from({ length: 2 }).map((_, i) => (_jsx("div", { className: "admin-skeleton admin-skeleton-lg w-full rounded" }, i))) })) : groups.length === 0 ? (_jsx("p", { className: "mb-4 text-sm admin-text-muted", children: "No groups yet \u2014 create your first below." })) : (_jsx("ul", { className: "mb-4 divide-y divide-[hsl(var(--admin-border))]", children: groups.map((group) => (_jsx("li", { className: "flex items-center gap-3 py-2.5", children: editing?.id === group.id ? (_jsxs(_Fragment, { children: [_jsx("input", { className: "admin-input flex-1", value: editing.name, onChange: (e) => setEditing({ ...editing, name: e.target.value }), placeholder: "Group name", maxLength: 100 }), _jsx("input", { className: "admin-input flex-1", value: editing.description, onChange: (e) => setEditing({ ...editing, description: e.target.value }), placeholder: "Description (optional)", maxLength: 255 }), _jsxs("button", { onClick: handleSaveEdit, disabled: isSavingEdit || !editing.name.trim(), className: "admin-btn admin-btn-primary admin-btn-sm inline-flex items-center gap-1 disabled:opacity-50", children: [_jsx(Check, { className: "h-3 w-3" }), "Save"] }), _jsx("button", { onClick: () => setEditing(null), disabled: isSavingEdit, className: "admin-btn admin-btn-secondary admin-btn-sm inline-flex items-center gap-1", children: _jsx(X, { className: "h-3 w-3" }) })] })) : (_jsxs(_Fragment, { children: [_jsx("span", { className: "admin-badge admin-badge-neutral", children: group.name }), _jsx("span", { className: "flex-1 truncate text-sm admin-text-muted", children: group.description || '' }), _jsxs("span", { className: "text-xs admin-text-muted", children: [group.customerCount ?? 0, " customer", (group.customerCount ?? 0) !== 1 ? 's' : ''] }), _jsxs("label", { className: "flex items-center gap-1.5 text-xs admin-text-muted", children: [_jsx("input", { type: "checkbox", checked: group.isActive, onChange: () => handleToggleActive(group) }), "Active"] }), _jsxs("button", { onClick: () => setEditing({
80
+ return (_jsxs("div", { className: `admin-card overflow-hidden ${className}`, children: [_jsxs("div", { className: "admin-card-header flex items-center gap-2", children: [_jsx(Tags, { className: "h-4 w-4 admin-text-muted" }), _jsx("h2", { className: "admin-card-title", children: "Customer groups" })] }), _jsxs("div", { className: "p-4", children: [_jsx("p", { className: "mb-4 text-sm admin-text-muted", children: "Group your customers by type (Company, Individual, VIP\u2026). Groups show as a tag on the customer profile and can be used to filter the list. Deleting a group never deletes its customers \u2014 they just become ungrouped." }), (error || actionError) && (_jsx("div", { className: "admin-alert-inline admin-alert-inline-error mb-4", children: actionError || error })), isLoading ? (_jsx("div", { className: "space-y-2", children: Array.from({ length: 2 }).map((_, i) => (_jsx("div", { className: "admin-skeleton admin-skeleton-lg w-full rounded" }, i))) })) : groups.length === 0 ? (_jsx("p", { className: "mb-4 text-sm admin-text-muted", children: "No groups yet \u2014 create your first below." })) : (_jsx("ul", { className: "mb-4 divide-y divide-[hsl(var(--admin-border))]", children: groups.map((group) => (_jsx("li", { className: "flex items-center gap-3 py-2.5", children: editing?.id === group.id ? (_jsxs(_Fragment, { children: [_jsx("input", { className: "admin-input flex-1", value: editing.name, onChange: (e) => setEditing({ ...editing, name: e.target.value }), placeholder: "Group name", maxLength: 100 }), _jsx("input", { className: "admin-input flex-1", value: editing.description, onChange: (e) => setEditing({ ...editing, description: e.target.value }), placeholder: "Description (optional)", maxLength: 255 }), _jsxs("button", { onClick: handleSaveEdit, disabled: isSavingEdit || !editing.name.trim(), className: "admin-btn admin-btn-primary admin-btn-sm inline-flex items-center gap-1 disabled:opacity-50", children: [_jsx(Check, { className: "h-3 w-3" }), "Save"] }), _jsx("button", { onClick: () => setEditing(null), disabled: isSavingEdit, className: "admin-btn admin-btn-secondary admin-btn-sm inline-flex items-center gap-1", children: _jsx(X, { className: "h-3 w-3" }) })] })) : (_jsxs(_Fragment, { children: [_jsx("span", { className: "admin-badge admin-badge-neutral", children: group.name }), _jsx("span", { className: "flex-1 truncate text-sm admin-text-muted", children: group.description || '' }), _jsxs("span", { className: "text-xs admin-text-muted", children: [group.customerCount ?? 0, " customer", (group.customerCount ?? 0) !== 1 ? 's' : ''] }), _jsxs("label", { className: "flex items-center gap-1.5 text-xs admin-text-muted", children: [_jsx("input", { type: "checkbox", className: "admin-checkbox", checked: group.isActive, onChange: () => handleToggleActive(group) }), "Active"] }), _jsxs("button", { onClick: () => setEditing({
81
81
  id: group.id,
82
82
  name: group.name,
83
83
  description: group.description || '',
@@ -1 +1 @@
1
- {"version":3,"file":"CustomerGroupsManager.js","sourceRoot":"","sources":["../../../src/admin/components/CustomerGroupsManager.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CustomerGroupsManager.js","sourceRoot":"","sources":["../../../src/admin/components/CustomerGroupsManager.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DiscountsManager.d.ts","sourceRoot":"","sources":["../../../src/admin/components/DiscountsManager.tsx"],"names":[],"mappings":"AA2BA,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAmaD,wBAAgB,gBAAgB,CAAC,EAAE,SAAc,EAAE,EAAE,qBAAqB,2CA0mBzE"}
1
+ {"version":3,"file":"DiscountsManager.d.ts","sourceRoot":"","sources":["../../../src/admin/components/DiscountsManager.tsx"],"names":[],"mappings":"AA4BA,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAgcD,wBAAgB,gBAAgB,CAAC,EAAE,SAAc,EAAE,EAAE,qBAAqB,2CAynBzE"}
@@ -20,6 +20,7 @@ import { useAdminDiscounts } from '../hooks/useAdminDiscounts';
20
20
  import { useAdminCustomerGroups } from '../hooks/useAdminCustomerGroups';
21
21
  import { useAdminCategories } from '../hooks/useAdminCategories';
22
22
  import { fetchAdminApi } from '../hooks/fetchAdminApi';
23
+ import { AdminDateTimePicker } from './AdminDateTimePicker';
23
24
  import { useStoreSettingsOptional } from '../../core/StoreSettingsProvider';
24
25
  import { getCurrencySymbol } from '../../core/utils';
25
26
  const EMPTY_FORM = {
@@ -226,12 +227,7 @@ function statusOf(d) {
226
227
  }
227
228
  return { label: 'Active', cls: 'admin-badge-success' };
228
229
  }
229
- // =============================================================================
230
- // Product picker (search + chips) — minimal inline picker so merchants never
231
- // touch raw ids. Selected products not in the current search keep their label
232
- // from the labels map (falls back to a shortened id for pre-existing rows).
233
- // =============================================================================
234
- function ProductPicker({ selected, onChange, labels, onLabel, }) {
230
+ function ProductPicker({ selected, onChange, labels, onLabel, currencySymbol, }) {
235
231
  const [query, setQuery] = useState('');
236
232
  const [results, setResults] = useState([]);
237
233
  const [isSearching, setIsSearching] = useState(false);
@@ -249,35 +245,43 @@ function ProductPicker({ selected, onChange, labels, onLabel, }) {
249
245
  return;
250
246
  setIsSearching(false);
251
247
  // eslint-disable-next-line react-hooks/set-state-in-effect
252
- setResults(res.ok ? (res.data.data || []).map((p) => ({ id: p.id, name: p.name })) : []);
248
+ setResults(res.ok
249
+ ? (res.data.data || []).map((p) => ({
250
+ id: p.id,
251
+ name: p.name,
252
+ price: p.price,
253
+ sku: p.sku,
254
+ }))
255
+ : []);
253
256
  }, 250);
254
257
  return () => {
255
258
  active = false;
256
259
  clearTimeout(t);
257
260
  };
258
261
  }, [query]);
259
- return (_jsxs("div", { children: [selected.length > 0 && (_jsx("div", { className: "mb-2 flex flex-wrap gap-1.5", children: selected.map((id) => (_jsxs("span", { className: "inline-flex items-center gap-1 rounded-full border border-[hsl(var(--admin-border))] px-2 py-0.5 text-xs", children: [labels[id] || `${id.slice(0, 8)}…`, _jsx("button", { type: "button", onClick: () => onChange(selected.filter((x) => x !== id)), "aria-label": "Remove product", children: _jsx(X, { className: "h-3 w-3" }) })] }, id))) })), _jsxs("div", { className: "relative", children: [_jsx(Search, { className: "pointer-events-none absolute left-2.5 top-2.5 h-3.5 w-3.5 text-[hsl(var(--admin-foreground-muted))]" }), _jsx("input", { className: "admin-input w-full pl-8", value: query, onChange: (e) => setQuery(e.target.value), placeholder: "Search products\u2026" })] }), query.trim().length >= 2 && (_jsx("div", { className: "mt-1 rounded-md border border-[hsl(var(--admin-border))]", children: isSearching ? (_jsx("p", { className: "px-3 py-2 text-xs text-[hsl(var(--admin-foreground-muted))]", children: "Searching\u2026" })) : results.length === 0 ? (_jsx("p", { className: "px-3 py-2 text-xs text-[hsl(var(--admin-foreground-muted))]", children: "No products found" })) : (results.map((p) => {
262
+ return (_jsxs("div", { children: [selected.length > 0 && (_jsx("div", { className: "mb-2 flex flex-wrap gap-1.5", children: selected.map((id) => (_jsxs("span", { className: "inline-flex items-center gap-1 rounded-full border border-[hsl(var(--admin-border))] px-2 py-0.5 text-xs", children: [labels[id] || `${id.slice(0, 8)}…`, _jsx("button", { type: "button", onClick: () => onChange(selected.filter((x) => x !== id)), "aria-label": "Remove product", children: _jsx(X, { className: "h-3 w-3" }) })] }, id))) })), _jsxs("div", { className: "admin-input-with-icon", children: [_jsx(Search, { className: "admin-input-with-icon-left h-4 w-4" }), _jsx("input", { className: "admin-input w-full", value: query, onChange: (e) => setQuery(e.target.value), placeholder: "Search products\u2026" })] }), query.trim().length >= 2 && (_jsx("div", { className: "mt-1 rounded-md border border-[hsl(var(--admin-border))]", children: isSearching ? (_jsx("p", { className: "px-3 py-2 text-xs text-[hsl(var(--admin-foreground-muted))]", children: "Searching\u2026" })) : results.length === 0 ? (_jsx("p", { className: "px-3 py-2 text-xs text-[hsl(var(--admin-foreground-muted))]", children: "No products found" })) : (results.map((p) => {
260
263
  const isPicked = selected.includes(p.id);
261
- return (_jsx("button", { type: "button", disabled: isPicked, onClick: () => {
264
+ const priceLabel = `${currencySymbol}${Number(p.price || 0).toFixed(2)}`;
265
+ return (_jsxs("button", { type: "button", disabled: isPicked, onClick: () => {
262
266
  onLabel(p.id, p.name);
263
267
  onChange([...selected, p.id]);
264
268
  setQuery('');
265
- }, className: "block w-full px-3 py-2 text-left text-sm hover:bg-[hsl(var(--admin-background-subtle))] disabled:opacity-50", children: p.name }, p.id));
269
+ }, className: "block w-full px-3 py-2 text-left hover:bg-[hsl(var(--admin-background-subtle))] disabled:opacity-50", children: [_jsx("span", { className: "block text-sm text-[hsl(var(--admin-foreground))]", children: p.name }), _jsxs("span", { className: "block text-xs text-[hsl(var(--admin-foreground-muted))]", children: [priceLabel, p.sku ? ` · ${p.sku}` : ''] })] }, p.id));
266
270
  })) }))] }));
267
271
  }
268
272
  // =============================================================================
269
273
  // Target scope editor (products picker / category checkboxes)
270
274
  // =============================================================================
271
- function TargetEditor({ scope, targetIds, onChange, categories, productLabels, onProductLabel, }) {
275
+ function TargetEditor({ scope, targetIds, onChange, categories, productLabels, onProductLabel, currencySymbol, }) {
272
276
  if (scope === 'categories') {
273
277
  if (categories.length === 0) {
274
278
  return (_jsx("p", { className: "text-xs text-[hsl(var(--admin-foreground-muted))]", children: "No categories yet \u2014 create some under Products \u2192 Categories first." }));
275
279
  }
276
- return (_jsx("div", { className: "grid max-h-40 grid-cols-1 gap-1 overflow-y-auto sm:grid-cols-2", children: categories.map((c) => (_jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", checked: targetIds.includes(c.id), onChange: (e) => onChange(e.target.checked
280
+ return (_jsx("div", { className: "grid max-h-40 grid-cols-1 gap-1 overflow-y-auto sm:grid-cols-2", children: categories.map((c) => (_jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", className: "admin-checkbox", checked: targetIds.includes(c.id), onChange: (e) => onChange(e.target.checked
277
281
  ? [...targetIds, c.id]
278
282
  : targetIds.filter((x) => x !== c.id)) }), c.name] }, c.id))) }));
279
283
  }
280
- return (_jsx(ProductPicker, { selected: targetIds, onChange: onChange, labels: productLabels, onLabel: onProductLabel }));
284
+ return (_jsx(ProductPicker, { selected: targetIds, onChange: onChange, labels: productLabels, onLabel: onProductLabel, currencySymbol: currencySymbol }));
281
285
  }
282
286
  // =============================================================================
283
287
  // Component
@@ -343,21 +347,21 @@ export function DiscountsManager({ className = '' }) {
343
347
  }
344
348
  const set = (patch) => setForm((prev) => ({ ...prev, ...patch }));
345
349
  const needsValue = form.type === 'percentage' || form.type === 'fixed_amount';
346
- return (_jsxs("div", { className: `admin-card ${className}`, children: [_jsx("div", { className: "admin-card-header", children: _jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(BadgePercent, { className: "h-5 w-5 text-[hsl(var(--admin-primary))]" }), _jsx("h2", { className: "text-lg font-semibold text-[hsl(var(--admin-foreground))]", children: "Discounts" })] }), editing === null && (_jsxs("button", { type: "button", onClick: startCreate, className: "admin-btn admin-btn-primary admin-btn-sm inline-flex items-center gap-1", children: [_jsx(Plus, { className: "h-3 w-3" }), "Create discount"] }))] }) }), _jsxs("div", { className: "admin-card-body", children: [_jsx("p", { className: "mb-4 text-sm text-[hsl(var(--admin-foreground-muted))]", children: "Discount codes and automatic promotions, applied in your own checkout \u2014 they work with card payments and manual methods (cash on delivery, wire\u2026) alike." }), (error || actionError) && (_jsx("div", { className: "admin-alert-inline admin-alert-inline-error mb-4", children: actionError || error })), editing !== null && (_jsxs("div", { className: "mb-6 space-y-4 rounded-lg border border-[hsl(var(--admin-border))] p-4", children: [_jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Method" }), _jsxs("div", { className: "mt-1 flex gap-4", children: [_jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "radio", checked: form.method === 'code', onChange: () => set({ method: 'code' }) }), "Discount code"] }), _jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "radio", checked: form.method === 'automatic', onChange: () => set({ method: 'automatic' }) }), "Automatic"] })] })] }), form.method === 'code' && (_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Code" }), _jsx("input", { className: "admin-input w-full uppercase", value: form.code, onChange: (e) => set({ code: e.target.value.toUpperCase() }), placeholder: "e.g. WELCOME10", maxLength: 64 })] }))] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Title" }), _jsx("input", { className: "admin-input w-full", value: form.title, onChange: (e) => set({ title: e.target.value }), placeholder: "e.g. Welcome offer \u2014 10% off", maxLength: 255 })] }), _jsxs("div", { className: "grid gap-4 sm:grid-cols-3", children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Type" }), _jsxs("select", { className: "admin-input w-full", value: form.type, onChange: (e) => set({ type: e.target.value }), children: [_jsx("option", { value: "percentage", children: "Percentage off" }), _jsx("option", { value: "fixed_amount", children: "Fixed amount off" }), _jsx("option", { value: "free_shipping", children: "Free shipping" }), _jsx("option", { value: "buy_x_get_y", children: "Buy X get Y" })] })] }), needsValue && (_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: form.type === 'percentage' ? 'Percentage (%)' : `Amount (${currencySymbol})` }), _jsx("input", { className: "admin-input w-full", type: "number", min: "0", step: form.type === 'percentage' ? '1' : '0.01', value: form.value, onChange: (e) => set({ value: e.target.value }) })] })), form.type !== 'buy_x_get_y' && form.type !== 'free_shipping' && (_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Applies to" }), _jsxs("select", { className: "admin-input w-full", value: form.appliesTo, onChange: (e) => set({ appliesTo: e.target.value, targetIds: [] }), children: [_jsx("option", { value: "order", children: "Entire order" }), _jsx("option", { value: "products", children: "Specific products" }), _jsx("option", { value: "categories", children: "Specific categories" })] })] }))] }), form.type !== 'buy_x_get_y' &&
350
+ return (_jsxs("div", { className: `admin-card ${className}`, children: [_jsx("div", { className: "admin-card-header", children: _jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(BadgePercent, { className: "h-5 w-5 text-[hsl(var(--admin-primary))]" }), _jsx("h2", { className: "text-lg font-semibold text-[hsl(var(--admin-foreground))]", children: "Discounts" })] }), editing === null && (_jsxs("button", { type: "button", onClick: startCreate, className: "admin-btn admin-btn-primary admin-btn-sm inline-flex items-center gap-1", children: [_jsx(Plus, { className: "h-3 w-3" }), "Create discount"] }))] }) }), _jsxs("div", { className: "admin-card-body", children: [_jsx("p", { className: "mb-4 text-sm text-[hsl(var(--admin-foreground-muted))]", children: "Discount codes and automatic promotions, applied in your own checkout \u2014 they work with card payments and manual methods (cash on delivery, wire\u2026) alike." }), (error || actionError) && (_jsx("div", { className: "admin-alert-inline admin-alert-inline-error mb-4", children: actionError || error })), editing !== null && (_jsxs("div", { className: "mb-6 space-y-4 rounded-lg border border-[hsl(var(--admin-border))] p-4", children: [_jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Method" }), _jsxs("div", { className: "mt-1 flex gap-4", children: [_jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "radio", className: "admin-radio", checked: form.method === 'code', onChange: () => set({ method: 'code' }) }), "Discount code"] }), _jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "radio", className: "admin-radio", checked: form.method === 'automatic', onChange: () => set({ method: 'automatic' }) }), "Automatic"] })] })] }), form.method === 'code' && (_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Code" }), _jsx("input", { className: "admin-input w-full uppercase", value: form.code, onChange: (e) => set({ code: e.target.value.toUpperCase() }), placeholder: "e.g. WELCOME10", maxLength: 64 })] }))] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Title" }), _jsx("input", { className: "admin-input w-full", value: form.title, onChange: (e) => set({ title: e.target.value }), placeholder: "e.g. Welcome offer \u2014 10% off", maxLength: 255 })] }), _jsxs("div", { className: "grid gap-4 sm:grid-cols-3", children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Type" }), _jsxs("select", { className: "admin-input w-full", value: form.type, onChange: (e) => set({ type: e.target.value }), children: [_jsx("option", { value: "percentage", children: "Percentage off" }), _jsx("option", { value: "fixed_amount", children: "Fixed amount off" }), _jsx("option", { value: "free_shipping", children: "Free shipping" }), _jsx("option", { value: "buy_x_get_y", children: "Buy X get Y" })] })] }), needsValue && (_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: form.type === 'percentage' ? 'Percentage (%)' : `Amount (${currencySymbol})` }), _jsx("input", { className: "admin-input w-full", type: "number", min: "0", step: form.type === 'percentage' ? '1' : '0.01', value: form.value, onChange: (e) => set({ value: e.target.value }) })] })), form.type !== 'buy_x_get_y' && form.type !== 'free_shipping' && (_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Applies to" }), _jsxs("select", { className: "admin-input w-full", value: form.appliesTo, onChange: (e) => set({ appliesTo: e.target.value, targetIds: [] }), children: [_jsx("option", { value: "order", children: "Entire order" }), _jsx("option", { value: "products", children: "Specific products" }), _jsx("option", { value: "categories", children: "Specific categories" })] })] }))] }), form.type !== 'buy_x_get_y' &&
347
351
  form.type !== 'free_shipping' &&
348
- form.appliesTo !== 'order' && (_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: form.appliesTo === 'products' ? 'Products' : 'Categories' }), _jsx(TargetEditor, { scope: form.appliesTo, targetIds: form.targetIds, onChange: (ids) => set({ targetIds: ids }), categories: categoryOptions, productLabels: productLabels, onProductLabel: (id, name) => setProductLabels((prev) => ({ ...prev, [id]: name })) })] })), form.type === 'buy_x_get_y' && (_jsxs("div", { className: "space-y-4 rounded-md border border-dashed border-[hsl(var(--admin-border))] p-3", children: [_jsxs("div", { className: "grid gap-4 sm:grid-cols-3", children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Customer buys (quantity)" }), _jsx("input", { className: "admin-input w-full", type: "number", min: "1", value: form.buyQuantity, onChange: (e) => set({ buyQuantity: e.target.value }) })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "From" }), _jsxs("select", { className: "admin-input w-full", value: form.buyAppliesTo, onChange: (e) => set({
352
+ form.appliesTo !== 'order' && (_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: form.appliesTo === 'products' ? 'Products' : 'Categories' }), _jsx(TargetEditor, { scope: form.appliesTo, targetIds: form.targetIds, onChange: (ids) => set({ targetIds: ids }), categories: categoryOptions, productLabels: productLabels, onProductLabel: (id, name) => setProductLabels((prev) => ({ ...prev, [id]: name })), currencySymbol: currencySymbol })] })), form.type === 'buy_x_get_y' && (_jsxs("div", { className: "space-y-4 rounded-md border border-dashed border-[hsl(var(--admin-border))] p-3", children: [_jsxs("div", { className: "grid gap-4 sm:grid-cols-3", children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Customer buys (quantity)" }), _jsx("input", { className: "admin-input w-full", type: "number", min: "1", value: form.buyQuantity, onChange: (e) => set({ buyQuantity: e.target.value }) })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "From" }), _jsxs("select", { className: "admin-input w-full", value: form.buyAppliesTo, onChange: (e) => set({
349
353
  buyAppliesTo: e.target.value,
350
354
  buyTargetIds: [],
351
- }), children: [_jsx("option", { value: "any", children: "Any items" }), _jsx("option", { value: "products", children: "Specific products" }), _jsx("option", { value: "categories", children: "Specific categories" })] })] })] }), form.buyAppliesTo !== 'any' && (_jsx(TargetEditor, { scope: form.buyAppliesTo, targetIds: form.buyTargetIds, onChange: (ids) => set({ buyTargetIds: ids }), categories: categoryOptions, productLabels: productLabels, onProductLabel: (id, name) => setProductLabels((prev) => ({ ...prev, [id]: name })) })), _jsxs("div", { className: "grid gap-4 sm:grid-cols-4", children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Customer gets (quantity)" }), _jsx("input", { className: "admin-input w-full", type: "number", min: "1", value: form.getQuantity, onChange: (e) => set({ getQuantity: e.target.value }) })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "From" }), _jsxs("select", { className: "admin-input w-full", value: form.getAppliesTo, onChange: (e) => set({
355
+ }), children: [_jsx("option", { value: "any", children: "Any items" }), _jsx("option", { value: "products", children: "Specific products" }), _jsx("option", { value: "categories", children: "Specific categories" })] })] })] }), form.buyAppliesTo !== 'any' && (_jsx(TargetEditor, { scope: form.buyAppliesTo, targetIds: form.buyTargetIds, onChange: (ids) => set({ buyTargetIds: ids }), categories: categoryOptions, productLabels: productLabels, onProductLabel: (id, name) => setProductLabels((prev) => ({ ...prev, [id]: name })), currencySymbol: currencySymbol })), _jsxs("div", { className: "grid gap-4 sm:grid-cols-4", children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Customer gets (quantity)" }), _jsx("input", { className: "admin-input w-full", type: "number", min: "1", value: form.getQuantity, onChange: (e) => set({ getQuantity: e.target.value }) })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "From" }), _jsxs("select", { className: "admin-input w-full", value: form.getAppliesTo, onChange: (e) => set({
352
356
  getAppliesTo: e.target.value,
353
357
  getTargetIds: [],
354
- }), children: [_jsx("option", { value: "any", children: "Any items" }), _jsx("option", { value: "products", children: "Specific products" }), _jsx("option", { value: "categories", children: "Specific categories" })] })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "At" }), _jsxs("select", { className: "admin-input w-full", value: form.getType, onChange: (e) => set({ getType: e.target.value }), children: [_jsx("option", { value: "free", children: "Free" }), _jsx("option", { value: "percentage", children: "Percentage off" })] })] }), form.getType === 'percentage' && (_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Percent (%)" }), _jsx("input", { className: "admin-input w-full", type: "number", min: "1", max: "100", value: form.getValue, onChange: (e) => set({ getValue: e.target.value }) })] }))] }), form.getAppliesTo !== 'any' && (_jsx(TargetEditor, { scope: form.getAppliesTo, targetIds: form.getTargetIds, onChange: (ids) => set({ getTargetIds: ids }), categories: categoryOptions, productLabels: productLabels, onProductLabel: (id, name) => setProductLabels((prev) => ({ ...prev, [id]: name })) })), _jsxs("div", { className: "max-w-xs", children: [_jsx("label", { className: "admin-label", children: "Max uses per order (optional)" }), _jsx("input", { className: "admin-input w-full", type: "number", min: "1", value: form.maxUsesPerOrder, onChange: (e) => set({ maxUsesPerOrder: e.target.value }), placeholder: "Unlimited" })] })] })), _jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [_jsxs("div", { children: [_jsxs("label", { className: "admin-label", children: ["Minimum purchase (", currencySymbol, ", optional)"] }), _jsx("input", { className: "admin-input w-full", type: "number", min: "0", step: "0.01", value: form.minSubtotal, onChange: (e) => set({ minSubtotal: e.target.value }), placeholder: "No minimum" })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Minimum quantity (optional)" }), _jsx("input", { className: "admin-input w-full", type: "number", min: "0", value: form.minQuantity, onChange: (e) => set({ minQuantity: e.target.value }), placeholder: "No minimum" })] })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Customer eligibility" }), _jsxs("select", { className: "admin-input w-full max-w-xs", value: form.eligibility, onChange: (e) => set({ eligibility: e.target.value }), children: [_jsx("option", { value: "all", children: "Everyone" }), _jsx("option", { value: "logged_in", children: "Signed-in customers" }), _jsx("option", { value: "groups", children: "Specific customer groups" })] }), form.eligibility === 'groups' && (_jsx("div", { className: "mt-2 grid max-h-32 grid-cols-1 gap-1 overflow-y-auto sm:grid-cols-2", children: groups.length === 0 ? (_jsx("p", { className: "text-xs text-[hsl(var(--admin-foreground-muted))]", children: "No customer groups yet \u2014 create some under Customers \u2192 Manage groups." })) : (groups.map((g) => (_jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", checked: form.groupIds.includes(g.id), onChange: (e) => set({
358
+ }), children: [_jsx("option", { value: "any", children: "Any items" }), _jsx("option", { value: "products", children: "Specific products" }), _jsx("option", { value: "categories", children: "Specific categories" })] })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "At" }), _jsxs("select", { className: "admin-input w-full", value: form.getType, onChange: (e) => set({ getType: e.target.value }), children: [_jsx("option", { value: "free", children: "Free" }), _jsx("option", { value: "percentage", children: "Percentage off" })] })] }), form.getType === 'percentage' && (_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Percent (%)" }), _jsx("input", { className: "admin-input w-full", type: "number", min: "1", max: "100", value: form.getValue, onChange: (e) => set({ getValue: e.target.value }) })] }))] }), form.getAppliesTo !== 'any' && (_jsx(TargetEditor, { scope: form.getAppliesTo, targetIds: form.getTargetIds, onChange: (ids) => set({ getTargetIds: ids }), categories: categoryOptions, productLabels: productLabels, onProductLabel: (id, name) => setProductLabels((prev) => ({ ...prev, [id]: name })), currencySymbol: currencySymbol })), _jsxs("div", { className: "max-w-xs", children: [_jsx("label", { className: "admin-label", children: "Max uses per order (optional)" }), _jsx("input", { className: "admin-input w-full", type: "number", min: "1", value: form.maxUsesPerOrder, onChange: (e) => set({ maxUsesPerOrder: e.target.value }), placeholder: "Unlimited" })] })] })), _jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [_jsxs("div", { children: [_jsxs("label", { className: "admin-label", children: ["Minimum purchase (", currencySymbol, ", optional)"] }), _jsx("input", { className: "admin-input w-full", type: "number", min: "0", step: "0.01", value: form.minSubtotal, onChange: (e) => set({ minSubtotal: e.target.value }), placeholder: "No minimum" })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Minimum quantity (optional)" }), _jsx("input", { className: "admin-input w-full", type: "number", min: "0", value: form.minQuantity, onChange: (e) => set({ minQuantity: e.target.value }), placeholder: "No minimum" })] })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Customer eligibility" }), _jsxs("select", { className: "admin-input w-full max-w-xs", value: form.eligibility, onChange: (e) => set({ eligibility: e.target.value }), children: [_jsx("option", { value: "all", children: "Everyone" }), _jsx("option", { value: "logged_in", children: "Signed-in customers" }), _jsx("option", { value: "groups", children: "Specific customer groups" })] }), form.eligibility === 'groups' && (_jsx("div", { className: "mt-2 grid max-h-32 grid-cols-1 gap-1 overflow-y-auto sm:grid-cols-2", children: groups.length === 0 ? (_jsx("p", { className: "text-xs text-[hsl(var(--admin-foreground-muted))]", children: "No customer groups yet \u2014 create some under Customers \u2192 Manage groups." })) : (groups.map((g) => (_jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", className: "admin-checkbox", checked: form.groupIds.includes(g.id), onChange: (e) => set({
355
359
  groupIds: e.target.checked
356
360
  ? [...form.groupIds, g.id]
357
361
  : form.groupIds.filter((x) => x !== g.id),
358
- }) }), g.name] }, g.id)))) }))] }), _jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Total usage limit (optional)" }), _jsx("input", { className: "admin-input w-full", type: "number", min: "0", value: form.usageLimit, onChange: (e) => set({ usageLimit: e.target.value }), placeholder: "Unlimited" })] }), _jsxs("label", { className: "mt-6 flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", checked: form.oncePerCustomer, onChange: (e) => set({ oncePerCustomer: e.target.checked }) }), "Limit to one use per customer"] })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Can combine with" }), _jsxs("div", { className: "mt-1 flex flex-wrap gap-4", children: [_jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", checked: form.combinesProduct, onChange: (e) => set({ combinesProduct: e.target.checked }) }), "Product discounts"] }), _jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", checked: form.combinesOrder, onChange: (e) => set({ combinesOrder: e.target.checked }) }), "Order discounts"] }), _jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", checked: form.combinesShipping, onChange: (e) => set({ combinesShipping: e.target.checked }) }), "Shipping discounts"] })] })] }), _jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Starts (optional)" }), _jsx("input", { className: "admin-input w-full", type: "datetime-local", value: form.startsAt, onChange: (e) => set({ startsAt: e.target.value }) })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Ends (optional)" }), _jsx("input", { className: "admin-input w-full", type: "datetime-local", value: form.endsAt, onChange: (e) => set({ endsAt: e.target.value }) })] })] }), _jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", checked: form.enabled, onChange: (e) => set({ enabled: e.target.checked }) }), "Active"] }), _jsxs("div", { className: "flex gap-2", children: [_jsxs("button", { onClick: handleSave, disabled: isSaving, className: "admin-btn admin-btn-primary admin-btn-sm inline-flex items-center gap-1 disabled:opacity-50", children: [_jsx(Check, { className: "h-3 w-3" }), isSaving ? 'Saving…' : editing === 'new' ? 'Create discount' : 'Save changes'] }), _jsxs("button", { onClick: () => setEditing(null), disabled: isSaving, className: "admin-btn admin-btn-secondary admin-btn-sm inline-flex items-center gap-1", children: [_jsx(X, { className: "h-3 w-3" }), "Cancel"] })] })] })), isLoading ? (_jsx("div", { className: "space-y-2", children: Array.from({ length: 3 }).map((_, i) => (_jsx("div", { className: "admin-skeleton admin-skeleton-lg w-full rounded" }, i))) })) : discounts.length === 0 ? (editing === null && (_jsx("p", { className: "text-sm text-[hsl(var(--admin-foreground-muted))]", children: "No discounts yet. Create a code (e.g. WELCOME10) or an automatic promotion." }))) : (_jsx("ul", { className: "divide-y divide-[hsl(var(--admin-border))]", children: discounts.map((d) => {
362
+ }) }), g.name] }, g.id)))) }))] }), _jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Total usage limit (optional)" }), _jsx("input", { className: "admin-input w-full", type: "number", min: "0", value: form.usageLimit, onChange: (e) => set({ usageLimit: e.target.value }), placeholder: "Unlimited" })] }), _jsxs("label", { className: "mt-6 flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", className: "admin-checkbox", checked: form.oncePerCustomer, onChange: (e) => set({ oncePerCustomer: e.target.checked }) }), "Limit to one use per customer"] })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Can combine with" }), _jsxs("div", { className: "mt-1 flex flex-wrap gap-4", children: [_jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", className: "admin-checkbox", checked: form.combinesProduct, onChange: (e) => set({ combinesProduct: e.target.checked }) }), "Product discounts"] }), _jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", className: "admin-checkbox", checked: form.combinesOrder, onChange: (e) => set({ combinesOrder: e.target.checked }) }), "Order discounts"] }), _jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", className: "admin-checkbox", checked: form.combinesShipping, onChange: (e) => set({ combinesShipping: e.target.checked }) }), "Shipping discounts"] })] })] }), _jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [_jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Starts (optional)" }), _jsx(AdminDateTimePicker, { value: form.startsAt, onChange: (v) => set({ startsAt: v }), placeholder: "No start date" })] }), _jsxs("div", { children: [_jsx("label", { className: "admin-label", children: "Ends (optional)" }), _jsx(AdminDateTimePicker, { value: form.endsAt, onChange: (v) => set({ endsAt: v }), placeholder: "No end date" })] })] }), _jsxs("label", { className: "flex items-center gap-2 text-sm", children: [_jsx("input", { type: "checkbox", className: "admin-checkbox", checked: form.enabled, onChange: (e) => set({ enabled: e.target.checked }) }), "Active"] }), _jsxs("div", { className: "flex gap-2", children: [_jsxs("button", { onClick: handleSave, disabled: isSaving, className: "admin-btn admin-btn-primary admin-btn-sm inline-flex items-center gap-1 disabled:opacity-50", children: [_jsx(Check, { className: "h-3 w-3" }), isSaving ? 'Saving…' : editing === 'new' ? 'Create discount' : 'Save changes'] }), _jsxs("button", { onClick: () => setEditing(null), disabled: isSaving, className: "admin-btn admin-btn-secondary admin-btn-sm inline-flex items-center gap-1", children: [_jsx(X, { className: "h-3 w-3" }), "Cancel"] })] })] })), isLoading ? (_jsx("div", { className: "space-y-2", children: Array.from({ length: 3 }).map((_, i) => (_jsx("div", { className: "admin-skeleton admin-skeleton-lg w-full rounded" }, i))) })) : discounts.length === 0 ? (editing === null && (_jsx("p", { className: "text-sm text-[hsl(var(--admin-foreground-muted))]", children: "No discounts yet. Create a code (e.g. WELCOME10) or an automatic promotion." }))) : (_jsx("ul", { className: "divide-y divide-[hsl(var(--admin-border))]", children: discounts.map((d) => {
359
363
  const status = statusOf(d);
360
- return (_jsx("li", { className: "py-3", children: _jsxs("div", { className: "flex items-start gap-3", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("p", { className: "font-medium text-[hsl(var(--admin-foreground))]", children: d.method === 'code' && d.code ? d.code : d.title }), _jsx("span", { className: `admin-badge ${status.cls}`, children: status.label }), d.method === 'automatic' && (_jsx("span", { className: "admin-badge admin-badge-neutral", children: "Automatic" })), d.eligibility === 'groups' && (_jsx("span", { className: "admin-badge admin-badge-neutral", children: "Group-only" }))] }), _jsxs("p", { className: "mt-0.5 text-sm text-[hsl(var(--admin-foreground-muted))]", children: [typeSummary(d, currencySymbol), d.method === 'code' && d.code && d.title ? ` · ${d.title}` : ''] }), _jsxs("p", { className: "mt-0.5 text-xs text-[hsl(var(--admin-foreground-muted))]", children: [d.usedCount, " used", d.usageLimit != null ? ` of ${d.usageLimit}` : '', d.oncePerCustomer ? ' · once per customer' : ''] })] }), _jsxs("label", { className: "flex shrink-0 items-center gap-1.5 text-xs text-[hsl(var(--admin-foreground-muted))]", children: [_jsx("input", { type: "checkbox", checked: d.enabled, onChange: () => handleToggleEnabled(d) }), "Active"] }), _jsxs("button", { onClick: () => startEdit(d), className: "admin-action-link inline-flex shrink-0 items-center gap-1", children: [_jsx(Pencil, { className: "h-3 w-3" }), "Edit"] }), pendingDelete === d.id ? (_jsxs("span", { className: "inline-flex shrink-0 items-center gap-2 text-xs", children: [_jsx("span", { className: "text-[hsl(var(--admin-foreground-muted))]", children: "Delete?" }), _jsx("button", { onClick: () => handleDelete(d.id), disabled: isDeletingId === d.id, className: "admin-error-text font-medium disabled:opacity-50", children: isDeletingId === d.id ? 'Deleting…' : 'Yes' }), _jsx("button", { onClick: () => setPendingDelete(null), className: "text-[hsl(var(--admin-foreground-muted))]", children: "No" })] })) : (_jsxs("button", { onClick: () => setPendingDelete(d.id), className: "admin-action-link inline-flex shrink-0 items-center gap-1", children: [_jsx(Trash2, { className: "h-3 w-3" }), "Delete"] }))] }) }, d.id));
364
+ return (_jsx("li", { className: "py-3", children: _jsxs("div", { className: "flex items-start gap-3", children: [_jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [_jsx("p", { className: "font-medium text-[hsl(var(--admin-foreground))]", children: d.method === 'code' && d.code ? d.code : d.title }), _jsx("span", { className: `admin-badge ${status.cls}`, children: status.label }), d.method === 'automatic' && (_jsx("span", { className: "admin-badge admin-badge-neutral", children: "Automatic" })), d.eligibility === 'groups' && (_jsx("span", { className: "admin-badge admin-badge-neutral", children: "Group-only" }))] }), _jsxs("p", { className: "mt-0.5 text-sm text-[hsl(var(--admin-foreground-muted))]", children: [typeSummary(d, currencySymbol), d.method === 'code' && d.code && d.title ? ` · ${d.title}` : ''] }), _jsxs("p", { className: "mt-0.5 text-xs text-[hsl(var(--admin-foreground-muted))]", children: [d.usedCount, " used", d.usageLimit != null ? ` of ${d.usageLimit}` : '', d.oncePerCustomer ? ' · once per customer' : ''] })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-3 whitespace-nowrap", children: [_jsxs("label", { className: "flex items-center gap-1.5 text-xs text-[hsl(var(--admin-foreground-muted))]", children: [_jsx("input", { type: "checkbox", className: "admin-checkbox", checked: d.enabled, onChange: () => handleToggleEnabled(d) }), "Active"] }), _jsxs("button", { onClick: () => startEdit(d), className: "admin-action-link inline-flex items-center gap-1", children: [_jsx(Pencil, { className: "h-3 w-3" }), "Edit"] }), pendingDelete === d.id ? (_jsxs("span", { className: "inline-flex items-center gap-2 text-xs", children: [_jsx("span", { className: "text-[hsl(var(--admin-foreground-muted))]", children: "Delete?" }), _jsx("button", { onClick: () => handleDelete(d.id), disabled: isDeletingId === d.id, className: "admin-error-text font-medium disabled:opacity-50", children: isDeletingId === d.id ? 'Deleting…' : 'Yes' }), _jsx("button", { onClick: () => setPendingDelete(null), className: "text-[hsl(var(--admin-foreground-muted))]", children: "No" })] })) : (_jsxs("button", { onClick: () => setPendingDelete(d.id), className: "admin-action-link inline-flex items-center gap-1", children: [_jsx(Trash2, { className: "h-3 w-3" }), "Delete"] }))] })] }) }, d.id));
361
365
  }) }))] })] }));
362
366
  }
363
367
  //# sourceMappingURL=DiscountsManager.js.map