@redocly/theme 0.16.0 → 0.17.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.
package/lib/config.d.ts CHANGED
@@ -72,6 +72,229 @@ declare const markdownConfigSchema: {
72
72
  readonly additionalProperties: false;
73
73
  readonly default: {};
74
74
  };
75
+ declare const amplitudeAnalyticsConfigSchema: {
76
+ readonly type: "object";
77
+ readonly properties: {
78
+ readonly includeInDevelopment: {
79
+ readonly type: "boolean";
80
+ };
81
+ readonly apiKey: {
82
+ readonly type: "string";
83
+ };
84
+ readonly head: {
85
+ readonly type: "boolean";
86
+ };
87
+ readonly respectDNT: {
88
+ readonly type: "boolean";
89
+ };
90
+ readonly exclude: {
91
+ readonly type: "array";
92
+ readonly items: {
93
+ readonly type: "string";
94
+ };
95
+ };
96
+ readonly outboundClickEventName: {
97
+ readonly type: "string";
98
+ };
99
+ readonly pageViewEventName: {
100
+ readonly type: "string";
101
+ };
102
+ readonly amplitudeConfig: {
103
+ readonly type: "object";
104
+ readonly additionalProperties: true;
105
+ };
106
+ };
107
+ readonly additionalProperties: false;
108
+ readonly required: readonly ["apiKey"];
109
+ };
110
+ declare const rudderstackAnalyticsConfigSchema: {
111
+ readonly type: "object";
112
+ readonly properties: {
113
+ readonly includeInDevelopment: {
114
+ readonly type: "boolean";
115
+ };
116
+ readonly writeKey: {
117
+ readonly type: "string";
118
+ readonly minLength: 10;
119
+ };
120
+ readonly trackPage: {
121
+ readonly type: "boolean";
122
+ };
123
+ readonly dataPlaneUrl: {
124
+ readonly type: "string";
125
+ };
126
+ readonly controlPlaneUrl: {
127
+ readonly type: "string";
128
+ };
129
+ readonly sdkUrl: {
130
+ readonly type: "string";
131
+ };
132
+ readonly loadOptions: {
133
+ readonly type: "object";
134
+ readonly additionalProperties: true;
135
+ };
136
+ };
137
+ readonly additionalProperties: false;
138
+ readonly required: readonly ["writeKey"];
139
+ };
140
+ declare const segmentAnalyticsConfigSchema: {
141
+ readonly type: "object";
142
+ readonly properties: {
143
+ readonly includeInDevelopment: {
144
+ readonly type: "boolean";
145
+ };
146
+ readonly writeKey: {
147
+ readonly type: "string";
148
+ readonly minLength: 10;
149
+ };
150
+ readonly trackPage: {
151
+ readonly type: "boolean";
152
+ };
153
+ readonly includeTitleInPageCall: {
154
+ readonly type: "boolean";
155
+ };
156
+ readonly host: {
157
+ readonly type: "string";
158
+ };
159
+ };
160
+ readonly additionalProperties: false;
161
+ readonly required: readonly ["writeKey"];
162
+ };
163
+ declare const gtmAnalyticsConfigSchema: {
164
+ readonly type: "object";
165
+ readonly properties: {
166
+ readonly includeInDevelopment: {
167
+ readonly type: "boolean";
168
+ };
169
+ readonly trackingId: {
170
+ readonly type: "string";
171
+ };
172
+ readonly gtmAuth: {
173
+ readonly type: "string";
174
+ };
175
+ readonly gtmPreview: {
176
+ readonly type: "string";
177
+ };
178
+ readonly defaultDataLayer: {};
179
+ readonly dataLayerName: {
180
+ readonly type: "string";
181
+ };
182
+ readonly enableWebVitalsTracking: {
183
+ readonly type: "boolean";
184
+ };
185
+ readonly selfHostedOrigin: {
186
+ readonly type: "string";
187
+ };
188
+ readonly pageViewEventName: {
189
+ readonly type: "string";
190
+ };
191
+ };
192
+ readonly additionalProperties: false;
193
+ readonly required: readonly ["trackingId"];
194
+ };
195
+ declare const googleAnalyticsConfigSchema: {
196
+ readonly type: "object";
197
+ readonly properties: {
198
+ readonly includeInDevelopment: {
199
+ readonly type: "boolean";
200
+ };
201
+ readonly trackingId: {
202
+ readonly type: "string";
203
+ };
204
+ readonly head: {
205
+ readonly type: "boolean";
206
+ };
207
+ readonly respectDNT: {
208
+ readonly type: "boolean";
209
+ };
210
+ readonly anonymize: {
211
+ readonly type: "boolean";
212
+ };
213
+ readonly exclude: {
214
+ readonly type: "array";
215
+ readonly items: {
216
+ readonly type: "string";
217
+ };
218
+ };
219
+ readonly optimizeId: {
220
+ readonly type: "string";
221
+ };
222
+ readonly experimentId: {
223
+ readonly type: "string";
224
+ };
225
+ readonly variationId: {
226
+ readonly type: "string";
227
+ };
228
+ readonly enableWebVitalsTracking: {
229
+ readonly type: "boolean";
230
+ };
231
+ readonly defer: {
232
+ readonly type: "boolean";
233
+ };
234
+ readonly sampleRate: {
235
+ readonly type: "number";
236
+ };
237
+ readonly name: {
238
+ readonly type: "string";
239
+ };
240
+ readonly clientId: {
241
+ readonly type: "string";
242
+ };
243
+ readonly siteSpeedSampleRate: {
244
+ readonly type: "number";
245
+ };
246
+ readonly alwaysSendReferrer: {
247
+ readonly type: "boolean";
248
+ };
249
+ readonly allowAnchor: {
250
+ readonly type: "boolean";
251
+ };
252
+ readonly cookieName: {
253
+ readonly type: "string";
254
+ };
255
+ readonly cookieFlags: {
256
+ readonly type: "string";
257
+ };
258
+ readonly cookieDomain: {
259
+ readonly type: "string";
260
+ };
261
+ readonly cookieExpires: {
262
+ readonly type: "number";
263
+ };
264
+ readonly storeGac: {
265
+ readonly type: "boolean";
266
+ };
267
+ readonly legacyCookieDomain: {
268
+ readonly type: "string";
269
+ };
270
+ readonly legacyHistoryImport: {
271
+ readonly type: "boolean";
272
+ };
273
+ readonly allowLinker: {
274
+ readonly type: "boolean";
275
+ };
276
+ readonly storage: {
277
+ readonly type: "string";
278
+ };
279
+ readonly allowAdFeatures: {
280
+ readonly type: "boolean";
281
+ };
282
+ readonly dataSource: {
283
+ readonly type: "string";
284
+ };
285
+ readonly queueTime: {
286
+ readonly type: "number";
287
+ };
288
+ readonly forceSSL: {
289
+ readonly type: "boolean";
290
+ };
291
+ readonly transport: {
292
+ readonly type: "string";
293
+ };
294
+ };
295
+ readonly additionalProperties: false;
296
+ readonly required: readonly ["trackingId"];
297
+ };
75
298
  export declare const themeConfigSchema: {
76
299
  readonly type: "object";
77
300
  readonly properties: {
@@ -787,7 +1010,274 @@ export declare const themeConfigSchema: {
787
1010
  readonly additionalProperties: true;
788
1011
  };
789
1012
  readonly analytics: {
790
- readonly type: readonly ["array", "boolean", "number", "object", "string"];
1013
+ readonly type: "object";
1014
+ readonly properties: {
1015
+ readonly adobe: {
1016
+ readonly type: "object";
1017
+ readonly properties: {
1018
+ readonly includeInDevelopment: {
1019
+ readonly type: "boolean";
1020
+ };
1021
+ readonly scriptUrl: {
1022
+ readonly type: "string";
1023
+ };
1024
+ readonly pageViewEventName: {
1025
+ readonly type: "string";
1026
+ };
1027
+ };
1028
+ readonly additionalProperties: false;
1029
+ readonly required: readonly ["scriptUrl"];
1030
+ };
1031
+ readonly amplitude: {
1032
+ readonly type: "object";
1033
+ readonly properties: {
1034
+ readonly includeInDevelopment: {
1035
+ readonly type: "boolean";
1036
+ };
1037
+ readonly apiKey: {
1038
+ readonly type: "string";
1039
+ };
1040
+ readonly head: {
1041
+ readonly type: "boolean";
1042
+ };
1043
+ readonly respectDNT: {
1044
+ readonly type: "boolean";
1045
+ };
1046
+ readonly exclude: {
1047
+ readonly type: "array";
1048
+ readonly items: {
1049
+ readonly type: "string";
1050
+ };
1051
+ };
1052
+ readonly outboundClickEventName: {
1053
+ readonly type: "string";
1054
+ };
1055
+ readonly pageViewEventName: {
1056
+ readonly type: "string";
1057
+ };
1058
+ readonly amplitudeConfig: {
1059
+ readonly type: "object";
1060
+ readonly additionalProperties: true;
1061
+ };
1062
+ };
1063
+ readonly additionalProperties: false;
1064
+ readonly required: readonly ["apiKey"];
1065
+ };
1066
+ readonly fullstory: {
1067
+ readonly type: "object";
1068
+ readonly properties: {
1069
+ readonly includeInDevelopment: {
1070
+ readonly type: "boolean";
1071
+ };
1072
+ readonly orgId: {
1073
+ readonly type: "string";
1074
+ };
1075
+ };
1076
+ readonly additionalProperties: false;
1077
+ readonly required: readonly ["orgId"];
1078
+ };
1079
+ readonly heap: {
1080
+ readonly type: "object";
1081
+ readonly properties: {
1082
+ readonly includeInDevelopment: {
1083
+ readonly type: "boolean";
1084
+ };
1085
+ readonly appId: {
1086
+ readonly type: "string";
1087
+ };
1088
+ };
1089
+ readonly additionalProperties: false;
1090
+ readonly required: readonly ["appId"];
1091
+ };
1092
+ readonly rudderstack: {
1093
+ readonly type: "object";
1094
+ readonly properties: {
1095
+ readonly includeInDevelopment: {
1096
+ readonly type: "boolean";
1097
+ };
1098
+ readonly writeKey: {
1099
+ readonly type: "string";
1100
+ readonly minLength: 10;
1101
+ };
1102
+ readonly trackPage: {
1103
+ readonly type: "boolean";
1104
+ };
1105
+ readonly dataPlaneUrl: {
1106
+ readonly type: "string";
1107
+ };
1108
+ readonly controlPlaneUrl: {
1109
+ readonly type: "string";
1110
+ };
1111
+ readonly sdkUrl: {
1112
+ readonly type: "string";
1113
+ };
1114
+ readonly loadOptions: {
1115
+ readonly type: "object";
1116
+ readonly additionalProperties: true;
1117
+ };
1118
+ };
1119
+ readonly additionalProperties: false;
1120
+ readonly required: readonly ["writeKey"];
1121
+ };
1122
+ readonly segment: {
1123
+ readonly type: "object";
1124
+ readonly properties: {
1125
+ readonly includeInDevelopment: {
1126
+ readonly type: "boolean";
1127
+ };
1128
+ readonly writeKey: {
1129
+ readonly type: "string";
1130
+ readonly minLength: 10;
1131
+ };
1132
+ readonly trackPage: {
1133
+ readonly type: "boolean";
1134
+ };
1135
+ readonly includeTitleInPageCall: {
1136
+ readonly type: "boolean";
1137
+ };
1138
+ readonly host: {
1139
+ readonly type: "string";
1140
+ };
1141
+ };
1142
+ readonly additionalProperties: false;
1143
+ readonly required: readonly ["writeKey"];
1144
+ };
1145
+ readonly gtm: {
1146
+ readonly type: "object";
1147
+ readonly properties: {
1148
+ readonly includeInDevelopment: {
1149
+ readonly type: "boolean";
1150
+ };
1151
+ readonly trackingId: {
1152
+ readonly type: "string";
1153
+ };
1154
+ readonly gtmAuth: {
1155
+ readonly type: "string";
1156
+ };
1157
+ readonly gtmPreview: {
1158
+ readonly type: "string";
1159
+ };
1160
+ readonly defaultDataLayer: {};
1161
+ readonly dataLayerName: {
1162
+ readonly type: "string";
1163
+ };
1164
+ readonly enableWebVitalsTracking: {
1165
+ readonly type: "boolean";
1166
+ };
1167
+ readonly selfHostedOrigin: {
1168
+ readonly type: "string";
1169
+ };
1170
+ readonly pageViewEventName: {
1171
+ readonly type: "string";
1172
+ };
1173
+ };
1174
+ readonly additionalProperties: false;
1175
+ readonly required: readonly ["trackingId"];
1176
+ };
1177
+ readonly ga: {
1178
+ readonly type: "object";
1179
+ readonly properties: {
1180
+ readonly includeInDevelopment: {
1181
+ readonly type: "boolean";
1182
+ };
1183
+ readonly trackingId: {
1184
+ readonly type: "string";
1185
+ };
1186
+ readonly head: {
1187
+ readonly type: "boolean";
1188
+ };
1189
+ readonly respectDNT: {
1190
+ readonly type: "boolean";
1191
+ };
1192
+ readonly anonymize: {
1193
+ readonly type: "boolean";
1194
+ };
1195
+ readonly exclude: {
1196
+ readonly type: "array";
1197
+ readonly items: {
1198
+ readonly type: "string";
1199
+ };
1200
+ };
1201
+ readonly optimizeId: {
1202
+ readonly type: "string";
1203
+ };
1204
+ readonly experimentId: {
1205
+ readonly type: "string";
1206
+ };
1207
+ readonly variationId: {
1208
+ readonly type: "string";
1209
+ };
1210
+ readonly enableWebVitalsTracking: {
1211
+ readonly type: "boolean";
1212
+ };
1213
+ readonly defer: {
1214
+ readonly type: "boolean";
1215
+ };
1216
+ readonly sampleRate: {
1217
+ readonly type: "number";
1218
+ };
1219
+ readonly name: {
1220
+ readonly type: "string";
1221
+ };
1222
+ readonly clientId: {
1223
+ readonly type: "string";
1224
+ };
1225
+ readonly siteSpeedSampleRate: {
1226
+ readonly type: "number";
1227
+ };
1228
+ readonly alwaysSendReferrer: {
1229
+ readonly type: "boolean";
1230
+ };
1231
+ readonly allowAnchor: {
1232
+ readonly type: "boolean";
1233
+ };
1234
+ readonly cookieName: {
1235
+ readonly type: "string";
1236
+ };
1237
+ readonly cookieFlags: {
1238
+ readonly type: "string";
1239
+ };
1240
+ readonly cookieDomain: {
1241
+ readonly type: "string";
1242
+ };
1243
+ readonly cookieExpires: {
1244
+ readonly type: "number";
1245
+ };
1246
+ readonly storeGac: {
1247
+ readonly type: "boolean";
1248
+ };
1249
+ readonly legacyCookieDomain: {
1250
+ readonly type: "string";
1251
+ };
1252
+ readonly legacyHistoryImport: {
1253
+ readonly type: "boolean";
1254
+ };
1255
+ readonly allowLinker: {
1256
+ readonly type: "boolean";
1257
+ };
1258
+ readonly storage: {
1259
+ readonly type: "string";
1260
+ };
1261
+ readonly allowAdFeatures: {
1262
+ readonly type: "boolean";
1263
+ };
1264
+ readonly dataSource: {
1265
+ readonly type: "string";
1266
+ };
1267
+ readonly queueTime: {
1268
+ readonly type: "number";
1269
+ };
1270
+ readonly forceSSL: {
1271
+ readonly type: "boolean";
1272
+ };
1273
+ readonly transport: {
1274
+ readonly type: "string";
1275
+ };
1276
+ };
1277
+ readonly additionalProperties: false;
1278
+ readonly required: readonly ["trackingId"];
1279
+ };
1280
+ };
791
1281
  };
792
1282
  readonly userProfile: {
793
1283
  readonly type: "object";
@@ -883,4 +1373,9 @@ export type ThemeUIConfig = ThemeConfig & {
883
1373
  };
884
1374
  };
885
1375
  export type MarkdownConfig = FromSchema<typeof markdownConfigSchema>;
1376
+ export type AmplitudeAnalyticsConfig = FromSchema<typeof amplitudeAnalyticsConfigSchema>;
1377
+ export type RudderstackAnalyticsConfig = FromSchema<typeof rudderstackAnalyticsConfigSchema>;
1378
+ export type SegmentAnalyticsConfig = FromSchema<typeof segmentAnalyticsConfigSchema>;
1379
+ export type GtmAnalyticsConfig = FromSchema<typeof gtmAnalyticsConfigSchema>;
1380
+ export type GoogleAnalyticsConfig = FromSchema<typeof googleAnalyticsConfigSchema>;
886
1381
  export {};
package/lib/config.js CHANGED
@@ -92,6 +92,129 @@ const markdownConfigSchema = {
92
92
  additionalProperties: false,
93
93
  default: {},
94
94
  };
95
+ const amplitudeAnalyticsConfigSchema = {
96
+ type: 'object',
97
+ properties: {
98
+ includeInDevelopment: { type: 'boolean' },
99
+ apiKey: { type: 'string' },
100
+ head: { type: 'boolean' },
101
+ respectDNT: { type: 'boolean' },
102
+ exclude: { type: 'array', items: { type: 'string' } },
103
+ outboundClickEventName: { type: 'string' },
104
+ pageViewEventName: { type: 'string' },
105
+ amplitudeConfig: { type: 'object', additionalProperties: true },
106
+ },
107
+ additionalProperties: false,
108
+ required: ['apiKey'],
109
+ };
110
+ const fullstoryAnalyticsConfigSchema = {
111
+ type: 'object',
112
+ properties: {
113
+ includeInDevelopment: { type: 'boolean' },
114
+ orgId: { type: 'string' },
115
+ },
116
+ additionalProperties: false,
117
+ required: ['orgId'],
118
+ };
119
+ const heapAnalyticsConfigSchema = {
120
+ type: 'object',
121
+ properties: {
122
+ includeInDevelopment: { type: 'boolean' },
123
+ appId: { type: 'string' },
124
+ },
125
+ additionalProperties: false,
126
+ required: ['appId'],
127
+ };
128
+ const rudderstackAnalyticsConfigSchema = {
129
+ type: 'object',
130
+ properties: {
131
+ includeInDevelopment: { type: 'boolean' },
132
+ writeKey: { type: 'string', minLength: 10 },
133
+ trackPage: { type: 'boolean' },
134
+ dataPlaneUrl: { type: 'string' },
135
+ controlPlaneUrl: { type: 'string' },
136
+ sdkUrl: { type: 'string' },
137
+ loadOptions: { type: 'object', additionalProperties: true },
138
+ },
139
+ additionalProperties: false,
140
+ required: ['writeKey'],
141
+ };
142
+ const segmentAnalyticsConfigSchema = {
143
+ type: 'object',
144
+ properties: {
145
+ includeInDevelopment: { type: 'boolean' },
146
+ writeKey: { type: 'string', minLength: 10 },
147
+ trackPage: { type: 'boolean' },
148
+ includeTitleInPageCall: { type: 'boolean' },
149
+ host: { type: 'string' },
150
+ },
151
+ additionalProperties: false,
152
+ required: ['writeKey'],
153
+ };
154
+ const gtmAnalyticsConfigSchema = {
155
+ type: 'object',
156
+ properties: {
157
+ includeInDevelopment: { type: 'boolean' },
158
+ trackingId: { type: 'string' },
159
+ gtmAuth: { type: 'string' },
160
+ gtmPreview: { type: 'string' },
161
+ defaultDataLayer: {},
162
+ dataLayerName: { type: 'string' },
163
+ enableWebVitalsTracking: { type: 'boolean' },
164
+ selfHostedOrigin: { type: 'string' },
165
+ pageViewEventName: { type: 'string' },
166
+ },
167
+ additionalProperties: false,
168
+ required: ['trackingId'],
169
+ };
170
+ const googleAnalyticsConfigSchema = {
171
+ type: 'object',
172
+ properties: {
173
+ includeInDevelopment: { type: 'boolean' },
174
+ trackingId: { type: 'string' },
175
+ head: { type: 'boolean' },
176
+ respectDNT: { type: 'boolean' },
177
+ anonymize: { type: 'boolean' },
178
+ exclude: { type: 'array', items: { type: 'string' } },
179
+ optimizeId: { type: 'string' },
180
+ experimentId: { type: 'string' },
181
+ variationId: { type: 'string' },
182
+ enableWebVitalsTracking: { type: 'boolean' },
183
+ defer: { type: 'boolean' },
184
+ sampleRate: { type: 'number' },
185
+ name: { type: 'string' },
186
+ clientId: { type: 'string' },
187
+ siteSpeedSampleRate: { type: 'number' },
188
+ alwaysSendReferrer: { type: 'boolean' },
189
+ allowAnchor: { type: 'boolean' },
190
+ cookieName: { type: 'string' },
191
+ cookieFlags: { type: 'string' },
192
+ cookieDomain: { type: 'string' },
193
+ cookieExpires: { type: 'number' },
194
+ storeGac: { type: 'boolean' },
195
+ legacyCookieDomain: { type: 'string' },
196
+ legacyHistoryImport: { type: 'boolean' },
197
+ allowLinker: { type: 'boolean' },
198
+ storage: { type: 'string' },
199
+ allowAdFeatures: { type: 'boolean' },
200
+ dataSource: { type: 'string' },
201
+ queueTime: { type: 'number' },
202
+ forceSSL: { type: 'boolean' },
203
+ transport: { type: 'string' },
204
+ },
205
+ additionalProperties: false,
206
+ required: ['trackingId'],
207
+ };
208
+ const adobeAnalyticsConfigSchema = {
209
+ type: 'object',
210
+ properties: {
211
+ includeInDevelopment: { type: 'boolean' },
212
+ scriptUrl: { type: 'string' },
213
+ pageViewEventName: { type: 'string' },
214
+ },
215
+ additionalProperties: false,
216
+ required: ['scriptUrl'],
217
+ };
95
218
  const navItemSchema = {
96
219
  type: 'object',
97
220
  properties: {
@@ -266,7 +389,17 @@ exports.themeConfigSchema = {
266
389
  openapi: { type: 'object', additionalProperties: true },
267
390
  graphql: { type: 'object', additionalProperties: true },
268
391
  analytics: {
269
- type: ['array', 'boolean', 'number', 'object', 'string'],
392
+ type: 'object',
393
+ properties: {
394
+ adobe: adobeAnalyticsConfigSchema,
395
+ amplitude: amplitudeAnalyticsConfigSchema,
396
+ fullstory: fullstoryAnalyticsConfigSchema,
397
+ heap: heapAnalyticsConfigSchema,
398
+ rudderstack: rudderstackAnalyticsConfigSchema,
399
+ segment: segmentAnalyticsConfigSchema,
400
+ gtm: gtmAnalyticsConfigSchema,
401
+ ga: googleAnalyticsConfigSchema,
402
+ },
270
403
  },
271
404
  userProfile: {
272
405
  type: 'object',
@@ -8,13 +8,13 @@ exports.darkMode = (0, styled_components_1.css) `
8
8
  * @presenter Color
9
9
  */
10
10
  --background-color: #141414;
11
- --footer-background-color: #1F1F1F;
12
- --navbar-background-color: #1F1F1F;
11
+ --footer-background-color: #1f1f1f;
12
+ --navbar-background-color: #1f1f1f;
13
13
  --mobile-menu-background: #141414;
14
14
  --mobile-menu-profile-background: var(--mobile-menu-background);
15
- --mobile-menu-login-button-background: var(--mobile-menu-profile-background); rgba(255, 255, 255, 0.6);
15
+ --mobile-menu-login-button-background: var(--mobile-menu-profile-background);
16
16
  --mobile-menu-item-text-color: rgba(255, 255, 255, 0.6);
17
- --mobile-menu-item-active-color: #1F1F1F;
17
+ --mobile-menu-item-active-color: #1f1f1f;
18
18
  --mobile-menu-item-active-text-color: rgba(255, 255, 255, 0.85);
19
19
  --mobile-menu-control-button-color: #ffffff;
20
20
  --mobile-menu-profile-border-color: #222222;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@redocly/theme",
3
- "version": "0.16.0",
4
- "description": "Shared UI components library",
3
+ "version": "0.17.0",
4
+ "description": "Shared UI components lib",
5
5
  "keywords": [
6
6
  "theme",
7
7
  "redocly"
package/src/config.ts CHANGED
@@ -111,6 +111,139 @@ const markdownConfigSchema = {
111
111
  default: {},
112
112
  } as const;
113
113
 
114
+ const amplitudeAnalyticsConfigSchema = {
115
+ type: 'object',
116
+ properties: {
117
+ includeInDevelopment: { type: 'boolean' },
118
+ apiKey: { type: 'string' },
119
+ head: { type: 'boolean' },
120
+ respectDNT: { type: 'boolean' },
121
+ exclude: { type: 'array', items: { type: 'string' } },
122
+ outboundClickEventName: { type: 'string' },
123
+ pageViewEventName: { type: 'string' },
124
+ amplitudeConfig: { type: 'object', additionalProperties: true },
125
+ },
126
+ additionalProperties: false,
127
+ required: ['apiKey'],
128
+ } as const;
129
+
130
+ const fullstoryAnalyticsConfigSchema = {
131
+ type: 'object',
132
+ properties: {
133
+ includeInDevelopment: { type: 'boolean' },
134
+ orgId: { type: 'string' },
135
+ },
136
+ additionalProperties: false,
137
+ required: ['orgId'],
138
+ } as const;
139
+
140
+ const heapAnalyticsConfigSchema = {
141
+ type: 'object',
142
+ properties: {
143
+ includeInDevelopment: { type: 'boolean' },
144
+ appId: { type: 'string' },
145
+ },
146
+ additionalProperties: false,
147
+ required: ['appId'],
148
+ } as const;
149
+
150
+ const rudderstackAnalyticsConfigSchema = {
151
+ type: 'object',
152
+ properties: {
153
+ includeInDevelopment: { type: 'boolean' },
154
+ writeKey: { type: 'string', minLength: 10 },
155
+ trackPage: { type: 'boolean' },
156
+ dataPlaneUrl: { type: 'string' },
157
+ controlPlaneUrl: { type: 'string' },
158
+ sdkUrl: { type: 'string' },
159
+ loadOptions: { type: 'object', additionalProperties: true },
160
+ },
161
+ additionalProperties: false,
162
+ required: ['writeKey'],
163
+ } as const;
164
+
165
+ const segmentAnalyticsConfigSchema = {
166
+ type: 'object',
167
+ properties: {
168
+ includeInDevelopment: { type: 'boolean' },
169
+ writeKey: { type: 'string', minLength: 10 },
170
+ trackPage: { type: 'boolean' },
171
+ includeTitleInPageCall: { type: 'boolean' },
172
+ host: { type: 'string' },
173
+ },
174
+ additionalProperties: false,
175
+ required: ['writeKey'],
176
+ } as const;
177
+
178
+ const gtmAnalyticsConfigSchema = {
179
+ type: 'object',
180
+ properties: {
181
+ includeInDevelopment: { type: 'boolean' },
182
+ trackingId: { type: 'string' },
183
+ gtmAuth: { type: 'string' },
184
+ gtmPreview: { type: 'string' },
185
+ defaultDataLayer: {},
186
+ dataLayerName: { type: 'string' },
187
+ enableWebVitalsTracking: { type: 'boolean' },
188
+ selfHostedOrigin: { type: 'string' },
189
+ pageViewEventName: { type: 'string' },
190
+ },
191
+ additionalProperties: false,
192
+ required: ['trackingId'],
193
+ } as const;
194
+
195
+ const googleAnalyticsConfigSchema = {
196
+ type: 'object',
197
+ properties: {
198
+ includeInDevelopment: { type: 'boolean' },
199
+ trackingId: { type: 'string' },
200
+ head: { type: 'boolean' },
201
+ respectDNT: { type: 'boolean' },
202
+ anonymize: { type: 'boolean' },
203
+ exclude: { type: 'array', items: { type: 'string' } },
204
+ optimizeId: { type: 'string' },
205
+ experimentId: { type: 'string' },
206
+ variationId: { type: 'string' },
207
+ enableWebVitalsTracking: { type: 'boolean' },
208
+
209
+ defer: { type: 'boolean' },
210
+ sampleRate: { type: 'number' },
211
+ name: { type: 'string' },
212
+ clientId: { type: 'string' },
213
+ siteSpeedSampleRate: { type: 'number' },
214
+ alwaysSendReferrer: { type: 'boolean' },
215
+ allowAnchor: { type: 'boolean' },
216
+ cookieName: { type: 'string' },
217
+ cookieFlags: { type: 'string' },
218
+ cookieDomain: { type: 'string' },
219
+ cookieExpires: { type: 'number' },
220
+ storeGac: { type: 'boolean' },
221
+ legacyCookieDomain: { type: 'string' },
222
+ legacyHistoryImport: { type: 'boolean' },
223
+ allowLinker: { type: 'boolean' },
224
+ storage: { type: 'string' },
225
+
226
+ allowAdFeatures: { type: 'boolean' },
227
+ dataSource: { type: 'string' },
228
+ queueTime: { type: 'number' },
229
+ forceSSL: { type: 'boolean' },
230
+ transport: { type: 'string' },
231
+ },
232
+ additionalProperties: false,
233
+ required: ['trackingId'],
234
+ } as const;
235
+
236
+ const adobeAnalyticsConfigSchema = {
237
+ type: 'object',
238
+ properties: {
239
+ includeInDevelopment: { type: 'boolean' },
240
+ scriptUrl: { type: 'string' },
241
+ pageViewEventName: { type: 'string' },
242
+ },
243
+ additionalProperties: false,
244
+ required: ['scriptUrl'],
245
+ } as const;
246
+
114
247
  const navItemSchema = {
115
248
  type: 'object',
116
249
  properties: {
@@ -331,7 +464,17 @@ export const themeConfigSchema = {
331
464
  openapi: { type: 'object', additionalProperties: true },
332
465
  graphql: { type: 'object', additionalProperties: true },
333
466
  analytics: {
334
- type: ['array', 'boolean', 'number', 'object', 'string'],
467
+ type: 'object',
468
+ properties: {
469
+ adobe: adobeAnalyticsConfigSchema,
470
+ amplitude: amplitudeAnalyticsConfigSchema,
471
+ fullstory: fullstoryAnalyticsConfigSchema,
472
+ heap: heapAnalyticsConfigSchema,
473
+ rudderstack: rudderstackAnalyticsConfigSchema,
474
+ segment: segmentAnalyticsConfigSchema,
475
+ gtm: gtmAnalyticsConfigSchema,
476
+ ga: googleAnalyticsConfigSchema,
477
+ },
335
478
  },
336
479
  userProfile: {
337
480
  type: 'object',
@@ -408,3 +551,9 @@ export type ThemeUIConfig = ThemeConfig & {
408
551
  };
409
552
 
410
553
  export type MarkdownConfig = FromSchema<typeof markdownConfigSchema>;
554
+
555
+ export type AmplitudeAnalyticsConfig = FromSchema<typeof amplitudeAnalyticsConfigSchema>;
556
+ export type RudderstackAnalyticsConfig = FromSchema<typeof rudderstackAnalyticsConfigSchema>;
557
+ export type SegmentAnalyticsConfig = FromSchema<typeof segmentAnalyticsConfigSchema>;
558
+ export type GtmAnalyticsConfig = FromSchema<typeof gtmAnalyticsConfigSchema>;
559
+ export type GoogleAnalyticsConfig = FromSchema<typeof googleAnalyticsConfigSchema>;
@@ -6,13 +6,13 @@ export const darkMode = css`
6
6
  * @presenter Color
7
7
  */
8
8
  --background-color: #141414;
9
- --footer-background-color: #1F1F1F;
10
- --navbar-background-color: #1F1F1F;
9
+ --footer-background-color: #1f1f1f;
10
+ --navbar-background-color: #1f1f1f;
11
11
  --mobile-menu-background: #141414;
12
12
  --mobile-menu-profile-background: var(--mobile-menu-background);
13
- --mobile-menu-login-button-background: var(--mobile-menu-profile-background); rgba(255, 255, 255, 0.6);
13
+ --mobile-menu-login-button-background: var(--mobile-menu-profile-background);
14
14
  --mobile-menu-item-text-color: rgba(255, 255, 255, 0.6);
15
- --mobile-menu-item-active-color: #1F1F1F;
15
+ --mobile-menu-item-active-color: #1f1f1f;
16
16
  --mobile-menu-item-active-text-color: rgba(255, 255, 255, 0.85);
17
17
  --mobile-menu-control-button-color: #ffffff;
18
18
  --mobile-menu-profile-border-color: #222222;