strapi-plugin-hubspot 0.16.5 → 0.16.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/_chunks/{Forms-DyV6KyiO.mjs → Forms-CUNHDvhI.mjs} +52 -6
  3. package/dist/_chunks/{Forms-uUN4XjhW.js → Forms-CylJ0nD3.js} +52 -6
  4. package/dist/_chunks/{HubspotFormInput-BkWat_wu.js → HubspotFormInput-D2H2u9fZ.js} +1 -1
  5. package/dist/_chunks/{HubspotFormInput-DEXPX-6j.mjs → HubspotFormInput-Dppgr_rd.mjs} +1 -1
  6. package/dist/_chunks/{HubspotObjectInput-CFDYW-TM.js → HubspotObjectInput-BjRCaqXr.js} +3 -3
  7. package/dist/_chunks/{HubspotObjectInput-DL8fYK2x.mjs → HubspotObjectInput-CWFddNNw.mjs} +3 -3
  8. package/dist/_chunks/{HubspotPropertyInput-CFMkbQeT.js → HubspotPropertyInput-BlDarkcj.js} +3 -3
  9. package/dist/_chunks/{HubspotPropertyInput-WU5FMJj3.mjs → HubspotPropertyInput-TGG9ozTa.mjs} +3 -3
  10. package/dist/_chunks/{Settings-B_hhdpHa.js → Settings-DOx7YSqA.js} +2 -2
  11. package/dist/_chunks/{Settings-CiXEps_C.mjs → Settings-tct49GYU.mjs} +2 -2
  12. package/dist/_chunks/{index-BeBn7bJa.mjs → index-Au3W85GX.mjs} +5 -5
  13. package/dist/_chunks/{index-CG_WQzSa.js → index-DhGVA3ZL.js} +5 -5
  14. package/dist/_chunks/{objectLabels-CS_0QCNz.mjs → objectLabels-3rnJ0WUc.mjs} +1 -1
  15. package/dist/_chunks/{objectLabels-BGq-Ypgn.js → objectLabels-Bx7x8fFO.js} +1 -1
  16. package/dist/_chunks/{useHubspotSchema-CP7LRdzO.mjs → useHubspotSchema-BlVXfwju.mjs} +1 -1
  17. package/dist/_chunks/{useHubspotSchema-BZP2qkAu.js → useHubspotSchema-DrGeidXC.js} +1 -1
  18. package/dist/admin/index.js +1 -1
  19. package/dist/admin/index.mjs +1 -1
  20. package/dist/admin/src/builder/types.d.ts +2 -1
  21. package/dist/server/index.js +293 -43
  22. package/dist/server/index.mjs +293 -43
  23. package/dist/server/src/conditions.d.ts +1 -0
  24. package/dist/server/src/formSync.d.ts +20 -0
  25. package/dist/server/src/formsAdmin.d.ts +1 -0
  26. package/dist/server/src/hsforms.d.ts +35 -7
  27. package/dist/server/src/importHubspot.d.ts +2 -1
  28. package/dist/server/src/index.d.ts +1 -0
  29. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,33 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.16.8 — 2026-09-24
6
+
7
+ ### Added
8
+ - Publishing a form linked to HubSpot is blocked when a required marketing
9
+ field is not collected. Submissions show the conversion error next to
10
+ **Contact only**.
11
+ - **Create in HubSpot** builds a marketing form from the Strapi definition
12
+ and stores its GUID.
13
+ - Resync updates conditions that came from HubSpot and leaves editor-written
14
+ ones. With field sync on, `visibleIf` is pushed back as HubSpot dependent
15
+ fields. Progressive groups are reported on import.
16
+
17
+ ## 0.16.7 — 2026-09-23
18
+
19
+ ### Fixed
20
+ - Admin TypeScript build of 0.16.6 (test fixture `objectTypeId`). Same
21
+ legitimate-interest / company-field conversion fix.
22
+
23
+ ## 0.16.6 — 2026-09-23
24
+
25
+ ### Fixed
26
+ - Native conversions against HubSpot forms that use **legitimate interest**
27
+ (not explicit consent) and **company fields** (`objectTypeId` `0-2`) were
28
+ refused by the Forms API, so only a CRM note appeared. The submit now sends
29
+ `legalConsentOptions.legitimateInterest` and the company properties the
30
+ marketing form actually declares.
31
+
5
32
  ## 0.16.5 — 2026-09-23
