@griddo/ax 1.60.7 → 1.61.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 (148) hide show
  1. package/package.json +4 -2
  2. package/public/fonts/fonts.css +48 -660
  3. package/public/index.html +19 -16
  4. package/public/templates/template-redirects.csv +2 -0
  5. package/src/GlobalStore.tsx +3 -0
  6. package/src/Style/fonts.tsx +98 -72
  7. package/src/api/analytics.tsx +78 -0
  8. package/src/api/index.tsx +2 -0
  9. package/src/api/redirects.tsx +30 -2
  10. package/src/components/Button/style.tsx +1 -0
  11. package/src/components/ConfigPanel/Form/ConnectedField/PageConnectedField/Field/index.tsx +1 -1
  12. package/src/components/ConfigPanel/Form/ConnectedField/PageConnectedField/TemplateManager/index.tsx +4 -3
  13. package/src/components/ConfigPanel/Form/ConnectedField/PageConnectedField/index.tsx +6 -1
  14. package/src/components/FieldContainer/index.tsx +2 -2
  15. package/src/components/Fields/AnalyticsField/PageAnalytics/atoms.tsx +75 -0
  16. package/src/components/Fields/AnalyticsField/PageAnalytics/index.tsx +139 -0
  17. package/src/components/Fields/AnalyticsField/StructuredDataAnalytics/atoms.tsx +77 -0
  18. package/src/components/Fields/AnalyticsField/StructuredDataAnalytics/index.tsx +89 -0
  19. package/src/components/Fields/AnalyticsField/index.tsx +38 -0
  20. package/src/components/Fields/AnalyticsField/style.tsx +13 -0
  21. package/src/components/Fields/AnalyticsField/utils.tsx +13 -0
  22. package/src/components/Fields/FieldGroup/style.tsx +1 -1
  23. package/src/components/Fields/ImageField/index.tsx +1 -1
  24. package/src/components/Fields/MultiCheckSelect/index.tsx +23 -6
  25. package/src/components/Fields/MultiCheckSelect/style.tsx +1 -0
  26. package/src/components/Fields/NoteField/index.tsx +1 -1
  27. package/src/components/Fields/RadioGroup/index.tsx +4 -3
  28. package/src/components/Fields/RadioGroup/style.tsx +8 -3
  29. package/src/components/Fields/RichText/index.tsx +13 -8
  30. package/src/components/Fields/TextArea/index.tsx +1 -3
  31. package/src/components/Fields/TextArea/style.tsx +3 -3
  32. package/src/components/Fields/UrlField/style.tsx +1 -0
  33. package/src/components/Fields/index.tsx +2 -0
  34. package/src/components/Modal/index.tsx +1 -1
  35. package/src/components/Modal/style.tsx +5 -1
  36. package/src/components/Notification/style.tsx +2 -5
  37. package/src/components/TableFilters/LiveFilter/index.tsx +4 -0
  38. package/src/components/TableFilters/NameFilter/style.tsx +1 -0
  39. package/src/components/TableFilters/TypeFilter/index.tsx +7 -2
  40. package/src/containers/Analytics/actions.tsx +58 -0
  41. package/src/containers/Analytics/constants.tsx +5 -0
  42. package/src/containers/Analytics/index.tsx +4 -0
  43. package/src/containers/Analytics/interfaces.tsx +9 -0
  44. package/src/containers/Analytics/reducer.tsx +26 -0
  45. package/src/containers/PageEditor/actions.tsx +1 -0
  46. package/src/containers/Redirects/actions.tsx +49 -3
  47. package/src/containers/Redirects/constants.tsx +12 -1
  48. package/src/containers/Redirects/interfaces.tsx +11 -1
  49. package/src/containers/Redirects/reducer.tsx +12 -1
  50. package/src/containers/Sites/actions.tsx +3 -0
  51. package/src/global.d.ts +2 -0
  52. package/src/helpers/index.tsx +4 -0
  53. package/src/helpers/requests.tsx +12 -7
  54. package/src/helpers/strings.tsx +13 -0
  55. package/src/hooks/forms.tsx +1 -1
  56. package/src/index.tsx +1 -0
  57. package/src/modules/Analytics/DimensionItem/index.tsx +71 -0
  58. package/src/modules/Analytics/DimensionItem/style.tsx +59 -0
  59. package/src/modules/Analytics/DimensionPanel/index.tsx +110 -0
  60. package/src/modules/Analytics/DimensionPanel/style.tsx +14 -0
  61. package/src/modules/Analytics/GroupItem/index.tsx +75 -0
  62. package/src/modules/Analytics/GroupItem/style.tsx +80 -0
  63. package/src/modules/Analytics/GroupPanel/index.tsx +178 -0
  64. package/src/modules/Analytics/GroupPanel/style.tsx +67 -0
  65. package/src/modules/Analytics/GroupPanel/utils.tsx +29 -0
  66. package/src/modules/Analytics/index.tsx +207 -0
  67. package/src/modules/Analytics/style.tsx +68 -0
  68. package/src/modules/Content/BulkHeader/TableHeader/index.tsx +1 -1
  69. package/src/modules/Content/PageItem/index.tsx +3 -3
  70. package/src/modules/Content/PageItem/style.tsx +1 -1
  71. package/src/modules/Content/hooks.tsx +2 -2
  72. package/src/modules/Content/index.tsx +22 -20
  73. package/src/modules/GlobalEditor/index.tsx +1 -1
  74. package/src/modules/Navigation/Defaults/DefaultsEditor/index.tsx +2 -2
  75. package/src/modules/PageEditor/index.tsx +1 -1
  76. package/src/modules/Redirects/RedirectItem/index.tsx +6 -2
  77. package/src/modules/Redirects/RedirectPanel/index.tsx +2 -0
  78. package/src/modules/Redirects/atoms.tsx +212 -0
  79. package/src/modules/Redirects/index.tsx +85 -27
  80. package/src/modules/Redirects/style.tsx +124 -3
  81. package/src/modules/Settings/ContentTypes/DataPacks/index.tsx +1 -1
  82. package/src/modules/StructuredData/StructuredDataList/BulkHeader/TableHeader/index.tsx +1 -1
  83. package/src/modules/StructuredData/StructuredDataList/GlobalPageItem/index.tsx +12 -3
  84. package/src/modules/StructuredData/StructuredDataList/index.tsx +17 -2
  85. package/src/routes/multisite.tsx +20 -2
  86. package/src/schemas/pages/GlobalPage.tsx +75 -64
  87. package/src/schemas/pages/Page.tsx +79 -67
  88. package/src/types/index.tsx +25 -3
  89. package/public/fonts/Source_Sans_Pro-200-cyrillic-ext107.woff2 +0 -0
  90. package/public/fonts/Source_Sans_Pro-200-cyrillic-ext149.woff2 +0 -0
  91. package/public/fonts/Source_Sans_Pro-200-cyrillic108.woff2 +0 -0
  92. package/public/fonts/Source_Sans_Pro-200-cyrillic150.woff2 +0 -0
  93. package/public/fonts/Source_Sans_Pro-200-greek-ext109.woff2 +0 -0
  94. package/public/fonts/Source_Sans_Pro-200-greek-ext151.woff2 +0 -0
  95. package/public/fonts/Source_Sans_Pro-200-greek110.woff2 +0 -0
  96. package/public/fonts/Source_Sans_Pro-200-greek152.woff2 +0 -0
  97. package/public/fonts/Source_Sans_Pro-200-vietnamese111.woff2 +0 -0
  98. package/public/fonts/Source_Sans_Pro-200-vietnamese153.woff2 +0 -0
  99. package/public/fonts/Source_Sans_Pro-300-cyrillic-ext114.woff2 +0 -0
  100. package/public/fonts/Source_Sans_Pro-300-cyrillic-ext156.woff2 +0 -0
  101. package/public/fonts/Source_Sans_Pro-300-cyrillic115.woff2 +0 -0
  102. package/public/fonts/Source_Sans_Pro-300-cyrillic157.woff2 +0 -0
  103. package/public/fonts/Source_Sans_Pro-300-greek-ext116.woff2 +0 -0
  104. package/public/fonts/Source_Sans_Pro-300-greek-ext158.woff2 +0 -0
  105. package/public/fonts/Source_Sans_Pro-300-greek117.woff2 +0 -0
  106. package/public/fonts/Source_Sans_Pro-300-greek159.woff2 +0 -0
  107. package/public/fonts/Source_Sans_Pro-300-vietnamese118.woff2 +0 -0
  108. package/public/fonts/Source_Sans_Pro-300-vietnamese160.woff2 +0 -0
  109. package/public/fonts/Source_Sans_Pro-400-cyrillic-ext121.woff2 +0 -0
  110. package/public/fonts/Source_Sans_Pro-400-cyrillic-ext163.woff2 +0 -0
  111. package/public/fonts/Source_Sans_Pro-400-cyrillic122.woff2 +0 -0
  112. package/public/fonts/Source_Sans_Pro-400-cyrillic164.woff2 +0 -0
  113. package/public/fonts/Source_Sans_Pro-400-greek-ext123.woff2 +0 -0
  114. package/public/fonts/Source_Sans_Pro-400-greek-ext165.woff2 +0 -0
  115. package/public/fonts/Source_Sans_Pro-400-greek124.woff2 +0 -0
  116. package/public/fonts/Source_Sans_Pro-400-greek166.woff2 +0 -0
  117. package/public/fonts/Source_Sans_Pro-400-vietnamese125.woff2 +0 -0
  118. package/public/fonts/Source_Sans_Pro-400-vietnamese167.woff2 +0 -0
  119. package/public/fonts/Source_Sans_Pro-600-cyrillic-ext128.woff2 +0 -0
  120. package/public/fonts/Source_Sans_Pro-600-cyrillic-ext170.woff2 +0 -0
  121. package/public/fonts/Source_Sans_Pro-600-cyrillic129.woff2 +0 -0
  122. package/public/fonts/Source_Sans_Pro-600-cyrillic171.woff2 +0 -0
  123. package/public/fonts/Source_Sans_Pro-600-greek-ext130.woff2 +0 -0
  124. package/public/fonts/Source_Sans_Pro-600-greek-ext172.woff2 +0 -0
  125. package/public/fonts/Source_Sans_Pro-600-greek131.woff2 +0 -0
  126. package/public/fonts/Source_Sans_Pro-600-greek173.woff2 +0 -0
  127. package/public/fonts/Source_Sans_Pro-600-vietnamese132.woff2 +0 -0
  128. package/public/fonts/Source_Sans_Pro-600-vietnamese174.woff2 +0 -0
  129. package/public/fonts/Source_Sans_Pro-700-cyrillic-ext135.woff2 +0 -0
  130. package/public/fonts/Source_Sans_Pro-700-cyrillic-ext177.woff2 +0 -0
  131. package/public/fonts/Source_Sans_Pro-700-cyrillic136.woff2 +0 -0
  132. package/public/fonts/Source_Sans_Pro-700-cyrillic178.woff2 +0 -0
  133. package/public/fonts/Source_Sans_Pro-700-greek-ext137.woff2 +0 -0
  134. package/public/fonts/Source_Sans_Pro-700-greek-ext179.woff2 +0 -0
  135. package/public/fonts/Source_Sans_Pro-700-greek138.woff2 +0 -0
  136. package/public/fonts/Source_Sans_Pro-700-greek180.woff2 +0 -0
  137. package/public/fonts/Source_Sans_Pro-700-vietnamese139.woff2 +0 -0
  138. package/public/fonts/Source_Sans_Pro-700-vietnamese181.woff2 +0 -0
  139. package/public/fonts/Source_Sans_Pro-900-cyrillic-ext142.woff2 +0 -0
  140. package/public/fonts/Source_Sans_Pro-900-cyrillic-ext184.woff2 +0 -0
  141. package/public/fonts/Source_Sans_Pro-900-cyrillic143.woff2 +0 -0
  142. package/public/fonts/Source_Sans_Pro-900-cyrillic185.woff2 +0 -0
  143. package/public/fonts/Source_Sans_Pro-900-greek-ext144.woff2 +0 -0
  144. package/public/fonts/Source_Sans_Pro-900-greek-ext186.woff2 +0 -0
  145. package/public/fonts/Source_Sans_Pro-900-greek145.woff2 +0 -0
  146. package/public/fonts/Source_Sans_Pro-900-greek187.woff2 +0 -0
  147. package/public/fonts/Source_Sans_Pro-900-vietnamese146.woff2 +0 -0
  148. package/public/fonts/Source_Sans_Pro-900-vietnamese188.woff2 +0 -0
