@iann29/rastro 0.10.9 → 0.11.1
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/README.md +8 -0
- package/agent/integration.md +45 -0
- package/agent/manifest.json +4 -4
- package/dist/client/federation.d.ts +82 -9
- package/dist/client/federation.d.ts.map +1 -1
- package/dist/client/federation.js +40 -2
- package/dist/client/federation.js.map +1 -1
- package/dist/client/index.d.ts +465 -8
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +259 -7
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/api.d.ts +10 -0
- package/dist/component/_generated/api.d.ts.map +1 -1
- package/dist/component/_generated/api.js.map +1 -1
- package/dist/component/_generated/component.d.ts +274 -21
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/_generated/server.d.ts +2 -0
- package/dist/component/_generated/server.d.ts.map +1 -1
- package/dist/component/_generated/server.js.map +1 -1
- package/dist/component/constants.d.ts +31 -0
- package/dist/component/constants.d.ts.map +1 -1
- package/dist/component/constants.js +31 -0
- package/dist/component/constants.js.map +1 -1
- package/dist/component/convex.config.d.ts +2 -0
- package/dist/component/convex.config.js +7 -0
- package/dist/component/convex.config.js.map +1 -1
- package/dist/component/errors.d.ts +1 -1
- package/dist/component/errors.d.ts.map +1 -1
- package/dist/component/errors.js.map +1 -1
- package/dist/component/http.d.ts.map +1 -1
- package/dist/component/http.js +64 -0
- package/dist/component/http.js.map +1 -1
- package/dist/component/leadAdsValidators.d.ts +1106 -0
- package/dist/component/leadAdsValidators.d.ts.map +1 -0
- package/dist/component/leadAdsValidators.js +311 -0
- package/dist/component/leadAdsValidators.js.map +1 -0
- package/dist/component/leadFormRules.d.ts +60 -0
- package/dist/component/leadFormRules.d.ts.map +1 -0
- package/dist/component/leadFormRules.js +140 -0
- package/dist/component/leadFormRules.js.map +1 -0
- package/dist/component/leadFormStore.d.ts +16 -0
- package/dist/component/leadFormStore.d.ts.map +1 -0
- package/dist/component/leadFormStore.js +92 -0
- package/dist/component/leadFormStore.js.map +1 -0
- package/dist/component/leadgenToken.d.ts +56 -0
- package/dist/component/leadgenToken.d.ts.map +1 -0
- package/dist/component/leadgenToken.js +262 -0
- package/dist/component/leadgenToken.js.map +1 -0
- package/dist/component/leads.d.ts +76 -7
- package/dist/component/leads.d.ts.map +1 -1
- package/dist/component/leads.js +112 -78
- package/dist/component/leads.js.map +1 -1
- package/dist/component/meta.d.ts.map +1 -1
- package/dist/component/meta.js +21 -1
- package/dist/component/meta.js.map +1 -1
- package/dist/component/metaFake.d.ts +44 -0
- package/dist/component/metaFake.d.ts.map +1 -1
- package/dist/component/metaFake.js +400 -1
- package/dist/component/metaFake.js.map +1 -1
- package/dist/component/metaGraph.d.ts +91 -0
- package/dist/component/metaGraph.d.ts.map +1 -1
- package/dist/component/metaGraph.js +217 -0
- package/dist/component/metaGraph.js.map +1 -1
- package/dist/component/metaLeads.d.ts +683 -0
- package/dist/component/metaLeads.d.ts.map +1 -0
- package/dist/component/metaLeads.js +2639 -0
- package/dist/component/metaLeads.js.map +1 -0
- package/dist/component/schema.d.ts +420 -5
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +176 -1
- package/dist/component/schema.js.map +1 -1
- package/dist/component/validators.d.ts +235 -11
- package/dist/component/validators.d.ts.map +1 -1
- package/dist/component/validators.js +14 -1
- package/dist/component/validators.js.map +1 -1
- package/dist/tracker/generated.d.ts +5 -5
- package/dist/tracker/generated.d.ts.map +1 -1
- package/dist/tracker/generated.js +5 -5
- package/dist/tracker/generated.js.map +1 -1
- package/dist/ui/campaigns/CampaignsView.d.ts +5 -1
- package/dist/ui/campaigns/CampaignsView.d.ts.map +1 -1
- package/dist/ui/campaigns/CampaignsView.js.map +1 -1
- package/dist/ui/campaigns/Drawer.d.ts.map +1 -1
- package/dist/ui/campaigns/Drawer.js +8 -26
- package/dist/ui/campaigns/Drawer.js.map +1 -1
- package/dist/ui/campaigns/labels.d.ts +29 -1
- package/dist/ui/campaigns/labels.d.ts.map +1 -1
- package/dist/ui/campaigns/labels.js +77 -2
- package/dist/ui/campaigns/labels.js.map +1 -1
- package/dist/ui/campaigns/model.js +2 -2
- package/dist/ui/campaigns/model.js.map +1 -1
- package/dist/ui/forms/FirstContact.d.ts +19 -0
- package/dist/ui/forms/FirstContact.d.ts.map +1 -0
- package/dist/ui/forms/FirstContact.js +81 -0
- package/dist/ui/forms/FirstContact.js.map +1 -0
- package/dist/ui/forms/FormLead.d.ts +28 -0
- package/dist/ui/forms/FormLead.d.ts.map +1 -0
- package/dist/ui/forms/FormLead.js +199 -0
- package/dist/ui/forms/FormLead.js.map +1 -0
- package/dist/ui/forms/FormRulesDrawer.d.ts +49 -0
- package/dist/ui/forms/FormRulesDrawer.d.ts.map +1 -0
- package/dist/ui/forms/FormRulesDrawer.js +149 -0
- package/dist/ui/forms/FormRulesDrawer.js.map +1 -0
- package/dist/ui/forms/FormsView.d.ts +10 -0
- package/dist/ui/forms/FormsView.d.ts.map +1 -0
- package/dist/ui/forms/FormsView.js +227 -0
- package/dist/ui/forms/FormsView.js.map +1 -0
- package/dist/ui/forms/Icons.d.ts +46 -0
- package/dist/ui/forms/Icons.d.ts.map +1 -0
- package/dist/ui/forms/Icons.js +45 -0
- package/dist/ui/forms/Icons.js.map +1 -0
- package/dist/ui/forms/RuleRow.d.ts +37 -0
- package/dist/ui/forms/RuleRow.d.ts.map +1 -0
- package/dist/ui/forms/RuleRow.js +80 -0
- package/dist/ui/forms/RuleRow.js.map +1 -0
- package/dist/ui/forms/WhatsAppButtonGuide.d.ts +33 -0
- package/dist/ui/forms/WhatsAppButtonGuide.d.ts.map +1 -0
- package/dist/ui/forms/WhatsAppButtonGuide.js +90 -0
- package/dist/ui/forms/WhatsAppButtonGuide.js.map +1 -0
- package/dist/ui/forms/index.d.ts +11 -0
- package/dist/ui/forms/index.d.ts.map +1 -0
- package/dist/ui/forms/index.js +7 -0
- package/dist/ui/forms/index.js.map +1 -0
- package/dist/ui/forms/journey.d.ts +19 -0
- package/dist/ui/forms/journey.d.ts.map +1 -0
- package/dist/ui/forms/journey.js +54 -0
- package/dist/ui/forms/journey.js.map +1 -0
- package/dist/ui/forms/model.d.ts +243 -0
- package/dist/ui/forms/model.d.ts.map +1 -0
- package/dist/ui/forms/model.js +564 -0
- package/dist/ui/forms/model.js.map +1 -0
- package/dist/ui/forms/sample.d.ts +36 -0
- package/dist/ui/forms/sample.d.ts.map +1 -0
- package/dist/ui/forms/sample.js +448 -0
- package/dist/ui/forms/sample.js.map +1 -0
- package/dist/ui/forms/types.d.ts +472 -0
- package/dist/ui/forms/types.d.ts.map +1 -0
- package/dist/ui/forms/types.js +2 -0
- package/dist/ui/forms/types.js.map +1 -0
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +4 -0
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/integrations/Overlay.d.ts +3 -1
- package/dist/ui/integrations/Overlay.d.ts.map +1 -1
- package/dist/ui/integrations/Overlay.js +2 -2
- package/dist/ui/integrations/Overlay.js.map +1 -1
- package/dist/ui/portfolio/PortfolioView.d.ts +4 -1
- package/dist/ui/portfolio/PortfolioView.d.ts.map +1 -1
- package/dist/ui/portfolio/PortfolioView.js.map +1 -1
- package/dist/ui/sample.d.ts +3 -1
- package/dist/ui/sample.d.ts.map +1 -1
- package/dist/ui/sample.js +2 -0
- package/dist/ui/sample.js.map +1 -1
- package/dist/ui/seed.d.ts +1 -1
- package/dist/ui/ui.css +2305 -0
- package/docs/federation.md +19 -0
- package/docs/meta-ads.md +723 -7
- package/docs/upgrading.md +70 -0
- package/llms.txt +1 -0
- package/package.json +1 -1
- package/src/component/_generated/api.ts +10 -0
- package/src/component/_generated/component.ts +290 -20
- package/src/component/_generated/server.ts +2 -0
- package/src/component/constants.ts +33 -0
- package/src/component/convex.config.ts +7 -0
- package/src/component/errors.ts +3 -1
- package/src/component/http.ts +75 -0
- package/src/component/leadAdsValidators.ts +376 -0
- package/src/component/leadFormRules.ts +202 -0
- package/src/component/leadFormStore.ts +129 -0
- package/src/component/leadgenToken.ts +348 -0
- package/src/component/leads.ts +136 -84
- package/src/component/meta.ts +21 -1
- package/src/component/metaFake.ts +485 -1
- package/src/component/metaGraph.ts +327 -0
- package/src/component/metaLeads.ts +3111 -0
- package/src/component/schema.ts +197 -1
- package/src/component/validators.ts +17 -1
- package/src/tracker/generated.ts +5 -5
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// The Formulários screens' line icons (the approved design's set) and the
|
|
3
|
+
// brand glyphs, inlined so the package needs no icon library.
|
|
4
|
+
import { BRAND_GLYPHS } from "../campaigns/glyphs.js";
|
|
5
|
+
const LINES = {
|
|
6
|
+
form: (_jsxs(_Fragment, { children: [_jsx("rect", { x: "4", y: "3", width: "16", height: "18", rx: "2" }), _jsx("path", { d: "M8 8h8M8 12h8M8 16h5" })] })),
|
|
7
|
+
door: (_jsxs(_Fragment, { children: [_jsx("path", { d: "M4 21h16M6 21V4a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v17" }), _jsx("circle", { cx: "14.5", cy: "12", r: "1", fill: "currentColor" })] })),
|
|
8
|
+
grip: (_jsxs(_Fragment, { children: [_jsx("circle", { cx: "9", cy: "6", r: "1.2", fill: "currentColor" }), _jsx("circle", { cx: "15", cy: "6", r: "1.2", fill: "currentColor" }), _jsx("circle", { cx: "9", cy: "12", r: "1.2", fill: "currentColor" }), _jsx("circle", { cx: "15", cy: "12", r: "1.2", fill: "currentColor" }), _jsx("circle", { cx: "9", cy: "18", r: "1.2", fill: "currentColor" }), _jsx("circle", { cx: "15", cy: "18", r: "1.2", fill: "currentColor" })] })),
|
|
9
|
+
arrow: _jsx("path", { d: "M5 12h14M13 6l6 6-6 6" }),
|
|
10
|
+
trash: _jsx("path", { d: "M4 7h16M10 11v6M14 11v6M6 7l1 13h10l1-13M9 7V4h6v3" }),
|
|
11
|
+
x: _jsx("path", { d: "M18 6 6 18M6 6l12 12" }),
|
|
12
|
+
plus: _jsx("path", { d: "M12 5v14M5 12h14" }),
|
|
13
|
+
chevR: _jsx("path", { d: "m9 6 6 6-6 6" }),
|
|
14
|
+
chevD: _jsx("path", { d: "m6 9 6 6 6-6" }),
|
|
15
|
+
chevU: _jsx("path", { d: "m6 15 6-6 6 6" }),
|
|
16
|
+
back: _jsx("path", { d: "M19 12H5M11 18l-6-6 6-6" }),
|
|
17
|
+
ext: (_jsx("path", { d: "M14 4h6v6M20 4l-9 9M18 14v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h5" })),
|
|
18
|
+
bolt: _jsx("path", { d: "M13 2 4 14h7l-1 8 9-12h-7z" }),
|
|
19
|
+
clock: (_jsxs(_Fragment, { children: [_jsx("circle", { cx: "12", cy: "12", r: "9" }), _jsx("path", { d: "M12 7v5l3 2" })] })),
|
|
20
|
+
info: (_jsxs(_Fragment, { children: [_jsx("circle", { cx: "12", cy: "12", r: "9" }), _jsx("path", { d: "M12 11v5M12 8h.01" })] })),
|
|
21
|
+
alert: (_jsxs(_Fragment, { children: [_jsx("path", { d: "M12 3 2 20h20z" }), _jsx("path", { d: "M12 10v4M12 17h.01" })] })),
|
|
22
|
+
phone: (_jsx("path", { d: "M5 4h4l2 5-2.5 1.5a11 11 0 0 0 5 5L15 13l5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2z" })),
|
|
23
|
+
filter: _jsx("path", { d: "M4 5h16l-6 8v6l-4-2v-4z" }),
|
|
24
|
+
chatin: (_jsxs(_Fragment, { children: [_jsx("path", { d: "M21 12a8 8 0 0 1-11.6 7.1L4 20l1-4.4A8 8 0 1 1 21 12z" }), _jsx("path", { d: "M9 11h6M9 14h3" })] })),
|
|
25
|
+
hand: (_jsx("path", { d: "M8 13V5.5a1.5 1.5 0 0 1 3 0V11M11 10V4.5a1.5 1.5 0 0 1 3 0V11M14 10.5V6a1.5 1.5 0 0 1 3 0v8a7 7 0 0 1-7 7h-.5A6.5 6.5 0 0 1 4 15.5l-1.4-3a1.5 1.5 0 0 1 2.6-1.5L8 14" })),
|
|
26
|
+
undo: (_jsxs(_Fragment, { children: [_jsx("path", { d: "M9 14 4 9l5-5" }), _jsx("path", { d: "M4 9h10a6 6 0 0 1 0 12h-3" })] })),
|
|
27
|
+
check: _jsx("path", { d: "M20 6 9 17l-5-5" }),
|
|
28
|
+
lock: (_jsxs(_Fragment, { children: [_jsx("rect", { x: "4", y: "11", width: "16", height: "10", rx: "2" }), _jsx("path", { d: "M8 11V7a4 4 0 0 1 8 0v4" })] })),
|
|
29
|
+
shuffle: _jsx("path", { d: "M16 3h5v5M4 20 21 3M21 16v5h-5M15 15l6 6M4 4l5 5" }),
|
|
30
|
+
cal: (_jsxs(_Fragment, { children: [_jsx("rect", { x: "3", y: "5", width: "18", height: "16", rx: "2" }), _jsx("path", { d: "M3 10h18M8 3v4M16 3v4" })] })),
|
|
31
|
+
gauge: (_jsxs(_Fragment, { children: [_jsx("path", { d: "M12 14l4-4" }), _jsx("path", { d: "M3.3 17a9 9 0 1 1 17.4 0" })] })),
|
|
32
|
+
refresh: (_jsx("path", { d: "M20 11a8 8 0 0 0-14.6-4.5L3 9M3 4v5h5M4 13a8 8 0 0 0 14.6 4.5L21 15M21 20v-5h-5" })),
|
|
33
|
+
route: (_jsxs(_Fragment, { children: [_jsx("circle", { cx: "6", cy: "19", r: "2.5" }), _jsx("path", { d: "M8.5 19H17a3.5 3.5 0 0 0 0-7H7a3.5 3.5 0 0 1 0-7h8.5" }), _jsx("circle", { cx: "18", cy: "5", r: "2.5" })] })),
|
|
34
|
+
partner: (_jsxs(_Fragment, { children: [_jsx("circle", { cx: "10", cy: "7", r: "4" }), _jsx("path", { d: "M2 21v-2a4 4 0 0 1 4-4h6" }), _jsx("path", { d: "m18 13 1.2 2.6 2.8.3-2.1 1.9.6 2.7-2.5-1.4-2.5 1.4.6-2.7-2.1-1.9 2.8-.3z" })] })),
|
|
35
|
+
};
|
|
36
|
+
/** A stroke icon from the design's set; 16px by default. */
|
|
37
|
+
export function Icon({ name, size = 16, stroke = 1.9, }) {
|
|
38
|
+
return (_jsx("svg", { className: "rastro-forms__icon", viewBox: "0 0 24 24", width: size, height: size, fill: "none", stroke: "currentColor", strokeWidth: stroke, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: LINES[name] }));
|
|
39
|
+
}
|
|
40
|
+
/** Instagram, Facebook or WhatsApp in its color (or `color`). */
|
|
41
|
+
export function Glyph({ brand, size = 12, color, }) {
|
|
42
|
+
const glyph = BRAND_GLYPHS[brand];
|
|
43
|
+
return (_jsx("svg", { className: "rastro-forms__icon", viewBox: "0 0 24 24", width: size, height: size, "aria-hidden": "true", children: _jsx("path", { fill: color ?? glyph.hex, d: glyph.path }) }));
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=Icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icons.js","sourceRoot":"","sources":["../../../src/ui/forms/Icons.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import { type DraftRule } from "./model.js";
|
|
3
|
+
import type { FormBoard, MetaFormQuestion } from "./types.js";
|
|
4
|
+
/** The column options, grouped when the board groups them. */
|
|
5
|
+
export declare function ColumnOptions({ board }: {
|
|
6
|
+
board: FormBoard | undefined;
|
|
7
|
+
}): import("react").JSX.Element;
|
|
8
|
+
/** A select drawn as the design's field: a dot, the choice, a chevron. */
|
|
9
|
+
export declare function DotSelect({ label, value, color, disabled, tone, extra, onChange, children, }: {
|
|
10
|
+
label: string;
|
|
11
|
+
value: string;
|
|
12
|
+
color: string;
|
|
13
|
+
disabled: boolean;
|
|
14
|
+
tone?: "discard";
|
|
15
|
+
extra?: ReactNode;
|
|
16
|
+
onChange: (value: string) => void;
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
}): import("react").JSX.Element;
|
|
19
|
+
/**
|
|
20
|
+
* One rule: "Se <pergunta> for <respostas> → <coluna>", the leads it decided
|
|
21
|
+
* this month, and, for a discard, the reason the card keeps.
|
|
22
|
+
*/
|
|
23
|
+
export declare function RuleRow({ rule, index, total, questions, board, editable, dragging, onChange, onRemove, onMove, onDragStart, onDragEnd, }: {
|
|
24
|
+
rule: DraftRule;
|
|
25
|
+
index: number;
|
|
26
|
+
total: number;
|
|
27
|
+
questions: readonly MetaFormQuestion[];
|
|
28
|
+
board: FormBoard | undefined;
|
|
29
|
+
editable: boolean;
|
|
30
|
+
dragging: boolean;
|
|
31
|
+
onChange: (rule: DraftRule) => void;
|
|
32
|
+
onRemove: () => void;
|
|
33
|
+
onMove: (to: number) => void;
|
|
34
|
+
onDragStart: () => void;
|
|
35
|
+
onDragEnd: () => void;
|
|
36
|
+
}): import("react").JSX.Element;
|
|
37
|
+
//# sourceMappingURL=RuleRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuleRow.d.ts","sourceRoot":"","sources":["../../../src/ui/forms/RuleRow.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5E,OAAO,EAQL,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAc,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAgB1E,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,GAAG,SAAS,CAAA;CAAE,+BAuBxE;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAoBA;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,EACtB,IAAI,EACJ,KAAK,EACL,KAAK,EACL,SAAS,EACT,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,GACV,EAAE;IACD,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACvC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IACpC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,+BAkMA"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId, useState } from "react";
|
|
3
|
+
import { Icon } from "./Icons.js";
|
|
4
|
+
import { answerLabels, colorOf, columnOf, discardOf, MAX_DISCARD_REASON, pickableColumns, ruleProblem, } from "./model.js";
|
|
5
|
+
const DISCARD = "__discard";
|
|
6
|
+
/** Columns in board order, under their block when the board has blocks. */
|
|
7
|
+
function groupsOf(columns) {
|
|
8
|
+
const groups = [];
|
|
9
|
+
for (const column of columns) {
|
|
10
|
+
const name = column.group ?? null;
|
|
11
|
+
const last = groups.at(-1);
|
|
12
|
+
if (last && last.name === name)
|
|
13
|
+
last.columns.push(column);
|
|
14
|
+
else
|
|
15
|
+
groups.push({ name, columns: [column] });
|
|
16
|
+
}
|
|
17
|
+
return groups;
|
|
18
|
+
}
|
|
19
|
+
/** The column options, grouped when the board groups them. */
|
|
20
|
+
export function ColumnOptions({ board }) {
|
|
21
|
+
const groups = groupsOf(pickableColumns(board));
|
|
22
|
+
return (_jsx(_Fragment, { children: groups.map((group, index) => group.name ? (_jsx("optgroup", { label: group.name, children: group.columns.map((column) => (_jsx("option", { value: column.key, children: column.name }, column.key))) }, `${group.name}:${index}`)) : (group.columns.map((column) => (_jsx("option", { value: column.key, children: column.name }, column.key))))) }));
|
|
23
|
+
}
|
|
24
|
+
/** A select drawn as the design's field: a dot, the choice, a chevron. */
|
|
25
|
+
export function DotSelect({ label, value, color, disabled, tone, extra, onChange, children, }) {
|
|
26
|
+
return (_jsxs("span", { className: "rastro-forms__select", "data-tone": tone, children: [_jsx("i", { className: "rastro-forms__dot", style: { background: color }, "aria-hidden": "true" }), _jsx("select", { "aria-label": label, value: value, disabled: disabled, onChange: (event) => onChange(event.target.value), children: children }), extra, _jsx(Icon, { name: "chevD", size: 15 })] }));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* One rule: "Se <pergunta> for <respostas> → <coluna>", the leads it decided
|
|
30
|
+
* this month, and, for a discard, the reason the card keeps.
|
|
31
|
+
*/
|
|
32
|
+
export function RuleRow({ rule, index, total, questions, board, editable, dragging, onChange, onRemove, onMove, onDragStart, onDragEnd, }) {
|
|
33
|
+
const id = useId();
|
|
34
|
+
const question = questions.find((entry) => entry.key === rule.questionKey);
|
|
35
|
+
const [picking, setPicking] = useState(rule.fresh || rule.answers.length === 0);
|
|
36
|
+
const reason = "discard" in rule.to ? rule.to.discard : null;
|
|
37
|
+
const discard = reason !== null;
|
|
38
|
+
const target = "column" in rule.to ? columnOf(board, rule.to.column) : null;
|
|
39
|
+
const discardLook = discardOf(board);
|
|
40
|
+
const problem = editable ? ruleProblem(rule, questions, board) : null;
|
|
41
|
+
// Any change makes the stored count wrong: it counted the old rule.
|
|
42
|
+
const change = (next) => onChange({ ...rule, ...next, monthCount: null });
|
|
43
|
+
const labels = answerLabels(question, rule.answers);
|
|
44
|
+
const onGripKey = (event) => {
|
|
45
|
+
if (event.key === "ArrowUp" && index > 0) {
|
|
46
|
+
event.preventDefault();
|
|
47
|
+
onMove(index - 1);
|
|
48
|
+
}
|
|
49
|
+
else if (event.key === "ArrowDown" && index < total - 1) {
|
|
50
|
+
event.preventDefault();
|
|
51
|
+
onMove(index + 1);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
return (_jsxs(_Fragment, { children: [_jsx("span", { className: "rastro-forms__grip", children: _jsx("button", { type: "button", className: "rastro-forms__icon-btn", "aria-label": `Mover regra ${index + 1} (setas para cima e para baixo)`, disabled: !editable || total < 2, onKeyDown: onGripKey, onPointerDown: editable ? onDragStart : undefined, onPointerUp: onDragEnd, children: _jsx(Icon, { name: "grip", size: 14 }) }) }), _jsxs("div", { className: "rastro-forms__rule-body", children: [_jsxs("p", { className: "rastro-forms__rule-q", children: ["Se", " ", editable ? (_jsxs("span", { className: "rastro-forms__q-select", children: [_jsxs("select", { "aria-label": `Pergunta da regra ${index + 1}`, value: rule.questionKey, onChange: (event) => change({ questionKey: event.target.value, answers: [] }), children: [!question && _jsx("option", { value: "", children: "Escolha a pergunta" }), questions.map((entry) => (_jsx("option", { value: entry.key, children: entry.label }, entry.key)))] }), _jsx(Icon, { name: "chevD", size: 12 })] })) : (_jsx("b", { children: question?.label ?? "Pergunta removida da Meta" })), " ", "for"] }), _jsxs("div", { className: "rastro-forms__answers", role: picking && editable ? "group" : undefined, "aria-label": picking && editable ? `Respostas da regra ${index + 1}` : undefined, children: [picking && editable && question?.options
|
|
55
|
+
? question.options.map((option) => {
|
|
56
|
+
const on = rule.answers.includes(option.key);
|
|
57
|
+
return (_jsx("button", { type: "button", className: "rastro-forms__ans", "data-on": on ? "" : undefined, "aria-pressed": on, onClick: () => change({
|
|
58
|
+
answers: on
|
|
59
|
+
? rule.answers.filter((key) => key !== option.key)
|
|
60
|
+
: [...rule.answers, option.key],
|
|
61
|
+
}), children: option.value }, option.key));
|
|
62
|
+
})
|
|
63
|
+
: labels.map((label, at) => (_jsxs("span", { className: "rastro-forms__ans-wrap", children: [at > 0 && _jsx("span", { className: "rastro-forms__or", children: "ou" }), _jsx("span", { className: "rastro-forms__ans", "data-on": "", children: label })] }, `${label}:${at}`))), editable && question?.options && (_jsx("button", { type: "button", className: "rastro-forms__ans-edit", "aria-expanded": picking, "aria-label": picking ? "Pronto" : `Escolher respostas da regra ${index + 1}`, onClick: () => setPicking((value) => !value), children: picking ? "Pronto" : _jsx(Icon, { name: "plus", size: 12 }) }))] })] }), _jsx("span", { className: "rastro-forms__rule-arrow", "aria-hidden": "true", children: _jsx(Icon, { name: "arrow", size: 16 }) }), _jsx("span", { className: "rastro-forms__rule-dest", children: _jsxs(DotSelect, { label: `Destino da regra ${index + 1}`, value: discard ? DISCARD : (target?.key ?? ""), color: discard ? discardLook.color : colorOf(target ?? undefined), disabled: !editable, tone: discard ? "discard" : undefined, onChange: (value) => change({
|
|
64
|
+
to: value === DISCARD
|
|
65
|
+
? { discard: reason ?? "" }
|
|
66
|
+
: { column: value },
|
|
67
|
+
}), children: [!discard && !target && _jsx("option", { value: "", children: "Escolha a coluna" }), _jsx(ColumnOptions, { board: board }), _jsx("option", { value: DISCARD, children: discardLook.name })] }) }), _jsxs("span", { className: "rastro-forms__cnt", "aria-label": countLabel(rule), children: [_jsx("b", { className: "rastro-num", children: rule.fresh
|
|
68
|
+
? "nova"
|
|
69
|
+
: rule.monthCount === null
|
|
70
|
+
? "—"
|
|
71
|
+
: rule.monthCount.toLocaleString("pt-BR") }), !rule.fresh && _jsx("span", { children: "este m\u00EAs" })] }), _jsx("span", { className: "rastro-forms__rule-trash", children: _jsx("button", { type: "button", className: "rastro-forms__icon-btn", "aria-label": `Remover regra ${index + 1}`, disabled: !editable, onClick: onRemove, children: _jsx(Icon, { name: "trash", size: 15 }) }) }), discard && (_jsxs("p", { className: "rastro-forms__motivo", children: [_jsx(Icon, { name: "undo", size: 13 }), editable ? (_jsx("label", { htmlFor: `${id}-reason`, children: "Motivo no card:" })) : (_jsx("span", { children: "Motivo no card:" })), editable ? (_jsx("input", { id: `${id}-reason`, value: reason ?? "", maxLength: MAX_DISCARD_REASON, placeholder: "Ex.: Or\u00E7amento abaixo do m\u00EDnimo", onChange: (event) => change({ to: { discard: event.target.value } }) })) : (_jsx("b", { children: reason })), _jsx("span", { className: "rastro-forms__motivo-tail", children: "\u00B7 d\u00E1 para devolver" })] })), problem && !picking && (_jsx("p", { className: "rastro-forms__rule-problem", role: "note", children: problem })), dragging && _jsx("span", { className: "rastro-forms__sr", children: "Arrastando" })] }));
|
|
72
|
+
}
|
|
73
|
+
function countLabel(rule) {
|
|
74
|
+
if (rule.fresh)
|
|
75
|
+
return "Regra nova";
|
|
76
|
+
if (rule.monthCount === null)
|
|
77
|
+
return "Contagem refeita depois de salvar";
|
|
78
|
+
return `${rule.monthCount.toLocaleString("pt-BR")} leads este mês`;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=RuleRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RuleRow.js","sourceRoot":"","sources":["../../../src/ui/forms/RuleRow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { GuideCheck, IntegrationSite, MetaForm, MetaPage } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* What Rastro can check on its own, from the Page's forms: the copy with the
|
|
4
|
+
* button published (a published form cannot be edited, so the company
|
|
5
|
+
* duplicates it), and the button on its end screen as Meta shows it.
|
|
6
|
+
*/
|
|
7
|
+
export declare function guideChecks(form: MetaForm, pageForms: readonly MetaForm[]): GuideCheck[];
|
|
8
|
+
/**
|
|
9
|
+
* D3: turning on the end screen's "Falar no WhatsApp" button, four steps in
|
|
10
|
+
* Meta's form editor, and what Rastro (and the host) can check on their own.
|
|
11
|
+
* The illustration is drawn, not Meta's screen; it hides on a phone.
|
|
12
|
+
*/
|
|
13
|
+
export declare function WhatsAppButtonGuide({ form, site, page, pageForms, campaignName, senderLabel, whatsappNumber, checks, productName, formUrl, refreshing, onRefresh, onClose, }: {
|
|
14
|
+
form: MetaForm;
|
|
15
|
+
site: IntegrationSite;
|
|
16
|
+
page?: MetaPage | null;
|
|
17
|
+
/** The Page's forms: the published copy is found among them. */
|
|
18
|
+
pageForms?: readonly MetaForm[];
|
|
19
|
+
/** The campaign that runs the form ("Clareamento — outubro"). */
|
|
20
|
+
campaignName?: string | null;
|
|
21
|
+
senderLabel?: string;
|
|
22
|
+
whatsappNumber?: string;
|
|
23
|
+
/** The host's own checks, listed first ("Número da Recepção conectado"). */
|
|
24
|
+
checks?: readonly GuideCheck[];
|
|
25
|
+
/** Who checks on its own: "O Rastro confere sozinho". */
|
|
26
|
+
productName?: string;
|
|
27
|
+
formUrl?: string;
|
|
28
|
+
refreshing?: boolean;
|
|
29
|
+
/** "Conferir de novo": read the Page's forms again. */
|
|
30
|
+
onRefresh?: () => void;
|
|
31
|
+
onClose: () => void;
|
|
32
|
+
}): import("react").JSX.Element;
|
|
33
|
+
//# sourceMappingURL=WhatsAppButtonGuide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhatsAppButtonGuide.d.ts","sourceRoot":"","sources":["../../../src/ui/forms/WhatsAppButtonGuide.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,QAAQ,EACR,QAAQ,EACT,MAAM,YAAY,CAAC;AAkBpB;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,SAAS,QAAQ,EAAE,GAC7B,UAAU,EAAE,CAmCd;AAqID;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,SAAc,EACd,YAAY,EACZ,WAAW,EACX,cAAc,EACd,MAAW,EACX,WAAsB,EACtB,OAAO,EACP,UAAkB,EAClB,SAAS,EACT,OAAO,GACR,EAAE;IACD,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACvB,gEAAgE;IAChE,SAAS,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;IAChC,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,MAAM,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,+BA8HA"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId, useRef } from "react";
|
|
3
|
+
import { MetaMark } from "../integrations/Icons.js";
|
|
4
|
+
import { Overlay } from "../integrations/Overlay.js";
|
|
5
|
+
import { Glyph, Icon } from "./Icons.js";
|
|
6
|
+
import { metaFormsUrl } from "./model.js";
|
|
7
|
+
/** "Clínica Sorriso" → "CS". */
|
|
8
|
+
const pageInitials = (name) => {
|
|
9
|
+
const words = name.trim().split(/\s+/).filter(Boolean);
|
|
10
|
+
return (words.length > 1
|
|
11
|
+
? `${words[0][0]}${words[1][0]}`
|
|
12
|
+
: (words[0] ?? "?").slice(0, 2)).toLocaleUpperCase("pt-BR");
|
|
13
|
+
};
|
|
14
|
+
/** "Recepção · (11) 94567-1200" → "da Recepção". */
|
|
15
|
+
const senderOf = (senderLabel) => {
|
|
16
|
+
const name = senderLabel?.split(" · ")[0]?.trim();
|
|
17
|
+
return name ? `da ${name}` : "da empresa";
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* What Rastro can check on its own, from the Page's forms: the copy with the
|
|
21
|
+
* button published (a published form cannot be edited, so the company
|
|
22
|
+
* duplicates it), and the button on its end screen as Meta shows it.
|
|
23
|
+
*/
|
|
24
|
+
export function guideChecks(form, pageForms) {
|
|
25
|
+
const copy = pageForms.find((entry) => entry.formId !== form.formId &&
|
|
26
|
+
entry.status === "ACTIVE" &&
|
|
27
|
+
entry.name.startsWith(form.name));
|
|
28
|
+
const target = form.whatsappButton === true ? form : (copy ?? form);
|
|
29
|
+
const checks = [];
|
|
30
|
+
if (target !== form || form.whatsappButton === true)
|
|
31
|
+
checks.push({ label: `${target.name} encontrado na Página.`, state: "ok" });
|
|
32
|
+
else
|
|
33
|
+
checks.push({
|
|
34
|
+
label: `Cópia de ${form.name} publicada na Página.`,
|
|
35
|
+
state: "todo",
|
|
36
|
+
});
|
|
37
|
+
checks.push({
|
|
38
|
+
label: target.whatsappButton === true
|
|
39
|
+
? "Botão WhatsApp na tela final."
|
|
40
|
+
: target.whatsappButton === false
|
|
41
|
+
? "Botão WhatsApp na tela final · aguardando publicar"
|
|
42
|
+
: "Botão WhatsApp na tela final · a Meta não mostra, confirme no formulário",
|
|
43
|
+
state: target.whatsappButton === true
|
|
44
|
+
? "ok"
|
|
45
|
+
: target.whatsappButton === false
|
|
46
|
+
? "waiting"
|
|
47
|
+
: "todo",
|
|
48
|
+
});
|
|
49
|
+
checks.push({
|
|
50
|
+
label: "Mensagem pré-preenchida com o nome do formulário (opcional)",
|
|
51
|
+
state: "optional",
|
|
52
|
+
});
|
|
53
|
+
return checks;
|
|
54
|
+
}
|
|
55
|
+
function CheckMark({ state }) {
|
|
56
|
+
if (state === "ok")
|
|
57
|
+
return (_jsx("span", { className: "rastro-forms__chk", "data-state": "ok", children: _jsx(Icon, { name: "check", size: 11, stroke: 3 }) }));
|
|
58
|
+
return _jsx("span", { className: "rastro-forms__chk", "data-state": state });
|
|
59
|
+
}
|
|
60
|
+
const STATE_WORDS = {
|
|
61
|
+
ok: "feito",
|
|
62
|
+
waiting: "aguardando",
|
|
63
|
+
todo: "a fazer",
|
|
64
|
+
optional: "opcional",
|
|
65
|
+
};
|
|
66
|
+
/** The illustration of Meta's form editor, step 3 ringed. */
|
|
67
|
+
function MetaEditor({ form, pageName, whatsappNumber, }) {
|
|
68
|
+
return (_jsxs("div", { className: "rastro-forms__mwin", "aria-hidden": "true", children: [_jsxs("div", { className: "rastro-forms__chrome", children: [_jsx("i", {}), _jsx("i", {}), _jsx("i", {}), _jsxs("div", { className: "rastro-forms__url", children: [_jsx(Icon, { name: "lock", size: 11 }), "adsmanager.facebook.com \u203A Formul\u00E1rios instant\u00E2neos"] })] }), _jsxs("div", { className: "rastro-forms__mtop", children: [_jsx(MetaMark, { size: 22 }), _jsxs("span", { className: "rastro-forms__grow", children: [form.name, " (c\u00F3pia)"] }), _jsxs("span", { className: "rastro-forms__mb", children: [_jsx("span", { children: "Salvar rascunho" }), _jsx("span", { "data-primary": "", children: "Publicar" })] })] }), _jsxs("div", { className: "rastro-forms__mbody", children: [_jsxs("div", { className: "rastro-forms__mleft", children: [[
|
|
69
|
+
"Tipo de formulário",
|
|
70
|
+
"Introdução",
|
|
71
|
+
"Perguntas",
|
|
72
|
+
"Política de privacidade",
|
|
73
|
+
].map((title) => (_jsx("div", { className: "rastro-forms__msec", children: _jsxs("div", { className: "rastro-forms__msec-hd", children: [title, _jsx("span", { className: "rastro-forms__mck", children: _jsx(Icon, { name: "check", size: 10, stroke: 3 }) })] }) }, title))), _jsxs("div", { className: "rastro-forms__msec", "data-open": "", children: [_jsxs("div", { className: "rastro-forms__msec-hd", children: ["Tela final", _jsx(Icon, { name: "chevU", size: 16 })] }), _jsxs("div", { className: "rastro-forms__msec-bd", children: [_jsxs("div", { className: "rastro-forms__mf", children: [_jsx("span", { children: "T\u00EDtulo" }), _jsx("div", { children: "Obrigado! Recebemos seu pedido." })] }), _jsxs("div", { className: "rastro-forms__mf", children: [_jsx("span", { children: "Descri\u00E7\u00E3o" }), _jsx("div", { children: "Fale com a gente agora pelo WhatsApp." })] }), _jsxs("div", { className: "rastro-forms__mf", "data-ring": "", children: [_jsx("b", { className: "rastro-forms__ring-n", children: "3" }), _jsx("span", { children: "Bot\u00E3o de chamada para a\u00E7\u00E3o" }), _jsxs("div", { "data-dd": "", children: [_jsxs("span", { className: "rastro-forms__inline", children: [_jsx(Glyph, { brand: "whatsapp", size: 14, color: "#1c2b33" }), "Falar no WhatsApp"] }), _jsx(Icon, { name: "chevD", size: 14 })] })] }), _jsxs("div", { className: "rastro-forms__mf", children: [_jsx("span", { children: "N\u00FAmero do WhatsApp" }), _jsxs("div", { "data-dd": "", children: [_jsx("span", { children: whatsappNumber ?? "+55 00 00000-0000" }), _jsx(Icon, { name: "chevD", size: 14 })] })] }), _jsxs("div", { className: "rastro-forms__mf", children: [_jsx("span", { children: "Mensagem pr\u00E9-preenchida" }), _jsxs("div", { children: ["Oi! Vim do formul\u00E1rio ", form.name, "."] })] })] })] })] }), _jsxs("div", { className: "rastro-forms__mright", children: [_jsx("span", { className: "rastro-forms__mlbl", children: "Pr\u00E9-visualiza\u00E7\u00E3o \u00B7 Tela final" }), _jsxs("div", { className: "rastro-forms__mphone", children: [_jsxs("div", { className: "rastro-forms__mph", children: [_jsx("span", { className: "rastro-forms__mpg", children: pageInitials(pageName) }), pageName] }), _jsxs("div", { className: "rastro-forms__mpb", children: [_jsx("span", { className: "rastro-forms__mok", children: _jsx(Icon, { name: "check", size: 26, stroke: 2.6 }) }), _jsx("strong", { children: "Obrigado! Recebemos seu pedido." }), _jsx("p", { children: "Fale com a gente agora pelo WhatsApp." }), _jsxs("span", { className: "rastro-forms__mcta", children: [_jsx(Glyph, { brand: "whatsapp", size: 15, color: "#fff" }), "Falar no WhatsApp"] })] })] })] })] })] }));
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* D3: turning on the end screen's "Falar no WhatsApp" button, four steps in
|
|
77
|
+
* Meta's form editor, and what Rastro (and the host) can check on their own.
|
|
78
|
+
* The illustration is drawn, not Meta's screen; it hides on a phone.
|
|
79
|
+
*/
|
|
80
|
+
export function WhatsAppButtonGuide({ form, site, page, pageForms = [], campaignName, senderLabel, whatsappNumber, checks = [], productName = "Rastro", formUrl, refreshing = false, onRefresh, onClose, }) {
|
|
81
|
+
const id = useId();
|
|
82
|
+
const close = useRef(null);
|
|
83
|
+
const sender = senderOf(senderLabel);
|
|
84
|
+
const all = [...checks, ...guideChecks(form, pageForms)];
|
|
85
|
+
const pageName = page?.name ?? site.name;
|
|
86
|
+
return (_jsx(Overlay, { className: "rastro-forms__scrim", labelledBy: `${id}-title`, describedBy: `${id}-desc`, initialFocus: close, onClose: onClose, children: _jsxs("div", { className: "rastro-ui rastro-forms rastro-forms__guide", children: [_jsxs("div", { className: "rastro-forms__guide-l", children: [_jsxs("div", { className: "rastro-forms__guide-head", children: [_jsxs("div", { className: "rastro-forms__grow", children: [_jsx("p", { className: "rastro-forms__eyebrow", children: form.name }), _jsx("h2", { id: `${id}-title`, className: "rastro-forms__guide-title", children: "Ligar o bot\u00E3o \u201CFalar no WhatsApp\u201D" })] }), _jsx("button", { ref: close, type: "button", className: "rastro-forms__close", "data-inline": "", "aria-label": "Fechar", onClick: onClose, children: _jsx(Icon, { name: "x", size: 17 }) })] }), _jsx("p", { id: `${id}-desc`, className: "rastro-forms__guide-desc", children: "O lead toca no bot\u00E3o e manda a primeira mensagem. Leva 2 minutos, no Gerenciador de An\u00FAncios." }), _jsxs("ol", { className: "rastro-forms__steps", children: [_jsxs("li", { children: [_jsx("b", { children: "1" }), _jsxs("span", { children: ["Abra o ", _jsx("em", { children: "Gerenciador de An\u00FAncios" }), " no an\u00FAncio", campaignName
|
|
87
|
+
? ` da campanha ${campaignName}`
|
|
88
|
+
: " do formulário", "."] })] }), _jsxs("li", { children: [_jsx("b", { children: "2" }), _jsxs("span", { children: ["Em Formul\u00E1rio instant\u00E2neo, ", _jsx("em", { children: "duplique" }), " ", form.name, ". Formul\u00E1rio publicado n\u00E3o se edita."] })] }), _jsxs("li", { "data-on": "", children: [_jsx("b", { children: "3" }), _jsxs("span", { children: ["Na ", _jsx("em", { children: "Tela final" }), ", escolha o bot\u00E3o Falar no WhatsApp e o n\u00FAmero ", sender, "."] })] }), _jsxs("li", { children: [_jsx("b", { children: "4" }), _jsxs("span", { children: [_jsx("em", { children: "Publique" }), " e troque o formul\u00E1rio no an\u00FAncio."] })] })] }), _jsxs("div", { className: "rastro-forms__guide-checks", children: [_jsxs("p", { className: "rastro-forms__guide-sub", children: ["O ", productName, " confere sozinho"] }), _jsx("ul", { className: "rastro-forms__checks", children: all.map((check) => (_jsxs("li", { "data-state": check.state, children: [_jsx(CheckMark, { state: check.state }), _jsxs("span", { children: [check.label, _jsxs("span", { className: "rastro-forms__sr", children: [" ", "(", STATE_WORDS[check.state], ")"] })] })] }, check.label))) })] }), _jsxs("div", { className: "rastro-forms__guide-actions", children: [_jsxs("a", { className: "rastro-forms__btn", "data-block": "", href: formUrl ?? metaFormsUrl(form), target: "_blank", rel: "noreferrer", children: [_jsx(Icon, { name: "ext", size: 15 }), "Abrir o formul\u00E1rio na Meta"] }), onRefresh && (_jsxs("button", { type: "button", className: "rastro-forms__btn", "data-variant": "outline", "data-block": "", disabled: refreshing, onClick: onRefresh, children: [_jsx(Icon, { name: "refresh", size: 15 }), refreshing ? "Conferindo…" : "Conferir de novo"] }))] })] }), _jsxs("div", { className: "rastro-forms__guide-r", children: [_jsx("span", { className: "rastro-forms__ilus", children: "Ilustra\u00E7\u00E3o da tela da Meta" }), _jsx(MetaEditor, { form: form, pageName: pageName, whatsappNumber: whatsappNumber })] })] }) }));
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=WhatsAppButtonGuide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WhatsAppButtonGuide.js","sourceRoot":"","sources":["../../../src/ui/forms/WhatsAppButtonGuide.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { FormsView } from "./FormsView.js";
|
|
2
|
+
export { FormRulesDrawer } from "./FormRulesDrawer.js";
|
|
3
|
+
export type { FormRulesDrawerProps } from "./FormRulesDrawer.js";
|
|
4
|
+
export { guideChecks, WhatsAppButtonGuide } from "./WhatsAppButtonGuide.js";
|
|
5
|
+
export { defaultFormLeadPath, FormLeadAnswers, FormLeadBadge, } from "./FormLead.js";
|
|
6
|
+
export { formLeadFromJourney } from "./journey.js";
|
|
7
|
+
export type { JourneyForm } from "./journey.js";
|
|
8
|
+
export { buttonState, choiceQuestions, DEFAULT_BRAKES, defaultFirstContactText, entryOf, fillTemplate, FIRST_NAME_VARIABLE, formsSummary, formState, formStatusLabel, metaFormsRows, MIN_WAIT_MINUTES, pageErrorCode, pageGroups, pageIssue, pagesWithStatus, reportKey, reportRowOf, rulesSummaryOf, simulationDraftOf, simulationSegments, templateParts, } from "./model.js";
|
|
9
|
+
export type { ButtonState, FormRow, FormState, PageGroup, PageIssue, PageIssueKind, SimulationSegment, } from "./model.js";
|
|
10
|
+
export type { FirstContact, FirstContactBrakes, FirstContactMode, FormBoard, FormColumn, FormColumnCount, FormDiscardCount, FormLead, FormLeadDecision, FormLeadOrigin, FormLeadRuleMatch, FormLeadStep, FormLeadVia, FormReportRow, FormRule, FormRules, FormRulesChoice, FormRulesDraft, FormRulesSimulation, FormRulesSummary, FormRuleTarget, FormsBusy, FormsReport, FormsViewProps, GuideCheck, MetaForm, MetaFormOption, MetaFormQuestion, MetaFormsPage, MetaFormsRow, MetaFormStatus, MetaPage, SetFormRulesInput, } from "./types.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/forms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,SAAS,EACT,eAAe,EACf,SAAS,EACT,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,WAAW,EACX,OAAO,EACP,SAAS,EACT,SAAS,EACT,SAAS,EACT,aAAa,EACb,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,QAAQ,EACR,SAAS,EACT,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,WAAW,EACX,cAAc,EACd,UAAU,EACV,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { FormsView } from "./FormsView.js";
|
|
2
|
+
export { FormRulesDrawer } from "./FormRulesDrawer.js";
|
|
3
|
+
export { guideChecks, WhatsAppButtonGuide } from "./WhatsAppButtonGuide.js";
|
|
4
|
+
export { defaultFormLeadPath, FormLeadAnswers, FormLeadBadge, } from "./FormLead.js";
|
|
5
|
+
export { formLeadFromJourney } from "./journey.js";
|
|
6
|
+
export { buttonState, choiceQuestions, DEFAULT_BRAKES, defaultFirstContactText, entryOf, fillTemplate, FIRST_NAME_VARIABLE, formsSummary, formState, formStatusLabel, metaFormsRows, MIN_WAIT_MINUTES, pageErrorCode, pageGroups, pageIssue, pagesWithStatus, reportKey, reportRowOf, rulesSummaryOf, simulationDraftOf, simulationSegments, templateParts, } from "./model.js";
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/forms/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,SAAS,EACT,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,SAAS,EACT,eAAe,EACf,SAAS,EACT,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A form lead as the component's lead journey holds it (`leads.journey`,
|
|
3
|
+
* `form`), turned into the `FormLead` the screens draw. Pure: the answers,
|
|
4
|
+
* the origin and the decision only, never the person.
|
|
5
|
+
*/
|
|
6
|
+
import type { LeadJourney } from "../../client/index.js";
|
|
7
|
+
import type { FormBoard, FormLead } from "./types.js";
|
|
8
|
+
/** The journey's form record, when the lead came through an instant form. */
|
|
9
|
+
export type JourneyForm = NonNullable<NonNullable<NonNullable<LeadJourney>["form"]>>;
|
|
10
|
+
/**
|
|
11
|
+
* The journey's `form` as the screens' `FormLead`, or null for a lead that
|
|
12
|
+
* did not come through a form (or an older host's journey). The answers keep
|
|
13
|
+
* the labels the form shows ("Quer agendar" = "Sim"); several values join
|
|
14
|
+
* with commas. `board` names the columns; without it the keys show.
|
|
15
|
+
*/
|
|
16
|
+
export declare function formLeadFromJourney(journey: LeadJourney | undefined, options?: {
|
|
17
|
+
board?: FormBoard;
|
|
18
|
+
}): FormLead | null;
|
|
19
|
+
//# sourceMappingURL=journey.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journey.d.ts","sourceRoot":"","sources":["../../../src/ui/forms/journey.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAExE,6EAA6E;AAC7E,MAAM,MAAM,WAAW,GAAG,WAAW,CACnC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAC9C,CAAC;AAgCF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,SAAS,CAAA;CAAO,GAClC,QAAQ,GAAG,IAAI,CAmBjB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { columnOf, entryOf } from "./model.js";
|
|
2
|
+
/** What the drawer calls a form Meta did not name. */
|
|
3
|
+
const UNNAMED_FORM = "Formulário";
|
|
4
|
+
function decisionOf(form, board) {
|
|
5
|
+
const decision = form.decision;
|
|
6
|
+
if ("discard" in decision)
|
|
7
|
+
return { kind: "discard", reason: decision.discard, rule: null };
|
|
8
|
+
// No column named: the host's own entry, as the board calls it.
|
|
9
|
+
if (decision.column === null) {
|
|
10
|
+
const entry = entryOf(board, null);
|
|
11
|
+
return {
|
|
12
|
+
kind: "entry",
|
|
13
|
+
column: entry.name,
|
|
14
|
+
color: entry.key ? entry.color : null,
|
|
15
|
+
rule: null,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const column = columnOf(board, decision.column);
|
|
19
|
+
return {
|
|
20
|
+
// A column with no rule deciding is the form's entry column.
|
|
21
|
+
kind: form.ruleIndex === null ? "entry" : "column",
|
|
22
|
+
column: column?.name ?? decision.column,
|
|
23
|
+
color: column?.color ?? null,
|
|
24
|
+
rule: null,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The journey's `form` as the screens' `FormLead`, or null for a lead that
|
|
29
|
+
* did not come through a form (or an older host's journey). The answers keep
|
|
30
|
+
* the labels the form shows ("Quer agendar" = "Sim"); several values join
|
|
31
|
+
* with commas. `board` names the columns; without it the keys show.
|
|
32
|
+
*/
|
|
33
|
+
export function formLeadFromJourney(journey, options = {}) {
|
|
34
|
+
const form = journey?.form;
|
|
35
|
+
if (!form)
|
|
36
|
+
return null;
|
|
37
|
+
const { origin } = form;
|
|
38
|
+
return {
|
|
39
|
+
formName: origin.formName ?? UNNAMED_FORM,
|
|
40
|
+
receivedAt: form.receivedAt,
|
|
41
|
+
answers: form.answers.map((answer) => ({
|
|
42
|
+
question: answer.label,
|
|
43
|
+
answer: answer.values.join(", "),
|
|
44
|
+
})),
|
|
45
|
+
origin: {
|
|
46
|
+
platform: origin.platform,
|
|
47
|
+
campaignName: origin.campaignName,
|
|
48
|
+
adsetName: origin.adsetName,
|
|
49
|
+
adName: origin.adName,
|
|
50
|
+
},
|
|
51
|
+
decision: decisionOf(form, options.board),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=journey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"journey.js","sourceRoot":"","sources":["../../../src/ui/forms/journey.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAQ/C,sDAAsD;AACtD,MAAM,YAAY,GAAG,YAAY,CAAC;AAElC,SAAS,UAAU,CACjB,IAAiB,EACjB,KAA4B;IAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,IAAI,SAAS,IAAI,QAAQ;QACvB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnE,gEAAgE;IAChE,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACnC,OAAO;YACL,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,KAAK,CAAC,IAAI;YAClB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;YACrC,IAAI,EAAE,IAAI;SACX,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO;QACL,6DAA6D;QAC7D,IAAI,EAAE,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ;QAClD,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,QAAQ,CAAC,MAAM;QACvC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,IAAI;QAC5B,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAgC,EAChC,OAAO,GAA0B,EAAE;IAEnC,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,YAAY;QACzC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACrC,QAAQ,EAAE,MAAM,CAAC,KAAK;YACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;SACjC,CAAC,CAAC;QACH,MAAM,EAAE;YACN,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB;QACD,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC;KAC1C,CAAC;AACJ,CAAC"}
|