6
33
 
7
34
  ### Fixed
@@ -5,12 +5,12 @@ import { u as useIntl } from "./index-CEh8vkxY.mjs";
5
5
  import { Typography, Flex, Box, SingleSelect, SingleSelectOption, MultiSelect, MultiSelectOption, TextInput, IconButton, Button, Combobox, ComboboxOption, Field, Textarea, Checkbox, Divider, Loader, Badge, Table, Thead, Tr, Th, Tbody, Td, Modal } from "@strapi/design-system";
6
6
  import { Trash, Plus, ArrowClockwise, ArrowLeft, Drag, ArrowUp, ArrowDown, List, Duplicate, Download } from "@strapi/icons";
7
7
  import { useFetchClient } from "@strapi/strapi/admin";
8
- import { g as getTranslation, P as PLUGIN_ID } from "./index-BeBn7bJa.mjs";
8
+ import { g as getTranslation, P as PLUGIN_ID } from "./index-Au3W85GX.mjs";
9
9
  import { useSensors, useSensor, PointerSensor, KeyboardSensor, DndContext, useDroppable, closestCorners } from "@dnd-kit/core";
10
10
  import { arrayMove, sortableKeyboardCoordinates, SortableContext, verticalListSortingStrategy, useSortable } from "@dnd-kit/sortable";
11
11
  import { CSS } from "@dnd-kit/utilities";
12
- import { o as objectLabel } from "./objectLabels-CS_0QCNz.mjs";
13
- import { u as useHubspotSchema } from "./useHubspotSchema-CP7LRdzO.mjs";
12
+ import { o as objectLabel } from "./objectLabels-3rnJ0WUc.mjs";
13
+ import { u as useHubspotSchema } from "./useHubspotSchema-BlVXfwju.mjs";
14
14
  const OPERATORS = [
15
15
  "eq",
16
16
  "neq",
@@ -682,7 +682,7 @@ const FieldPanel = ({ field, candidates, problem, onChange }) => {
682
682
  {
683
683
  condition: field.visibleIf,
684
684
  candidates,
685
- onChange: (visibleIf) => onChange({ visibleIf })
685
+ onChange: (visibleIf) => onChange({ visibleIf, visibleIfSource: "editor" })
686
686
  }
687
687
  )
688
688
  ] })
@@ -882,9 +882,14 @@ const FormEditor = () => {
882
882
  const data = err.response?.data;
883
883
  setErrors(data?.errors ?? []);
884
884
  setProblems(data?.problems ?? []);
885
+ const missing = data?.missingHubspot ?? [];
885
886
  setFeedback({
886
887
  tone: "danger",
887
- text: t("editor.publish-blocked", "Publishing is blocked — fix the flagged mappings first.")
888
+ text: missing.length ? t(
889
+ "editor.publish-missing-hubspot",
890
+ "Publishing is blocked — the linked HubSpot form requires {fields}, which this form does not collect.",
891
+ { fields: missing.map((field) => `${field.object}.${field.name}`).join(", ") }
892
+ ) : t("editor.publish-blocked", "Publishing is blocked — fix the flagged mappings first.")
888
893
  });
889
894
  } finally {
890
895
  setBusy(false);
@@ -902,6 +907,29 @@ const FormEditor = () => {
902
907
  setBusy(false);
903
908
  }
904
909
  };
910
+ const createInHubspot = async () => {
911
+ if (dirty && !await save()) return;
912
+ setBusy(true);
913
+ setFeedback(null);
914
+ try {
915
+ const { data } = await post(
916
+ `/${PLUGIN_ID}/builder/forms/${documentId}/create-hubspot${query}`
917
+ );
918
+ if (data.form) setEntry(data.form);
919
+ setFeedback({
920
+ tone: "success",
921
+ text: t("editor.created-hubspot", "HubSpot form created and linked.")
922
+ });
923
+ } catch (err) {
924
+ const message = err.response?.data?.error?.message;
925
+ setFeedback({
926
+ tone: "danger",
927
+ text: message || t("editor.create-hubspot-error", "Could not create the HubSpot form.")
928
+ });
929
+ } finally {
930
+ setBusy(false);
931
+ }
932
+ };
905
933
  const resync = async () => {
906
934
  if (dirty && !await save()) return;
907
935
  setBusy(true);
@@ -982,6 +1010,15 @@ const FormEditor = () => {
982
1010
  children: t("editor.resync", "Resync from HubSpot")
983
1011
  }
984
1012
  ),