@@ -28,6 +28,7 @@ import { appActions } from "@ax/containers/App";
28
28
  import { structuredDataActions } from "@ax/containers/StructuredData";
29
29
  import { sitesActions } from "@ax/containers/Sites";
30
30
  import { pageEditorActions } from "@ax/containers/PageEditor";
31
+ import { analyticsActions } from "@ax/containers/Analytics";
31
32
  import { MainWrapper, TableList, ErrorToast, Toast, Notification, EmptyState, Modal } from "@ax/components";
32
33
 
33
34
  import StructuredDataItem from "./StructuredDataItem";
@@ -43,10 +44,10 @@ import {
43
44
  getAllLangPagesIds,
44
45
  } from "./utils";
45
46
  import { useSortedListStatus, useFilterQuery } from "./hooks";
47
+ import { DeleteModal } from "./atoms";
46
48
  import GlobalPageItem from "./GlobalPageItem";
47
49
 
48
50
  import * as S from "./style";
49
- import { DeleteModal } from "./atoms";
50
51
 
51
52
  const StructuredDataList = (props: IProps): JSX.Element => {
52
53
  const {
@@ -80,6 +81,7 @@ const StructuredDataList = (props: IProps): JSX.Element => {
80
81
  deleteBulk,
81
82
  restorePage,
82
83
  resetPageEditor,
84
+ getAnalytics,
83
85
  } = props;
84
86
 
85
87
  const itemsPerPage = 50;
@@ -232,6 +234,11 @@ const StructuredDataList = (props: IProps): JSX.Element => {
232
234
  // eslint-disable-next-line react-hooks/exhaustive-deps
233
235
  }, [currentDataContent]);
234
236
 
237
+ const resetFilterValues = () => {
238
+ resetFilterQuery();
239
+ setCurrentFilterQuery("");
240
+ };
241
+
235
242
  useEffect(() => {
236
243
  if (!isLoading) {
237
244
  const emptyState: IEmptyStateProps = {};
@@ -245,7 +252,7 @@ const StructuredDataList = (props: IProps): JSX.Element => {
245
252
  ? "You don’t have pages with this content type yet."
246
253
  : "To start using pages in your site, create as many pages as you need.";
247
254
  emptyState.button = isAllPages ? "View all content" : "Create the first page";
248
- emptyState.action = isAllPages ? () => setFilter("all-pages") : addNewAction;
255
+ emptyState.action = isAllPages ? resetFilterValues : addNewAction;
249
256
  }
250
257
  const isEmpty = isStructuredDataFromPage ? !currentSitePages.length : !currentDataContent.length;
251
258
  setIsEmpty(isEmpty);
@@ -254,6 +261,11 @@ const StructuredDataList = (props: IProps): JSX.Element => {
254
261
  // eslint-disable-next-line react-hooks/exhaustive-deps
255
262
  }, [isLoading]);
256
263
 
264
+ useEffect(() => {
265
+ getAnalytics();
266
+ // eslint-disable-next-line react-hooks/exhaustive-deps
267
+ }, []);
268
+
257
269
  const handleClick = (isFromPage?: boolean, globalPage?: IPage, forceLive?: boolean) => {
258
270
  if (isFromPage && globalPage) {
259
271
  const pageID = globalPage.haveDraftPage && !forceLive ? globalPage.haveDraftPage : globalPage.id;
@@ -605,6 +617,7 @@ const mapDispatchToProps = {
605
617
  deleteBulk: pageEditorActions.deleteBulk,
606
618
  restorePage: pageEditorActions.restorePage,
607
619
  resetPageEditor: pageEditorActions.resetPageEditor,
620
+ getAnalytics: analyticsActions.getAnalytics,
608
621
  };
609
622
 
610
623
  interface IDispatchProps {
@@ -626,8 +639,10 @@ interface IDispatchProps {
626
639
  deleteBulk(ids: number[]): Promise<boolean>;
627
640
  restorePage(id: number | number[]): Promise<boolean>;
628
641
  resetPageEditor(): Promise<void>;
642
+ getAnalytics(): void;
629
643
  }
630
644
 
645
+
631
646
  interface ICategoriesProps {
632
647
  structuredData: { global: IStructuredData[]; site: IStructuredData[] };
633
648
  currentDataContent: IStructuredDataContent[];
@@ -8,6 +8,7 @@ import UserCreate from "../modules/Users/UserCreate";
8
8
  import UserEdit from "../modules/Users/UserEdit";
9
9
  import Editor from "./../modules/GlobalEditor";
10
10
  import GlobalSettings from "./../modules/GlobalSettings";
11
+ import AnalyticsSettings from "../modules/Analytics";
11
12
 
12
13
  export default [
13
14
  { path: "/sites", component: Sites, name: "Sites", showInNav: true, icon: "Project" },
@@ -27,11 +28,28 @@ export default [
27
28
  hideNav: true,
28
29
  },
29
30
  {
30
- path: `/settings/robots`,
31
- component: GlobalSettings,
31
+ path: `/settings`,
32
+ component: null,
32
33
  name: "Settings",
33
34
  showInNav: true,
34
35
  icon: "Settings",
36
+ routesGroups: [
37
+ {
38
+ name: "Settings",
39
+ routes: [
40
+ {
41
+ path: `/settings/robots`,
42
+ component: GlobalSettings,
43
+ name: "SEO tools",
44
+ },
45
+ {
46
+ path: `/settings/analytics`,
47
+ component: AnalyticsSettings,
48
+ name: "Analytics tools",
49
+ }
50
+ ]
51
+ }
52
+ ]
35
53
  },
36
54
  {
37
55
  path: `/settings/redirects`,
@@ -43,84 +43,95 @@ export default {
43
43
  ],
44
44
  },
45
45
  {
46
- title: "seo",
46
+ title: "SEO & Analytics",
47
47
  fields: [
48
48
  {
49
- title: "Meta title",
50
- type: "TextField",
51
- key: "metaTitle",
52
- },
53
- {
54
- title: "Meta description",
55
- type: "TextArea",
56
- key: "metaDescription",
57
- },
58
- {
59
- title: "Meta robots index",
60
- type: "RadioGroup",
61
- key: "isIndexed",
62
- options: [
63
- {
64
- value: true,
65
- title: "Index",
66
- name: "index",
67
- },
68
- {
69
- value: false,
70
- title: "No index",
71
- name: "noindex",
72
- },
73
- ],
74
- },
75
- {
76
- title: "Meta robots follow",
77
- type: "RadioGroup",
78
- key: "follow",
79
- options: [
80
- {
81
- value: true,
82
- title: "Follow",
83
- name: "follow",
84
- },
85
- {
86
- value: false,
87
- title: "No follow",
88
- name: "nofollow",
89
- },
90
- ],
91
- },
92
- {
93
- title: "Meta robots advanced",
94
- type: "CheckGroup",
95
- key: "metasAdvanced",
96
- options: [
49
+ title: "SEO Data",
50
+ type: "FieldGroup",
51
+ key: "seoData",
52
+ fields: [
97
53
  {
98
- value: "noimageindex",
99
- title: "No image index",
100
- name: "noimage",
54
+ title: "Meta title",
55
+ type: "TextField",
56
+ key: "metaTitle",
101
57
  },
102
58
  {
103
- value: "nosnippet",
104
- title: "No snippet",
105
- name: "nosnippet",
59
+ title: "Meta description",
60
+ type: "TextArea",
61
+ key: "metaDescription",
106
62
  },
107
63
  {
108
- value: "noodp",
109
- title: "No ODP",
110
- name: "noodp",
64
+ title: "Meta robots index",
65
+ type: "RadioGroup",
66
+ key: "isIndexed",
67
+ options: [
68
+ {
69
+ value: true,
70
+ title: "Index",
71
+ name: "index",
72
+ },
73
+ {
74
+ value: false,
75
+ title: "No index",
76
+ name: "noindex",
77
+ },
78
+ ],
111
79
  },
112
80
  {
113
- value: "noarchive",
114
- title: "No archive",
115
- name: "noarchive",
81
+ title: "Meta robots follow",
82
+ type: "RadioGroup",
83
+ key: "follow",
84
+ options: [
85
+ {
86
+ value: true,
87
+ title: "Follow",
88
+ name: "follow",
89
+ },
90
+ {
91
+ value: false,
92
+ title: "No follow",
93
+ name: "nofollow",
94
+ },
95
+ ],
116
96
  },
117
97
  {
118
- value: "noTranslate",
119
- title: "No translate",
120
- name: "noTranslate",
98
+ title: "Meta robots advanced",
99
+ type: "CheckGroup",
100
+ key: "metasAdvanced",
101
+ options: [
102
+ {
103
+ value: "noimageindex",
104
+ title: "No image index",
105
+ name: "noimage",
106
+ },
107
+ {
108
+ value: "nosnippet",
109
+ title: "No snippet",
110
+ name: "nosnippet",
111
+ },
112
+ {
113
+ value: "noodp",
114
+ title: "No ODP",
115
+ name: "noodp",
116
+ },
117
+ {
118
+ value: "noarchive",
119
+ title: "No archive",
120
+ name: "noarchive",
121
+ },
122
+ {
123
+ value: "noTranslate",
124
+ title: "No translate",
125
+ name: "noTranslate",
126
+ },
127
+ ],
121
128
  },
122
129
  ],
123
130
  },
131
+ {
132
+ type: "AnalyticsField",
133
+ key: "dimensions",
134
+ },
124
135
  {
125
136
  title: "Social Media",
126
137
  type: "FieldGroup",
@@ -51,89 +51,100 @@ export default {
51
51
  ],
52
52
  },
53
53
  {
54
- title: "seo",
54
+ title: "SEO & Analytics",
55
55
  fields: [
56
56
  {
57
- title: "Meta title",
58
- type: "TextField",
59
- key: "metaTitle",
60
- },
61
- {
62
- title: "Meta description",
63
- type: "TextArea",
64
- key: "metaDescription",
65
- },
66
- {
67
- title: "Canonical URL",
68
- type: "TextField",
69
- key: "canonicalURL",
70
- },
71
- {
72
- title: "Meta robots index",
73
- type: "RadioGroup",
74
- key: "isIndexed",
75
- options: [
76
- {
77
- value: true,
78
- title: "Index",
79
- name: "index",
80
- },
81
- {
82
- value: false,
83
- title: "No index",
84
- name: "noindex",
85
- },
86
- ],
87
- },
88
- {
89
- title: "Meta robots follow",
90
- type: "RadioGroup",
91
- key: "follow",
92
- options: [
93
- {
94
- value: true,
95
- title: "Follow",
96
- name: "follow",
97
- },
57
+ title: "SEO Data",
58
+ type: "FieldGroup",
59
+ key: "seoData",
60
+ fields: [
98
61
  {
99
- value: false,
100
- title: "No follow",
101
- name: "nofollow",
62
+ title: "Meta title",
63
+ type: "TextField",
64
+ key: "metaTitle",
102
65
  },
103
- ],
104
- },
105
- {
106
- title: "Meta robots advanced",
107
- type: "CheckGroup",
108
- key: "metasAdvanced",
109
- options: [
110
66
  {
111
- value: "noimageindex",
112
- title: "No image index",
113
- name: "noimage",
67
+ title: "Meta description",
68
+ type: "TextArea",
69
+ key: "metaDescription",
114
70
  },
115
71
  {
116
- value: "nosnippet",
117
- title: "No snippet",
118
- name: "nosnippet",
72
+ title: "Canonical URL",
73
+ type: "TextField",
74
+ key: "canonicalURL",
119
75
  },
120
76
  {
121
- value: "noodp",
122
- title: "No ODP",
123
- name: "noodp",
77
+ title: "Meta robots index",
78
+ type: "RadioGroup",
79
+ key: "isIndexed",
80
+ options: [
81
+ {
82
+ value: true,
83
+ title: "Index",
84
+ name: "index",
85
+ },
86
+ {
87
+ value: false,
88
+ title: "No index",
89
+ name: "noindex",
90
+ },
91
+ ],
124
92
  },
125
93
  {
126
- value: "noarchive",
127
- title: "No archive",
128
- name: "noarchive",
94
+ title: "Meta robots follow",
95
+ type: "RadioGroup",
96
+ key: "follow",
97
+ options: [
98
+ {
99
+ value: true,
100
+ title: "Follow",
101
+ name: "follow",
102
+ },
103
+ {
104
+ value: false,
105
+ title: "No follow",
106
+ name: "nofollow",
107
+ },
108
+ ],
129
109
  },
130
110
  {
131
- value: "noTranslate",
132
- title: "No translate",
133
- name: "noTranslate",
111
+ title: "Meta robots advanced",
112
+ type: "CheckGroup",
113
+ key: "metasAdvanced",
114
+ options: [
115
+ {
116
+ value: "noimageindex",
117
+ title: "No image index",
118
+ name: "noimage",
119
+ },
120
+ {
121
+ value: "nosnippet",
122
+ title: "No snippet",
123
+ name: "nosnippet",
124
+ },
125
+ {
126
+ value: "noodp",
127
+ title: "No ODP",
128
+ name: "noodp",
129
+ },
130
+ {
131
+ value: "noarchive",
132
+ title: "No archive",
133
+ name: "noarchive",
134
+ },
135
+ {
136
+ value: "noTranslate",
137
+ title: "No translate",
138
+ name: "noTranslate",
139
+ },
140
+ ],
134
141
  },
135
142
  ],
136
143
  },
144
+ {
145
+ type: "AnalyticsField",
146
+ key: "dimensions",
147
+ },
137
148
  {
138
149
  title: "Social Media",
139
150
  type: "FieldGroup",
@@ -177,5 +188,6 @@ export default {
177
188
  socialTitle: "",
178
189
  socialDescription: "",
179
190
  socialImage: {},
191
+ dimensions: {},
180
192
  },
181
193
  };
@@ -10,6 +10,7 @@ import { IUsersState } from "@ax/containers/Users/reducer";
10
10
  import { IGalleryState } from "@ax/containers/Gallery/reducer";
11
11
  import { IDomainsState } from "@ax/containers/Domains/reducer";
12
12
  import { IRedirectsState } from "@ax/containers/Redirects/reducer";
13
+ import { IAnalyticsState } from "@ax/containers/Analytics/reducer";
13
14
 
14
15
  export interface IBreadcrumbItem {
15
16
  editorID: number;
@@ -88,7 +89,7 @@ export interface IAPIPage {
88
89
  draftFromPage: number | null;
89
90
  liveChanged: boolean;
90
91
  templateId: string;
91
- structuredDataContent: Record<string, []>
92
+ structuredDataContent: Record<string, []>;
92
93
  }
93
94
 
94
95
  export interface IPage extends IAPIPage {
@@ -185,6 +186,7 @@ export interface IRootState {
185
186
  gallery: IGalleryState;
186
187
  domains: IDomainsState;
187
188
  redirects: IRedirectsState;
189
+ analytics: IAnalyticsState;
188
190
  }
189
191
 
190
192
  export interface IStyledProps {
@@ -618,7 +620,7 @@ export interface IDataPackConfigImport {
618
620
  export interface IModal {
619
621
  isOpen: boolean;
620
622
  toggleModal: () => void;
621
- mainModalAction: { title: string; onClick: () => void };
623
+ mainModalAction?: { title: string; onClick: () => void };
622
624
  secondaryModalAction?: { title: string; onClick: () => void };
623
625
  }
624
626
 
@@ -683,7 +685,27 @@ export interface IRedirect {
683
685
  id?: number;
684
686
  from: string;
685
687
  to: { pageId?: number; url: string; linkTo?: number; href?: string };
686
- site?: { siteId: number | null; siteName: string | null };
688
+ site?: { siteId: number | null; siteName: string | null; siteUrl: string | null };
689
+ domain?: string;
690
+ }
691
+
692
+ export interface IAnalytics {
693
+ scriptCode: string;
694
+ dimensions: IDimension[];
695
+ groups: IDimensionsGroup[];
696
+ }
697
+
698
+ export interface IDimension {
699
+ id?: number;
700
+ name: string;
701
+ values: string;
702
+ }
703
+
704
+ export interface IDimensionsGroup {
705
+ id?: number;
706
+ name: string;
707
+ dimensions: string;
708
+ templates?: string;
687
709
  }
688
710
 
689
711
  export type Field =