@cakemail-org/ui-components-v2 2.2.102 → 2.2.103

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 (31) hide show
  1. package/dist/cjs/components/index.d.ts +1 -0
  2. package/dist/cjs/components/scopePicker/index.d.ts +8 -0
  3. package/dist/cjs/components/scopePicker/scopeGroups.d.ts +21 -0
  4. package/dist/cjs/components/scopePicker/types.d.ts +1 -0
  5. package/dist/cjs/factories/index.d.ts +1 -0
  6. package/dist/cjs/factories/personalAccessTokens/index.d.ts +22 -0
  7. package/dist/cjs/factories/personalAccessTokens/types.d.ts +1 -0
  8. package/dist/cjs/index.js +435 -0
  9. package/dist/cjs/models/index.d.ts +1 -0
  10. package/dist/cjs/models/personalAccessToken/index.d.ts +21 -0
  11. package/dist/cjs/models/personalAccessToken/types.d.ts +10 -0
  12. package/dist/cjs/services/index.d.ts +1 -0
  13. package/dist/cjs/services/personalAccessTokens/index.d.ts +24 -0
  14. package/dist/cjs/services/personalAccessTokens/types.d.ts +1 -0
  15. package/dist/cjs/utils/posthog.d.ts +5 -1
  16. package/dist/esm/components/index.d.ts +1 -0
  17. package/dist/esm/components/scopePicker/index.d.ts +8 -0
  18. package/dist/esm/components/scopePicker/scopeGroups.d.ts +21 -0
  19. package/dist/esm/components/scopePicker/types.d.ts +1 -0
  20. package/dist/esm/factories/index.d.ts +1 -0
  21. package/dist/esm/factories/personalAccessTokens/index.d.ts +22 -0
  22. package/dist/esm/factories/personalAccessTokens/types.d.ts +1 -0
  23. package/dist/esm/index.js +429 -2
  24. package/dist/esm/models/index.d.ts +1 -0
  25. package/dist/esm/models/personalAccessToken/index.d.ts +21 -0
  26. package/dist/esm/models/personalAccessToken/types.d.ts +10 -0
  27. package/dist/esm/services/index.d.ts +1 -0
  28. package/dist/esm/services/personalAccessTokens/index.d.ts +24 -0
  29. package/dist/esm/services/personalAccessTokens/types.d.ts +1 -0
  30. package/dist/esm/utils/posthog.d.ts +5 -1
  31. package/package.json +1 -1
@@ -0,0 +1,24 @@
1
+ export declare function listPats({ page, perPage, status }: {
2
+ page?: number;
3
+ perPage?: number;
4
+ status?: string;
5
+ }): Promise<any>;
6
+ export declare function getPat({ keyPrefix }: {
7
+ keyPrefix: string;
8
+ }): Promise<any>;
9
+ export declare function createPat({ name, scopes, expiresAt, allowedAccountIds }: {
10
+ name: string;
11
+ scopes: string[];
12
+ expiresAt?: number | null;
13
+ allowedAccountIds?: string[] | null;
14
+ }): Promise<any>;
15
+ export declare function updatePat({ keyPrefix, name, scopes, allowedAccountIds }: {
16
+ keyPrefix: string;
17
+ name?: string;
18
+ scopes?: string[];
19
+ allowedAccountIds?: string[] | null;
20
+ }): Promise<any>;
21
+ export declare function revokePat({ keyPrefix }: {
22
+ keyPrefix: string;
23
+ }): Promise<any>;
24
+ export * from "./types";
@@ -0,0 +1 @@
1
+ export {};
@@ -164,7 +164,11 @@ export declare enum EEvents {
164
164
  PAGE_PUBLISHED = "Page.Published",
165
165
  CUSTOM_DOMAIN_CREATED = "CustomDomain.Created",
166
166
  CUSTOM_DOMAIN_VERIFIED = "CustomDomain.Verified",
167
- CUSTOM_DOMAIN_DELETED = "CustomDomain.Deleted"
167
+ CUSTOM_DOMAIN_DELETED = "CustomDomain.Deleted",
168
+ PAT_CREATED = "PAT.Created",
169
+ PAT_UPDATED = "PAT.Updated",
170
+ PAT_REVOKED = "PAT.Revoked",
171
+ PAT_TOKEN_COPIED = "PAT.Token.Copied"
168
172
  }
169
173
  export declare function eventCondition(type: EEvents | string, disabledEvents?: string[]): boolean;
170
174
  export declare function trackEvent(type: EEvents | string, data?: any, dataParser?: (event: EEvents | string, data: any) => any, disabledEvents?: string[]): void;
@@ -37,6 +37,7 @@ export * from "./modal";
37
37
  export * from "./overlay";
38
38
  export * from "./radio";
39
39
  export * from "./resourceEdit";
40
+ export * from "./scopePicker";
40
41
  export * from "./search";
41
42
  export * from "./sideMenu";
42
43
  export * from "./sideMenu/sideMenuContainer";
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ export type TScopePicker = {
3
+ value: string[];
4
+ onChange: (scopes: string[]) => void;
5
+ isPartner?: boolean;
6
+ disabled?: boolean;
7
+ };
8
+ export declare function ScopePicker({ value, onChange, isPartner, disabled }: TScopePicker): React.JSX.Element;
@@ -0,0 +1,21 @@
1
+ export type TScopeAction = "read" | "write" | "delete" | "send" | "import" | "export" | "admin";
2
+ export type TScopeResource = {
3
+ resource: string;
4
+ label: string;
5
+ actions: TScopeAction[];
6
+ };
7
+ export type TScopeCategory = {
8
+ id: string;
9
+ label: string;
10
+ adminOnly: boolean;
11
+ resources: TScopeResource[];
12
+ };
13
+ export declare const SCOPE_IMPLICATIONS: Record<string, string[]>;
14
+ export declare const SCOPE_CATEGORIES: TScopeCategory[];
15
+ export type TScopePreset = {
16
+ id: string;
17
+ label: string;
18
+ scopes: string[];
19
+ };
20
+ export declare function getCategoryScopes(categoryId: string): string[];
21
+ export declare const SCOPE_PRESETS: TScopePreset[];
@@ -0,0 +1 @@
1
+ export { TScopePicker } from ".";
@@ -9,6 +9,7 @@ export * from "./emailAPI";
9
9
  export * from "./forms";
10
10
  export * from "./lists";
11
11
  export * from "./pages";
12
+ export * from "./personalAccessTokens";
12
13
  export * from "./popups";
13
14
  export * from "./senders";
14
15
  export * from "./suppressedEmails";