1013
+ /* @__PURE__ */ jsx(
1014
+ Button,
1015
+ {
1016
+ variant: "tertiary",
1017
+ onClick: createInHubspot,
1018
+ disabled: busy || Boolean(entry.hubspotFormId),
1019
+ children: t("editor.create-hubspot", "Create in HubSpot")
1020
+ }
1021
+ ),
985
1022
  /* @__PURE__ */ jsx(Button, { onClick: publish, disabled: busy, children: t("editor.publish", "Publish") }),
986
1023
  published && /* @__PURE__ */ jsx(Button, { variant: "tertiary", onClick: unpublish, disabled: busy, children: t("editor.unpublish", "Unpublish") })
987
1024
  ] })
@@ -1468,6 +1505,12 @@ const FormsList = () => {
1468
1505
  return t("forms.skipped-rich-text", "A content block was skipped — the builder has no rich-text element");
1469
1506
  case "legal-consent":
1470
1507
  return t("forms.skipped-consent", "The GDPR consent block was skipped — rebuild it as a field if needed");
1508
+ case "progressive":
1509
+ return t(
1510
+ "forms.skipped-progressive",
1511
+ "A progressive field group was skipped — it is not a visibility condition ({detail})",
1512
+ { detail: item.detail ?? "" }
1513
+ );
1471
1514
  }
1472
1515
  };
1473
1516
  const create = async () => {
@@ -1774,7 +1817,10 @@ const Submissions = () => {
1774
1817
  /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { children: row.formTitle || row.form }) }),
1775
1818
  /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { fontWeight: "semiBold", children: row.email || "—" }) }),
1776
1819
  /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral600", ellipsis: true, children: preview(row.values) }) }),
1777
- /* @__PURE__ */ jsx(Td, { children: row.meta?.hubspotConversion === true || row.meta?.hubspotConversion === "true" ? /* @__PURE__ */ jsx(Badge, { backgroundColor: "success100", textColor: "success700", children: t("submissions.converted", "Conversion") }) : row.hubspotSynced ? /* @__PURE__ */ jsx(Badge, { backgroundColor: "warning100", textColor: "warning700", children: t("submissions.contact-only", "Contact only") }) : /* @__PURE__ */ jsx(Badge, { backgroundColor: "warning100", textColor: "warning700", children: t("submissions.not-synced", "Not synced") }) })
1820
+ /* @__PURE__ */ jsx(Td, { children: row.meta?.hubspotConversion === true || row.meta?.hubspotConversion === "true" ? /* @__PURE__ */ jsx(Badge, { backgroundColor: "success100", textColor: "success700", children: t("submissions.converted", "Conversion") }) : row.hubspotSynced ? /* @__PURE__ */ jsxs(Flex, { direction: "column", alignItems: "flex-start", gap: 1, children: [
1821
+ /* @__PURE__ */ jsx(Badge, { backgroundColor: "warning100", textColor: "warning700", children: t("submissions.contact-only", "Contact only") }),
1822
+ typeof row.meta?.hubspotError === "string" && row.meta.hubspotError && /* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "danger600", children: row.meta.hubspotError })
1823
+ ] }) : /* @__PURE__ */ jsx(Badge, { backgroundColor: "warning100", textColor: "warning700", children: t("submissions.not-synced", "Not synced") }) })
1778
1824
  ]
1779
1825
  },
1780
1826
  row.documentId
@@ -7,12 +7,12 @@ const index = require("./index-DkTxsEqL.js");
7
7
  const designSystem = require("@strapi/design-system");
8
8
  const icons = require("@strapi/icons");
9
9
  const admin = require("@strapi/strapi/admin");
10
- const index$1 = require("./index-CG_WQzSa.js");
10
+ const index$1 = require("./index-DhGVA3ZL.js");
11
11
  const core = require("@dnd-kit/core");
12
12
  const sortable = require("@dnd-kit/sortable");
13
13
  const utilities = require("@dnd-kit/utilities");
14
- const objectLabels = require("./objectLabels-BGq-Ypgn.js");
15
- const useHubspotSchema = require("./useHubspotSchema-BZP2qkAu.js");
14
+ const objectLabels = require("./objectLabels-Bx7x8fFO.js");
15
+ const useHubspotSchema = require("./useHubspotSchema-DrGeidXC.js");
16
16
  function _interopNamespace(e) {
17
17
  if (e && e.__esModule) return e;
18
18
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -702,7 +702,7 @@ const FieldPanel = ({ field, candidates, problem, onChange }) => {
702
702
  {
703
703
  condition: field.visibleIf,
704
704
  candidates,
705
- onChange: (visibleIf) => onChange({ visibleIf })
705
+ onChange: (visibleIf) => onChange({ visibleIf, visibleIfSource: "editor" })
706
706
  }
707
707
  )
708
708
  ] })
