@iann29/rastro 0.9.0 → 0.10.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 +9 -1
- package/agent/integration.md +23 -1
- package/agent/manifest.json +4 -4
- package/dist/client/federation.d.ts +114 -9
- package/dist/client/federation.d.ts.map +1 -1
- package/dist/client/federation.js +54 -2
- package/dist/client/federation.js.map +1 -1
- package/dist/client/index.d.ts +642 -8
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +391 -9
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/api.d.ts +14 -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 +278 -1
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/_generated/server.d.ts +4 -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 +5 -0
- package/dist/component/constants.d.ts.map +1 -1
- package/dist/component/constants.js +10 -0
- package/dist/component/constants.js.map +1 -1
- package/dist/component/convex.config.d.ts +4 -0
- package/dist/component/convex.config.js +9 -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/leads.d.ts +69 -3
- package/dist/component/leads.d.ts.map +1 -1
- package/dist/component/leads.js +419 -16
- package/dist/component/leads.js.map +1 -1
- package/dist/component/meta.d.ts +358 -0
- package/dist/component/meta.d.ts.map +1 -0
- package/dist/component/meta.js +1295 -0
- package/dist/component/meta.js.map +1 -0
- package/dist/component/metaCapi.d.ts +162 -0
- package/dist/component/metaCapi.d.ts.map +1 -0
- package/dist/component/metaCapi.js +754 -0
- package/dist/component/metaCapi.js.map +1 -0
- package/dist/component/metaFake.d.ts +5 -0
- package/dist/component/metaFake.d.ts.map +1 -0
- package/dist/component/metaFake.js +225 -0
- package/dist/component/metaFake.js.map +1 -0
- package/dist/component/metaGraph.d.ts +165 -0
- package/dist/component/metaGraph.d.ts.map +1 -0
- package/dist/component/metaGraph.js +507 -0
- package/dist/component/metaGraph.js.map +1 -0
- package/dist/component/metaSync.d.ts +186 -0
- package/dist/component/metaSync.d.ts.map +1 -0
- package/dist/component/metaSync.js +961 -0
- package/dist/component/metaSync.js.map +1 -0
- package/dist/component/pipeline.d.ts +99 -0
- package/dist/component/pipeline.d.ts.map +1 -0
- package/dist/component/pipeline.js +337 -0
- package/dist/component/pipeline.js.map +1 -0
- package/dist/component/schema.d.ts +404 -2
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +168 -2
- package/dist/component/schema.js.map +1 -1
- package/dist/component/secrets.d.ts +15 -0
- package/dist/component/secrets.d.ts.map +1 -0
- package/dist/component/secrets.js +67 -0
- package/dist/component/secrets.js.map +1 -0
- package/dist/component/validators.d.ts +1052 -15
- package/dist/component/validators.d.ts.map +1 -1
- package/dist/component/validators.js +307 -3
- package/dist/component/validators.js.map +1 -1
- package/dist/tracker/generated.d.ts +1 -1
- package/dist/tracker/generated.d.ts.map +1 -1
- package/dist/tracker/generated.js +1 -1
- package/dist/tracker/generated.js.map +1 -1
- package/dist/ui/campaigns/CampaignsView.d.ts +48 -0
- package/dist/ui/campaigns/CampaignsView.d.ts.map +1 -0
- package/dist/ui/campaigns/CampaignsView.js +47 -0
- package/dist/ui/campaigns/CampaignsView.js.map +1 -0
- package/dist/ui/campaigns/Conversions.d.ts +16 -0
- package/dist/ui/campaigns/Conversions.d.ts.map +1 -0
- package/dist/ui/campaigns/Conversions.js +40 -0
- package/dist/ui/campaigns/Conversions.js.map +1 -0
- package/dist/ui/campaigns/Drawer.d.ts +24 -0
- package/dist/ui/campaigns/Drawer.d.ts.map +1 -0
- package/dist/ui/campaigns/Drawer.js +120 -0
- package/dist/ui/campaigns/Drawer.js.map +1 -0
- package/dist/ui/campaigns/Icons.d.ts +35 -0
- package/dist/ui/campaigns/Icons.d.ts.map +1 -0
- package/dist/ui/campaigns/Icons.js +41 -0
- package/dist/ui/campaigns/Icons.js.map +1 -0
- package/dist/ui/campaigns/Summary.d.ts +21 -0
- package/dist/ui/campaigns/Summary.d.ts.map +1 -0
- package/dist/ui/campaigns/Summary.js +56 -0
- package/dist/ui/campaigns/Summary.js.map +1 -0
- package/dist/ui/campaigns/Thumbnail.d.ts +11 -0
- package/dist/ui/campaigns/Thumbnail.d.ts.map +1 -0
- package/dist/ui/campaigns/Thumbnail.js +23 -0
- package/dist/ui/campaigns/Thumbnail.js.map +1 -0
- package/dist/ui/campaigns/Tree.d.ts +12 -0
- package/dist/ui/campaigns/Tree.d.ts.map +1 -0
- package/dist/ui/campaigns/Tree.js +105 -0
- package/dist/ui/campaigns/Tree.js.map +1 -0
- package/dist/ui/campaigns/glyphs.d.ts +20 -0
- package/dist/ui/campaigns/glyphs.d.ts.map +1 -0
- package/dist/ui/campaigns/glyphs.js +19 -0
- package/dist/ui/campaigns/glyphs.js.map +1 -0
- package/dist/ui/campaigns/index.d.ts +4 -0
- package/dist/ui/campaigns/index.d.ts.map +1 -0
- package/dist/ui/campaigns/index.js +3 -0
- package/dist/ui/campaigns/index.js.map +1 -0
- package/dist/ui/campaigns/labels.d.ts +53 -0
- package/dist/ui/campaigns/labels.d.ts.map +1 -0
- package/dist/ui/campaigns/labels.js +169 -0
- package/dist/ui/campaigns/labels.js.map +1 -0
- package/dist/ui/campaigns/model.d.ts +99 -0
- package/dist/ui/campaigns/model.d.ts.map +1 -0
- package/dist/ui/campaigns/model.js +230 -0
- package/dist/ui/campaigns/model.js.map +1 -0
- package/dist/ui/campaigns/modes.d.ts +18 -0
- package/dist/ui/campaigns/modes.d.ts.map +1 -0
- package/dist/ui/campaigns/modes.js +7 -0
- package/dist/ui/campaigns/modes.js.map +1 -0
- package/dist/ui/index.d.ts +21 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +20 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/integrations/AccountPicker.d.ts +26 -0
- package/dist/ui/integrations/AccountPicker.d.ts.map +1 -0
- package/dist/ui/integrations/AccountPicker.js +101 -0
- package/dist/ui/integrations/AccountPicker.js.map +1 -0
- package/dist/ui/integrations/ClientCards.d.ts +17 -0
- package/dist/ui/integrations/ClientCards.d.ts.map +1 -0
- package/dist/ui/integrations/ClientCards.js +42 -0
- package/dist/ui/integrations/ClientCards.js.map +1 -0
- package/dist/ui/integrations/ClientsTable.d.ts +36 -0
- package/dist/ui/integrations/ClientsTable.d.ts.map +1 -0
- package/dist/ui/integrations/ClientsTable.js +143 -0
- package/dist/ui/integrations/ClientsTable.js.map +1 -0
- package/dist/ui/integrations/Connect.d.ts +35 -0
- package/dist/ui/integrations/Connect.d.ts.map +1 -0
- package/dist/ui/integrations/Connect.js +62 -0
- package/dist/ui/integrations/Connect.js.map +1 -0
- package/dist/ui/integrations/Connection.d.ts +37 -0
- package/dist/ui/integrations/Connection.d.ts.map +1 -0
- package/dist/ui/integrations/Connection.js +108 -0
- package/dist/ui/integrations/Connection.js.map +1 -0
- package/dist/ui/integrations/Dialogs.d.ts +21 -0
- package/dist/ui/integrations/Dialogs.d.ts.map +1 -0
- package/dist/ui/integrations/Dialogs.js +34 -0
- package/dist/ui/integrations/Dialogs.js.map +1 -0
- package/dist/ui/integrations/EventsFeed.d.ts +15 -0
- package/dist/ui/integrations/EventsFeed.d.ts.map +1 -0
- package/dist/ui/integrations/EventsFeed.js +61 -0
- package/dist/ui/integrations/EventsFeed.js.map +1 -0
- package/dist/ui/integrations/EventsSheet.d.ts +34 -0
- package/dist/ui/integrations/EventsSheet.d.ts.map +1 -0
- package/dist/ui/integrations/EventsSheet.js +136 -0
- package/dist/ui/integrations/EventsSheet.js.map +1 -0
- package/dist/ui/integrations/Icons.d.ts +38 -0
- package/dist/ui/integrations/Icons.d.ts.map +1 -0
- package/dist/ui/integrations/Icons.js +40 -0
- package/dist/ui/integrations/Icons.js.map +1 -0
- package/dist/ui/integrations/IntegrationsView.d.ts +15 -0
- package/dist/ui/integrations/IntegrationsView.d.ts.map +1 -0
- package/dist/ui/integrations/IntegrationsView.js +141 -0
- package/dist/ui/integrations/IntegrationsView.js.map +1 -0
- package/dist/ui/integrations/Overlay.d.ts +18 -0
- package/dist/ui/integrations/Overlay.d.ts.map +1 -0
- package/dist/ui/integrations/Overlay.js +36 -0
- package/dist/ui/integrations/Overlay.js.map +1 -0
- package/dist/ui/integrations/Partner.d.ts +14 -0
- package/dist/ui/integrations/Partner.d.ts.map +1 -0
- package/dist/ui/integrations/Partner.js +38 -0
- package/dist/ui/integrations/Partner.js.map +1 -0
- package/dist/ui/integrations/RowMenu.d.ts +15 -0
- package/dist/ui/integrations/RowMenu.d.ts.map +1 -0
- package/dist/ui/integrations/RowMenu.js +47 -0
- package/dist/ui/integrations/RowMenu.js.map +1 -0
- package/dist/ui/integrations/UnlinkDialog.d.ts +18 -0
- package/dist/ui/integrations/UnlinkDialog.d.ts.map +1 -0
- package/dist/ui/integrations/UnlinkDialog.js +29 -0
- package/dist/ui/integrations/UnlinkDialog.js.map +1 -0
- package/dist/ui/integrations/audience.d.ts +12 -0
- package/dist/ui/integrations/audience.d.ts.map +1 -0
- package/dist/ui/integrations/audience.js +12 -0
- package/dist/ui/integrations/audience.js.map +1 -0
- package/dist/ui/integrations/format.d.ts +28 -0
- package/dist/ui/integrations/format.d.ts.map +1 -0
- package/dist/ui/integrations/format.js +101 -0
- package/dist/ui/integrations/format.js.map +1 -0
- package/dist/ui/integrations/index.d.ts +5 -0
- package/dist/ui/integrations/index.d.ts.map +1 -0
- package/dist/ui/integrations/index.js +3 -0
- package/dist/ui/integrations/index.js.map +1 -0
- package/dist/ui/integrations/modal.d.ts +10 -0
- package/dist/ui/integrations/modal.d.ts.map +1 -0
- package/dist/ui/integrations/modal.js +77 -0
- package/dist/ui/integrations/modal.js.map +1 -0
- package/dist/ui/integrations/model.d.ts +99 -0
- package/dist/ui/integrations/model.d.ts.map +1 -0
- package/dist/ui/integrations/model.js +164 -0
- package/dist/ui/integrations/model.js.map +1 -0
- package/dist/ui/integrations/parts.d.ts +36 -0
- package/dist/ui/integrations/parts.d.ts.map +1 -0
- package/dist/ui/integrations/parts.js +85 -0
- package/dist/ui/integrations/parts.js.map +1 -0
- package/dist/ui/integrations/types.d.ts +146 -0
- package/dist/ui/integrations/types.d.ts.map +1 -0
- package/dist/ui/integrations/types.js +2 -0
- package/dist/ui/integrations/types.js.map +1 -0
- package/dist/ui/metrics.d.ts +106 -0
- package/dist/ui/metrics.d.ts.map +1 -0
- package/dist/ui/metrics.js +166 -0
- package/dist/ui/metrics.js.map +1 -0
- package/dist/ui/portfolio/PortfolioView.d.ts +26 -0
- package/dist/ui/portfolio/PortfolioView.d.ts.map +1 -0
- package/dist/ui/portfolio/PortfolioView.js +216 -0
- package/dist/ui/portfolio/PortfolioView.js.map +1 -0
- package/dist/ui/portfolio/SpendChart.d.ts +10 -0
- package/dist/ui/portfolio/SpendChart.d.ts.map +1 -0
- package/dist/ui/portfolio/SpendChart.js +196 -0
- package/dist/ui/portfolio/SpendChart.js.map +1 -0
- package/dist/ui/portfolio/alerts.d.ts +74 -0
- package/dist/ui/portfolio/alerts.d.ts.map +1 -0
- package/dist/ui/portfolio/alerts.js +291 -0
- package/dist/ui/portfolio/alerts.js.map +1 -0
- package/dist/ui/portfolio/figures.d.ts +79 -0
- package/dist/ui/portfolio/figures.d.ts.map +1 -0
- package/dist/ui/portfolio/figures.js +103 -0
- package/dist/ui/portfolio/figures.js.map +1 -0
- package/dist/ui/portfolio/format.d.ts +8 -0
- package/dist/ui/portfolio/format.d.ts.map +1 -0
- package/dist/ui/portfolio/format.js +28 -0
- package/dist/ui/portfolio/format.js.map +1 -0
- package/dist/ui/sample.d.ts +536 -0
- package/dist/ui/sample.d.ts.map +1 -0
- package/dist/ui/sample.js +574 -0
- package/dist/ui/sample.js.map +1 -0
- package/dist/ui/seed.d.ts +188 -0
- package/dist/ui/seed.d.ts.map +1 -0
- package/dist/ui/seed.js +563 -0
- package/dist/ui/seed.js.map +1 -0
- package/dist/ui/ui.css +3424 -0
- package/docs/federation.md +46 -1
- package/docs/meta-ads.md +795 -0
- package/docs/upgrading.md +116 -0
- package/llms.txt +3 -0
- package/package.json +15 -3
- package/src/component/_generated/api.ts +14 -0
- package/src/component/_generated/component.ts +324 -1
- package/src/component/_generated/server.ts +4 -0
- package/src/component/constants.ts +10 -0
- package/src/component/convex.config.ts +9 -0
- package/src/component/errors.ts +5 -1
- package/src/component/leads.ts +517 -17
- package/src/component/meta.ts +1525 -0
- package/src/component/metaCapi.ts +921 -0
- package/src/component/metaFake.ts +277 -0
- package/src/component/metaGraph.ts +722 -0
- package/src/component/metaSync.ts +1164 -0
- package/src/component/pipeline.ts +410 -0
- package/src/component/schema.ts +197 -1
- package/src/component/secrets.ts +98 -0
- package/src/component/validators.ts +376 -3
- package/src/tracker/generated.ts +1 -1
- package/src/ui/seed.ts +755 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IntegrationsView.js","sourceRoot":"","sources":["../../../src/ui/integrations/IntegrationsView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type ReactNode, type RefObject } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* A modal layer on a native `<dialog>`: `showModal()` puts it in the top
|
|
4
|
+
* layer, above a host whose ancestors transform or contain (where `position:
|
|
5
|
+
* fixed` would be trapped), and makes the page behind it inert. It stays in
|
|
6
|
+
* the DOM where it is rendered, so it inherits the host's `--rastro-*` theme.
|
|
7
|
+
*/
|
|
8
|
+
export declare function Overlay({ role, labelledBy, describedBy, side, initialFocus, onClose, children, }: {
|
|
9
|
+
role?: "dialog" | "alertdialog";
|
|
10
|
+
labelledBy: string;
|
|
11
|
+
describedBy?: string;
|
|
12
|
+
/** A sheet on the right instead of a centered dialog. */
|
|
13
|
+
side?: boolean;
|
|
14
|
+
initialFocus?: RefObject<HTMLElement | null>;
|
|
15
|
+
onClose: () => void;
|
|
16
|
+
children: ReactNode;
|
|
17
|
+
}): import("react").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=Overlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Overlay.d.ts","sourceRoot":"","sources":["../../../src/ui/integrations/Overlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG1E;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,EACtB,IAAe,EACf,UAAU,EACV,WAAW,EACX,IAAY,EACZ,YAAY,EACZ,OAAO,EACP,QAAQ,GACT,EAAE;IACD,IAAI,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,+BAiCA"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useRef } from "react";
|
|
3
|
+
import { useModal } from "./modal.js";
|
|
4
|
+
/**
|
|
5
|
+
* A modal layer on a native `<dialog>`: `showModal()` puts it in the top
|
|
6
|
+
* layer, above a host whose ancestors transform or contain (where `position:
|
|
7
|
+
* fixed` would be trapped), and makes the page behind it inert. It stays in
|
|
8
|
+
* the DOM where it is rendered, so it inherits the host's `--rastro-*` theme.
|
|
9
|
+
*/
|
|
10
|
+
export function Overlay({ role = "dialog", labelledBy, describedBy, side = false, initialFocus, onClose, children, }) {
|
|
11
|
+
const ref = useRef(null);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
const dialog = ref.current;
|
|
14
|
+
if (!dialog || dialog.open)
|
|
15
|
+
return;
|
|
16
|
+
// jsdom and old engines lack showModal: an open dialog still renders.
|
|
17
|
+
if (typeof dialog.showModal === "function")
|
|
18
|
+
dialog.showModal();
|
|
19
|
+
else
|
|
20
|
+
dialog.setAttribute("open", "");
|
|
21
|
+
// Closing first lifts the page's inertness, so the opener can take focus
|
|
22
|
+
// back (useModal's cleanup runs right after this one).
|
|
23
|
+
return () => {
|
|
24
|
+
if (typeof dialog.close === "function")
|
|
25
|
+
dialog.close();
|
|
26
|
+
};
|
|
27
|
+
}, []);
|
|
28
|
+
useModal(ref, onClose, initialFocus);
|
|
29
|
+
return (_jsx("dialog", { ref: ref, className: "rastro-integrations__scrim", "data-side": side ? "" : undefined, role: role === "alertdialog" ? "alertdialog" : undefined, "aria-modal": "true", "aria-labelledby": labelledBy, "aria-describedby": describedBy,
|
|
30
|
+
// Esc is handled by useModal so React state stays the source of truth.
|
|
31
|
+
onCancel: (event) => event.preventDefault(), onClick: (event) => {
|
|
32
|
+
if (event.target === event.currentTarget)
|
|
33
|
+
onClose();
|
|
34
|
+
}, children: children }));
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=Overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Overlay.js","sourceRoot":"","sources":["../../../src/ui/integrations/Overlay.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAkC,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CAAC,EACtB,IAAI,GAAG,QAAQ,EACf,UAAU,EACV,WAAW,EACX,IAAI,GAAG,KAAK,EACZ,YAAY,EACZ,OAAO,EACP,QAAQ,GAUT;IACC,MAAM,GAAG,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAC;IAC5C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI;YAAE,OAAO;QACnC,sEAAsE;QACtE,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU;YAAE,MAAM,CAAC,SAAS,EAAE,CAAC;;YAC1D,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACrC,yEAAyE;QACzE,uDAAuD;QACvD,OAAO,GAAG,EAAE;YACV,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU;gBAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACzD,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACrC,OAAO,CACL,iBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAC,4BAA4B,eAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAChC,IAAI,EAAE,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,gBAC7C,MAAM,qBACA,UAAU,sBACT,WAAW;QAC7B,uEAAuE;QACvE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAC3C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,aAAa;gBAAE,OAAO,EAAE,CAAC;QACtD,CAAC,YAEA,QAAQ,GACF,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ClientRow } from "./model.js";
|
|
2
|
+
import type { IntegrationsPartner } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* B2, top: the partner (an agency) who runs the company's Meta, what they
|
|
5
|
+
* linked, and the company's own lever: "Deixar Gio ver as campanhas".
|
|
6
|
+
*/
|
|
7
|
+
export declare function PartnerCard({ partner, row, companyName, boardLabel, permitted, }: {
|
|
8
|
+
partner: IntegrationsPartner;
|
|
9
|
+
row: ClientRow | undefined;
|
|
10
|
+
companyName: string;
|
|
11
|
+
boardLabel: string;
|
|
12
|
+
permitted: boolean;
|
|
13
|
+
}): import("react").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=Partner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Partner.d.ts","sourceRoot":"","sources":["../../../src/ui/integrations/Partner.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAYtD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,GAAG,EACH,WAAW,EACX,UAAU,EACV,SAAS,GACV,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,GAAG,EAAE,SAAS,GAAG,SAAS,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB,+BA0DA"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useId } from "react";
|
|
3
|
+
import { Icon } from "./Icons.js";
|
|
4
|
+
/** "a conta de anúncio e o pixel", what the partner linked for the company. */
|
|
5
|
+
function linkedByPartner(row) {
|
|
6
|
+
const account = Boolean(row?.accountOwner);
|
|
7
|
+
const pixel = Boolean(row?.pixel?.owner);
|
|
8
|
+
if (account && pixel)
|
|
9
|
+
return "a conta de anúncio e o pixel";
|
|
10
|
+
if (account)
|
|
11
|
+
return "a conta de anúncio";
|
|
12
|
+
if (pixel)
|
|
13
|
+
return "o pixel";
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* B2, top: the partner (an agency) who runs the company's Meta, what they
|
|
18
|
+
* linked, and the company's own lever: "Deixar Gio ver as campanhas".
|
|
19
|
+
*/
|
|
20
|
+
export function PartnerCard({ partner, row, companyName, boardLabel, permitted, }) {
|
|
21
|
+
const id = useId();
|
|
22
|
+
const { name } = partner;
|
|
23
|
+
// Unchecked, what the partner linked is on its way out: not "cuida".
|
|
24
|
+
const linked = partner.allowed ? linkedByPartner(row) : null;
|
|
25
|
+
const events = row?.pixel?.owner
|
|
26
|
+
? ` e escolheu quais colunas do ${boardLabel} avisam a Meta`
|
|
27
|
+
: "";
|
|
28
|
+
return (_jsxs("section", { className: "rastro-integrations__card rastro-integrations__partner", "aria-labelledby": `${id}-title`, children: [_jsx("span", { className: "rastro-integrations__tile", "data-tone": "partner", children: _jsx(Icon, { name: "partner", size: 20 }) }), _jsxs("div", { className: "rastro-integrations__grow", children: [_jsx("p", { className: "rastro-integrations__eyebrow", children: "Parceiro" }), _jsx("h3", { id: `${id}-title`, className: "rastro-integrations__title", children: linked
|
|
29
|
+
? `O parceiro ${name} cuida dos seus anúncios na Meta`
|
|
30
|
+
: `O parceiro ${name} pode cuidar dos seus anúncios na Meta` }), _jsx("p", { className: "rastro-integrations__desc", children: linked
|
|
31
|
+
? `Ele ligou ${linked} da ${companyName}${events}. Você vê tudo aqui; mudar é com ele.`
|
|
32
|
+
: partner.allowed
|
|
33
|
+
? `Ele pode ligar a conta de anúncio e o pixel da ${companyName} e escolher quais colunas do ${boardLabel} avisam a Meta.`
|
|
34
|
+
: `Com a caixinha marcada, ele vê o gasto e as vendas dos anúncios e liga a conta de anúncio e o pixel da ${companyName}.` })] }), partner.onAllowedChange && (_jsxs("label", { className: "rastro-integrations__consent", children: [_jsxs("span", { className: "rastro-integrations__check", children: [_jsx("input", { type: "checkbox", checked: partner.allowed, disabled: !permitted || partner.busy, "aria-label": `Deixar ${name} ver as campanhas`, "aria-describedby": `${id}-consent`, onChange: (event) => partner.onAllowedChange?.(event.target.checked) }), _jsx(Icon, { name: "check", size: 12 })] }), _jsxs("span", { className: "rastro-integrations__grow", children: [_jsxs("strong", { children: ["Deixar ", name, " ver as campanhas"] }), _jsx("span", { id: `${id}-consent`, className: "rastro-integrations__meta", children: partner.allowed
|
|
35
|
+
? "Desmarcar tira a conta e o pixel que ele ligou."
|
|
36
|
+
: "Marcar deixa ele ver o gasto e as vendas e ligar a sua Meta." })] })] }))] }));
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=Partner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Partner.js","sourceRoot":"","sources":["../../../src/ui/integrations/Partner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIlC,+EAA+E;AAC/E,SAAS,eAAe,CAAC,GAA0B;IACjD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,OAAO,IAAI,KAAK;QAAE,OAAO,8BAA8B,CAAC;IAC5D,IAAI,OAAO;QAAE,OAAO,oBAAoB,CAAC;IACzC,IAAI,KAAK;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,EACP,GAAG,EACH,WAAW,EACX,UAAU,EACV,SAAS,GAOV;IACC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IACnB,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,qEAAqE;IACrE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7D,MAAM,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK;QAC9B,CAAC,CAAC,gCAAgC,UAAU,gBAAgB;QAC5D,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,CACL,mBACE,SAAS,EAAC,wDAAwD,qBACjD,GAAG,EAAE,QAAQ,aAE9B,eAAM,SAAS,EAAC,2BAA2B,eAAW,SAAS,YAC7D,KAAC,IAAI,IAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAE,EAAE,GAAI,GAC5B,EACP,eAAK,SAAS,EAAC,2BAA2B,aACxC,YAAG,SAAS,EAAC,8BAA8B,yBAAa,EACxD,aAAI,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAC,4BAA4B,YAC1D,MAAM;4BACL,CAAC,CAAC,cAAc,IAAI,kCAAkC;4BACtD,CAAC,CAAC,cAAc,IAAI,wCAAwC,GAC3D,EACL,YAAG,SAAS,EAAC,2BAA2B,YACrC,MAAM;4BACL,CAAC,CAAC,aAAa,MAAM,OAAO,WAAW,GAAG,MAAM,uCAAuC;4BACvF,CAAC,CAAC,OAAO,CAAC,OAAO;gCACf,CAAC,CAAC,kDAAkD,WAAW,gCAAgC,UAAU,iBAAiB;gCAC1H,CAAC,CAAC,0GAA0G,WAAW,GAAG,GAC5H,IACA,EACL,OAAO,CAAC,eAAe,IAAI,CAC1B,iBAAO,SAAS,EAAC,8BAA8B,aAC7C,gBAAM,SAAS,EAAC,4BAA4B,aAC1C,gBACE,IAAI,EAAC,UAAU,EACf,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,QAAQ,EAAE,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,gBACxB,UAAU,IAAI,mBAAmB,sBAC3B,GAAG,EAAE,UAAU,EACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAClB,OAAO,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAEjD,EACF,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAE,EAAE,GAAI,IAC1B,EACP,gBAAM,SAAS,EAAC,2BAA2B,aACzC,wCAAgB,IAAI,yBAA2B,EAC/C,eAAM,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAC,2BAA2B,YAC7D,OAAO,CAAC,OAAO;oCACd,CAAC,CAAC,iDAAiD;oCACnD,CAAC,CAAC,8DAA8D,GAC7D,IACF,IACD,CACT,IACO,CACX,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export interface MenuItem {
|
|
3
|
+
label: string;
|
|
4
|
+
onSelect: () => void;
|
|
5
|
+
tone?: "danger";
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/** The row's "⋯": the client's other actions, reachable by keyboard. */
|
|
9
|
+
export declare function RowMenu({ label, items, trigger: triggerContent, }: {
|
|
10
|
+
label: string;
|
|
11
|
+
items: readonly MenuItem[];
|
|
12
|
+
/** A visible trigger ("+ Ligar pixel"); the "⋯" icon without it. */
|
|
13
|
+
trigger?: ReactNode;
|
|
14
|
+
}): import("react").JSX.Element | null;
|
|
15
|
+
//# sourceMappingURL=RowMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RowMenu.d.ts","sourceRoot":"","sources":["../../../src/ui/integrations/RowMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,EACtB,KAAK,EACL,KAAK,EACL,OAAO,EAAE,cAAc,GACxB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC3B,oEAAoE;IACpE,OAAO,CAAC,EAAE,SAAS,CAAC;CACrB,sCA+EA"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useId, useRef, useState, } from "react";
|
|
3
|
+
import { Icon } from "./Icons.js";
|
|
4
|
+
import { useDismiss } from "./modal.js";
|
|
5
|
+
/** The row's "⋯": the client's other actions, reachable by keyboard. */
|
|
6
|
+
export function RowMenu({ label, items, trigger: triggerContent, }) {
|
|
7
|
+
const id = useId();
|
|
8
|
+
const [open, setOpen] = useState(false);
|
|
9
|
+
const trigger = useRef(null);
|
|
10
|
+
const menu = useRef(null);
|
|
11
|
+
useDismiss(open, [trigger, menu], () => setOpen(false));
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
if (open)
|
|
14
|
+
menu.current
|
|
15
|
+
?.querySelector("button:not([disabled])")
|
|
16
|
+
?.focus();
|
|
17
|
+
}, [open]);
|
|
18
|
+
const onKeyDown = (event) => {
|
|
19
|
+
const buttons = [
|
|
20
|
+
...(menu.current?.querySelectorAll("button:not([disabled])") ?? []),
|
|
21
|
+
];
|
|
22
|
+
const at = buttons.indexOf(document.activeElement);
|
|
23
|
+
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
const step = event.key === "ArrowDown" ? 1 : -1;
|
|
26
|
+
buttons[(at + step + buttons.length) % buttons.length]?.focus();
|
|
27
|
+
}
|
|
28
|
+
else if (event.key === "Escape") {
|
|
29
|
+
setOpen(false);
|
|
30
|
+
trigger.current?.focus();
|
|
31
|
+
}
|
|
32
|
+
else if (event.key === "Tab") {
|
|
33
|
+
setOpen(false);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
if (items.length === 0)
|
|
37
|
+
return null;
|
|
38
|
+
return (_jsxs("div", { className: "rastro-integrations__menu-wrap", children: [_jsx("button", { ref: trigger, type: "button", className: triggerContent
|
|
39
|
+
? "rastro-integrations__link rastro-integrations__meta"
|
|
40
|
+
: "rastro-integrations__icon-btn", "aria-label": triggerContent ? undefined : label, "aria-haspopup": "menu", "aria-expanded": open, "aria-controls": open ? id : undefined, onClick: () => setOpen((value) => !value), children: triggerContent ?? _jsx(Icon, { name: "dots" }) }), open && (_jsx("div", { ref: menu, id: id, role: "menu", "aria-label": label, className: "rastro-integrations__card rastro-integrations__menu", onKeyDown: onKeyDown, children: items.map((item) => (_jsx("button", { type: "button", role: "menuitem", "data-tone": item.tone, disabled: item.disabled, onClick: () => {
|
|
41
|
+
setOpen(false);
|
|
42
|
+
// A dialog the item opens returns focus here when it closes.
|
|
43
|
+
trigger.current?.focus();
|
|
44
|
+
item.onSelect();
|
|
45
|
+
}, children: item.label }, item.label))) }))] }));
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=RowMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RowMenu.js","sourceRoot":"","sources":["../../../src/ui/integrations/RowMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ClientRow } from "./model.js";
|
|
2
|
+
import type { MetaConnection, UnlinkPreview } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* B6: unlinking erases the account's spend from the client, so the dialog
|
|
5
|
+
* says how much, offers a replacement, and asks for the client's name typed.
|
|
6
|
+
*/
|
|
7
|
+
export declare function UnlinkDialog({ row, accounts, preview, permitted, busy, onRequestPreview, onConfirm, onClose, }: {
|
|
8
|
+
row: ClientRow;
|
|
9
|
+
accounts: MetaConnection["adAccounts"];
|
|
10
|
+
/** undefined while it loads, null when the host cannot say. */
|
|
11
|
+
preview: UnlinkPreview | null | undefined;
|
|
12
|
+
permitted: boolean;
|
|
13
|
+
busy: boolean;
|
|
14
|
+
onRequestPreview?: () => void;
|
|
15
|
+
onConfirm: (replaceWith?: string) => void;
|
|
16
|
+
onClose: () => void;
|
|
17
|
+
}): import("react").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=UnlinkDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnlinkDialog.d.ts","sourceRoot":"","sources":["../../../src/ui/integrations/UnlinkDialog.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,GAAG,EACH,QAAQ,EACR,OAAO,EACP,SAAS,EACT,IAAI,EACJ,gBAAgB,EAChB,SAAS,EACT,OAAO,GACR,EAAE;IACD,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC;IACvC,+DAA+D;IAC/D,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1C,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,SAAS,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,+BAkJA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useId, useRef, useState } from "react";
|
|
3
|
+
import { formatMoney } from "../metrics.js";
|
|
4
|
+
import { Icon } from "./Icons.js";
|
|
5
|
+
import { Overlay } from "./Overlay.js";
|
|
6
|
+
/**
|
|
7
|
+
* B6: unlinking erases the account's spend from the client, so the dialog
|
|
8
|
+
* says how much, offers a replacement, and asks for the client's name typed.
|
|
9
|
+
*/
|
|
10
|
+
export function UnlinkDialog({ row, accounts, preview, permitted, busy, onRequestPreview, onConfirm, onClose, }) {
|
|
11
|
+
const id = useId();
|
|
12
|
+
const [typed, setTyped] = useState("");
|
|
13
|
+
const [replaceWith, setReplaceWith] = useState("");
|
|
14
|
+
const request = useRef(onRequestPreview);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
request.current?.();
|
|
17
|
+
}, []);
|
|
18
|
+
const account = row.account;
|
|
19
|
+
const name = row.site.name;
|
|
20
|
+
const matches = typed.trim().toLocaleLowerCase("pt-BR") ===
|
|
21
|
+
name.trim().toLocaleLowerCase("pt-BR");
|
|
22
|
+
const free = accounts.filter((option) => option.linkedSiteId === null &&
|
|
23
|
+
!option.linkedOutsideScope &&
|
|
24
|
+
option.adAccountId !== account.adAccountId);
|
|
25
|
+
return (_jsx(Overlay, { role: "alertdialog", labelledBy: `${id}-title`, describedBy: `${id}-desc`, onClose: onClose, children: _jsxs("div", { className: "rastro-integrations__dialog", children: [_jsxs("div", { className: "rastro-integrations__dialog-head", children: [_jsx("span", { className: "rastro-integrations__danger-tile", children: _jsx(Icon, { name: "unlink", size: 20 }) }), _jsxs("div", { children: [_jsxs("h3", { id: `${id}-title`, className: "rastro-integrations__dialog-title", children: ["Desvincular a conta da ", name, "?"] }), _jsxs("p", { id: `${id}-desc`, className: "rastro-integrations__desc rastro-integrations__lede", children: [_jsx("b", { children: row.accountName }), " ", _jsx("span", { className: "rastro-integrations__mono", children: account.adAccountId }), " ", "deixa de alimentar a ", name, "."] })] })] }), _jsxs("div", { className: "rastro-integrations__callout", "data-tone": "bad", "data-stack": "", children: [_jsxs("strong", { className: "rastro-integrations__row-gap", "data-gap": "8", children: [_jsx(Icon, { name: "trash", size: 14 }), " O gasto desta conta \u00E9 apagado da", " ", name] }), _jsxs("ul", { className: "rastro-integrations__bullets", children: [_jsx("li", { children: preview ? (_jsxs(_Fragment, { children: [_jsxs("b", { children: [preview.partial ? "pelo menos " : "", formatMoney(preview.spendCents, preview.currency)] }), " ", "de gasto em ", preview.days, " dias e o custo por lead e o retorno que vinham dele"] })) : preview === null ? ("Todo o gasto lido desta conta e o custo por lead e o retorno que vinham dele") : (_jsx("span", { className: "rastro-skeleton rastro-integrations__line-skeleton" })) }), _jsxs("li", { children: ["As campanhas somem da tela Campanhas da ", name, "; leads e vendas ficam"] }), _jsx("li", { children: "Ligar de novo rel\u00EA os 90 dias desde o come\u00E7o (leva alguns minutos)" })] })] }), _jsxs("div", { className: "rastro-integrations__field", children: [_jsx("label", { htmlFor: `${id}-swap`, children: "Trocar por outra conta (opcional)" }), _jsxs("span", { className: "rastro-integrations__select", "data-tone": "none", children: [_jsxs("select", { id: `${id}-swap`, value: replaceWith, onChange: (event) => setReplaceWith(event.target.value), children: [_jsx("option", { value: "", children: "S\u00F3 desvincular, sem conta nova" }), free.map((option) => (_jsxs("option", { value: option.adAccountId, children: [option.name, " \u00B7 ", option.adAccountId] }, option.adAccountId)))] }), _jsx(Icon, { name: "chevronDown", size: 14 })] }), _jsxs("span", { className: "rastro-integrations__hint", children: ["O pixel e os eventos da ", name, " n\u00E3o mudam."] })] }), _jsxs("div", { className: "rastro-integrations__field", children: [_jsxs("label", { htmlFor: `${id}-confirm`, children: ["Para confirmar, digite ", _jsx("b", { children: name })] }), _jsx("input", { id: `${id}-confirm`, className: "rastro-integrations__input", autoComplete: "off", spellCheck: false, value: typed, onChange: (event) => setTyped(event.target.value) })] }), _jsxs("div", { className: "rastro-integrations__dialog-foot", children: [_jsx("button", { type: "button", className: "rastro-integrations__btn", "data-variant": "outline", onClick: onClose, children: "Cancelar" }), _jsxs("button", { type: "button", className: "rastro-integrations__btn", "data-variant": "danger", disabled: !matches || !permitted || busy, onClick: () => onConfirm(replaceWith || undefined), children: [_jsx(Icon, { name: "unlink", size: 14 }), replaceWith
|
|
26
|
+
? "Trocar a conta e apagar o gasto"
|
|
27
|
+
: "Desvincular e apagar o gasto"] })] })] }) }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=UnlinkDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnlinkDialog.js","sourceRoot":"","sources":["../../../src/ui/integrations/UnlinkDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationsAudience } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Who the screen speaks to, for the parts deep in it (the table, the cards,
|
|
4
|
+
* the sheet, the dialogs) without threading a prop through each.
|
|
5
|
+
*/
|
|
6
|
+
export declare const AudienceContext: import("react").Context<IntegrationsAudience>;
|
|
7
|
+
/** Who reads the spend and sends the sales: "Rastro", or the host's "uze". */
|
|
8
|
+
export declare const ProductContext: import("react").Context<string>;
|
|
9
|
+
/** The business copy: one company, its owner reading. */
|
|
10
|
+
export declare const useBusiness: () => boolean;
|
|
11
|
+
export declare const useProductName: () => string;
|
|
12
|
+
//# sourceMappingURL=audience.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audience.d.ts","sourceRoot":"","sources":["../../../src/ui/integrations/audience.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;GAGG;AACH,eAAO,MAAM,eAAe,+CAAgD,CAAC;AAE7E,8EAA8E;AAC9E,eAAO,MAAM,cAAc,iCAA0B,CAAC;AAEtD,yDAAyD;AACzD,eAAO,MAAM,WAAW,eAAmD,CAAC;AAE5E,eAAO,MAAM,cAAc,cAAmC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { createContext, useContext } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Who the screen speaks to, for the parts deep in it (the table, the cards,
|
|
4
|
+
* the sheet, the dialogs) without threading a prop through each.
|
|
5
|
+
*/
|
|
6
|
+
export const AudienceContext = createContext("agency");
|
|
7
|
+
/** Who reads the spend and sends the sales: "Rastro", or the host's "uze". */
|
|
8
|
+
export const ProductContext = createContext("Rastro");
|
|
9
|
+
/** The business copy: one company, its owner reading. */
|
|
10
|
+
export const useBusiness = () => useContext(AudienceContext) === "business";
|
|
11
|
+
export const useProductName = () => useContext(ProductContext);
|
|
12
|
+
//# sourceMappingURL=audience.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audience.js","sourceRoot":"","sources":["../../../src/ui/integrations/audience.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGlD;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAuB,QAAQ,CAAC,CAAC;AAE7E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;AAEtD,yDAAyD;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,KAAK,UAAU,CAAC;AAE5E,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Words and figures the Integrações screen writes, in pt-BR. */
|
|
2
|
+
/** "06:40", in Brasília time like the rest of the screens. */
|
|
3
|
+
export declare const clockLabel: (at: number) => string;
|
|
4
|
+
/** "08/10". */
|
|
5
|
+
export declare const dayLabel: (at: number) => string;
|
|
6
|
+
/** "hoje 06:40", "ontem 22:10", "08/10 06:40". */
|
|
7
|
+
export declare function whenLabel(at: number, now: number): string;
|
|
8
|
+
/** "há 12 min", "há 3 h 12 min", "há 2 d"; "agora" under a minute. */
|
|
9
|
+
export declare function agoLabel(at: number, now: number, { short }?: {
|
|
10
|
+
short?: boolean | undefined;
|
|
11
|
+
}): string;
|
|
12
|
+
/** "há 18 min", "há 1 h", "ontem": a sent event's age. */
|
|
13
|
+
export declare function sentAgo(at: number, now: number): string;
|
|
14
|
+
/** "1188 4402 9917 305": a pixel id read in groups of four. */
|
|
15
|
+
export declare const pixelDigits: (pixelId: string) => string;
|
|
16
|
+
/** "1188…305": a pixel id that fits a phone line. */
|
|
17
|
+
export declare const pixelShort: (pixelId: string) => string;
|
|
18
|
+
/** "R$" for BRL, "US$" for USD: the account currency's own sign. */
|
|
19
|
+
export declare function currencySign(currency: string): string;
|
|
20
|
+
/** "America/Sao_Paulo" → "São Paulo". */
|
|
21
|
+
export declare function zoneCity(timezone: string): string;
|
|
22
|
+
/** "act_4056102938" → "act_4056…" for a narrow picker. */
|
|
23
|
+
export declare const accountShort: (adAccountId: string) => string;
|
|
24
|
+
/** "1 venda", "3 vendas". */
|
|
25
|
+
export declare const plural: (count: number, one: string, many: string) => string;
|
|
26
|
+
/** Lower case, no accents, letters and digits only: names compare by this. */
|
|
27
|
+
export declare const nameKey: (name: string) => string;
|
|
28
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/ui/integrations/format.ts"],"names":[],"mappings":"AAAA,iEAAiE;AAkBjE,8DAA8D;AAC9D,eAAO,MAAM,UAAU,OAAQ,MAAM,WAAqB,CAAC;AAC3D,eAAe;AACf,eAAO,MAAM,QAAQ,OAAQ,MAAM,WAAwB,CAAC;AAE5D,kDAAkD;AAClD,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAShD;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,KAAa,EAAE;;CAAK,UASvE;AAED,0DAA0D;AAC1D,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAQ9C;AAED,+DAA+D;AAC/D,eAAO,MAAM,WAAW,YAAa,MAAM,WACkB,CAAC;AAE9D,qDAAqD;AACrD,eAAO,MAAM,UAAU,YAAa,MAAM,WACoC,CAAC;AAE/E,oEAAoE;AACpE,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,UAY5C;AAWD,yCAAyC;AACzC,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,UAGxC;AAED,0DAA0D;AAC1D,eAAO,MAAM,YAAY,gBAAiB,MAAM,WACsB,CAAC;AAEvE,6BAA6B;AAC7B,eAAO,MAAM,MAAM,UAAW,MAAM,OAAO,MAAM,QAAQ,MAAM,WACC,CAAC;AAEjE,8EAA8E;AAC9E,eAAO,MAAM,OAAO,SAAU,MAAM,WAMzB,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/** Words and figures the Integrações screen writes, in pt-BR. */
|
|
2
|
+
const MINUTE_MS = 60_000;
|
|
3
|
+
const HOUR_MS = 60 * MINUTE_MS;
|
|
4
|
+
const DAY_MS = 24 * HOUR_MS;
|
|
5
|
+
const ZONE = "America/Sao_Paulo";
|
|
6
|
+
const clock = new Intl.DateTimeFormat("pt-BR", {
|
|
7
|
+
hour: "2-digit",
|
|
8
|
+
minute: "2-digit",
|
|
9
|
+
timeZone: ZONE,
|
|
10
|
+
});
|
|
11
|
+
const dayMonth = new Intl.DateTimeFormat("pt-BR", {
|
|
12
|
+
day: "2-digit",
|
|
13
|
+
month: "2-digit",
|
|
14
|
+
timeZone: ZONE,
|
|
15
|
+
});
|
|
16
|
+
/** "06:40", in Brasília time like the rest of the screens. */
|
|
17
|
+
export const clockLabel = (at) => clock.format(at);
|
|
18
|
+
/** "08/10". */
|
|
19
|
+
export const dayLabel = (at) => dayMonth.format(at);
|
|
20
|
+
/** "hoje 06:40", "ontem 22:10", "08/10 06:40". */
|
|
21
|
+
export function whenLabel(at, now) {
|
|
22
|
+
const day = dayMonth.format(at);
|
|
23
|
+
const prefix = day === dayMonth.format(now)
|
|
24
|
+
? "hoje"
|
|
25
|
+
: day === dayMonth.format(now - DAY_MS)
|
|
26
|
+
? "ontem"
|
|
27
|
+
: day;
|
|
28
|
+
return `${prefix} ${clock.format(at)}`;
|
|
29
|
+
}
|
|
30
|
+
/** "há 12 min", "há 3 h 12 min", "há 2 d"; "agora" under a minute. */
|
|
31
|
+
export function agoLabel(at, now, { short = false } = {}) {
|
|
32
|
+
const minutes = Math.max(0, Math.floor((now - at) / MINUTE_MS));
|
|
33
|
+
if (minutes < 1)
|
|
34
|
+
return "agora";
|
|
35
|
+
if (minutes < 60)
|
|
36
|
+
return short ? `${minutes} min` : `há ${minutes} min`;
|
|
37
|
+
const hours = Math.floor(minutes / 60);
|
|
38
|
+
if (hours >= 24)
|
|
39
|
+
return `há ${Math.floor(hours / 24)} d`;
|
|
40
|
+
const rest = minutes % 60;
|
|
41
|
+
if (short || rest === 0)
|
|
42
|
+
return `há ${hours} h`;
|
|
43
|
+
return `há ${hours} h ${rest} min`;
|
|
44
|
+
}
|
|
45
|
+
/** "há 18 min", "há 1 h", "ontem": a sent event's age. */
|
|
46
|
+
export function sentAgo(at, now) {
|
|
47
|
+
const delta = Math.max(0, now - at);
|
|
48
|
+
if (delta < MINUTE_MS)
|
|
49
|
+
return "agora";
|
|
50
|
+
if (delta < HOUR_MS)
|
|
51
|
+
return `há ${Math.floor(delta / MINUTE_MS)} min`;
|
|
52
|
+
if (dayMonth.format(at) === dayMonth.format(now))
|
|
53
|
+
return `há ${Math.floor(delta / HOUR_MS)} h`;
|
|
54
|
+
if (dayMonth.format(at) === dayMonth.format(now - DAY_MS))
|
|
55
|
+
return "ontem";
|
|
56
|
+
return `há ${Math.floor(delta / DAY_MS)} d`;
|
|
57
|
+
}
|
|
58
|
+
/** "1188 4402 9917 305": a pixel id read in groups of four. */
|
|
59
|
+
export const pixelDigits = (pixelId) => pixelId.replace(/\D/g, "").replace(/(\d{4})(?=\d)/g, "$1 ");
|
|
60
|
+
/** "1188…305": a pixel id that fits a phone line. */
|
|
61
|
+
export const pixelShort = (pixelId) => pixelId.length > 8 ? `${pixelId.slice(0, 4)}…${pixelId.slice(-3)}` : pixelId;
|
|
62
|
+
/** "R$" for BRL, "US$" for USD: the account currency's own sign. */
|
|
63
|
+
export function currencySign(currency) {
|
|
64
|
+
try {
|
|
65
|
+
const part = new Intl.NumberFormat("pt-BR", {
|
|
66
|
+
style: "currency",
|
|
67
|
+
currency,
|
|
68
|
+
})
|
|
69
|
+
.formatToParts(0)
|
|
70
|
+
.find((piece) => piece.type === "currency");
|
|
71
|
+
return part?.value ?? currency;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return currency;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const CITY_NAMES = {
|
|
78
|
+
Sao_Paulo: "São Paulo",
|
|
79
|
+
Belem: "Belém",
|
|
80
|
+
Maceio: "Maceió",
|
|
81
|
+
Cuiaba: "Cuiabá",
|
|
82
|
+
Araguaina: "Araguaína",
|
|
83
|
+
Santarem: "Santarém",
|
|
84
|
+
};
|
|
85
|
+
/** "America/Sao_Paulo" → "São Paulo". */
|
|
86
|
+
export function zoneCity(timezone) {
|
|
87
|
+
const city = timezone.split("/").at(-1) ?? timezone;
|
|
88
|
+
return CITY_NAMES[city] ?? city.replace(/_/g, " ");
|
|
89
|
+
}
|
|
90
|
+
/** "act_4056102938" → "act_4056…" for a narrow picker. */
|
|
91
|
+
export const accountShort = (adAccountId) => adAccountId.length > 9 ? `${adAccountId.slice(0, 8)}…` : adAccountId;
|
|
92
|
+
/** "1 venda", "3 vendas". */
|
|
93
|
+
export const plural = (count, one, many) => `${count.toLocaleString("pt-BR")} ${count === 1 ? one : many}`;
|
|
94
|
+
/** Lower case, no accents, letters and digits only: names compare by this. */
|
|
95
|
+
export const nameKey = (name) => name
|
|
96
|
+
.normalize("NFD")
|
|
97
|
+
.replace(/\p{Diacritic}/gu, "")
|
|
98
|
+
.toLowerCase()
|
|
99
|
+
.replace(/[^a-z0-9]+/g, " ")
|
|
100
|
+
.trim();
|
|
101
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/ui/integrations/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { IntegrationsBadge, IntegrationsView } from "./IntegrationsView.js";
|
|
2
|
+
export { clientRows, eventMapCopyTargets, integrationsHeadline, suggestedAccount, } from "./model.js";
|
|
3
|
+
export type { ClientRow, ClientState } from "./model.js";
|
|
4
|
+
export type { EventMap, EventMapChoice, EventMapColumn, IntegrationConversion, IntegrationsAudience, IntegrationsBusy, IntegrationSite, IntegrationsPartner, IntegrationStatus, IntegrationsViewProps, MetaColumnEvent, MetaConnection, MetaConnectionAdAccount, MetaEventName, MetaPixel, MetaPixelSource, PixelChoice, SentCounts, SetEventMapInput, UnlinkPreview, } from "./types.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ui/integrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EACV,QAAQ,EACR,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,cAAc,EACd,uBAAuB,EACvB,aAAa,EACb,SAAS,EACT,eAAe,EACf,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,aAAa,GACd,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/integrations/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type RefObject } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* A modal's keyboard contract: focus moves in (to `initial` or the first
|
|
4
|
+
* control), Tab stays inside, Esc closes, and focus returns to whatever
|
|
5
|
+
* opened it.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useModal(ref: RefObject<HTMLElement | null>, onClose: () => void, initial?: RefObject<HTMLElement | null>): void;
|
|
8
|
+
/** A popover closes on Esc and on a click outside it and its trigger. */
|
|
9
|
+
export declare function useDismiss(open: boolean, refs: ReadonlyArray<RefObject<HTMLElement | null>>, onClose: () => void): void;
|
|
10
|
+
//# sourceMappingURL=modal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../../src/ui/integrations/modal.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAKpE;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAClC,OAAO,EAAE,MAAM,IAAI,EACnB,OAAO,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,QA2CxC;AAED,yEAAyE;AACzE,wBAAgB,UAAU,CACxB,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,EAClD,OAAO,EAAE,MAAM,IAAI,QAsBpB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { useEffect, useRef, useState } from "react";
|
|
2
|
+
const FOCUSABLE = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
3
|
+
/**
|
|
4
|
+
* A modal's keyboard contract: focus moves in (to `initial` or the first
|
|
5
|
+
* control), Tab stays inside, Esc closes, and focus returns to whatever
|
|
6
|
+
* opened it.
|
|
7
|
+
*/
|
|
8
|
+
export function useModal(ref, onClose, initial) {
|
|
9
|
+
const close = useRef(onClose);
|
|
10
|
+
close.current = onClose;
|
|
11
|
+
// Whatever had focus when the modal first rendered, before showModal()
|
|
12
|
+
// moves it inside: focus goes back there on close.
|
|
13
|
+
const [opener] = useState(() => typeof document !== "undefined" &&
|
|
14
|
+
document.activeElement instanceof HTMLElement
|
|
15
|
+
? document.activeElement
|
|
16
|
+
: null);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const root = ref.current;
|
|
19
|
+
const first = initial?.current ?? root?.querySelector(FOCUSABLE) ?? root;
|
|
20
|
+
first?.focus();
|
|
21
|
+
const onKey = (event) => {
|
|
22
|
+
if (event.key === "Escape") {
|
|
23
|
+
event.stopPropagation();
|
|
24
|
+
close.current();
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
if (event.key !== "Tab" || !root)
|
|
28
|
+
return;
|
|
29
|
+
const items = [...root.querySelectorAll(FOCUSABLE)];
|
|
30
|
+
if (items.length === 0)
|
|
31
|
+
return;
|
|
32
|
+
const head = items[0];
|
|
33
|
+
const tail = items[items.length - 1];
|
|
34
|
+
if (event.shiftKey && document.activeElement === head) {
|
|
35
|
+
event.preventDefault();
|
|
36
|
+
tail.focus();
|
|
37
|
+
}
|
|
38
|
+
else if (!event.shiftKey && document.activeElement === tail) {
|
|
39
|
+
event.preventDefault();
|
|
40
|
+
head.focus();
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
root?.addEventListener("keydown", onKey);
|
|
44
|
+
return () => {
|
|
45
|
+
root?.removeEventListener("keydown", onKey);
|
|
46
|
+
opener?.focus();
|
|
47
|
+
};
|
|
48
|
+
// Mount and unmount only: the modal owns focus for its whole life.
|
|
49
|
+
}, []);
|
|
50
|
+
}
|
|
51
|
+
/** A popover closes on Esc and on a click outside it and its trigger. */
|
|
52
|
+
export function useDismiss(open, refs, onClose) {
|
|
53
|
+
const close = useRef(onClose);
|
|
54
|
+
close.current = onClose;
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (!open)
|
|
57
|
+
return;
|
|
58
|
+
const onPointer = (event) => {
|
|
59
|
+
const target = event.target;
|
|
60
|
+
if (refs.some((ref) => ref.current?.contains(target)))
|
|
61
|
+
return;
|
|
62
|
+
close.current();
|
|
63
|
+
};
|
|
64
|
+
const onKey = (event) => {
|
|
65
|
+
if (event.key === "Escape")
|
|
66
|
+
close.current();
|
|
67
|
+
};
|
|
68
|
+
document.addEventListener("pointerdown", onPointer);
|
|
69
|
+
document.addEventListener("keydown", onKey);
|
|
70
|
+
return () => {
|
|
71
|
+
document.removeEventListener("pointerdown", onPointer);
|
|
72
|
+
document.removeEventListener("keydown", onKey);
|
|
73
|
+
};
|
|
74
|
+
// The refs are stable objects; only opening re-arms the listeners.
|
|
75
|
+
}, [open]);
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=modal.js.map
|