@@ -0,0 +1,22 @@
1
+ import { PersonalAccessTokenModel } from "../../models/personalAccessToken";
2
+ import { TGenericListReturn } from "../../types";
3
+ export declare class PersonalAccessTokensFactory {
4
+ static list({ page, perPage, status }?: {
5
+ page?: number;
6
+ perPage?: number;
7
+ status?: string;
8
+ }): Promise<TGenericListReturn<PersonalAccessTokenModel>>;
9
+ static get({ keyPrefix }: {
10
+ keyPrefix: string;
11
+ }): Promise<PersonalAccessTokenModel>;
12
+ static create({ name, scopes, expiresAt, allowedAccountIds }: {
13
+ name: string;
14
+ scopes: string[];
15
+ expiresAt?: number | null;
16
+ allowedAccountIds?: string[] | null;
17
+ }): Promise<{
18
+ pat: PersonalAccessTokenModel;
19
+ plaintext: string;
20
+ }>;
21
+ }
22
+ export * from "./types";
@@ -0,0 +1 @@
1
+ export {};
package/dist/esm/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { lighten, Stack as Stack$1, Box, CircularProgress as CircularProgress$1, LinearProgress as LinearProgress$1, Tooltip, Typography as Typography$1, Badge, Avatar as Avatar$1, Dialog as Dialog$1, DialogContent, Checkbox as Checkbox$1, Paper, Chip as Chip$1, ClickAwayListener, useTheme as useTheme$2, FormControl, InputLabel, Link as Link$1, Radio as Radio$1, Divider as Divider$2, InputAdornment, Select as Select$1, MenuItem as MenuItem$1 } from '@mui/material';
2
2
  import classNames from 'classnames';
3
3
  import * as React from 'react';
4
- import React__default, { forwardRef, useRef, useState, useEffect, useLayoutEffect, useImperativeHandle, Component, useCallback, createContext } from 'react';
4
+ import React__default, { forwardRef, useRef, useState, useEffect, useLayoutEffect, useImperativeHandle, Component, useCallback, createContext, useMemo } from 'react';
5
5
  import moment from 'moment';
6
6
  import moment$1 from 'moment/min/moment-with-locales';
7
7
  import posthog from 'posthog-js';
@@ -3875,6 +3875,10 @@ var EEvents;
3875
3875
  EEvents["CUSTOM_DOMAIN_CREATED"] = "CustomDomain.Created";
3876
3876
  EEvents["CUSTOM_DOMAIN_VERIFIED"] = "CustomDomain.Verified";
3877
3877
  EEvents["CUSTOM_DOMAIN_DELETED"] = "CustomDomain.Deleted";
3878
+ EEvents["PAT_CREATED"] = "PAT.Created";
3879
+ EEvents["PAT_UPDATED"] = "PAT.Updated";
3880
+ EEvents["PAT_REVOKED"] = "PAT.Revoked";
3881
+ EEvents["PAT_TOKEN_COPIED"] = "PAT.Token.Copied";
3878
3882
  })(EEvents || (EEvents = {}));
3879
3883
  function eventCondition(type, disabledEvents) {
3880
3884
  if (disabledEvents === void 0) { disabledEvents = []; }
@@ -11691,6 +11695,57 @@ function renderPage(_a) {
11691
11695
  });
11692
11696
  }
11693
11697
 
