@fayz-ai/plugin-shop 0.24.4 → 0.24.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CheckoutSettings-GQRYZF6I.js +128 -0
- package/dist/CheckoutSettings-GQRYZF6I.js.map +1 -0
- package/dist/ContentPage-2PHOZSFZ.js +510 -0
- package/dist/ContentPage-2PHOZSFZ.js.map +1 -0
- package/dist/DeliveryStoreSettings-L2RXOVB6.js +172 -0
- package/dist/DeliveryStoreSettings-L2RXOVB6.js.map +1 -0
- package/dist/FulfillmentSettings-PW233UOK.js +61 -0
- package/dist/FulfillmentSettings-PW233UOK.js.map +1 -0
- package/dist/MarketsSettings-YUEVDLIR.js +19 -0
- package/dist/MarketsSettings-YUEVDLIR.js.map +1 -0
- package/dist/PaymentsSettings-5CI74TY2.js +318 -0
- package/dist/PaymentsSettings-5CI74TY2.js.map +1 -0
- package/dist/ProductContentTab-PSNDS7JZ.js +4 -0
- package/dist/ProductContentTab-PSNDS7JZ.js.map +1 -0
- package/dist/ProductListingTab-55Y5RXU7.js +4 -0
- package/dist/ProductListingTab-55Y5RXU7.js.map +1 -0
- package/dist/ProductMarketPricesTab-QD2ZXEWL.js +4 -0
- package/dist/ProductMarketPricesTab-QD2ZXEWL.js.map +1 -0
- package/dist/ShippingSettings-UBTNRBJ4.js +9 -0
- package/dist/ShippingSettings-UBTNRBJ4.js.map +1 -0
- package/dist/{ShopPage-NUIIWBCB.js → ShopPage-NARKHXOO.js} +6 -3
- package/dist/ShopPage-NARKHXOO.js.map +1 -0
- package/dist/StoreGeneralSettings-DEZ2CMVG.js +97 -0
- package/dist/StoreGeneralSettings-DEZ2CMVG.js.map +1 -0
- package/dist/chunk-2MXOKJQO.js +23 -0
- package/dist/chunk-2MXOKJQO.js.map +1 -0
- package/dist/chunk-4JM32Z7J.js +51 -0
- package/dist/chunk-4JM32Z7J.js.map +1 -0
- package/dist/chunk-53Y6VLAW.js +132 -0
- package/dist/chunk-53Y6VLAW.js.map +1 -0
- package/dist/chunk-6V2VAUWP.js +24 -0
- package/dist/chunk-6V2VAUWP.js.map +1 -0
- package/dist/chunk-FQQMEM26.js +59 -0
- package/dist/chunk-FQQMEM26.js.map +1 -0
- package/dist/chunk-JYT6BTRE.js +298 -0
- package/dist/chunk-JYT6BTRE.js.map +1 -0
- package/dist/chunk-MFEOIJI7.js +127 -0
- package/dist/chunk-MFEOIJI7.js.map +1 -0
- package/dist/chunk-R5CUDFOI.js +61 -0
- package/dist/chunk-R5CUDFOI.js.map +1 -0
- package/dist/chunk-STHGZWBQ.js +1455 -0
- package/dist/chunk-STHGZWBQ.js.map +1 -0
- package/dist/{chunk-XV3KZRQX.js → chunk-STZYH32S.js} +9 -140
- package/dist/chunk-STZYH32S.js.map +1 -0
- package/dist/chunk-TDV3SFXT.js +75 -0
- package/dist/chunk-TDV3SFXT.js.map +1 -0
- package/dist/chunk-YUG6XQHJ.js +55 -0
- package/dist/chunk-YUG6XQHJ.js.map +1 -0
- package/dist/data/registry-routes.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +129 -3456
- package/dist/index.js.map +1 -1
- package/dist/settings/ShippingSettings.d.ts.map +1 -1
- package/dist/views/EmailTemplatePage.d.ts.map +1 -1
- package/dist/views/EmailsPage.d.ts.map +1 -1
- package/dist/views/ProductContentTab.d.ts.map +1 -1
- package/dist/views/ProductMarketPricesTab.d.ts.map +1 -1
- package/dist/views/media-links.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/ShopPage-NUIIWBCB.js.map +0 -1
- package/dist/chunk-XV3KZRQX.js.map +0 -1
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import { SettingsState } from './chunk-FQQMEM26.js';
|
|
2
|
+
import { useStoreSettings } from './chunk-R5CUDFOI.js';
|
|
3
|
+
import './chunk-YUG6XQHJ.js';
|
|
4
|
+
import './chunk-2MXOKJQO.js';
|
|
5
|
+
import React2 from 'react';
|
|
6
|
+
import { useConnectors, useConnectorsPanelAvailable, openConnectorsPanel, SettingsGroup, MultiSelectRow, AddConnectorButton, AddConnectorPanel, ConnectorDetail, ConnectorMark, StateChip, SelectRow } from '@fayz-ai/admin';
|
|
7
|
+
import { AlertTriangle } from 'lucide-react';
|
|
8
|
+
import { Button } from '@fayz-ai/ui';
|
|
9
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
10
|
+
import { getSupabaseClientOptional } from '@fayz-ai/core';
|
|
11
|
+
|
|
12
|
+
// src/settings/payment-provider.ts
|
|
13
|
+
function resolvePaymentProvider(current, live) {
|
|
14
|
+
if (live.length === 0) return null;
|
|
15
|
+
if (current === "") return null;
|
|
16
|
+
if (current && live.includes(current)) return null;
|
|
17
|
+
return live[0];
|
|
18
|
+
}
|
|
19
|
+
function PaymentProviderRow({ connector, selected, onSelect, onOpen }) {
|
|
20
|
+
const live = connector.state === "connected";
|
|
21
|
+
return /* @__PURE__ */ jsxs("li", { className: `flex items-start gap-1 transition-colors ${selected ? "bg-primary/5" : ""}`, children: [
|
|
22
|
+
/* @__PURE__ */ jsxs(
|
|
23
|
+
Button,
|
|
24
|
+
{
|
|
25
|
+
variant: "bare",
|
|
26
|
+
size: "bare",
|
|
27
|
+
type: "button",
|
|
28
|
+
role: "radio",
|
|
29
|
+
"aria-checked": selected,
|
|
30
|
+
disabled: !live,
|
|
31
|
+
onClick: () => onSelect(connector),
|
|
32
|
+
className: `font-normal justify-start whitespace-normal flex min-w-0 flex-1 items-start gap-3 p-4 text-left ${live ? "hover:bg-muted/40" : "cursor-default disabled:opacity-70"}`,
|
|
33
|
+
children: [
|
|
34
|
+
/* @__PURE__ */ jsx(
|
|
35
|
+
"span",
|
|
36
|
+
{
|
|
37
|
+
"aria-hidden": true,
|
|
38
|
+
className: `mt-1.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${selected ? "border-primary" : "border-muted-foreground/40"} ${live ? "" : "opacity-30"}`,
|
|
39
|
+
children: selected && /* @__PURE__ */ jsx("span", { className: "h-2 w-2 rounded-full bg-primary" })
|
|
40
|
+
}
|
|
41
|
+
),
|
|
42
|
+
/* @__PURE__ */ jsx(ConnectorMark, { connector }),
|
|
43
|
+
/* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
|
|
44
|
+
/* @__PURE__ */ jsxs("span", { className: "flex flex-wrap items-center gap-2", children: [
|
|
45
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: connector.name }),
|
|
46
|
+
/* @__PURE__ */ jsx(StateChip, { state: connector.state })
|
|
47
|
+
] }),
|
|
48
|
+
/* @__PURE__ */ jsx("span", { className: "mt-0.5 block text-xs text-muted-foreground", children: selected ? "Cobra os pedidos desta loja." : live ? "Conectado. Clique para passar a cobran\xE7a para ele." : connector.description ?? "Ainda n\xE3o conectado." })
|
|
49
|
+
] })
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
),
|
|
53
|
+
/* @__PURE__ */ jsx(
|
|
54
|
+
Button,
|
|
55
|
+
{
|
|
56
|
+
variant: "bare",
|
|
57
|
+
size: "bare",
|
|
58
|
+
type: "button",
|
|
59
|
+
onClick: () => onOpen(connector),
|
|
60
|
+
className: "font-normal shrink-0 self-center whitespace-nowrap px-4 text-xs text-muted-foreground underline decoration-dotted underline-offset-4 hover:text-foreground",
|
|
61
|
+
children: live ? "Configurar conex\xE3o" : "Conectar"
|
|
62
|
+
}
|
|
63
|
+
)
|
|
64
|
+
] });
|
|
65
|
+
}
|
|
66
|
+
function ManualChargeRow({ selected, onSelect }) {
|
|
67
|
+
return /* @__PURE__ */ jsx("li", { className: selected ? "bg-primary/5" : "", children: /* @__PURE__ */ jsxs(
|
|
68
|
+
Button,
|
|
69
|
+
{
|
|
70
|
+
variant: "bare",
|
|
71
|
+
size: "bare",
|
|
72
|
+
type: "button",
|
|
73
|
+
role: "radio",
|
|
74
|
+
"aria-checked": selected,
|
|
75
|
+
onClick: onSelect,
|
|
76
|
+
className: "font-normal justify-start rounded-none whitespace-normal flex w-full items-start gap-3 p-4 text-left hover:bg-muted/40",
|
|
77
|
+
children: [
|
|
78
|
+
/* @__PURE__ */ jsx(
|
|
79
|
+
"span",
|
|
80
|
+
{
|
|
81
|
+
"aria-hidden": true,
|
|
82
|
+
className: `mt-1.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${selected ? "border-primary" : "border-muted-foreground/40"}`,
|
|
83
|
+
children: selected && /* @__PURE__ */ jsx("span", { className: "h-2 w-2 rounded-full bg-primary" })
|
|
84
|
+
}
|
|
85
|
+
),
|
|
86
|
+
/* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
|
|
87
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: "Nenhum \u2014 eu confirmo os pagamentos \xE0 m\xE3o" }),
|
|
88
|
+
/* @__PURE__ */ jsx("span", { className: "mt-0.5 block text-xs text-muted-foreground", children: "Pix por chave, dinheiro na entrega, combinado com a loja. O pedido nasce pendente e espera voc\xEA confirmar que o dinheiro caiu." })
|
|
89
|
+
] })
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
) });
|
|
93
|
+
}
|
|
94
|
+
var NONE = "__none";
|
|
95
|
+
var CARD_KIND = {
|
|
96
|
+
credit_card: "card_receivable_credit",
|
|
97
|
+
debit_card: "card_receivable_debit"
|
|
98
|
+
};
|
|
99
|
+
var CARD_LABEL = {
|
|
100
|
+
credit_card: "Cart\xE3o de cr\xE9dito cai em",
|
|
101
|
+
debit_card: "Cart\xE3o de d\xE9bito cai em"
|
|
102
|
+
};
|
|
103
|
+
function useReceivingAccountOptions() {
|
|
104
|
+
const [accounts, setAccounts] = React2.useState(null);
|
|
105
|
+
React2.useEffect(() => {
|
|
106
|
+
const db = getSupabaseClientOptional();
|
|
107
|
+
if (!db) {
|
|
108
|
+
setAccounts([]);
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
let cancelled = false;
|
|
112
|
+
db.from("plg_financial_accounts").select("id, name, kind").eq("is_active", true).in("kind", ["bank", "cash_physical", "card_receivable_credit", "card_receivable_debit"]).order("name").then(({ data }) => {
|
|
113
|
+
if (!cancelled) setAccounts(data ?? []);
|
|
114
|
+
});
|
|
115
|
+
return () => {
|
|
116
|
+
cancelled = true;
|
|
117
|
+
};
|
|
118
|
+
}, []);
|
|
119
|
+
return accounts;
|
|
120
|
+
}
|
|
121
|
+
function ReceivingAccountsGroup({ provider, providerName, methods, value, onChange }) {
|
|
122
|
+
const accounts = useReceivingAccountOptions();
|
|
123
|
+
const current = value?.[provider] ?? {};
|
|
124
|
+
const set = (key, id) => {
|
|
125
|
+
const nextForProvider = { ...current };
|
|
126
|
+
if (id === NONE) delete nextForProvider[key];
|
|
127
|
+
else nextForProvider[key] = id;
|
|
128
|
+
onChange({ ...value ?? {}, [provider]: nextForProvider });
|
|
129
|
+
};
|
|
130
|
+
const optionsFor = (kinds) => [
|
|
131
|
+
{ value: NONE, label: "N\xE3o definido" },
|
|
132
|
+
...(accounts ?? []).filter((a) => kinds.includes(a.kind)).map((a) => ({ value: a.id, label: a.name }))
|
|
133
|
+
];
|
|
134
|
+
const cards = ["credit_card", "debit_card"].filter((m) => methods.length === 0 ? m === "credit_card" : methods.includes(m));
|
|
135
|
+
return /* @__PURE__ */ jsxs(
|
|
136
|
+
SettingsGroup,
|
|
137
|
+
{
|
|
138
|
+
title: "Onde o dinheiro cai",
|
|
139
|
+
description: `A conta do Financeiro em que cada venda paga pelo ${providerName} \xE9 lan\xE7ada. Sem uma conta aqui, o lan\xE7amento vai para a \xFAnica conta banc\xE1ria da loja.`,
|
|
140
|
+
children: [
|
|
141
|
+
/* @__PURE__ */ jsx(
|
|
142
|
+
SelectRow,
|
|
143
|
+
{
|
|
144
|
+
label: "Pix, boleto e saldo caem em",
|
|
145
|
+
description: `Normalmente a conta ${providerName} cadastrada em Financeiro \u203A Contas.`,
|
|
146
|
+
value: current.default ?? NONE,
|
|
147
|
+
options: optionsFor(["bank", "cash_physical"]),
|
|
148
|
+
onChange: (id) => set("default", id),
|
|
149
|
+
disabled: accounts === null
|
|
150
|
+
}
|
|
151
|
+
),
|
|
152
|
+
cards.map((method) => /* @__PURE__ */ jsx(
|
|
153
|
+
SelectRow,
|
|
154
|
+
{
|
|
155
|
+
label: CARD_LABEL[method],
|
|
156
|
+
description: "Uma conta de cart\xE3o a receber. Sem ela, a venda no cart\xE3o n\xE3o d\xE1 baixa.",
|
|
157
|
+
value: current[method] ?? NONE,
|
|
158
|
+
options: optionsFor([CARD_KIND[method]]),
|
|
159
|
+
onChange: (id) => set(method, id),
|
|
160
|
+
disabled: accounts === null
|
|
161
|
+
},
|
|
162
|
+
method
|
|
163
|
+
))
|
|
164
|
+
]
|
|
165
|
+
}
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
var METHODS = [
|
|
169
|
+
{ value: "pix", label: "Pix", hint: "Chave ou QR Code" },
|
|
170
|
+
{ value: "credit_card", label: "Cart\xE3o de cr\xE9dito", hint: "Gateway ou maquininha" },
|
|
171
|
+
{ value: "debit_card", label: "Cart\xE3o de d\xE9bito", hint: "Gateway ou maquininha" },
|
|
172
|
+
{ value: "boleto", label: "Boleto", hint: "Enviado por e-mail" },
|
|
173
|
+
{ value: "cash", label: "Dinheiro", hint: "Na entrega ou no balc\xE3o" },
|
|
174
|
+
{ value: "other", label: "Combinar com a loja", hint: "A loja acerta o pagamento" }
|
|
175
|
+
];
|
|
176
|
+
var PAYMENT_CATEGORIES = ["payments"];
|
|
177
|
+
function PaymentsSettings({ provider }) {
|
|
178
|
+
const settings = useStoreSettings(provider);
|
|
179
|
+
const { value, set } = settings;
|
|
180
|
+
const { connectors } = useConnectors({ hostPluginId: "shop", includeGrants: false });
|
|
181
|
+
const [adding, setAdding] = React2.useState(false);
|
|
182
|
+
const [selected, setSelected] = React2.useState(null);
|
|
183
|
+
const panelAvailable = useConnectorsPanelAvailable();
|
|
184
|
+
const openJourney = React2.useCallback(
|
|
185
|
+
(connector) => {
|
|
186
|
+
if (panelAvailable) openConnectorsPanel(connector);
|
|
187
|
+
else setSelected(connector);
|
|
188
|
+
},
|
|
189
|
+
[panelAvailable]
|
|
190
|
+
);
|
|
191
|
+
const payment = React2.useMemo(
|
|
192
|
+
() => (connectors ?? []).filter((c) => c.category && PAYMENT_CATEGORIES.includes(c.category)),
|
|
193
|
+
[connectors]
|
|
194
|
+
);
|
|
195
|
+
const live = React2.useMemo(() => payment.filter((c) => c.state === "connected"), [payment]);
|
|
196
|
+
const charging = live.find((c) => c.slug === value.paymentProvider);
|
|
197
|
+
const chosen = value.paymentMethods ?? [];
|
|
198
|
+
const staleProvider = !!value.paymentProvider && !live.some((c) => c.slug === value.paymentProvider) && live.length === 0;
|
|
199
|
+
const movedFrom = React2.useRef(null);
|
|
200
|
+
React2.useEffect(() => {
|
|
201
|
+
if (!settings.supported || settings.loading) return;
|
|
202
|
+
const next = resolvePaymentProvider(value.paymentProvider, live.map((c) => c.slug));
|
|
203
|
+
if (!next) return;
|
|
204
|
+
if (value.paymentProvider) movedFrom.current = value.paymentProvider;
|
|
205
|
+
set({ paymentProvider: next });
|
|
206
|
+
}, [live, value.paymentProvider, settings.supported, settings.loading, set]);
|
|
207
|
+
return /* @__PURE__ */ jsxs(SettingsState, { ...settings, children: [
|
|
208
|
+
/* @__PURE__ */ jsxs(
|
|
209
|
+
SettingsGroup,
|
|
210
|
+
{
|
|
211
|
+
title: "Formas de pagamento",
|
|
212
|
+
description: "O que o cliente pode escolher no checkout. Um pedido que chegar com outra forma \xE9 recusado pelo servidor.",
|
|
213
|
+
children: [
|
|
214
|
+
/* @__PURE__ */ jsx(
|
|
215
|
+
MultiSelectRow,
|
|
216
|
+
{
|
|
217
|
+
label: "Aceito na loja",
|
|
218
|
+
description: "Nada escolhido = a vitrine oferece o que o app declarou, como hoje.",
|
|
219
|
+
value: chosen,
|
|
220
|
+
options: METHODS.map((m) => ({ value: m.value, label: m.label })),
|
|
221
|
+
onChange: (next) => set({ paymentMethods: next })
|
|
222
|
+
}
|
|
223
|
+
),
|
|
224
|
+
chosen.length > 0 && !value.paymentProvider && /* @__PURE__ */ jsxs("p", { className: "flex items-start gap-2 py-3 text-xs text-muted-foreground", children: [
|
|
225
|
+
/* @__PURE__ */ jsx(AlertTriangle, { className: "mt-0.5 h-3.5 w-3.5 shrink-0" }),
|
|
226
|
+
"Sem um gateway cobrando, todo pedido nasce ",
|
|
227
|
+
/* @__PURE__ */ jsx("strong", { className: "font-medium", children: "pendente" }),
|
|
228
|
+
" e espera voc\xEA confirmar que o dinheiro caiu. Isso funciona \u2014 \xE9 como as lojas com Pix por chave e pagamento na entrega operam \u2014 mas a confirma\xE7\xE3o \xE9 sua."
|
|
229
|
+
] })
|
|
230
|
+
]
|
|
231
|
+
}
|
|
232
|
+
),
|
|
233
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
234
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between gap-4 px-1 pb-1 pt-4", children: [
|
|
235
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
236
|
+
/* @__PURE__ */ jsx("h3", { className: "text-sm font-semibold", children: "Quem cobra" }),
|
|
237
|
+
/* @__PURE__ */ jsx("p", { className: "mt-0.5 text-[10px] text-muted-foreground", children: "O provedor marcado \xE9 quem abre a cobran\xE7a quando o cliente finaliza a compra \u2014 s\xF3 um cobra por vez. A credencial vai para o cofre, nunca para o banco da loja." })
|
|
238
|
+
] }),
|
|
239
|
+
/* @__PURE__ */ jsx(AddConnectorButton, { onClick: () => setAdding(true) })
|
|
240
|
+
] }),
|
|
241
|
+
/* @__PURE__ */ jsx("div", { className: "rounded-card border bg-card shadow-sm", children: payment.length === 0 ? /* @__PURE__ */ jsx("p", { className: "p-4 text-sm text-muted-foreground", children: "Nenhum provedor de pagamento dispon\xEDvel para este app ainda." }) : /* @__PURE__ */ jsxs("ul", { className: "divide-y", role: "radiogroup", "aria-label": "Quem cobra", children: [
|
|
242
|
+
payment.map((connector) => /* @__PURE__ */ jsx(
|
|
243
|
+
PaymentProviderRow,
|
|
244
|
+
{
|
|
245
|
+
connector,
|
|
246
|
+
selected: value.paymentProvider === connector.slug,
|
|
247
|
+
onSelect: (c) => {
|
|
248
|
+
movedFrom.current = null;
|
|
249
|
+
set({ paymentProvider: c.slug });
|
|
250
|
+
},
|
|
251
|
+
onOpen: openJourney
|
|
252
|
+
},
|
|
253
|
+
connector.id
|
|
254
|
+
)),
|
|
255
|
+
/* @__PURE__ */ jsx(
|
|
256
|
+
ManualChargeRow,
|
|
257
|
+
{
|
|
258
|
+
selected: value.paymentProvider === "",
|
|
259
|
+
onSelect: () => {
|
|
260
|
+
movedFrom.current = null;
|
|
261
|
+
set({ paymentProvider: "" });
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
)
|
|
265
|
+
] }) }),
|
|
266
|
+
movedFrom.current && /* @__PURE__ */ jsxs("p", { className: "flex items-start gap-2 px-1 pt-2 text-xs text-muted-foreground", children: [
|
|
267
|
+
/* @__PURE__ */ jsx(AlertTriangle, { className: "mt-0.5 h-3.5 w-3.5 shrink-0 text-amber-600" }),
|
|
268
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
269
|
+
/* @__PURE__ */ jsx("strong", { className: "font-medium", children: movedFrom.current }),
|
|
270
|
+
" n\xE3o est\xE1 mais conectado, ent\xE3o a cobran\xE7a passou para o provedor marcado acima. Reconecte-o para voltar."
|
|
271
|
+
] })
|
|
272
|
+
] }),
|
|
273
|
+
staleProvider && /* @__PURE__ */ jsxs("p", { className: "flex items-start gap-2 px-1 pt-2 text-xs text-destructive", children: [
|
|
274
|
+
/* @__PURE__ */ jsx(AlertTriangle, { className: "mt-0.5 h-3.5 w-3.5 shrink-0" }),
|
|
275
|
+
"A loja cobra por ",
|
|
276
|
+
/* @__PURE__ */ jsx("strong", { className: "font-medium", children: value.paymentProvider }),
|
|
277
|
+
", que n\xE3o est\xE1 conectado agora, e n\xE3o h\xE1 outro para assumir. Enquanto isso os pedidos nascem pendentes."
|
|
278
|
+
] })
|
|
279
|
+
] }),
|
|
280
|
+
charging && /* @__PURE__ */ jsx(
|
|
281
|
+
ReceivingAccountsGroup,
|
|
282
|
+
{
|
|
283
|
+
provider: charging.slug,
|
|
284
|
+
providerName: charging.name,
|
|
285
|
+
methods: chosen,
|
|
286
|
+
value: value.receivingAccounts,
|
|
287
|
+
onChange: (receivingAccounts) => set({ receivingAccounts })
|
|
288
|
+
}
|
|
289
|
+
),
|
|
290
|
+
/* @__PURE__ */ jsx(
|
|
291
|
+
AddConnectorPanel,
|
|
292
|
+
{
|
|
293
|
+
open: adding,
|
|
294
|
+
onOpenChange: setAdding,
|
|
295
|
+
connectors,
|
|
296
|
+
categories: PAYMENT_CATEGORIES,
|
|
297
|
+
onSelect: (connector) => {
|
|
298
|
+
setAdding(false);
|
|
299
|
+
openJourney(connector);
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
),
|
|
303
|
+
/* @__PURE__ */ jsx(
|
|
304
|
+
ConnectorDetail,
|
|
305
|
+
{
|
|
306
|
+
connector: selected,
|
|
307
|
+
open: !!selected,
|
|
308
|
+
onOpenChange: (open) => {
|
|
309
|
+
if (!open) setSelected(null);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
)
|
|
313
|
+
] });
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
export { PaymentsSettings };
|
|
317
|
+
//# sourceMappingURL=PaymentsSettings-5CI74TY2.js.map
|
|
318
|
+
//# sourceMappingURL=PaymentsSettings-5CI74TY2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/settings/payment-provider.ts","../src/settings/PaymentProviderRow.tsx","../src/settings/ReceivingAccounts.tsx","../src/settings/PaymentsSettings.tsx"],"names":["React","jsxs","jsx","SettingsGroup"],"mappings":"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","file":"PaymentsSettings-5CI74TY2.js","sourcesContent":["/**\n * Which gateway should be charging, given what the store stored and what is\n * connected right now. Returns the slug to persist, or null for \"leave it\".\n *\n * The store must always have someone charging: a gateway just connected and\n * nobody named makes every order pending for no reason, and a named gateway\n * that went away makes the checkout promise a charge that cannot open.\n *\n * `''` is the one answer this never overrides — it is the merchant saying \"eu\n * confirmo à mão\", which is a decision. `undefined` is the absence of one.\n */\nexport function resolvePaymentProvider(\n current: string | undefined | null,\n live: readonly string[],\n): string | null {\n if (live.length === 0) return null\n if (current === '') return null\n if (current && live.includes(current)) return null\n return live[0]!\n}\n","import React from 'react'\nimport { ConnectorMark, StateChip, type UnifiedConnector } from '@fayz-ai/admin'\nimport { Button } from '@fayz-ai/ui'\n\n/**\n * One payment gateway, where activating it IS choosing it.\n *\n * Shopify and Nuvemshop have no \"primary provider\" control: a provider is active\n * or it is not, and turning one on is what makes it charge. Ours were two\n * sections, so the gateway was chosen in one place and listed in another with\n * the relationship left to be guessed.\n *\n * The row body ONLY selects, and the named link beside it is the only way into\n * the connection's own screen — a row that sometimes selected and sometimes\n * opened a panel read as broken, which is what it was reported as.\n */\nexport function PaymentProviderRow({ connector, selected, onSelect, onOpen }: {\n connector: UnifiedConnector\n selected: boolean\n onSelect: (connector: UnifiedConnector) => void\n onOpen: (connector: UnifiedConnector) => void\n}) {\n const live = connector.state === 'connected'\n\n return (\n <li className={`flex items-start gap-1 transition-colors ${selected ? 'bg-primary/5' : ''}`}>\n {/* Not connected is not selectable, and the body never opens the panel:\n one row, one meaning. The link beside it is the way in. */}\n <Button variant=\"bare\" size=\"bare\"\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n disabled={!live}\n onClick={() => onSelect(connector)}\n className={`font-normal justify-start whitespace-normal flex min-w-0 flex-1 items-start gap-3 p-4 text-left ${\n live ? 'hover:bg-muted/40' : 'cursor-default disabled:opacity-70'\n }`}\n >\n <span\n aria-hidden\n className={`mt-1.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${\n selected ? 'border-primary' : 'border-muted-foreground/40'\n } ${live ? '' : 'opacity-30'}`}\n >\n {selected && <span className=\"h-2 w-2 rounded-full bg-primary\" />}\n </span>\n <ConnectorMark connector={connector} />\n <span className=\"min-w-0 flex-1\">\n <span className=\"flex flex-wrap items-center gap-2\">\n <span className=\"font-medium text-foreground\">{connector.name}</span>\n <StateChip state={connector.state} />\n </span>\n <span className=\"mt-0.5 block text-xs text-muted-foreground\">\n {selected\n ? 'Cobra os pedidos desta loja.'\n : live\n ? 'Conectado. Clique para passar a cobrança para ele.'\n : connector.description ?? 'Ainda não conectado.'}\n </span>\n </span>\n </Button>\n {/* Named, not a chevron: the arrow said \"there is more here\" and the row\n already means something else now — one of the two had to say what it\n does. */}\n <Button variant=\"bare\" size=\"bare\"\n type=\"button\"\n onClick={() => onOpen(connector)}\n className=\"font-normal shrink-0 self-center whitespace-nowrap px-4 text-xs text-muted-foreground underline decoration-dotted underline-offset-4 hover:text-foreground\"\n >\n {live ? 'Configurar conexão' : 'Conectar'}\n </Button>\n </li>\n )\n}\n\n/** The absence of a gateway, as a choice in the same list — Shopify's \"manual\n * payment methods only\". A separate section for it made it look like a setting\n * about something else. */\nexport function ManualChargeRow({ selected, onSelect }: {\n selected: boolean\n onSelect: () => void\n}) {\n return (\n <li className={selected ? 'bg-primary/5' : ''}>\n <Button variant=\"bare\" size=\"bare\"\n type=\"button\"\n role=\"radio\"\n aria-checked={selected}\n onClick={onSelect}\n className=\"font-normal justify-start rounded-none whitespace-normal flex w-full items-start gap-3 p-4 text-left hover:bg-muted/40\"\n >\n <span\n aria-hidden\n className={`mt-1.5 flex h-4 w-4 shrink-0 items-center justify-center rounded-full border ${\n selected ? 'border-primary' : 'border-muted-foreground/40'\n }`}\n >\n {selected && <span className=\"h-2 w-2 rounded-full bg-primary\" />}\n </span>\n <span className=\"min-w-0 flex-1\">\n <span className=\"font-medium text-foreground\">Nenhum — eu confirmo os pagamentos à mão</span>\n <span className=\"mt-0.5 block text-xs text-muted-foreground\">\n Pix por chave, dinheiro na entrega, combinado com a loja. O pedido nasce pendente e\n espera você confirmar que o dinheiro caiu.\n </span>\n </span>\n </Button>\n </li>\n )\n}\n","import React from 'react'\nimport { SettingsGroup, SelectRow } from '@fayz-ai/admin'\nimport { getSupabaseClientOptional } from '@fayz-ai/core'\nimport type { PaymentMethodKind, ReceivingAccounts } from '@fayz-ai/shop'\n\n/**\n * Onde o dinheiro de cada gateway cai (0124).\n *\n * The server used to book every storefront payment into the store's ONLY bank\n * account. With the money sitting in the gateway's balance, that put Mercado\n * Pago's Pix into Itaú — and adding a second account to fix it made every\n * payment fail to settle. The merchant now names the account, per gateway.\n *\n * Two questions, not one per method: a card can only settle into a card\n * receivable account (financial_receive_payment refuses anything else), and\n * every other method lands in the gateway's balance. `default` answers the\n * second; `credit_card` / `debit_card` the first.\n */\n\ntype AccountRow = { id: string; name: string; kind: string }\n\nconst NONE = '__none'\n\nconst CARD_KIND: Partial<Record<PaymentMethodKind, string>> = {\n credit_card: 'card_receivable_credit',\n debit_card: 'card_receivable_debit',\n}\n\nconst CARD_LABEL: Partial<Record<PaymentMethodKind, string>> = {\n credit_card: 'Cartão de crédito cai em',\n debit_card: 'Cartão de débito cai em',\n}\n\nfunction useReceivingAccountOptions() {\n const [accounts, setAccounts] = React.useState<AccountRow[] | null>(null)\n React.useEffect(() => {\n const db = getSupabaseClientOptional() as unknown as { from: (t: string) => any } | null\n if (!db) { setAccounts([]); return }\n let cancelled = false\n db.from('plg_financial_accounts')\n .select('id, name, kind')\n .eq('is_active', true)\n .in('kind', ['bank', 'cash_physical', 'card_receivable_credit', 'card_receivable_debit'])\n .order('name')\n .then(({ data }: { data: AccountRow[] | null }) => { if (!cancelled) setAccounts(data ?? []) })\n return () => { cancelled = true }\n }, [])\n return accounts\n}\n\nexport function ReceivingAccountsGroup({ provider, providerName, methods, value, onChange }: {\n /** The gateway slug that charges (`plg_shop_settings.payment_provider`). */\n provider: string\n providerName: string\n /** What the store accepts; empty means the app's own default list. */\n methods: PaymentMethodKind[]\n value: ReceivingAccounts | undefined\n onChange: (next: ReceivingAccounts) => void\n}) {\n const accounts = useReceivingAccountOptions()\n const current = value?.[provider] ?? {}\n\n const set = (key: PaymentMethodKind | 'default', id: string) => {\n const nextForProvider = { ...current }\n if (id === NONE) delete nextForProvider[key]\n else nextForProvider[key] = id\n onChange({ ...(value ?? {}), [provider]: nextForProvider })\n }\n\n const optionsFor = (kinds: string[]) => [\n { value: NONE, label: 'Não definido' },\n ...(accounts ?? []).filter((a) => kinds.includes(a.kind)).map((a) => ({ value: a.id, label: a.name })),\n ]\n\n // Nothing chosen = every method may come; ask about both card kinds only when\n // the store actually takes them.\n const cards = (['credit_card', 'debit_card'] as const)\n .filter((m) => methods.length === 0 ? m === 'credit_card' : methods.includes(m))\n\n return (\n <SettingsGroup\n title=\"Onde o dinheiro cai\"\n description={`A conta do Financeiro em que cada venda paga pelo ${providerName} é lançada. Sem uma conta aqui, o lançamento vai para a única conta bancária da loja.`}\n >\n <SelectRow\n label=\"Pix, boleto e saldo caem em\"\n description={`Normalmente a conta ${providerName} cadastrada em Financeiro › Contas.`}\n value={current.default ?? NONE}\n options={optionsFor(['bank', 'cash_physical'])}\n onChange={(id) => set('default', id)}\n disabled={accounts === null}\n />\n {cards.map((method) => (\n <SelectRow\n key={method}\n label={CARD_LABEL[method]!}\n description=\"Uma conta de cartão a receber. Sem ela, a venda no cartão não dá baixa.\"\n value={current[method] ?? NONE}\n options={optionsFor([CARD_KIND[method]!])}\n onChange={(id) => set(method, id)}\n disabled={accounts === null}\n />\n ))}\n </SettingsGroup>\n )\n}\n","import React from 'react'\nimport {\n SettingsGroup, MultiSelectRow,\n useConnectors, ConnectorDetail, AddConnectorPanel, AddConnectorButton,\n openConnectorsPanel, useConnectorsPanelAvailable,\n type UnifiedConnector,\n} from '@fayz-ai/admin'\nimport type { PaymentMethodKind } from '@fayz-ai/shop'\nimport { AlertTriangle } from 'lucide-react'\nimport type { ShopProviderResolver } from '../data/shared'\nimport { useStoreSettings } from './useStoreSettings'\nimport { SettingsState } from './SettingsState'\nimport { resolvePaymentProvider } from './payment-provider'\nimport { ManualChargeRow, PaymentProviderRow } from './PaymentProviderRow'\nimport { ReceivingAccountsGroup } from './ReceivingAccounts'\n\nexport interface PaymentsSettingsProps {\n provider?: ShopProviderResolver\n}\n\n/**\n * Every method an order can record — the same list as the CHECK on\n * plg_shop_orders.payment_method_kind, and therefore the same list the trigger\n * from 0045 validates against. One vocabulary, three places, no drift.\n */\nconst METHODS: Array<{ value: PaymentMethodKind; label: string; hint: string }> = [\n { value: 'pix', label: 'Pix', hint: 'Chave ou QR Code' },\n { value: 'credit_card', label: 'Cartão de crédito', hint: 'Gateway ou maquininha' },\n { value: 'debit_card', label: 'Cartão de débito', hint: 'Gateway ou maquininha' },\n { value: 'boleto', label: 'Boleto', hint: 'Enviado por e-mail' },\n { value: 'cash', label: 'Dinheiro', hint: 'Na entrega ou no balcão' },\n { value: 'other', label: 'Combinar com a loja', hint: 'A loja acerta o pagamento' },\n]\n\n/**\n * Pagamentos — quem cobra e o que o comprador pode escolher.\n *\n * Duas coisas diferentes numa tela, e a distinção é o assunto:\n *\n * • QUEM COBRA é uma conexão. Já existe: os conectores de pagamento vêm do\n * manifesto do plugin, a credencial vai para o cofre e o estado é derivado\n * de connections. Esta tela não reimplementa nada disso — ela FILTRA o\n * hub por `category === 'payments'` e reusa a mesma linha, a mesma marca e a\n * mesma jornada de conectar. Um cartão próprio aqui divergiria do hub na\n * primeira vez que qualquer um dos três mudasse.\n *\n * • O QUE O COMPRADOR ESCOLHE é política comercial, e muda com a estação. Fica\n * em plg_shop_settings.payment_methods, é lida pela vitrine em runtime e é\n * IMPOSTA no servidor: um pedido nomeando um método fora da lista é\n * recusado, não apenas escondido do formulário.\n *\n * Um método sem gateway ainda é legítimo — dinheiro na entrega, Pix por chave,\n * «combinar com a loja» — então nada aqui exige uma conexão para ser oferecido.\n * O que a tela faz é DIZER quando o pedido vai nascer pendente esperando o\n * lojista confirmar, em vez de deixar o lojista descobrir isso no primeiro\n * pedido.\n */\n/** The categories this screen is about — the same list its own filter uses. */\nconst PAYMENT_CATEGORIES = ['payments']\n\nexport function PaymentsSettings({ provider }: PaymentsSettingsProps) {\n const settings = useStoreSettings(provider)\n const { value, set } = settings\n const { connectors } = useConnectors({ hostPluginId: 'shop', includeGrants: false })\n const [adding, setAdding] = React.useState(false)\n const [selected, setSelected] = React.useState<UnifiedConnector | null>(null)\n const panelAvailable = useConnectorsPanelAvailable()\n\n const openJourney = React.useCallback(\n (connector: UnifiedConnector) => {\n // Same rule as the hub: the assistant's drawer owns the journey when one is\n // mounted, and the sheet is the fallback so the flow is never stranded.\n if (panelAvailable) openConnectorsPanel(connector)\n else setSelected(connector)\n },\n [panelAvailable],\n )\n\n const payment = React.useMemo(\n () => (connectors ?? []).filter((c) => c.category && PAYMENT_CATEGORIES.includes(c.category)),\n [connectors],\n )\n const live = React.useMemo(() => payment.filter((c) => c.state === 'connected'), [payment])\n const charging = live.find((c) => c.slug === value.paymentProvider)\n\n const chosen = value.paymentMethods ?? []\n // A gateway went away (disconnected, or the app dropped the plugin) and the\n // store still names it — and there is nothing live to hand the charge to.\n const staleProvider = !!value.paymentProvider\n && !live.some((c) => c.slug === value.paymentProvider)\n && live.length === 0\n\n // Always someone charging — the rule itself is in resolvePaymentProvider, so\n // it can be argued with in a test instead of in a mounted screen.\n const movedFrom = React.useRef<string | null>(null)\n React.useEffect(() => {\n if (!settings.supported || settings.loading) return\n const next = resolvePaymentProvider(value.paymentProvider, live.map((c) => c.slug))\n if (!next) return\n // Only a REPLACEMENT is announced; adopting a gateway nobody had chosen is\n // not news.\n if (value.paymentProvider) movedFrom.current = value.paymentProvider\n set({ paymentProvider: next })\n }, [live, value.paymentProvider, settings.supported, settings.loading, set])\n\n return (\n <SettingsState {...settings}>\n <SettingsGroup\n title=\"Formas de pagamento\"\n description=\"O que o cliente pode escolher no checkout. Um pedido que chegar com outra forma é recusado pelo servidor.\"\n >\n <MultiSelectRow\n label=\"Aceito na loja\"\n description=\"Nada escolhido = a vitrine oferece o que o app declarou, como hoje.\"\n value={chosen}\n options={METHODS.map((m) => ({ value: m.value, label: m.label }))}\n onChange={(next) => set({ paymentMethods: next as PaymentMethodKind[] })}\n />\n {chosen.length > 0 && !value.paymentProvider && (\n <p className=\"flex items-start gap-2 py-3 text-xs text-muted-foreground\">\n <AlertTriangle className=\"mt-0.5 h-3.5 w-3.5 shrink-0\" />\n Sem um gateway cobrando, todo pedido nasce <strong className=\"font-medium\">pendente</strong> e\n espera você confirmar que o dinheiro caiu. Isso funciona — é como as lojas com Pix por\n chave e pagamento na entrega operam — mas a confirmação é sua.\n </p>\n )}\n </SettingsGroup>\n\n <div>\n <div className=\"flex items-start justify-between gap-4 px-1 pb-1 pt-4\">\n <div>\n <h3 className=\"text-sm font-semibold\">Quem cobra</h3>\n <p className=\"mt-0.5 text-[10px] text-muted-foreground\">\n O provedor marcado é quem abre a cobrança quando o cliente finaliza a compra — só um\n cobra por vez. A credencial vai para o cofre, nunca para o banco da loja.\n </p>\n </div>\n <AddConnectorButton onClick={() => setAdding(true)} />\n </div>\n <div className=\"rounded-card border bg-card shadow-sm\">\n {payment.length === 0 ? (\n <p className=\"p-4 text-sm text-muted-foreground\">\n Nenhum provedor de pagamento disponível para este app ainda.\n </p>\n ) : (\n <ul className=\"divide-y\" role=\"radiogroup\" aria-label=\"Quem cobra\">\n {payment.map((connector) => (\n <PaymentProviderRow\n key={connector.id}\n connector={connector}\n selected={value.paymentProvider === connector.slug}\n onSelect={(c) => { movedFrom.current = null; set({ paymentProvider: c.slug }) }}\n onOpen={openJourney}\n />\n ))}\n <ManualChargeRow\n selected={value.paymentProvider === ''}\n onSelect={() => { movedFrom.current = null; set({ paymentProvider: '' }) }}\n />\n </ul>\n )}\n </div>\n {movedFrom.current && (\n <p className=\"flex items-start gap-2 px-1 pt-2 text-xs text-muted-foreground\">\n <AlertTriangle className=\"mt-0.5 h-3.5 w-3.5 shrink-0 text-amber-600\" />\n <span>\n <strong className=\"font-medium\">{movedFrom.current}</strong> não está mais conectado, então\n a cobrança passou para o provedor marcado acima. Reconecte-o para voltar.\n </span>\n </p>\n )}\n {staleProvider && (\n <p className=\"flex items-start gap-2 px-1 pt-2 text-xs text-destructive\">\n <AlertTriangle className=\"mt-0.5 h-3.5 w-3.5 shrink-0\" />\n A loja cobra por <strong className=\"font-medium\">{value.paymentProvider}</strong>, que não\n está conectado agora, e não há outro para assumir. Enquanto isso os pedidos nascem\n pendentes.\n </p>\n )}\n </div>\n\n {charging && (\n <ReceivingAccountsGroup\n provider={charging.slug}\n providerName={charging.name}\n methods={chosen}\n value={value.receivingAccounts}\n onChange={(receivingAccounts) => set({ receivingAccounts })}\n />\n )}\n\n <AddConnectorPanel\n open={adding}\n onOpenChange={setAdding}\n connectors={connectors}\n // The button lives under \"Provedores de pagamento\" and must offer only\n // those: it was listing the ERP and the carrier too.\n categories={PAYMENT_CATEGORIES}\n onSelect={(connector) => {\n setAdding(false)\n openJourney(connector)\n }}\n />\n <ConnectorDetail\n connector={selected}\n open={!!selected}\n onOpenChange={(open) => { if (!open) setSelected(null) }}\n />\n </SettingsState>\n )\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ProductContentTab-PSNDS7JZ.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ProductListingTab-55Y5RXU7.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ProductMarketPricesTab-QD2ZXEWL.js"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { ShippingSettings } from './chunk-STHGZWBQ.js';
|
|
2
|
+
import './chunk-4JM32Z7J.js';
|
|
3
|
+
import './chunk-6V2VAUWP.js';
|
|
4
|
+
import './chunk-STZYH32S.js';
|
|
5
|
+
import './chunk-R5CUDFOI.js';
|
|
6
|
+
import './chunk-YUG6XQHJ.js';
|
|
7
|
+
import './chunk-2MXOKJQO.js';
|
|
8
|
+
//# sourceMappingURL=ShippingSettings-UBTNRBJ4.js.map
|
|
9
|
+
//# sourceMappingURL=ShippingSettings-UBTNRBJ4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"ShippingSettings-UBTNRBJ4.js"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { shopCustomerLookup, resolveTerm, candidateMeta } from './chunk-TDV3SFXT.js';
|
|
2
|
+
import { buildStockLocationsRegistry } from './chunk-STZYH32S.js';
|
|
3
|
+
import { listProductsDetailed, invalidateProductLists, listProductsCached } from './chunk-YUG6XQHJ.js';
|
|
4
|
+
import { errorMessage } from './chunk-2MXOKJQO.js';
|
|
2
5
|
import * as React7 from 'react';
|
|
3
6
|
import React7__default, { useState, useEffect, useRef, useCallback, useMemo } from 'react';
|
|
4
7
|
import { Button, Modal, ModalContent, ModalHeader, ModalTitle, ModalDescription, Input, ModalFooter, formatPhone, toast, Textarea, Select, SelectTrigger, SelectValue, SelectContent, SelectItem, DataTable, ConfirmDialog, Skeleton, ModalPortal, ModalOverlay, ModalBody, SearchSelect } from '@fayz-ai/ui';
|
|
@@ -4310,5 +4313,5 @@ var ShopPage = ({ provider, section }) => {
|
|
|
4310
4313
|
ShopPage.displayName = "ShopPage";
|
|
4311
4314
|
|
|
4312
4315
|
export { ShopOrderDetailSlot, ShopPage };
|
|
4313
|
-
//# sourceMappingURL=ShopPage-
|
|
4314
|
-
//# sourceMappingURL=ShopPage-
|
|
4316
|
+
//# sourceMappingURL=ShopPage-NARKHXOO.js.map
|
|
4317
|
+
//# sourceMappingURL=ShopPage-NARKHXOO.js.map
|