@@ -902,9 +902,14 @@ const FormEditor = () => {
902
902
  const data = err.response?.data;
903
903
  setErrors(data?.errors ?? []);
904
904
  setProblems(data?.problems ?? []);
905
+ const missing = data?.missingHubspot ?? [];
905
906
  setFeedback({
906
907
  tone: "danger",
907
- text: t("editor.publish-blocked", "Publishing is blocked — fix the flagged mappings first.")
908
+ text: missing.length ? t(
909
+ "editor.publish-missing-hubspot",
910
+ "Publishing is blocked — the linked HubSpot form requires {fields}, which this form does not collect.",
911
+ { fields: missing.map((field) => `${field.object}.${field.name}`).join(", ") }
912
+ ) : t("editor.publish-blocked", "Publishing is blocked — fix the flagged mappings first.")
908
913
  });
909
914
  } finally {
910
915
  setBusy(false);
@@ -922,6 +927,29 @@ const FormEditor = () => {
922
927
  setBusy(false);
923
928
  }
924
929
  };
930
+ const createInHubspot = async () => {
931
+ if (dirty && !await save()) return;
932
+ setBusy(true);
933
+ setFeedback(null);
934
+ try {
935
+ const { data } = await post(
936
+ `/${index$1.PLUGIN_ID}/builder/forms/${documentId}/create-hubspot${query}`
937
+ );
938
+ if (data.form) setEntry(data.form);
939
+ setFeedback({
940
+ tone: "success",
941
+ text: t("editor.created-hubspot", "HubSpot form created and linked.")
942
+ });
943
+ } catch (err) {
944
+ const message = err.response?.data?.error?.message;
945
+ setFeedback({
946
+ tone: "danger",
947
+ text: message || t("editor.create-hubspot-error", "Could not create the HubSpot form.")
948
+ });
949
+ } finally {
950
+ setBusy(false);
951
+ }
952
+ };
925
953
  const resync = async () => {
926
954
  if (dirty && !await save()) return;
927
955
  setBusy(true);
@@ -1002,6 +1030,15 @@ const FormEditor = () => {
1002
1030
  children: t("editor.resync", "Resync from HubSpot")
1003
1031
  }
1004
1032
  ),
1033
+ /* @__PURE__ */ jsxRuntime.jsx(
1034
+ designSystem.Button,
1035
+ {
1036
+ variant: "tertiary",
1037
+ onClick: createInHubspot,
1038
+ disabled: busy || Boolean(entry.hubspotFormId),
1039
+ children: t("editor.create-hubspot", "Create in HubSpot")
1040
+ }
1041
+ ),
1005
1042
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { onClick: publish, disabled: busy, children: t("editor.publish", "Publish") }),
1006
1043
  published && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", onClick: unpublish, disabled: busy, children: t("editor.unpublish", "Unpublish") })
1007
1044
  ] })
