strapi-plugin-hubspot 0.5.0 → 0.6.0

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 (51) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +110 -4
  3. package/dist/_chunks/Forms-BF4_zA-m.js +1007 -0
  4. package/dist/_chunks/Forms-CW1KFO9U.mjs +989 -0
  5. package/dist/_chunks/{HubspotObjectInput-D9r_sGFe.mjs → HubspotObjectInput-CpxeM2J0.mjs} +3 -3
  6. package/dist/_chunks/{HubspotObjectInput-DpXMFiPg.js → HubspotObjectInput-hjAYWtaU.js} +3 -3
  7. package/dist/_chunks/{HubspotPropertyInput-av9782v6.mjs → HubspotPropertyInput-C-52Lu24.mjs} +3 -3
  8. package/dist/_chunks/{HubspotPropertyInput-Dk0t0NVe.js → HubspotPropertyInput-OSeIBaRC.js} +3 -3
  9. package/dist/_chunks/Settings-2V7TH5CX.mjs +321 -0
  10. package/dist/_chunks/Settings-DcA9M5Tw.js +339 -0
  11. package/dist/_chunks/en-CJ9wYHgN.mjs +197 -0
  12. package/dist/_chunks/en-C_-N8cjv.js +197 -0
  13. package/dist/_chunks/fr-BHObPoUp.js +197 -0
  14. package/dist/_chunks/fr-DttDn-2Y.mjs +197 -0
  15. package/dist/_chunks/{Settings-DTzk6GWO.mjs → index-C1UJXE_o.mjs} +576 -317
  16. package/dist/_chunks/{index-B3c9qEYU.js → index-CMzg-x5i.js} +12 -4
  17. package/dist/_chunks/{Settings-CPxe6LdH.js → index-Dgbid2LK.js} +580 -322
  18. package/dist/_chunks/{index-C0XHwXog.mjs → index-DkGOTp8p.mjs} +12 -4
  19. package/dist/_chunks/{objectLabels-DwOMxLfh.mjs → objectLabels-D9UEuOGr.mjs} +1 -1
  20. package/dist/_chunks/{objectLabels-DksWJnOK.js → objectLabels-Th7aYW-B.js} +1 -1
  21. package/dist/_chunks/{useHubspotSchema-C3vn1DuR.js → useHubspotSchema-Bgrgg8Mt.js} +1 -1
  22. package/dist/_chunks/{useHubspotSchema-BGtg7Ffj.mjs → useHubspotSchema-DQkQcA_V.mjs} +1 -1
  23. package/dist/admin/index.js +2 -1
  24. package/dist/admin/index.mjs +2 -1
  25. package/dist/admin/src/builder/ConditionEditor.d.ts +17 -0
  26. package/dist/admin/src/builder/FieldPanel.d.ts +16 -0
  27. package/dist/admin/src/builder/types.d.ts +90 -0
  28. package/dist/admin/src/index.d.ts +1 -0
  29. package/dist/admin/src/pages/FormEditor.d.ts +9 -0
  30. package/dist/admin/src/pages/Forms.d.ts +4 -0
  31. package/dist/admin/src/pages/FormsList.d.ts +8 -0
  32. package/dist/server/index.js +880 -5
  33. package/dist/server/index.mjs +880 -5
  34. package/dist/server/src/__tests__/conditions.test.d.ts +1 -0
  35. package/dist/server/src/__tests__/forms.test.d.ts +1 -0
  36. package/dist/server/src/__tests__/formsSubmit.test.d.ts +1 -0
  37. package/dist/server/src/__tests__/importLegacy.test.d.ts +1 -0
  38. package/dist/server/src/conditions.d.ts +88 -0
  39. package/dist/server/src/content-types.d.ts +161 -9
  40. package/dist/server/src/forms.d.ts +81 -0
  41. package/dist/server/src/formsAdmin.d.ts +39 -0
  42. package/dist/server/src/importLegacy.d.ts +25 -0
  43. package/dist/server/src/index.d.ts +214 -16
  44. package/dist/shared/types.d.ts +103 -0
  45. package/dist/shared/types.js +2 -0
  46. package/dist/shared/types.mjs +2 -0
  47. package/package.json +23 -6
  48. package/dist/_chunks/en-BN5fD3ai.js +0 -83
  49. package/dist/_chunks/en-xeTTAUtX.mjs +0 -83
  50. package/dist/_chunks/fr-BKODkfPy.mjs +0 -83
  51. package/dist/_chunks/fr-D3-oO8Lt.js +0 -83
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Public types of strapi-plugin-hubspot, for host apps and frontends:
3
+ *
4
+ * import type { PublicForm, Condition } from "strapi-plugin-hubspot/types";
5
+ *
6
+ * They describe the payloads of the public content-api routes:
7
+ * GET /api/hubspot/forms/:slug → PublicForm
8
+ * POST /api/hubspot/forms/:slug/submit → SubmitResponse (SubmitRequest in)
9
+ */
10
+
11
+ export type Operator = "eq" | "neq" | "contains" | "empty" | "notEmpty" | "gt" | "lt";
12
+
13
+ export interface Rule {
14
+ /** Stable id (`fld_…`) of the field the rule reads — never its name. */
15
+ field: string;
16
+ operator: Operator;
17
+ value?: string;
18
+ }
19
+
20
+ export interface Condition {
21
+ logic: "and" | "or";
22
+ rules: Rule[];
23
+ }
24
+
25
+ export type FieldType =
26
+ | "text"
27
+ | "email"
28
+ | "tel"
29
+ | "number"
30
+ | "website"
31
+ | "textarea"
32
+ | "select"
33
+ | "checkbox"
34
+ | "radio";
35
+
36
+ export interface FieldOption {
37
+ value: string;
38
+ label?: string;
39
+ }
40
+
41
+ /** A field as the public endpoint serves it — the CRM mapping is stripped. */
42
+ export interface PublicFormField {
43
+ id: string;
44
+ name: string;
45
+ label: string;
46
+ type: FieldType;
47
+ placeholder?: string;
48
+ helpText?: string;
49
+ icon?: string;
50
+ class?: string;
51
+ width?: "full" | "half";
52
+ required?: boolean;
53
+ persist?: "session" | "days30";
54
+ options?: FieldOption[];
55
+ visibleIf?: Condition | null;
56
+ }
57
+
58
+ export interface PublicFormStep {
59
+ id: string;
60
+ title?: string;
61
+ description?: string;
62
+ class?: string;
63
+ visibleIf?: Condition | null;
64
+ fields: PublicFormField[];
65
+ }
66
+
67
+ /** GET /api/hubspot/forms/:slug */
68
+ export interface PublicForm {
69
+ slug: string;
70
+ title?: string | null;
71
+ subtitle?: string | null;
72
+ nextLabel?: string | null;
73
+ submitLabel?: string | null;
74
+ successMessage?: string | null;
75
+ locale?: string | null;
76
+ steps: PublicFormStep[];
77
+ }
78
+
79
+ /** POST /api/hubspot/forms/:slug/submit — request body. */
80
+ export interface SubmitRequest {
81
+ /** Answers keyed by field `name`. Values hidden by a condition are ignored. */
82
+ values: Record<string, string | number | boolean>;
83
+ meta?: {
84
+ pagePath?: string;
85
+ pageUrl?: string;
86
+ originPath?: string;
87
+ originLabel?: string;
88
+ source?: string;
89
+ };
90
+ }
91
+
92
+ /** POST /api/hubspot/forms/:slug/submit — 200 response. */
93
+ export interface SubmitResponse {
94
+ ok: true;
95
+ /** False when the CRM was unreachable — the submission is stored either way. */
96
+ hubspotSynced: boolean;
97
+ }
98
+
99
+ /** POST /api/hubspot/forms/:slug/submit — 422 response. */
100
+ export interface SubmitValidationError {
101
+ ok: false;
102
+ missingRequired: { id: string; name: string; label: string }[];
103
+ }
@@ -0,0 +1,2 @@
1
+ // types-only entry
2
+ module.exports = {};
@@ -0,0 +1,2 @@
1
+ // types-only entry
2
+ export default {};
package/package.json CHANGED
@@ -1,12 +1,16 @@
1
1
  {
2
2
  "name": "strapi-plugin-hubspot",
3
- "version": "0.5.0",
4
- "description": "HubSpot integration for Strapi — pick CRM properties from a searchable list filtered by object, and catch bad mappings before they reach the API.",
3
+ "version": "0.6.0",
4
+ "description": "The form builder for HubSpot in Strapi — multi-step forms with conditional fields mapped to real CRM properties, a public submit pipeline with retries, and save-time mapping validation.",
5
5
  "keywords": [
6
6
  "strapi",
7
7
  "plugin",
8
8
  "hubspot",
9
9
  "crm",
10
+ "form-builder",
11
+ "forms",
12
+ "conditional-fields",
13
+ "leads",
10
14
  "custom-field"
11
15
  ],
12
16
  "license": "MIT",
@@ -35,20 +39,30 @@
35
39
  "import": "./dist/server/index.mjs",
36
40
  "require": "./dist/server/index.js",
37
41
  "default": "./dist/server/index.js"
42
+ },
43
+ "./types": {
44
+ "types": "./dist/shared/types.d.ts",
45
+ "source": "./shared/types.ts",
46
+ "import": "./dist/shared/types.mjs",
47
+ "require": "./dist/shared/types.js",
48
+ "default": "./dist/shared/types.js"
38
49
  }