11698
+ var BASE_URL = function () { return uiKitConfig.GATEWAY_PROXY + "/pats"; };
11699
+ function listPats(_a) {
11700
+ var page = _a.page, perPage = _a.perPage, status = _a.status;
11701
+ return callApi({
11702
+ url: BASE_URL(),
11703
+ query: camelCase({ page: page, per_page: perPage, status: status }),
11704
+ fetchOptions: { method: EMethods.get }
11705
+ });
11706
+ }
11707
+ function getPat(_a) {
11708
+ var keyPrefix = _a.keyPrefix;
11709
+ return callApi({
11710
+ url: "".concat(BASE_URL(), "/").concat(keyPrefix),
11711
+ fetchOptions: { method: EMethods.get }
11712
+ });
11713
+ }
11714
+ function createPat(_a) {
11715
+ var name = _a.name, scopes = _a.scopes, expiresAt = _a.expiresAt, allowedAccountIds = _a.allowedAccountIds;
11716
+ return callApi({
11717
+ url: BASE_URL(),
11718
+ fetchOptions: {
11719
+ method: EMethods.post,
11720
+ body: { name: name, scopes: scopes, expires_at: expiresAt !== null && expiresAt !== void 0 ? expiresAt : null, allowed_account_ids: allowedAccountIds !== null && allowedAccountIds !== void 0 ? allowedAccountIds : null }
11721
+ }
11722
+ });
11723
+ }
11724
+ function updatePat(_a) {
11725
+ var keyPrefix = _a.keyPrefix, name = _a.name, scopes = _a.scopes, allowedAccountIds = _a.allowedAccountIds;
11726
+ var body = {};
11727
+ if (name !== undefined)
11728
+ body.name = name;
11729
+ if (scopes !== undefined)
11730
+ body.scopes = scopes;
11731
+ if (allowedAccountIds !== undefined)
11732
+ body.allowed_account_ids = allowedAccountIds;
11733
+ return callApi({
11734
+ url: "".concat(BASE_URL(), "/").concat(keyPrefix),
11735
+ fetchOptions: {
11736
+ method: EMethods.patch,
11737
+ body: body
11738
+ }
11739
+ });
11740
+ }
11741
+ function revokePat(_a) {
11742
+ var keyPrefix = _a.keyPrefix;
11743
+ return callApi({
11744
+ url: "".concat(BASE_URL(), "/").concat(keyPrefix),
11745
+ fetchOptions: { method: EMethods.delete }
11746
+ });
11747
+ }
11748
+
11694
11749
  function listPopups(_a) {
11695
11750
  return __awaiter(this, void 0, void 0, function () {
11696
11751
  var options = __rest(_a, []);
@@ -12792,6 +12847,47 @@ var PageModel = /** @class */ (function (_super) {
12792
12847
  return PageModel;
12793
12848
  }(ListPageModel));
12794
12849
 
12850
+ var PersonalAccessTokenModel = /** @class */ (function () {
12851
+ function PersonalAccessTokenModel(params) {
12852
+ this.key_prefix = params.key_prefix;
12853
+ this.name = params.name;
12854
+ this.status = params.status;
12855
+ this.scopes = params.scopes;
12856
+ this.allowed_account_ids = params.allowed_account_ids;
12857
+ this.created_at = params.created_at;
12858
+ this.expires_at = params.expires_at;
12859
+ this.revoked_at = params.revoked_at;
12860
+ }
12861
+ PersonalAccessTokenModel.prototype.toJson = function () { return modelToJson(this); };
12862
+ PersonalAccessTokenModel.prototype.set = function (property, value) { modelSet(this, property, value); };
12863
+ PersonalAccessTokenModel.prototype.update = function (_a) {
12864
+ return __awaiter(this, arguments, void 0, function (_b) {
12865
+ var _this = this;
12866
+ var name = _b.name, scopes = _b.scopes, allowedAccountIds = _b.allowedAccountIds;
12867
+ return __generator(this, function (_c) {
12868
+ return [2 /*return*/, updatePat({ keyPrefix: this.key_prefix, name: name, scopes: scopes, allowedAccountIds: allowedAccountIds })
12869
+ .then(function (data) {
12870
+ trackEvent(EEvents.PAT_UPDATED, { key_prefix: _this.key_prefix });
12871
+ return new PersonalAccessTokenModel(data.data);
12872
+ })];
12873
+ });
12874
+ });
12875
+ };
12876
+ PersonalAccessTokenModel.prototype.revoke = function () {
12877
+ return __awaiter(this, void 0, void 0, function () {
12878
+ var _this = this;
12879
+ return __generator(this, function (_a) {
12880
+ return [2 /*return*/, revokePat({ keyPrefix: this.key_prefix })
12881
+ .then(function (data) {
12882
+ trackEvent(EEvents.PAT_REVOKED, { key_prefix: _this.key_prefix });
12883
+ return new PersonalAccessTokenModel(data.data);
12884
+ })];
12885
+ });
12886
+ });
12887
+ };
12888
+ return PersonalAccessTokenModel;
12889
+ }());
12890
+
12795
12891
  var EPopupTriggerType;
12796
12892
  (function (EPopupTriggerType) {
12797
12893
  EPopupTriggerType["on_page_load"] = "on_page_load";
@@ -18888,6 +18984,298 @@ function ResourceEdit(_a) {
18888
18984
  support && React__default.createElement(Box, { className: "resource-support ".concat(!open ? "open" : "hidden") }, support));
18889
18985
  }
18890
18986
 
18987
+ // Scope implication rules
18988
+ var SCOPE_IMPLICATIONS = {
18989
+ "write": ["read"],
18990
+ "delete": ["read"],
18991
+ "send": ["read"],
18992
+ "import": ["read", "write"],
18993
+ "export": ["read"],
18994
+ "admin": ["read", "write", "delete"],
18995
+ };
18996
+ var SCOPE_CATEGORIES = [
18997
+ {
18998
+ id: "audience",
18999
+ label: "Audience",
19000
+ adminOnly: false,
19001
+ resources: [
19002
+ { resource: "lists", label: "Lists", actions: ["read", "write", "delete"] },
19003
+ { resource: "contacts", label: "Contacts", actions: ["read", "write", "delete", "import", "export"] },
19004
+ { resource: "segments", label: "Segments", actions: ["read", "write", "delete"] },
19005
+ { resource: "tags", label: "Tags", actions: ["read", "write", "delete"] },
19006
+ { resource: "custom_attributes", label: "Custom Attributes", actions: ["read", "write", "delete"] },
19007
+ { resource: "interests", label: "Interests", actions: ["read", "write", "delete"] },
19008
+ ]
19009
+ },
19010
+ {
19011
+ id: "suppressions",
19012
+ label: "Suppressions",
19013
+ adminOnly: false,
19014
+ resources: [
19015
+ { resource: "suppressions", label: "Suppressions", actions: ["read", "write", "delete"] },
19016
+ ]
19017
+ },
19018
+ {
19019
+ id: "campaigns",
19020
+ label: "Campaigns",
19021
+ adminOnly: false,
19022
+ resources: [
19023
+ { resource: "campaigns", label: "Campaigns", actions: ["read", "write", "delete", "send"] },
19024
+ { resource: "campaign_blueprints", label: "Campaign Blueprints", actions: ["read", "write", "delete"] },
19025
+ ]
19026
+ },
19027
+ {
19028
+ id: "templates",
19029
+ label: "Templates",
19030
+ adminOnly: false,
19031
+ resources: [
19032
+ { resource: "templates", label: "Templates", actions: ["read", "write", "delete"] },
19033
+ ]
19034
+ },
19035
+ {
19036
+ id: "emailapi",
19037
+ label: "Email API",
19038
+ adminOnly: false,
19039
+ resources: [
19040
+ { resource: "email_api", label: "Email API", actions: ["read", "send"] },
19041
+ ]
19042
+ },
19043
+ {
19044
+ id: "forms",
19045
+ label: "Forms",
19046
+ adminOnly: false,
19047
+ resources: [
19048
+ { resource: "forms", label: "Forms", actions: ["read", "write", "delete"] },
19049
+ { resource: "preference_centers", label: "Preference Centers", actions: ["read", "write", "delete"] },
19050
+ ]
19051
+ },
19052
+ {
19053
+ id: "deliverability",
19054
+ label: "Deliverability",
19055
+ adminOnly: false,
19056
+ resources: [
19057
+ { resource: "senders", label: "Senders", actions: ["read", "write", "delete"] },
19058
+ { resource: "dkim", label: "DKIM", actions: ["read", "write", "delete"] },
19059
+ { resource: "domains", label: "Domains", actions: ["read", "write", "delete"] },
19060
+ { resource: "logos", label: "Logos", actions: ["read", "write", "delete"] },
19061
+ ]
19062
+ },
19063
+ {
19064
+ id: "webhooks",
19065
+ label: "Webhooks",
19066
+ adminOnly: false,
19067
+ resources: [
19068
+ { resource: "webhooks", label: "Webhooks", actions: ["read", "write", "delete"] },
19069
+ ]
19070
+ },
19071
+ {
19072
+ id: "analytics",
19073
+ label: "Analytics",
19074
+ adminOnly: false,
19075
+ resources: [
19076
+ { resource: "reports", label: "Reports", actions: ["read", "export"] },
19077
+ { resource: "logs", label: "Logs", actions: ["read", "export"] },
19078
+ { resource: "links", label: "Links", actions: ["read"] },
19079
+ { resource: "tasks", label: "Tasks", actions: ["read"] },
19080
+ ]
19081
+ },
19082
+ {
19083
+ id: "account",
19084
+ label: "Account",
19085
+ adminOnly: false,
19086
+ resources: [
19087
+ { resource: "account", label: "Account", actions: ["read", "write"] },
19088
+ ]
19089
+ },
19090
+ {
19091
+ id: "users_admin",
19092
+ label: "Users (Admin)",
19093
+ adminOnly: true,
19094
+ resources: [
19095
+ { resource: "users", label: "Users", actions: ["read", "write", "admin"] },
19096
+ ]
19097
+ },
19098
+ {
19099
+ id: "subaccounts_admin",
19100
+ label: "Sub-accounts (Admin)",
19101
+ adminOnly: true,
19102
+ resources: [
19103
+ { resource: "sub_accounts", label: "Sub-accounts", actions: ["read", "write", "admin"] },
19104
+ ]
19105
+ },
19106
+ {
19107
+ id: "tokens_admin",
19108
+ label: "Tokens (Admin)",
19109
+ adminOnly: true,
19110
+ resources: [
19111
+ { resource: "tokens", label: "Access Tokens", actions: ["read", "admin"] },
19112
+ ]
19113
+ },
19114
+ ];
19115
+ // Helper to get all scopes for a category
19116
+ function getCategoryScopes(categoryId) {
19117
+ var cat = SCOPE_CATEGORIES.find(function (c) { return c.id === categoryId; });
19118
+ if (!cat)
19119
+ return [];
19120
+ return cat.resources.flatMap(function (r) { return r.actions.map(function (a) { return "".concat(r.resource, ":").concat(a); }); });
19121
+ }
19122
+ var SCOPE_PRESETS = [
19123
+ {
19124
+ id: "readonly",
19125
+ label: "Read-only (all)",
19126
+ scopes: SCOPE_CATEGORIES
19127
+ .filter(function (c) { return !c.adminOnly; })
19128
+ .flatMap(function (c) { return c.resources.map(function (r) { return "".concat(r.resource, ":read"); }); })
19129
+ },
19130
+ {
19131
+ id: "full",
19132
+ label: "Full access",
19133
+ scopes: SCOPE_CATEGORIES
19134
+ .filter(function (c) { return !c.adminOnly; })
19135
+ .flatMap(function (c) { return c.resources.flatMap(function (r) { return r.actions.map(function (a) { return "".concat(r.resource, ":").concat(a); }); }); })
19136
+ },
19137
+ {
19138
+ id: "campaigns",
19139
+ label: "Campaigns manager",
19140
+ scopes: __spreadArray(__spreadArray(__spreadArray([], getCategoryScopes("campaigns"), true), getCategoryScopes("templates"), true), [
19141
+ "senders:read",
19142
+ "reports:read",
19143
+ ], false)
19144
+ },
19145
+ {
19146
+ id: "contacts",
19147
+ label: "Contact manager",
19148
+ scopes: __spreadArray(__spreadArray([], getCategoryScopes("audience"), true), getCategoryScopes("suppressions"), true)
19149
+ },
19150
+ {
19151
+ id: "developer",
19152
+ label: "Developer",
19153
+ scopes: __spreadArray(__spreadArray(__spreadArray([], getCategoryScopes("emailapi"), true), getCategoryScopes("webhooks"), true), [
19154
+ "reports:read", "logs:read",
19155
+ ], false)
19156
+ },
19157
+ ];
19158
+
19159
+ function getImpliedScopes(scope) {
19160
+ var _a = scope.split(":"), resource = _a[0], action = _a[1];
19161
+ var implied = SCOPE_IMPLICATIONS[action] || [];
19162
+ return implied.map(function (a) { return "".concat(resource, ":").concat(a); });
19163
+ }
19164
+ function ScopePicker(_a) {
19165
+ var value = _a.value, onChange = _a.onChange, _b = _a.isPartner, isPartner = _b === void 0 ? false : _b, _c = _a.disabled, disabled = _c === void 0 ? false : _c;
19166
+ var _d = useState(new Set()), expandedCategories = _d[0], setExpandedCategories = _d[1];
19167
+ var selectedSet = useMemo(function () { return new Set(value); }, [value]);
19168
+ var visibleCategories = useMemo(function () { return SCOPE_CATEGORIES.filter(function (c) { return !c.adminOnly || isPartner; }); }, [isPartner]);
19169
+ var toggleCategory = useCallback(function (categoryId) {
19170
+ setExpandedCategories(function (prev) {
19171
+ var next = new Set(prev);
19172
+ if (next.has(categoryId))
19173
+ next.delete(categoryId);
19174
+ else
19175
+ next.add(categoryId);
19176
+ return next;
19177
+ });
19178
+ }, []);
19179
+ var handleScopeToggle = useCallback(function (scope, checked) {
19180
+ if (disabled)
19181
+ return;
19182
+ var next = new Set(selectedSet);
19183
+ if (checked) {
19184
+ next.add(scope);
19185
+ // Add implied scopes
19186
+ getImpliedScopes(scope).forEach(function (s) { return next.add(s); });
19187
+ }
19188
+ else {
19189
+ next.delete(scope);
19190
+ }
19191
+ onChange(Array.from(next));
19192
+ }, [selectedSet, onChange, disabled]);
19193
+ var handleCategorySelectAll = useCallback(function (categoryId, checked) {
19194
+ if (disabled)
19195
+ return;
19196
+ var cat = SCOPE_CATEGORIES.find(function (c) { return c.id === categoryId; });
19197
+ if (!cat)
19198
+ return;
19199
+ var next = new Set(selectedSet);
19200
+ cat.resources.forEach(function (r) {
19201
+ r.actions.forEach(function (a) {
19202
+ var scope = "".concat(r.resource, ":").concat(a);
19203
+ if (checked) {
19204
+ next.add(scope);
19205
+ getImpliedScopes(scope).forEach(function (s) { return next.add(s); });
19206
+ }
19207
+ else {
19208
+ next.delete(scope);
19209
+ }
19210
+ });
19211
+ });
19212
+ onChange(Array.from(next));
19213
+ }, [selectedSet, onChange, disabled]);
19214
+ var handlePreset = useCallback(function (presetId) {
19215
+ if (disabled)
19216
+ return;
19217
+ var preset = SCOPE_PRESETS.find(function (p) { return p.id === presetId; });
19218
+ if (!preset)
19219
+ return;
19220
+ // Expand all implied scopes
19221
+ var expanded = new Set();
19222
+ preset.scopes.forEach(function (s) {
19223
+ expanded.add(s);
19224
+ getImpliedScopes(s).forEach(function (implied) { return expanded.add(implied); });
19225
+ });
19226
+ onChange(Array.from(expanded));
19227
+ }, [onChange, disabled]);
19228
+ var isCategoryAllSelected = useCallback(function (categoryId) {
19229
+ var cat = SCOPE_CATEGORIES.find(function (c) { return c.id === categoryId; });
19230
+ if (!cat)
19231
+ return false;
19232
+ return cat.resources.every(function (r) { return r.actions.every(function (a) { return selectedSet.has("".concat(r.resource, ":").concat(a)); }); });
19233
+ }, [selectedSet]);
19234
+ var isImplied = useCallback(function (scope) {
19235
+ // Scope is implied (auto-selected due to another scope) if removing it wouldn't break anything
19236
+ var _a = scope.split(":"), resource = _a[0], action = _a[1];
19237
+ // Check if any other selected scope implies this one
19238
+ return Array.from(selectedSet).some(function (s) {
19239
+ if (s === scope)
19240
+ return false;
19241
+ var _a = s.split(":"), r = _a[0], a = _a[1];
19242
+ if (r !== resource)
19243
+ return false;
19244
+ return (SCOPE_IMPLICATIONS[a] || []).includes(action);
19245
+ });
19246
+ }, [selectedSet]);
19247
+ return (React__default.createElement("div", { className: "scopePicker", "aria-label": "Permission scope picker" },
19248
+ React__default.createElement("div", { className: "scopePicker__presets" },
19249
+ React__default.createElement("span", { className: "scopePicker__presetsLabel" }, "Quick presets:"),
19250
+ React__default.createElement("div", { className: "scopePicker__presetButtons" }, SCOPE_PRESETS.map(function (preset) { return (React__default.createElement("button", { key: preset.id, type: "button", className: "scopePicker__presetBtn", onClick: function () { return handlePreset(preset.id); }, disabled: disabled }, preset.label)); }))),
19251
+ React__default.createElement("div", { className: "scopePicker__categories" }, visibleCategories.map(function (category) {
19252
+ var isExpanded = expandedCategories.has(category.id);
19253
+ var allSelected = isCategoryAllSelected(category.id);
19254
+ return (React__default.createElement("div", { key: category.id, className: "scopePicker__category ".concat(category.adminOnly ? "scopePicker__category--admin" : "") },
19255
+ React__default.createElement("div", { className: "scopePicker__categoryHeader" },
19256
+ React__default.createElement("label", { className: "scopePicker__categorySelect" },
19257
+ React__default.createElement("input", { type: "checkbox", checked: allSelected, onChange: function (e) { return handleCategorySelectAll(category.id, e.target.checked); }, disabled: disabled, "aria-label": "Select all ".concat(category.label, " scopes") }),
19258
+ React__default.createElement("span", { className: "scopePicker__categoryLabel" }, category.label)),
19259
+ React__default.createElement("button", { type: "button", className: "scopePicker__categoryToggle", onClick: function () { return toggleCategory(category.id); }, "aria-expanded": isExpanded, "aria-label": "".concat(isExpanded ? "Collapse" : "Expand", " ").concat(category.label) }, isExpanded ? "▲" : "▼")),
19260
+ isExpanded && (React__default.createElement("div", { className: "scopePicker__categoryBody" }, category.resources.map(function (resource) { return (React__default.createElement("div", { key: resource.resource, className: "scopePicker__resource" },
19261
+ React__default.createElement("span", { className: "scopePicker__resourceLabel" }, resource.label),
19262
+ React__default.createElement("div", { className: "scopePicker__actions" }, resource.actions.map(function (action) {
19263
+ var scope = "".concat(resource.resource, ":").concat(action);
19264
+ var checked = selectedSet.has(scope);
19265
+ var implied = isImplied(scope);
19266
+ return (React__default.createElement("label", { key: action, className: "scopePicker__action ".concat(implied ? "scopePicker__action--implied" : ""), title: implied ? "Automatically included by another selected permission" : undefined },
19267
+ React__default.createElement("input", { type: "checkbox", checked: checked, onChange: function (e) { return handleScopeToggle(scope, e.target.checked); }, disabled: disabled || implied, "aria-label": "".concat(resource.label, " ").concat(action) }),
19268
+ React__default.createElement("span", null, action)));
19269
+ })))); })))));
19270
+ })),
19271
+ value.length > 0 && (React__default.createElement("details", { className: "scopePicker__summary" },
19272
+ React__default.createElement("summary", null,
19273
+ "Selected permissions (",
19274
+ value.length,
19275
+ ")"),
19276
+ React__default.createElement("div", { className: "scopePicker__summaryList" }, value.sort().map(function (scope) { return (React__default.createElement("span", { key: scope, className: "scopePicker__summaryChip" }, scope)); }))))));
19277
+ }
19278
+
18891
19279
  var css_248z$2 = ".sideMenu-component-v2 {\n z-index: 8000;\n width: -moz-fit-content;\n width: fit-content;\n}\n.sideMenu-component-v2 .sideMenu-spacer {\n display: none;\n}\n.sideMenu-component-v2.minified:hover .sideMenu-spacer {\n display: block;\n}\n.sideMenu-component-v2 .sideMenu-wrapper {\n z-index: 8000;\n display: flex;\n height: 100%;\n flex-direction: column;\n width: 20rem;\n min-width: 20rem;\n max-width: 20rem;\n padding: 1rem;\n background: var(--shade100, #F3F2F2);\n position: relative;\n box-sizing: border-box;\n}\n.sideMenu-component-v2 .sideMenu-wrapper::-webkit-scrollbar {\n display: block;\n}\n.sideMenu-component-v2 .sideMenu-wrapper::-webkit-scrollbar-track:horizontal {\n position: absolute;\n bottom: -20px;\n}\n.sideMenu-component-v2 .sideMenu-wrapper::-webkit-scrollbar-track:vertical {\n border-bottom-left-radius: 0 !important;\n border-bottom-right-radius: 8px !important;\n border-top-right-radius: 8px !important;\n}\n.sideMenu-component-v2 .sideMenu-wrapper::-webkit-scrollbar-track {\n height: 2.5rem;\n width: 2.5rem;\n padding: 2rem;\n background-clip: content-box;\n border-bottom-left-radius: 8px;\n}\n.sideMenu-component-v2 .sideMenu-wrapper::-webkit-scrollbar-thumb {\n background: var(--body-font-color-2, var(--silver, #9B9B9B));\n border-radius: 24px;\n border-top: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-bottom: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-right: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n border-left: 5px solid var(--background-color-1, var(--white, #FFFFFF));\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:hover {\n box-shadow: 0px 0px 32px 0px rgba(0, 0, 0, 0.15);\n position: absolute !important;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) {\n gap: 1rem;\n max-width: 73px;\n min-width: 73px;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .sideMenuHeader {\n display: none;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .subNav-component-v2 button {\n padding: 0.75rem;\n margin-right: 0;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .subNav-component-v2 button:not(.selected) {\n display: none;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .sideMenuContainer-component-v2 .menuItemRow .sideMenuItem-component-v2.subItem,\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .sideMenuContainer-component-v2 .menuItemRow .sideMenuItem-component-v2 .chevron {\n display: none;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .sideMenuContainer-component-v2 .menuItemRow .sideMenuItem-component-v2 a {\n justify-content: center;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .sideMenuContainer-component-v2 .menuItemRow .sideMenuItem-component-v2 a .MuiStack-root {\n display: none;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .footer > .avatar-component-v2 {\n display: block;\n}\n.sideMenu-component-v2 .sideMenu-wrapper.minified:not(:hover) .footer button {\n display: none;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .sideMenuHeader {\n margin-bottom: 1.5rem;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .sideMenuHeader .minifyIcon {\n cursor: pointer;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .search-component-v2 {\n margin-top: 1.5rem;\n position: relative;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .search-component-v2 .inputContainer {\n padding: 0.75rem 1rem;\n box-shadow: unset;\n border-radius: 8px;\n border: 1px solid var(--shade200, #DBDADA);\n}\n.sideMenu-component-v2 .sideMenu-wrapper .search-component-v2:after {\n position: absolute;\n left: 0;\n bottom: -1.5rem;\n content: \"\";\n display: block;\n width: 100%;\n height: 1.5rem;\n background: linear-gradient(var(--shade100, #F3F2F2) 0%, transparent 100%);\n}\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 {\n width: 100%;\n position: relative;\n justify-content: space-between;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2:after {\n position: absolute;\n left: 0;\n bottom: -1.5rem;\n content: \"\";\n display: block;\n width: 100%;\n height: 1.5rem;\n background: linear-gradient(var(--shade100, #F3F2F2) 0%, transparent 100%);\n}\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 button {\n flex: 1;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 button:not(.selected):not(:hover) {\n background: none;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 button:not(.selected):not(:hover) svg path:not(.noFill),\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 button:not(.selected):not(:hover) svg rect:not(.noFill) {\n fill: var(--secondary-brand-color, var(--teal, #0ABDAE));\n}\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 button:not(.selected):not(:hover) svg path.noFill,\n.sideMenu-component-v2 .sideMenu-wrapper .subNav-component-v2 button:not(.selected):not(:hover) svg rect.noFill {\n stroke: var(--secondary-brand-color, var(--teal, #0ABDAE));\n}\n.sideMenu-component-v2 .sideMenu-wrapper .sideMenuContainer-component-v2 {\n padding-top: 1.5rem;\n padding-bottom: 1.5rem;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .footer {\n position: relative;\n justify-self: flex-end;\n}\n.sideMenu-component-v2 .sideMenu-wrapper .footer:before {\n position: absolute;\n left: 0;\n top: -1.5rem;\n content: \"\";\n display: block;\n width: 100%;\n height: 1.5rem;\n background: linear-gradient(transparent 0, var(--shade100, #F3F2F2) 100%);\n}\n.sideMenu-component-v2 .sideMenu-wrapper .footer > .avatar-component-v2 {\n display: none;\n}\n\n.sideMenuContainer-component-v2 {\n flex: 1;\n overflow-y: auto;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer > .menuItemRow.divider {\n margin-top: 1rem;\n margin-bottom: 1rem;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer > .menuItemRow.withSubItems.openedSubMenu .sideMenuItem-component-v2:nth-child(2) {\n margin-top: calc(0.5rem - 1px);\n}\n.sideMenuContainer-component-v2 .menuItemsContainer > .menuItemRow.withSubItems.openedSubMenu .sideMenuItem-component-v2:last-child {\n margin-bottom: calc(0.5rem - 1px);\n}\n.sideMenuContainer-component-v2 .menuItemsContainer > .menuItemRow.subSection {\n margin-top: 1rem;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer > .menuItemRow:first-child {\n margin-top: 0;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer .sideMenuItem-component-v2.subItem {\n margin-left: 2.75rem;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer .sideMenuItem-component-v2.subItem > a,\n.sideMenuContainer-component-v2 .menuItemsContainer .sideMenuItem-component-v2.subItem > a > div > span {\n font-size: 0.875rem;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer .sideMenuItem-component-v2.rotate .chevron {\n rotate: 180deg;\n}\n.sideMenuContainer-component-v2 .menuItemsContainer .sideMenuItem-component-v2.hasLocationSelected:hover a {\n cursor: default;\n background: unset !important;\n}\n\n.sideMenuItem-component-v2 {\n box-sizing: border-box;\n}\n.sideMenuItem-component-v2:hover a, .sideMenuItem-component-v2.selected a {\n background: var(--shade200, #DBDADA);\n}\n.sideMenuItem-component-v2.hasSubItemSelected > .MuiTypography-root .chevron {\n rotate: -90deg;\n}\n.sideMenuItem-component-v2 .avatar-component-v2 .MuiAvatar-root {\n border-color: var(--shade200, #DBDADA);\n background: var(--white, #FFFFFF);\n}\n.sideMenuItem-component-v2 .chevron {\n margin-left: 1rem;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.sideMenuItem-component-v2 a {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0.75rem;\n border-radius: 8px;\n text-decoration: none !important;\n gap: 1rem;\n}\n.sideMenuItem-component-v2 a > .MuiStack-root {\n flex: 1;\n}\n.sideMenuItem-component-v2 a img {\n max-width: 80px;\n}\n.sideMenuItem-component-v2.soloItem a {\n border-radius: 16px;\n padding: 1.5rem;\n border: 1px solid var(--shade200, #DBDADA);\n}\n.sideMenuItem-component-v2.soloItem a:hover {\n border-color: var(--wild-sand, #dddddd);\n}\n.sideMenuItem-component-v2.soloItem .chevron {\n rotate: -90deg;\n}\n.sideMenuItem-component-v2.subSection {\n padding: 0.5rem 0.75rem 0.5rem 0.75rem;\n}";
18892
19280
  styleInject(css_248z$2);
18893
19281
 
@@ -19745,6 +20133,45 @@ var PagesFactory = /** @class */ (function () {
19745
20133
  return PagesFactory;
19746
20134
  }());
19747
20135
 
20136
+ var PersonalAccessTokensFactory = /** @class */ (function () {
20137
+ function PersonalAccessTokensFactory() {
20138
+ }
20139
+ PersonalAccessTokensFactory.list = function () {
20140
+ return __awaiter(this, arguments, void 0, function (_a) {
20141
+ var _b = _a === void 0 ? {} : _a, page = _b.page, perPage = _b.perPage, status = _b.status;
20142
+ return __generator(this, function (_c) {
20143
+ return [2 /*return*/, listPats({ page: page, perPage: perPage, status: status }).then(function (data) {
20144
+ data.data = data.data.map(function (pat) { return new PersonalAccessTokenModel(pat); });
20145
+ return data;
20146
+ })];
20147
+ });
20148
+ });
20149
+ };
20150
+ PersonalAccessTokensFactory.get = function (_a) {
20151
+ return __awaiter(this, arguments, void 0, function (_b) {
20152
+ var keyPrefix = _b.keyPrefix;
20153
+ return __generator(this, function (_c) {
20154
+ return [2 /*return*/, getPat({ keyPrefix: keyPrefix }).then(function (data) {
20155
+ return new PersonalAccessTokenModel(data.data);
20156
+ })];
20157
+ });
20158
+ });
20159
+ };
20160
+ PersonalAccessTokensFactory.create = function (_a) {
20161
+ return __awaiter(this, arguments, void 0, function (_b) {
20162
+ var name = _b.name, scopes = _b.scopes, expiresAt = _b.expiresAt, allowedAccountIds = _b.allowedAccountIds;
20163
+ return __generator(this, function (_c) {
20164
+ return [2 /*return*/, createPat({ name: name, scopes: scopes, expiresAt: expiresAt, allowedAccountIds: allowedAccountIds }).then(function (data) {
20165
+ var _a = data.data, plaintext = _a.plaintext, patData = __rest(_a, ["plaintext"]);
20166
+ trackEvent(EEvents.PAT_CREATED, { name: name, scopes: scopes });
20167
+ return { pat: new PersonalAccessTokenModel(patData), plaintext: plaintext };
20168
+ })];
20169
+ });
20170
+ });
20171
+ };
20172
+ return PersonalAccessTokensFactory;
20173
+ }());
20174
+
19748
20175
  var PopupsFactory = /** @class */ (function () {
19749
20176
  function PopupsFactory() {
19750
20177
  }
@@ -20129,4 +20556,4 @@ var UsersFactory = /** @class */ (function () {
20129
20556
  return UsersFactory;
20130
20557
  }());
20131
20558
 
20132
- export { AccountModel, AccountsFactory, ActionBarContainer, ActionBarContainerHandler, AssetManager, AutomationModel, AutomationsFactory, Avatar, BillingFactory, BrandWrapper, BrandsFactory, Button, ButtonMenu, CampaignModel, CampaignsFactory, Checkbox, Chip, CircularProgress, CodeInput, ColManager, ColorTextField, CommonFormModel, ContactModel, ContactsFactory, ContentSectionContainer, CountryDropdown, CustomDomainModel, CustomDomainsFactory, CustomerModel, DataTable, DataTableHead, DataTableRow, DateCalendar, DatePicker, DateTimeCalendar, DateTimePicker, Dialog, DialogActions, DialogHandler, DialogTitle, Divider, Drawer, DrawerHandler, DropMenu, Dropdown, EApiLanguages, EAssetManagerMatchType, ECampaignStatuses, ECertificateStatus, EDnsStatus, EEMailSummaryStatuses, EEditorType, EEmailAttachementTypes, EEmailLogType, EEmailLogTypeParam, EEmailProviders, EEmailStatuses, EEmailSummaryEngagement, EEvents, EIngressRouteStatus, EListAttributeType, EMethods, EOperatorTypes, EPageBranding, EPartialInfoPool, EPopupBranding, EPopupBrowserType, EPopupCloseButtonPosition, EPopupDeviceType, EPopupDisplayFrequency, EPopupPosition, EPopupTriggerType, EStorageType, ETaskType, ElementContains, Email, EmailAPIFactory, EmptyContent, EnhancedFormModel, FileUpload, FilterBar, FormModel, FormsFactory, FullBar, GenericWrapper, GenericWrapperContext, GroupedActions, Header, Icon, IconPill, InformationGroup, InlineTextEdit, LinearProgress, Link, ListCampaignModel, ListModel, ListPageModel, ListPopupModel, ListTemplateModel, ListsFactory, LoadingContainer, LocationTextField, Logo, MD5, MetricCard, Modal, ModalHandler, ModalHeading, Overlay, OverlayHandler, OverlayHeading, PageModel, PagesFactory, PhoneTextField, PopupModel, PopupsFactory, Radio, ResourceEdit, Search, SenderModel, SendersFactory, SideMenu, SideMenuContainer, SideMenuItem, SubNav, SummaryEnhancedFormModel, SuppressedEmailsFactory, SystemEmailsFactory, SystemEmailsModel, TagsFactory, TasksFactory, TemplateModel, TemplatesFactory, TextField, TimePicker, TimeSelector, Toggle, TopMenu, Typography, UserModel, UsersFactory, acceptListPolicy, addInterestsToContactsOfList, addPartialInformation, addSuppressedEmail, addToImpersonificationTree, amIImpersonating, amILoggedInService, archiveCampaign, areAllPropertiesEmpty, buildMUITheme, callApi, camelCase, camelToSnakeCase, cancelCampaign, capitalizeFirstLetter, cleanPostHogId, clearImpersonificationTree, clearStorage, copyToClipboard, createAccount, createBrand, createCampaign, createCampaignLogsExports, createCampaignsReportsExport, createContactsExport, createCustomDomain, createForm, createPage, createPopup, createSender, createSuppressedEmailExport, createTemplate, deepMergeObject, deleteAccount, deleteAnyAutomation, deleteAutomation, deleteCampaign, deleteCampaignsReportsExport, deleteContact, deleteCustomDomain, deleteForm, deleteList, deletePage, deletePartialInformation, deletePopup, deleteSender, deleteStorageItem, deleteSuppressedEmail, deleteTaskService, deleteTemplate, deleteUser, deleteWorkflow, descendingComparator, disableForm, disablePage, disablePopup, domainHasValidCertificateService, downloadCampaignLogExport, downloadCampaignsReportsExport, downloadContactsExport, downloadListLogExport, downloadSuppressedEmailExport, emptyAccountAddress, emptyAccountLimits, enableForm, enablePage, enablePopup, enrichBrand, enrichOrganization, enrichProfile, eventCondition, eventIdentify, eventLogout, fetchRetry, fetchRoute, findNestedProperty, formatNumber, getAccount, getAccountMetadata, getAccountReport, getAdjustedBillingCycle, getAllAutomationStats, getAutomation, getAutomationEmailContent, getAutomationExecutionsCount, getAutomationStats, getBeeTokenService, getBestLocalMatch, getBrand, getBrandService, getBrandUrl, getCalendarFormat, getCampaign, getCampaignLinks, getCampaignLinksReport, getCampaignLogs, getCampaignLogsExports, getCampaignReport, getCampaignRevisions, getCampaignsReportsExport, getComparator, getContactsExport, getCustomDomain, getCustomerProfile, getDate, getDomainFromEmail, getDomainsFromEmails, getDomainsService, getEmail, getEmailActivitySummary, getEmailReport, getEndOfDate, getForm, getHashQueryWithoutHistory, getIconSize, getList, getListLogs, getListReport, getNestedProperty, getPage, getPopup, getPropertyValue, getSender, getStartOfDate, getStorage, getSuppressedEmailExport, getTColor, getTaskService, getTemplate, getUnixTime, getUrlQueryParam, getUser, getUtmCookies, googlePlacesMapper, hasDecimal, impersonateService, initFieldValidation, initPostHog, isColorLight, isDomainValidService, isPublicEmailProviderService, isSimpleType, isValidEmail, isValidString, isValidUrl, lisTEmailTags, listAccounts, listAutomations, listCampaigns, listCampaignsReportsExports, listContacts, listCustomDomains, listDkimService, listEmailLogs, listForms, listList, listListAttributes, listListInterests, listPages, listPopups, listSenders, listSuppressedEmails, listSystemEmails, listTasksService, listTemplates, listUsers, listWorkflows, logOutService, loginService, miliToSecond, modelSet, modelToJson, originalBrand, patchAccountDomainsService, patchForm, popImpersonificationTree, postMessage, publishForm, publishPage, publishPopup, reScheduleCampaign, removeEmptyProperties, removeInterestsFromContactsOfList, removeQueryParams, removeTrailingChar, renderCampaign, renderEmail, renderForm, renderPage, renderPopup, renderPublicHtmlForm, renderTemplate, requestSupportService, resendEmail, resendVerificationEmail, resumeCampaign, saveList, scheduleCampaign, searchCustomerProfiles, sendCampaignTest, setBrandHeadElements, setStorage, shareTemplate, splitArray, splitObject, stableSort, startPromisePool, suspendAccount, suspendCampaign, tagContact, tagsContactsOfList, trackEvent, truncateEmail, truncateText, uiKitConfig, unArchiveCampaign, unScheduleCampaign, unSuspendAccount, unshareTemplate, unsubscribeContact, untagContact, untagContactsOfList, updateAccount, updateAndClearUrlParams, updateAnyAutomation, updateAutomation, updateCampaign, updatePage, updatePopup, updateSystemEmails, updateTemplate, updateUser, updateWorkflow, validateColor, validateEmail, validateGenericInput, validateUrl, verifyCustomDomain, verifyTrackingCnamesService, wait, whiteLabelBrand, whoAmi };
20559
+ export { AccountModel, AccountsFactory, ActionBarContainer, ActionBarContainerHandler, AssetManager, AutomationModel, AutomationsFactory, Avatar, BillingFactory, BrandWrapper, BrandsFactory, Button, ButtonMenu, CampaignModel, CampaignsFactory, Checkbox, Chip, CircularProgress, CodeInput, ColManager, ColorTextField, CommonFormModel, ContactModel, ContactsFactory, ContentSectionContainer, CountryDropdown, CustomDomainModel, CustomDomainsFactory, CustomerModel, DataTable, DataTableHead, DataTableRow, DateCalendar, DatePicker, DateTimeCalendar, DateTimePicker, Dialog, DialogActions, DialogHandler, DialogTitle, Divider, Drawer, DrawerHandler, DropMenu, Dropdown, EApiLanguages, EAssetManagerMatchType, ECampaignStatuses, ECertificateStatus, EDnsStatus, EEMailSummaryStatuses, EEditorType, EEmailAttachementTypes, EEmailLogType, EEmailLogTypeParam, EEmailProviders, EEmailStatuses, EEmailSummaryEngagement, EEvents, EIngressRouteStatus, EListAttributeType, EMethods, EOperatorTypes, EPageBranding, EPartialInfoPool, EPopupBranding, EPopupBrowserType, EPopupCloseButtonPosition, EPopupDeviceType, EPopupDisplayFrequency, EPopupPosition, EPopupTriggerType, EStorageType, ETaskType, ElementContains, Email, EmailAPIFactory, EmptyContent, EnhancedFormModel, FileUpload, FilterBar, FormModel, FormsFactory, FullBar, GenericWrapper, GenericWrapperContext, GroupedActions, Header, Icon, IconPill, InformationGroup, InlineTextEdit, LinearProgress, Link, ListCampaignModel, ListModel, ListPageModel, ListPopupModel, ListTemplateModel, ListsFactory, LoadingContainer, LocationTextField, Logo, MD5, MetricCard, Modal, ModalHandler, ModalHeading, Overlay, OverlayHandler, OverlayHeading, PageModel, PagesFactory, PersonalAccessTokenModel, PersonalAccessTokensFactory, PhoneTextField, PopupModel, PopupsFactory, Radio, ResourceEdit, ScopePicker, Search, SenderModel, SendersFactory, SideMenu, SideMenuContainer, SideMenuItem, SubNav, SummaryEnhancedFormModel, SuppressedEmailsFactory, SystemEmailsFactory, SystemEmailsModel, TagsFactory, TasksFactory, TemplateModel, TemplatesFactory, TextField, TimePicker, TimeSelector, Toggle, TopMenu, Typography, UserModel, UsersFactory, acceptListPolicy, addInterestsToContactsOfList, addPartialInformation, addSuppressedEmail, addToImpersonificationTree, amIImpersonating, amILoggedInService, archiveCampaign, areAllPropertiesEmpty, buildMUITheme, callApi, camelCase, camelToSnakeCase, cancelCampaign, capitalizeFirstLetter, cleanPostHogId, clearImpersonificationTree, clearStorage, copyToClipboard, createAccount, createBrand, createCampaign, createCampaignLogsExports, createCampaignsReportsExport, createContactsExport, createCustomDomain, createForm, createPage, createPat, createPopup, createSender, createSuppressedEmailExport, createTemplate, deepMergeObject, deleteAccount, deleteAnyAutomation, deleteAutomation, deleteCampaign, deleteCampaignsReportsExport, deleteContact, deleteCustomDomain, deleteForm, deleteList, deletePage, deletePartialInformation, deletePopup, deleteSender, deleteStorageItem, deleteSuppressedEmail, deleteTaskService, deleteTemplate, deleteUser, deleteWorkflow, descendingComparator, disableForm, disablePage, disablePopup, domainHasValidCertificateService, downloadCampaignLogExport, downloadCampaignsReportsExport, downloadContactsExport, downloadListLogExport, downloadSuppressedEmailExport, emptyAccountAddress, emptyAccountLimits, enableForm, enablePage, enablePopup, enrichBrand, enrichOrganization, enrichProfile, eventCondition, eventIdentify, eventLogout, fetchRetry, fetchRoute, findNestedProperty, formatNumber, getAccount, getAccountMetadata, getAccountReport, getAdjustedBillingCycle, getAllAutomationStats, getAutomation, getAutomationEmailContent, getAutomationExecutionsCount, getAutomationStats, getBeeTokenService, getBestLocalMatch, getBrand, getBrandService, getBrandUrl, getCalendarFormat, getCampaign, getCampaignLinks, getCampaignLinksReport, getCampaignLogs, getCampaignLogsExports, getCampaignReport, getCampaignRevisions, getCampaignsReportsExport, getComparator, getContactsExport, getCustomDomain, getCustomerProfile, getDate, getDomainFromEmail, getDomainsFromEmails, getDomainsService, getEmail, getEmailActivitySummary, getEmailReport, getEndOfDate, getForm, getHashQueryWithoutHistory, getIconSize, getList, getListLogs, getListReport, getNestedProperty, getPage, getPat, getPopup, getPropertyValue, getSender, getStartOfDate, getStorage, getSuppressedEmailExport, getTColor, getTaskService, getTemplate, getUnixTime, getUrlQueryParam, getUser, getUtmCookies, googlePlacesMapper, hasDecimal, impersonateService, initFieldValidation, initPostHog, isColorLight, isDomainValidService, isPublicEmailProviderService, isSimpleType, isValidEmail, isValidString, isValidUrl, lisTEmailTags, listAccounts, listAutomations, listCampaigns, listCampaignsReportsExports, listContacts, listCustomDomains, listDkimService, listEmailLogs, listForms, listList, listListAttributes, listListInterests, listPages, listPats, listPopups, listSenders, listSuppressedEmails, listSystemEmails, listTasksService, listTemplates, listUsers, listWorkflows, logOutService, loginService, miliToSecond, modelSet, modelToJson, originalBrand, patchAccountDomainsService, patchForm, popImpersonificationTree, postMessage, publishForm, publishPage, publishPopup, reScheduleCampaign, removeEmptyProperties, removeInterestsFromContactsOfList, removeQueryParams, removeTrailingChar, renderCampaign, renderEmail, renderForm, renderPage, renderPopup, renderPublicHtmlForm, renderTemplate, requestSupportService, resendEmail, resendVerificationEmail, resumeCampaign, revokePat, saveList, scheduleCampaign, searchCustomerProfiles, sendCampaignTest, setBrandHeadElements, setStorage, shareTemplate, splitArray, splitObject, stableSort, startPromisePool, suspendAccount, suspendCampaign, tagContact, tagsContactsOfList, trackEvent, truncateEmail, truncateText, uiKitConfig, unArchiveCampaign, unScheduleCampaign, unSuspendAccount, unshareTemplate, unsubscribeContact, untagContact, untagContactsOfList, updateAccount, updateAndClearUrlParams, updateAnyAutomation, updateAutomation, updateCampaign, updatePage, updatePat, updatePopup, updateSystemEmails, updateTemplate, updateUser, updateWorkflow, validateColor, validateEmail, validateGenericInput, validateUrl, verifyCustomDomain, verifyTrackingCnamesService, wait, whiteLabelBrand, whoAmi };
@@ -8,6 +8,7 @@ export * from "./emailAPI";
8
8
  export * from "./form";
9
9
  export * from "./list";
10
10
  export * from "./pages";
11
+ export * from "./personalAccessToken";
11
12
  export * from "./popups";
12
13
  export * from "./sender";
13
14
  export * from "./systemEmails";