@@ -1488,6 +1525,12 @@ const FormsList = () => {
1488
1525
  return t("forms.skipped-rich-text", "A content block was skipped — the builder has no rich-text element");
1489
1526
  case "legal-consent":
1490
1527
  return t("forms.skipped-consent", "The GDPR consent block was skipped — rebuild it as a field if needed");
1528
+ case "progressive":
1529
+ return t(
1530
+ "forms.skipped-progressive",
1531
+ "A progressive field group was skipped — it is not a visibility condition ({detail})",
1532
+ { detail: item.detail ?? "" }
1533
+ );
1491
1534
  }
1492
1535
  };
1493
1536
  const create = async () => {
@@ -1794,7 +1837,10 @@ const Submissions = () => {
1794
1837
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: row.formTitle || row.form }) }),
1795
1838
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { fontWeight: "semiBold", children: row.email || "—" }) }),
1796
1839
  /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral600", ellipsis: true, children: preview(row.values) }) }),
1797
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: row.meta?.hubspotConversion === true || row.meta?.hubspotConversion === "true" ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { backgroundColor: "success100", textColor: "success700", children: t("submissions.converted", "Conversion") }) : row.hubspotSynced ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { backgroundColor: "warning100", textColor: "warning700", children: t("submissions.contact-only", "Contact only") }) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { backgroundColor: "warning100", textColor: "warning700", children: t("submissions.not-synced", "Not synced") }) })
1840
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: row.meta?.hubspotConversion === true || row.meta?.hubspotConversion === "true" ? /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { backgroundColor: "success100", textColor: "success700", children: t("submissions.converted", "Conversion") }) : row.hubspotSynced ? /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { direction: "column", alignItems: "flex-start", gap: 1, children: [
1841
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { backgroundColor: "warning100", textColor: "warning700", children: t("submissions.contact-only", "Contact only") }),
1842
+ typeof row.meta?.hubspotError === "string" && row.meta.hubspotError && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "danger600", children: row.meta.hubspotError })
1843
+ ] }) : /* @__PURE__ */ jsxRuntime.jsx(designSystem.Badge, { backgroundColor: "warning100", textColor: "warning700", children: t("submissions.not-synced", "Not synced") }) })
1798
1844
  ]
1799
1845
  },
1800
1846
  row.documentId
@@ -5,7 +5,7 @@ const React = require("react");
5
5
  const index = require("./index-DkTxsEqL.js");
6
6
  const designSystem = require("@strapi/design-system");
7
7
  const admin = require("@strapi/strapi/admin");