39
50
  },
40
51
  "files": [
41
- "dist"
52
+ "dist",
53
+ "CHANGELOG.md"
42
54
  ],
43
55
  "scripts": {
44
- "build": "strapi-plugin build",
56
+ "build": "strapi-plugin build && node scripts/build-types.mjs",
45
57
  "watch": "strapi-plugin watch",
46
58
  "verify": "strapi-plugin verify",
47
59
  "test": "vitest run",
48
60
  "test:watch": "vitest",
49
- "prepublishOnly": "npm run build"
61
+ "prepublishOnly": "npm run build",
62
+ "lint": "eslint admin/src server/src"
50
63
  },
51
64
  "devDependencies": {
65
+ "@eslint/js": "^10.0.1",
52
66
  "@strapi/design-system": "^2.0.0-rc.29",
53
67
  "@strapi/icons": "^2.0.0-rc.29",
54
68
  "@strapi/sdk-plugin": "^5.3.2",
@@ -57,11 +71,14 @@
57
71
  "@strapi/utils": "^5.0.0",
58
72
  "@types/react": "^18.3.3",
59
73
  "@types/react-dom": "^18.3.0",
74
+ "eslint": "^10.9.1",
75
+ "eslint-plugin-react-hooks": "^7.1.1",
60
76
  "react": "^18.3.1",
61
77
  "react-dom": "^18.3.1",
62
78
  "react-router-dom": "^6.26.0",
63
79
  "styled-components": "^6.1.11",
64
80
  "typescript": "^5.5.4",
81
+ "typescript-eslint": "^8.68.0",
65
82
  "vitest": "^3.2.4"
66
83
  },
67
84
  "peerDependencies": {
@@ -82,4 +99,4 @@
82
99
  "engines": {
83
100
  "node": ">=18.0.0"
84
101
  }
85
- }
102
+ }
@@ -1,83 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const en = {
4
- "property.label": "HubSpot property",
5
- "property.description": "Picked from the portal's real properties",
6
- "options.section": "HubSpot",
7
- "options.objectField.label": "Object field",
8
- "options.objectField.description": "Name of the sibling field holding the HubSpot object (e.g. hsObject). Leave empty to list every object's properties.",
9
- "options.objectField.placeholder": "hsObject",
10
- "options.optionsField.label": "Options field",
11
- "options.optionsField.description": `Name of the sibling repeatable holding this field's choices (value/label entries), filled by the import button on enumeration properties. Defaults to "options".`,
12
- "options.optionsField.placeholder": "options",
13
- "object.label": "HubSpot object",
14
- "object.description": "Picked from the portal's configured objects",
15
- "object.loading": "Loading HubSpot objects…",
16
- "object.placeholder": "Choose an object…",
17
- "object.no-scope": "{object} — missing scope on the token",
18
- "settings.section": "HubSpot",
19
- "settings.link": "Configuration",
20
- "picker.loading": "Loading HubSpot properties…",
21
- "picker.placeholder": "Search a property…",
22
- "picker.free-placeholder": "e.g. hs_role, numberofemployees",
23
- "picker.load-error": "HubSpot properties unavailable",
24
- "picker.not-configured": "No HubSpot API key — free text. Set it in Settings → HubSpot.",
25
- "picker.object-unavailable": "Properties of “{object}” unreadable — missing scope on the token.",
26
- "picker.belongs-to": "{property} — belongs to {object}",
27
- "picker.unknown": "{property} — unknown to the portal",
28
- "picker.view": "View in HubSpot",
29
- "picker.no-results": "No matching property — properties are managed in HubSpot.",
30
- "picker.refresh": "Refresh the properties from HubSpot",
31
- "picker.import": "Import the {count} options from HubSpot",
32
- "picker.imported": "Options imported — save to keep them.",
33
- "settings.subtitle": "The private app token used to read the portal's properties and validate form mappings.",
34
- "settings.configured": "Configured {hint}",
35
- "settings.not-configured": "Not configured",
36
- "settings.source": "source: {source}",
37
- "settings.source.settings": "set here",
38
- "settings.source.config": "config/plugins.ts",
39
- "settings.source.env": "environment variable",
40
- "settings.key.label": "Private app token",
41
- "settings.key.hint": "A key entered here overrides the ones from config/plugins.ts and HUBSPOT_API_KEY.",
42
- "settings.key.placeholder.set": "•••••••• (leave empty to keep)",
43
- "settings.key.placeholder.empty": "pat-eu1-…",
44
- "settings.save": "Save",
45
- "settings.test": "Test connection",
46
- "settings.remove": "Remove",
47
- "settings.loading": "Loading…",
48
- "settings.load-error": "Could not load settings.",
49
- "settings.saved": "Key saved.",
50
- "settings.save-error": "Could not save the key.",
51
- "settings.removed": "Key removed.",
52
- "settings.remove-error": "Could not remove the key.",
53
- "settings.test-ok": "Connection established — {count} readable properties.",
54
- "settings.test-no-key": "No key configured.",
55
- "settings.test-error": "HubSpot unreachable — invalid or revoked key?",
56
- "settings.scopes": "The token needs the crm.schemas.contacts.read and crm.schemas.companies.read scopes to list properties. It is never returned to the browser: only its existence, its source and its last four characters are.",
57
- "audit.title": "Mapping audit",
58
- "audit.subtitle": "Scans every entry of the validated content types and lists the mappings the portal would reject today — including properties deleted in HubSpot since they were saved.",
59
- "audit.run": "Run the audit",
60
- "audit.error": "Audit failed — HubSpot unreachable?",
61
- "audit.no-targets": "No content type to audit — declare them under `validate` in the plugin config.",
62
- "audit.clean": "Nothing to report — every mapping is valid.",
63
- "audit.summary": "{entries} entries · {mappings} mappings",
64
- "audit.target-error": "Could not scan: {error}",
65
- "failures.title": "Failed submissions",
66
- "failures.subtitle": "Submissions HubSpot couldn't take after the automatic retries. They can be inspected under Content Manager → HubSpot failed submissions.",
67
- "failures.count": "{count} queued",
68
- "failures.retry": "Replay now",
69
- "failures.retried": "{succeeded} replayed, {failed} still failing.",
70
- "failures.error": "Replay failed.",
71
- "problem.unknown": "“{property}” does not exist on {object} in this portal",
72
- "problem.wrong-object": "“{property}” exists on {actual}, not on {object}",
73
- "problem.whitespace": "“{property}” has surrounding whitespace",
74
- "problem.bad-option": "“{property}” does not accept {values}",
75
- "objects.contact": "Contact",
76
- "objects.company": "Company",
77
- "objects.deal": "Deal",
78
- "objects.ticket": "Ticket",
79
- "objects.product": "Product",
80
- "objects.line_item": "Line item",
81
- "objects.quote": "Quote"
82
- };
83
- exports.default = en;
@@ -1,83 +0,0 @@
1
- const en = {
2
- "property.label": "HubSpot property",
3
- "property.description": "Picked from the portal's real properties",
4
- "options.section": "HubSpot",
5
- "options.objectField.label": "Object field",
6
- "options.objectField.description": "Name of the sibling field holding the HubSpot object (e.g. hsObject). Leave empty to list every object's properties.",
7
- "options.objectField.placeholder": "hsObject",
8
- "options.optionsField.label": "Options field",
9
- "options.optionsField.description": `Name of the sibling repeatable holding this field's choices (value/label entries), filled by the import button on enumeration properties. Defaults to "options".`,
10
- "options.optionsField.placeholder": "options",
11
- "object.label": "HubSpot object",
12
- "object.description": "Picked from the portal's configured objects",
13
- "object.loading": "Loading HubSpot objects…",
14
- "object.placeholder": "Choose an object…",
15
- "object.no-scope": "{object} — missing scope on the token",
16
- "settings.section": "HubSpot",
17
- "settings.link": "Configuration",
18
- "picker.loading": "Loading HubSpot properties…",
19
- "picker.placeholder": "Search a property…",
20
- "picker.free-placeholder": "e.g. hs_role, numberofemployees",
21
- "picker.load-error": "HubSpot properties unavailable",
22
- "picker.not-configured": "No HubSpot API key — free text. Set it in Settings → HubSpot.",
23
- "picker.object-unavailable": "Properties of “{object}” unreadable — missing scope on the token.",
24
- "picker.belongs-to": "{property} — belongs to {object}",
25
- "picker.unknown": "{property} — unknown to the portal",
26
- "picker.view": "View in HubSpot",
27
- "picker.no-results": "No matching property — properties are managed in HubSpot.",
28
- "picker.refresh": "Refresh the properties from HubSpot",
29
- "picker.import": "Import the {count} options from HubSpot",
30
- "picker.imported": "Options imported — save to keep them.",
31
- "settings.subtitle": "The private app token used to read the portal's properties and validate form mappings.",
32
- "settings.configured": "Configured {hint}",
33
- "settings.not-configured": "Not configured",
34
- "settings.source": "source: {source}",
35
- "settings.source.settings": "set here",
36
- "settings.source.config": "config/plugins.ts",
37
- "settings.source.env": "environment variable",
38
- "settings.key.label": "Private app token",
39
- "settings.key.hint": "A key entered here overrides the ones from config/plugins.ts and HUBSPOT_API_KEY.",
40
- "settings.key.placeholder.set": "•••••••• (leave empty to keep)",
41
- "settings.key.placeholder.empty": "pat-eu1-…",
42
- "settings.save": "Save",
43
- "settings.test": "Test connection",
44
- "settings.remove": "Remove",
45
- "settings.loading": "Loading…",
46
- "settings.load-error": "Could not load settings.",
47
- "settings.saved": "Key saved.",
48
- "settings.save-error": "Could not save the key.",
49
- "settings.removed": "Key removed.",
50
- "settings.remove-error": "Could not remove the key.",
51
- "settings.test-ok": "Connection established — {count} readable properties.",
52
- "settings.test-no-key": "No key configured.",
53
- "settings.test-error": "HubSpot unreachable — invalid or revoked key?",
54
- "settings.scopes": "The token needs the crm.schemas.contacts.read and crm.schemas.companies.read scopes to list properties. It is never returned to the browser: only its existence, its source and its last four characters are.",
55
- "audit.title": "Mapping audit",
56
- "audit.subtitle": "Scans every entry of the validated content types and lists the mappings the portal would reject today — including properties deleted in HubSpot since they were saved.",
57
- "audit.run": "Run the audit",
58
- "audit.error": "Audit failed — HubSpot unreachable?",
59
- "audit.no-targets": "No content type to audit — declare them under `validate` in the plugin config.",
60
- "audit.clean": "Nothing to report — every mapping is valid.",
61
- "audit.summary": "{entries} entries · {mappings} mappings",
62
- "audit.target-error": "Could not scan: {error}",
63
- "failures.title": "Failed submissions",
64
- "failures.subtitle": "Submissions HubSpot couldn't take after the automatic retries. They can be inspected under Content Manager → HubSpot failed submissions.",
65
- "failures.count": "{count} queued",
66
- "failures.retry": "Replay now",
67
- "failures.retried": "{succeeded} replayed, {failed} still failing.",
68
- "failures.error": "Replay failed.",
69
- "problem.unknown": "“{property}” does not exist on {object} in this portal",
70
- "problem.wrong-object": "“{property}” exists on {actual}, not on {object}",
71
- "problem.whitespace": "“{property}” has surrounding whitespace",
72
- "problem.bad-option": "“{property}” does not accept {values}",
73
- "objects.contact": "Contact",
74
- "objects.company": "Company",
75
- "objects.deal": "Deal",
76
- "objects.ticket": "Ticket",
77
- "objects.product": "Product",
78
- "objects.line_item": "Line item",
79
- "objects.quote": "Quote"
80
- };
81
- export {
82
- en as default
83
- };
@@ -1,83 +0,0 @@
1
- const fr = {
2
- "property.label": "Propriété HubSpot",
3
- "property.description": "Choisie dans les propriétés réelles du portail",
4
- "options.section": "HubSpot",
5
- "options.objectField.label": "Champ objet",
6
- "options.objectField.description": "Nom du champ voisin qui porte l'objet HubSpot (ex. hsObject). Laisser vide pour lister les propriétés de tous les objets.",
7
- "options.objectField.placeholder": "hsObject",
8
- "options.optionsField.label": "Champ options",
9
- "options.optionsField.description": "Nom du repeatable voisin qui porte les choix de ce champ (entrées value/label), rempli par le bouton d'import sur les propriétés à énumération. Par défaut : « options ».",
10
- "options.optionsField.placeholder": "options",
11
- "object.label": "Objet HubSpot",
12
- "object.description": "Choisi parmi les objets configurés du portail",
13
- "object.loading": "Chargement des objets HubSpot…",
14
- "object.placeholder": "Choisir un objet…",
15
- "object.no-scope": "{object} — portée manquante sur le jeton",
16
- "settings.section": "HubSpot",
17
- "settings.link": "Configuration",
18
- "picker.loading": "Chargement des propriétés HubSpot…",
19
- "picker.placeholder": "Rechercher une propriété…",
20
- "picker.free-placeholder": "ex. hs_role, numberofemployees",
21
- "picker.load-error": "Propriétés HubSpot indisponibles",
22
- "picker.not-configured": "Aucune clé API HubSpot — saisie libre. Renseignez-la dans Réglages → HubSpot.",
23
- "picker.object-unavailable": "Propriétés de « {object} » illisibles — portée manquante sur le jeton.",
24
- "picker.belongs-to": "{property} — appartient à {object}",
25
- "picker.unknown": "{property} — inconnue du portail",
26
- "picker.view": "Voir dans HubSpot",
27
- "picker.no-results": "Aucune propriété correspondante — les propriétés se gèrent dans HubSpot.",
28
- "picker.refresh": "Rafraîchir les propriétés depuis HubSpot",
29
- "picker.import": "Importer les {count} options depuis HubSpot",
30
- "picker.imported": "Options importées — enregistrez pour les conserver.",
31
- "settings.subtitle": "Le jeton d'application privée utilisé pour lire les propriétés du portail et valider les mappings de formulaires.",
32
- "settings.configured": "Configurée {hint}",
33
- "settings.not-configured": "Non configurée",
34
- "settings.source": "source : {source}",
35
- "settings.source.settings": "saisie ici",
36
- "settings.source.config": "config/plugins.ts",
37
- "settings.source.env": "variable d'environnement",
38
- "settings.key.label": "Jeton d'application privée",
39
- "settings.key.hint": "Saisir une clé ici remplace celles venant de config/plugins.ts et de HUBSPOT_API_KEY.",
40
- "settings.key.placeholder.set": "•••••••• (laisser vide pour conserver)",
41
- "settings.key.placeholder.empty": "pat-eu1-…",
42
- "settings.save": "Enregistrer",
43
- "settings.test": "Tester la connexion",
44
- "settings.remove": "Supprimer",
45
- "settings.loading": "Chargement…",
46
- "settings.load-error": "Réglages illisibles.",
47
- "settings.saved": "Clé enregistrée.",
48
- "settings.save-error": "Enregistrement impossible.",
49
- "settings.removed": "Clé supprimée.",
50
- "settings.remove-error": "Suppression impossible.",
51
- "settings.test-ok": "Connexion établie — {count} propriétés lisibles.",
52
- "settings.test-no-key": "Aucune clé configurée.",
53
- "settings.test-error": "HubSpot injoignable — clé invalide ou révoquée ?",
54
- "settings.scopes": "Le jeton a besoin des portées crm.schemas.contacts.read et crm.schemas.companies.read pour lister les propriétés. Il n'est jamais renvoyé au navigateur : seuls son existence, sa provenance et ses quatre derniers caractères le sont.",
55
- "audit.title": "Audit des mappings",
56
- "audit.subtitle": "Parcourt toutes les entrées des content-types validés et liste les mappings que le portail refuserait aujourd'hui — y compris les propriétés supprimées dans HubSpot depuis leur enregistrement.",
57
- "audit.run": "Lancer l'audit",
58
- "audit.error": "Audit impossible — HubSpot injoignable ?",
59
- "audit.no-targets": "Aucun content-type à auditer — déclarez-les dans `validate` dans la config du plugin.",
60
- "audit.clean": "Rien à signaler — tous les mappings sont valides.",
61
- "audit.summary": "{entries} entrées · {mappings} mappings",
62
- "audit.target-error": "Scan impossible : {error}",
63
- "failures.title": "Envois en échec",
64
- "failures.subtitle": "Les soumissions que HubSpot n'a pas pu recevoir après les tentatives automatiques. Elles sont consultables dans Content Manager → HubSpot failed submissions.",
65
- "failures.count": "{count} en attente",
66
- "failures.retry": "Rejouer maintenant",
67
- "failures.retried": "{succeeded} rejouées, {failed} encore en échec.",
68
- "failures.error": "Rejeu impossible.",
69
- "problem.unknown": "« {property} » n'existe pas sur {object} dans ce portail",
70
- "problem.wrong-object": "« {property} » existe sur {actual}, pas sur {object}",
71
- "problem.whitespace": "« {property} » contient des espaces autour",
72
- "problem.bad-option": "« {property} » n'accepte pas {values}",
73
- "objects.contact": "Contact",
74
- "objects.company": "Société",
75
- "objects.deal": "Transaction",
76
- "objects.ticket": "Ticket",
77
- "objects.product": "Produit",
78
- "objects.line_item": "Ligne de commande",
79
- "objects.quote": "Devis"
80
- };
81
- export {
82
- fr as default
83
- };
@@ -1,83 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const fr = {
4
- "property.label": "Propriété HubSpot",
5
- "property.description": "Choisie dans les propriétés réelles du portail",
6
- "options.section": "HubSpot",
7
- "options.objectField.label": "Champ objet",
8
- "options.objectField.description": "Nom du champ voisin qui porte l'objet HubSpot (ex. hsObject). Laisser vide pour lister les propriétés de tous les objets.",
9
- "options.objectField.placeholder": "hsObject",
10
- "options.optionsField.label": "Champ options",
11
- "options.optionsField.description": "Nom du repeatable voisin qui porte les choix de ce champ (entrées value/label), rempli par le bouton d'import sur les propriétés à énumération. Par défaut : « options ».",
12
- "options.optionsField.placeholder": "options",
13
- "object.label": "Objet HubSpot",
14
- "object.description": "Choisi parmi les objets configurés du portail",
15
- "object.loading": "Chargement des objets HubSpot…",
16
- "object.placeholder": "Choisir un objet…",
17
- "object.no-scope": "{object} — portée manquante sur le jeton",
18
- "settings.section": "HubSpot",
19
- "settings.link": "Configuration",
20
- "picker.loading": "Chargement des propriétés HubSpot…",
21
- "picker.placeholder": "Rechercher une propriété…",
22
- "picker.free-placeholder": "ex. hs_role, numberofemployees",
23
- "picker.load-error": "Propriétés HubSpot indisponibles",
24
- "picker.not-configured": "Aucune clé API HubSpot — saisie libre. Renseignez-la dans Réglages → HubSpot.",
25
- "picker.object-unavailable": "Propriétés de « {object} » illisibles — portée manquante sur le jeton.",
26
- "picker.belongs-to": "{property} — appartient à {object}",
27
- "picker.unknown": "{property} — inconnue du portail",
28
- "picker.view": "Voir dans HubSpot",
29
- "picker.no-results": "Aucune propriété correspondante — les propriétés se gèrent dans HubSpot.",
30
- "picker.refresh": "Rafraîchir les propriétés depuis HubSpot",
31
- "picker.import": "Importer les {count} options depuis HubSpot",
32
- "picker.imported": "Options importées — enregistrez pour les conserver.",
33
- "settings.subtitle": "Le jeton d'application privée utilisé pour lire les propriétés du portail et valider les mappings de formulaires.",
34
- "settings.configured": "Configurée {hint}",
35
- "settings.not-configured": "Non configurée",
36
- "settings.source": "source : {source}",
37
- "settings.source.settings": "saisie ici",
38
- "settings.source.config": "config/plugins.ts",
39
- "settings.source.env": "variable d'environnement",
40
- "settings.key.label": "Jeton d'application privée",
41
- "settings.key.hint": "Saisir une clé ici remplace celles venant de config/plugins.ts et de HUBSPOT_API_KEY.",
42
- "settings.key.placeholder.set": "•••••••• (laisser vide pour conserver)",
43
- "settings.key.placeholder.empty": "pat-eu1-…",
44
- "settings.save": "Enregistrer",
45
- "settings.test": "Tester la connexion",
46
- "settings.remove": "Supprimer",
47
- "settings.loading": "Chargement…",
48
- "settings.load-error": "Réglages illisibles.",
49
- "settings.saved": "Clé enregistrée.",
50
- "settings.save-error": "Enregistrement impossible.",
51
- "settings.removed": "Clé supprimée.",
52
- "settings.remove-error": "Suppression impossible.",
53
- "settings.test-ok": "Connexion établie — {count} propriétés lisibles.",
54
- "settings.test-no-key": "Aucune clé configurée.",
55
- "settings.test-error": "HubSpot injoignable — clé invalide ou révoquée ?",
56
- "settings.scopes": "Le jeton a besoin des portées crm.schemas.contacts.read et crm.schemas.companies.read pour lister les propriétés. Il n'est jamais renvoyé au navigateur : seuls son existence, sa provenance et ses quatre derniers caractères le sont.",
57
- "audit.title": "Audit des mappings",
58
- "audit.subtitle": "Parcourt toutes les entrées des content-types validés et liste les mappings que le portail refuserait aujourd'hui — y compris les propriétés supprimées dans HubSpot depuis leur enregistrement.",
59
- "audit.run": "Lancer l'audit",
60
- "audit.error": "Audit impossible — HubSpot injoignable ?",
61
- "audit.no-targets": "Aucun content-type à auditer — déclarez-les dans `validate` dans la config du plugin.",
62
- "audit.clean": "Rien à signaler — tous les mappings sont valides.",
63
- "audit.summary": "{entries} entrées · {mappings} mappings",
64
- "audit.target-error": "Scan impossible : {error}",
65
- "failures.title": "Envois en échec",
66
- "failures.subtitle": "Les soumissions que HubSpot n'a pas pu recevoir après les tentatives automatiques. Elles sont consultables dans Content Manager → HubSpot failed submissions.",
67
- "failures.count": "{count} en attente",
68
- "failures.retry": "Rejouer maintenant",
69
- "failures.retried": "{succeeded} rejouées, {failed} encore en échec.",
70
- "failures.error": "Rejeu impossible.",
71
- "problem.unknown": "« {property} » n'existe pas sur {object} dans ce portail",
72
- "problem.wrong-object": "« {property} » existe sur {actual}, pas sur {object}",
73
- "problem.whitespace": "« {property} » contient des espaces autour",
74
- "problem.bad-option": "« {property} » n'accepte pas {values}",
75
- "objects.contact": "Contact",
76
- "objects.company": "Société",
77
- "objects.deal": "Transaction",
78
- "objects.ticket": "Ticket",
79
- "objects.product": "Produit",
80
- "objects.line_item": "Ligne de commande",
81
- "objects.quote": "Devis"
82
- };
83
- exports.default = fr;