8
- const index$1 = require("./index-CG_WQzSa.js");
8
+ const index$1 = require("./index-DhGVA3ZL.js");
9
9
  function _interopNamespace(e) {
10
10
  if (e && e.__esModule) return e;
11
11
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -3,7 +3,7 @@ import * as React from "react";
3
3
  import { u as useIntl } from "./index-CEh8vkxY.mjs";
4
4
  import { Field, Flex, Loader, Combobox, ComboboxOption } from "@strapi/design-system";
5
5
  import { useFetchClient } from "@strapi/strapi/admin";
6
- import { P as PLUGIN_ID, g as getTranslation } from "./index-BeBn7bJa.mjs";
6
+ import { P as PLUGIN_ID, g as getTranslation } from "./index-Au3W85GX.mjs";
7
7
  const HubspotFormInput = React.forwardRef(
8
8
  ({ name, value, onChange, disabled, error, required, label, hint, labelAction }, ref) => {
9
9
  const { formatMessage } = useIntl();
@@ -4,9 +4,9 @@ const jsxRuntime = require("react/jsx-runtime");
4
4
  const React = require("react");
5
5
  const index = require("./index-DkTxsEqL.js");
6
6
  const designSystem = require("@strapi/design-system");
7
- const index$1 = require("./index-CG_WQzSa.js");
8
- const objectLabels = require("./objectLabels-BGq-Ypgn.js");
9
- const useHubspotSchema = require("./useHubspotSchema-BZP2qkAu.js");
7
+ const index$1 = require("./index-DhGVA3ZL.js");
8
+ const objectLabels = require("./objectLabels-Bx7x8fFO.js");
9
+ const useHubspotSchema = require("./useHubspotSchema-DrGeidXC.js");
10
10
  function _interopNamespace(e) {
11
11
  if (e && e.__esModule) return e;
12
12
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -2,9 +2,9 @@ import { jsxs, jsx } from "react/jsx-runtime";
2
2
  import * as React from "react";
3
3
  import { u as useIntl } from "./index-CEh8vkxY.mjs";
4
4
  import { Field, Flex, Loader, SingleSelect, SingleSelectOption } from "@strapi/design-system";
5
- import { g as getTranslation } from "./index-BeBn7bJa.mjs";
6
- import { o as objectLabel } from "./objectLabels-CS_0QCNz.mjs";
7
- import { u as useHubspotSchema } from "./useHubspotSchema-CP7LRdzO.mjs";
5
+ import { g as getTranslation } from "./index-Au3W85GX.mjs";
6
+ import { o as objectLabel } from "./objectLabels-3rnJ0WUc.mjs";
7
+ import { u as useHubspotSchema } from "./useHubspotSchema-BlVXfwju.mjs";
8
8
  const HubspotObjectInput = React.forwardRef(
9
9
  ({ name, value, onChange, disabled, error, required, label, hint, labelAction }, ref) => {
10
10
  const intl = useIntl();
@@ -6,9 +6,9 @@ const index = require("./index-DkTxsEqL.js");
6
6
  const designSystem = require("@strapi/design-system");
7
7
  const icons = require("@strapi/icons");
8
8
  const admin = require("@strapi/strapi/admin");
9
- const index$1 = require("./index-CG_WQzSa.js");
10
- const objectLabels = require("./objectLabels-BGq-Ypgn.js");
11
- const useHubspotSchema = require("./useHubspotSchema-BZP2qkAu.js");
9
+ const index$1 = require("./index-DhGVA3ZL.js");
10
+ const objectLabels = require("./objectLabels-Bx7x8fFO.js");
11
+ const useHubspotSchema = require("./useHubspotSchema-DrGeidXC.js");
12
12
  function _interopNamespace(e) {
13
13
  if (e && e.__esModule) return e;
14
14
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -4,9 +4,9 @@ import { u as useIntl } from "./index-CEh8vkxY.mjs";
4
4
  import { Field, Flex, Loader, Combobox, ComboboxOption, IconButton, Button, Typography, Link } from "@strapi/design-system";
5
5
  import { ArrowClockwise } from "@strapi/icons";
6
6
  import { useField } from "@strapi/strapi/admin";
7
- import { g as getTranslation } from "./index-BeBn7bJa.mjs";
8
- import { o as objectLabel } from "./objectLabels-CS_0QCNz.mjs";
9
- import { u as useHubspotSchema } from "./useHubspotSchema-CP7LRdzO.mjs";
7
+ import { g as getTranslation } from "./index-Au3W85GX.mjs";
8
+ import { o as objectLabel } from "./objectLabels-3rnJ0WUc.mjs";
9
+ import { u as useHubspotSchema } from "./useHubspotSchema-BlVXfwju.mjs";
10
10
  const oneLine = {
11
11
  display: "block",
12
12
  whiteSpace: "nowrap",
@@ -5,9 +5,9 @@ const React = require("react");
5
5
  const index = require("./index-DkTxsEqL.js");
6
6
  const designSystem = require("@strapi/design-system");
7
7
  const admin = require("@strapi/strapi/admin");
8
- const index$1 = require("./index-CG_WQzSa.js");
8
+ const index$1 = require("./index-DhGVA3ZL.js");
9
9
  const reactRouterDom = require("react-router-dom");
10
- const objectLabels = require("./objectLabels-BGq-Ypgn.js");
10
+ const objectLabels = require("./objectLabels-Bx7x8fFO.js");
11
11
  function _interopNamespace(e) {
12
12
  if (e && e.__esModule) return e;
13
13
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -3,9 +3,9 @@ import * as React from "react";
3
3
  import { u as useIntl } from "./index-CEh8vkxY.mjs";
4
4
  import { Flex, Divider, Typography, Button, Box, Link, Badge, Loader, Field, SingleSelect, SingleSelectOption, Checkbox } from "@strapi/design-system";
5
5
  import { useFetchClient } from "@strapi/strapi/admin";
6
- import { g as getTranslation, P as PLUGIN_ID } from "./index-BeBn7bJa.mjs";
6
+ import { g as getTranslation, P as PLUGIN_ID } from "./index-Au3W85GX.mjs";
7
7
  import { Link as Link$1 } from "react-router-dom";
8
- import { o as objectLabel } from "./objectLabels-CS_0QCNz.mjs";
8
+ import { o as objectLabel } from "./objectLabels-3rnJ0WUc.mjs";
9
9
  const AuditSection = ({ configured }) => {
10
10
  const intl = useIntl();
11
11
  const { formatMessage } = intl;
@@ -25,7 +25,7 @@ const index = {
25
25
  icon: PaperPlane,
26
26
  intlLabel: { id: `${PLUGIN_ID}.menu.label`, defaultMessage: "HubSpot Forms" },
27
27
  permissions: [{ action: `plugin::${PLUGIN_ID}.forms`, subject: null }],
28
- Component: async () => (await import("./Forms-DyV6KyiO.mjs")).default
28
+ Component: async () => (await import("./Forms-CUNHDvhI.mjs")).default
29
29
  });
30
30
  app.customFields.register({
31
31
  name: "property",
@@ -40,7 +40,7 @@ const index = {
40
40
  defaultMessage: "Picked from the portal's real properties"
41
41
  },
42
42
  components: {
43
- Input: async () => import("./HubspotPropertyInput-WU5FMJj3.mjs")
43
+ Input: async () => import("./HubspotPropertyInput-TGG9ozTa.mjs")
44
44
  },
45
45
  // Exposed in the Content-Type Builder. Without this, `objectField` could
46
46
  // only be set by hand-editing schema.json — which is not how anyone
@@ -103,7 +103,7 @@ const index = {
103
103
  defaultMessage: "Picked from the portal's configured objects"
104
104
  },
105
105
  components: {
106
- Input: async () => import("./HubspotObjectInput-DL8fYK2x.mjs")
106
+ Input: async () => import("./HubspotObjectInput-CWFddNNw.mjs")
107
107
  }
108
108
  });
109
109
  app.customFields.register({
@@ -119,7 +119,7 @@ const index = {
119
119
  defaultMessage: "A form built in the HubSpot form builder, stored by slug"
120
120
  },
121
121
  components: {
122
- Input: async () => import("./HubspotFormInput-DEXPX-6j.mjs")
122
+ Input: async () => import("./HubspotFormInput-Dppgr_rd.mjs")
123
123
  }
124
124
  });
125
125
  app.createSettingSection(
@@ -135,7 +135,7 @@ const index = {
135
135
  // Mirrors the RBAC action registered server-side: a role without it
136
136
  // doesn't see the link at all — the routes refuse it anyway.
137
137
  permissions: [{ action: `plugin::${PLUGIN_ID}.settings`, subject: null }],
138
- Component: async () => (await import("./Settings-CiXEps_C.mjs")).default
138
+ Component: async () => (await import("./Settings-tct49GYU.mjs")).default
139
139
  }
140
140
  ]
141
141
  );
@@ -26,7 +26,7 @@ const index = {
26
26
  icon: icons.PaperPlane,
27
27
  intlLabel: { id: `${PLUGIN_ID}.menu.label`, defaultMessage: "HubSpot Forms" },
28
28
  permissions: [{ action: `plugin::${PLUGIN_ID}.forms`, subject: null }],
29
- Component: async () => (await Promise.resolve().then(() => require("./Forms-uUN4XjhW.js"))).default
29
+ Component: async () => (await Promise.resolve().then(() => require("./Forms-CylJ0nD3.js"))).default
30
30
  });
31
31
  app.customFields.register({
32
32
  name: "property",
@@ -41,7 +41,7 @@ const index = {
41
41
  defaultMessage: "Picked from the portal's real properties"
42
42
  },
43
43
  components: {
44
- Input: async () => Promise.resolve().then(() => require("./HubspotPropertyInput-CFMkbQeT.js"))
44
+ Input: async () => Promise.resolve().then(() => require("./HubspotPropertyInput-BlDarkcj.js"))
45
45
  },
46
46
  // Exposed in the Content-Type Builder. Without this, `objectField` could
47
47
  // only be set by hand-editing schema.json — which is not how anyone
@@ -104,7 +104,7 @@ const index = {
104
104
  defaultMessage: "Picked from the portal's configured objects"
105
105
  },
106
106
  components: {
107
- Input: async () => Promise.resolve().then(() => require("./HubspotObjectInput-CFDYW-TM.js"))
107
+ Input: async () => Promise.resolve().then(() => require("./HubspotObjectInput-BjRCaqXr.js"))
108
108
  }
109
109
  });
110
110
  app.customFields.register({
@@ -120,7 +120,7 @@ const index = {
120
120
  defaultMessage: "A form built in the HubSpot form builder, stored by slug"
121
121
  },
122
122
  components: {
123
- Input: async () => Promise.resolve().then(() => require("./HubspotFormInput-BkWat_wu.js"))
123
+ Input: async () => Promise.resolve().then(() => require("./HubspotFormInput-D2H2u9fZ.js"))
124
124
  }
125
125
  });
126
126
  app.createSettingSection(
@@ -136,7 +136,7 @@ const index = {
136
136
  // Mirrors the RBAC action registered server-side: a role without it
137
137
  // doesn't see the link at all — the routes refuse it anyway.
138
138
  permissions: [{ action: `plugin::${PLUGIN_ID}.settings`, subject: null }],
139
- Component: async () => (await Promise.resolve().then(() => require("./Settings-B_hhdpHa.js"))).default
139
+ Component: async () => (await Promise.resolve().then(() => require("./Settings-DOx7YSqA.js"))).default
140
140
  }
141
141
  ]
142
142
  );
@@ -1,4 +1,4 @@
1
- import { g as getTranslation } from "./index-BeBn7bJa.mjs";
1
+ import { g as getTranslation } from "./index-Au3W85GX.mjs";
2
2
  const STANDARD = /* @__PURE__ */ new Set([
3
3
  "contact",
4
4
  "company",
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- const index = require("./index-CG_WQzSa.js");
2
+ const index = require("./index-DhGVA3ZL.js");
3
3
  const STANDARD = /* @__PURE__ */ new Set([
4
4
  "contact",
5
5
  "company",
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { useFetchClient } from "@strapi/strapi/admin";
3
- import { P as PLUGIN_ID } from "./index-BeBn7bJa.mjs";
3
+ import { P as PLUGIN_ID } from "./index-Au3W85GX.mjs";
4
4
  let cached = null;
5
5
  let inFlight = null;
6
6
  const listeners = /* @__PURE__ */ new Set();
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  const React = require("react");
3
3
  const admin = require("@strapi/strapi/admin");
4
- const index = require("./index-CG_WQzSa.js");
4
+ const index = require("./index-DhGVA3ZL.js");
5
5
  function _interopNamespace(e) {
6
6
  if (e && e.__esModule) return e;
7
7
  const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
- const index = require("../_chunks/index-CG_WQzSa.js");
2
+ const index = require("../_chunks/index-DhGVA3ZL.js");
3
3
  require("@strapi/icons");
4
4
  module.exports = index.index;
@@ -1,4 +1,4 @@
1
- import { i } from "../_chunks/index-BeBn7bJa.mjs";
1
+ import { i } from "../_chunks/index-Au3W85GX.mjs";
2
2
  import "@strapi/icons";
3
3
  export {
4
4
  i as default
@@ -45,6 +45,7 @@ export interface FormField {
45
45
  /** Company fields: rotating placeholder examples, one per line. */
46
46
  placeholderExamples?: string[];
47
47
  visibleIf?: Condition | null;
48
+ visibleIfSource?: "hubspot" | "editor" | null;
48
49
  }
49
50
  export interface FormStep {
50
51
  id: string;
@@ -92,7 +93,7 @@ export interface HubspotSource {
92
93
  }
93
94
  /** What a HubSpot import couldn't carry over (mirrors server SkippedItem). */
94
95
  export interface SkippedItem {
95
- code: "field-type" | "hidden-field" | "object" | "duplicate" | "condition" | "rich-text" | "legal-consent";
96
+ code: "field-type" | "hidden-field" | "object" | "duplicate" | "condition" | "rich-text" | "legal-consent" | "progressive";
96
97
  label?: string;
97
98
  detail?: string;
98
99
  }