@uniformdev/context-ui 19.95.0 → 19.96.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/dist/index.js CHANGED
@@ -63,18 +63,179 @@ module.exports = __toCommonJS(src_exports);
63
63
  var import_react = require("@emotion/react");
64
64
  var React = __toESM(require("react"));
65
65
 
66
- // src/components/CriteriaOperatorMenu/CriteriaOperatorMenu.tsx
66
+ // src/components/AbTestSelector/AbTestSelector.tsx
67
+ var import_react3 = require("@emotion/react");
67
68
  var import_design_system = require("@uniformdev/design-system");
69
+ var import_react4 = require("react");
68
70
 
69
- // src/components/CriteriaOperatorMenu/OperatorBubble.tsx
70
- var import_react2 = require("@emotion/react");
71
+ // src/hooks/useABTests.ts
72
+ var import_api = require("@uniformdev/context/api");
73
+ var import_react2 = require("react");
74
+ function useABTests({ apiHost, apiKey, projectId }) {
75
+ const [reload, setReload] = (0, import_react2.useState)(true);
76
+ const [state, setState] = (0, import_react2.useState)({
77
+ loading: false,
78
+ notConfigured: false,
79
+ error: null,
80
+ result: null
81
+ });
82
+ (0, import_react2.useEffect)(() => {
83
+ if (!projectId || !apiKey || !apiHost) {
84
+ setState({ notConfigured: true, loading: false, error: null, result: null });
85
+ return;
86
+ }
87
+ const runEffect = async () => {
88
+ setState({ notConfigured: false, loading: true, error: null, result: null });
89
+ try {
90
+ const client = new import_api.CachedTestClient({
91
+ projectId,
92
+ apiKey,
93
+ apiHost
94
+ });
95
+ const { tests } = await client.get();
96
+ setState({ notConfigured: false, loading: false, error: null, result: tests });
97
+ } catch (e) {
98
+ let message;
99
+ if (e instanceof import_api.ApiClientError) {
100
+ message = e.message;
101
+ } else {
102
+ message = e.toString();
103
+ }
104
+ setState({ notConfigured: false, loading: false, error: message, result: null });
105
+ return;
106
+ }
107
+ };
108
+ if (reload) {
109
+ runEffect().then(() => {
110
+ setReload(false);
111
+ });
112
+ }
113
+ }, [apiHost, apiKey, projectId, reload]);
114
+ return {
115
+ result: state.result,
116
+ error: state.error,
117
+ loading: state.loading,
118
+ notConfigured: state.notConfigured,
119
+ doReload: () => setReload(true)
120
+ };
121
+ }
122
+
123
+ // src/components/AbTestSelector/AbTestSelector.tsx
71
124
  var import_jsx_runtime = require("@emotion/react/jsx-runtime");
125
+ var addAbTestLink = import_react3.css`
126
+ flex: 2;
127
+ display: flex;
128
+ width: 50%;
129
+ align-items: center;
130
+ font-weight: var(--fw-bold);
131
+ color: var(--brand-primary-1);
132
+ &:hover,
133
+ &:focus {
134
+ text-decoration-line: underline;
135
+ }
136
+ `;
137
+ var AbTestList = ({ contextConfig, onSelect, value }) => {
138
+ const { loading, result, doReload = () => {
139
+ } } = useABTests(contextConfig);
140
+ if (loading) {
141
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.LoadingIndicator, {});
142
+ }
143
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
144
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.Link, { text: "Refresh A/B Test list", style: { marginRight: "10px" }, onClick: () => doReload() }) }),
145
+ !result || result.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NoAbTestsView, { contextConfig }) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { style: { marginTop: "10px" }, children: [
146
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.ScrollableList, { children: result.map((abTest) => {
147
+ const { id, name } = abTest;
148
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
149
+ import_design_system.ScrollableListItem,
150
+ {
151
+ buttonText: name,
152
+ active: id === (value == null ? void 0 : value.id),
153
+ onClick: () => onSelect(abTest)
154
+ },
155
+ id
156
+ );
157
+ }) }),
158
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
159
+ import_design_system.AddListButton,
160
+ {
161
+ className: "add-more",
162
+ onButtonClick: () => {
163
+ window.open(
164
+ `${contextConfig.apiHost}/projects/${encodeURIComponent(contextConfig.projectId)}/testing`,
165
+ "_blank"
166
+ );
167
+ },
168
+ buttonText: "Add new A/B Test"
169
+ }
170
+ )
171
+ ] })
172
+ ] });
173
+ };
174
+ var AbTestSelector = ({ value, setValue, contextConfig, loading }) => {
175
+ var _a;
176
+ const [showAbTests, setShowAbTests] = (0, import_react4.useState)(false);
177
+ if (loading) {
178
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.LoadingIndicator, {});
179
+ }
180
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("fieldset", { className: "ab-test", children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
181
+ !showAbTests && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { children: [
182
+ value && Object.keys(value).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.Heading, { level: 4, style: { marginBottom: "10px" }, children: (_a = value == null ? void 0 : value.name) != null ? _a : "Unknown test" }),
183
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_design_system.Button, { buttonType: "primary", style: { marginRight: "10px" }, onClick: () => setShowAbTests(true), children: "Select A/B Test" })
184
+ ] }),
185
+ showAbTests && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
186
+ AbTestList,
187
+ {
188
+ contextConfig,
189
+ onSelect: (abTest) => {
190
+ if ((value == null ? void 0 : value.id) === abTest.id) {
191
+ setValue(void 0);
192
+ setShowAbTests(true);
193
+ return;
194
+ }
195
+ setValue(abTest);
196
+ setShowAbTests(false);
197
+ },
198
+ value
199
+ }
200
+ )
201
+ ] }) });
202
+ };
203
+ var NoAbTestsView = ({ contextConfig }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
204
+ import_design_system.Callout,
205
+ {
206
+ title: "No A/B tests found in your Uniform project.",
207
+ type: "caution",
208
+ css: { marginBlock: "var(--spacing-base)" },
209
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("p", { children: [
210
+ "Looks like you do not have any A/B tests created in your connected Uniform project. Start by creating your first test",
211
+ " ",
212
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
213
+ "a",
214
+ {
215
+ href: `${contextConfig.apiHost}/projects/${encodeURIComponent(contextConfig.projectId)}/testing`,
216
+ target: "_blank",
217
+ rel: "noopener noreferrer",
218
+ css: { ":hover": { textDecorationLine: "underline" } },
219
+ children: "here"
220
+ }
221
+ ),
222
+ "."
223
+ ] })
224
+ }
225
+ );
226
+
227
+ // src/components/CriteriaOperatorMenu/CriteriaOperatorMenu.tsx
228
+ var import_design_system2 = require("@uniformdev/design-system");
229
+
230
+ // src/components/CriteriaOperatorMenu/OperatorBubble.tsx
231
+ var import_react5 = require("@emotion/react");
232
+ var import_jsx_runtime2 = require("@emotion/react/jsx-runtime");
72
233
  function OperatorBubble({ op }) {
73
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
234
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
74
235
  "div",
75
236
  {
76
237
  className: "operation-bubble",
77
- css: import_react2.css`
238
+ css: import_react5.css`
78
239
  align-items: center;
79
240
  background: var(--gray-700);
80
241
  border-radius: var(--rounded-full);
@@ -91,12 +252,12 @@ function OperatorBubble({ op }) {
91
252
  }
92
253
 
93
254
  // src/components/CriteriaOperatorMenu/CriteriaOperatorOption.tsx
94
- var import_jsx_runtime2 = require("@emotion/react/jsx-runtime");
255
+ var import_jsx_runtime3 = require("@emotion/react/jsx-runtime");
95
256
  var CriteriaOperatorOption = (props) => {
96
257
  var _a, _b;
97
258
  const { data, getStyles, isDisabled, innerRef, innerProps } = props;
98
259
  const [name, description] = (_b = (_a = data.label) == null ? void 0 : _a.split(":")) != null ? _b : [];
99
- return /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(
260
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
100
261
  "div",
101
262
  {
102
263
  css: {
@@ -109,7 +270,7 @@ var CriteriaOperatorOption = (props) => {
109
270
  "aria-disabled": isDisabled,
110
271
  ...innerProps,
111
272
  children: [
112
- description ? /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(OperatorBubble, { op: name }) : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
273
+ description ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(OperatorBubble, { op: name }) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
113
274
  "div",
114
275
  {
115
276
  css: {
@@ -118,30 +279,30 @@ var CriteriaOperatorOption = (props) => {
118
279
  }
119
280
  }
120
281
  ),
121
- /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { children: description != null ? description : name })
282
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { children: description != null ? description : name })
122
283
  ]
123
284
  }
124
285
  );
125
286
  };
126
287
 
127
288
  // src/components/CriteriaOperatorMenu/CriteriaOperatorSingleValue.tsx
128
- var import_jsx_runtime3 = require("@emotion/react/jsx-runtime");
289
+ var import_jsx_runtime4 = require("@emotion/react/jsx-runtime");
129
290
  var CriteriaOperatorSingleValue = (props) => {
130
291
  const { data, getStyles } = props;
131
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
292
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
132
293
  "div",
133
294
  {
134
295
  css: {
135
296
  ...getStyles("singleValue", props),
136
297
  width: "max-content"
137
298
  },
138
- children: data.label.length === 1 ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(OperatorBubble, { op: data.label }) : data.label
299
+ children: data.label.length === 1 ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(OperatorBubble, { op: data.label }) : data.label
139
300
  }
140
301
  );
141
302
  };
142
303
 
143
304
  // src/components/CriteriaOperatorMenu/CriteriaOperatorMenu.tsx
144
- var import_jsx_runtime4 = require("@emotion/react/jsx-runtime");
305
+ var import_jsx_runtime5 = require("@emotion/react/jsx-runtime");
145
306
  var contextCriteriaMenuOperators = [
146
307
  {
147
308
  name: "=",
@@ -184,8 +345,8 @@ var contextCriteriaMenuOperators = [
184
345
  ];
185
346
  function CriteriaOperatorMenu({ onChange, value, ...props }) {
186
347
  var _a, _b;
187
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
188
- import_design_system.InputComboBox,
348
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
349
+ import_design_system2.InputComboBox,
189
350
  {
190
351
  ...props,
191
352
  value: {
@@ -246,20 +407,20 @@ function CriteriaOperatorMenu({ onChange, value, ...props }) {
246
407
  }
247
408
 
248
409
  // src/components/DataContext/DataContext.tsx
249
- var import_design_system2 = require("@uniformdev/design-system");
250
- var import_react5 = require("react");
410
+ var import_design_system3 = require("@uniformdev/design-system");
411
+ var import_react8 = require("react");
251
412
 
252
413
  // src/hooks/useContextData.ts
253
- var import_api = require("@uniformdev/context/api");
254
- var import_react3 = require("react");
414
+ var import_api2 = require("@uniformdev/context/api");
415
+ var import_react6 = require("react");
255
416
  function useContextData({ apiHost, apiKey, projectId }) {
256
- const [state, setState] = (0, import_react3.useState)({
417
+ const [state, setState] = (0, import_react6.useState)({
257
418
  loading: false,
258
419
  notConfigured: false,
259
420
  error: null,
260
421
  result: null
261
422
  });
262
- (0, import_react3.useEffect)(() => {
423
+ (0, import_react6.useEffect)(() => {
263
424
  if (!projectId || !apiKey || !apiHost) {
264
425
  setState({ notConfigured: true, loading: false, error: null, result: null });
265
426
  return;
@@ -267,7 +428,7 @@ function useContextData({ apiHost, apiKey, projectId }) {
267
428
  const runEffect = async () => {
268
429
  setState({ notConfigured: false, loading: true, error: null, result: null });
269
430
  try {
270
- const client = new import_api.CachedManifestClient({
431
+ const client = new import_api2.CachedManifestClient({
271
432
  projectId,
272
433
  apiKey,
273
434
  apiHost
@@ -276,7 +437,7 @@ function useContextData({ apiHost, apiKey, projectId }) {
276
437
  setState({ notConfigured: false, loading: false, error: null, result });
277
438
  } catch (e) {
278
439
  let message;
279
- if (e instanceof import_api.ApiClientError) {
440
+ if (e instanceof import_api2.ApiClientError) {
280
441
  if (e.statusCode === 403) {
281
442
  message = `The API key ${apiKey} did not have permissions to fetch the manifest. Ensure Context > Read Drafts permissions are granted.`;
282
443
  }
@@ -299,8 +460,8 @@ function useContextData({ apiHost, apiKey, projectId }) {
299
460
  }
300
461
 
301
462
  // src/hooks/useDimensions.ts
302
- var import_api2 = require("@uniformdev/context/api");
303
- var import_react4 = require("react");
463
+ var import_api3 = require("@uniformdev/context/api");
464
+ var import_react7 = require("react");
304
465
 
305
466
  // src/utils/objectify.ts
306
467
  function objectify(array2, keySelector, valueSelector) {
@@ -316,13 +477,13 @@ function objectify(array2, keySelector, valueSelector) {
316
477
 
317
478
  // src/hooks/useDimensions.ts
318
479
  function useDimensions({ apiHost, apiKey, projectId }) {
319
- const [state, setState] = (0, import_react4.useState)({
480
+ const [state, setState] = (0, import_react7.useState)({
320
481
  loading: false,
321
482
  notConfigured: false,
322
483
  error: null,
323
484
  result: null
324
485
  });
325
- (0, import_react4.useEffect)(() => {
486
+ (0, import_react7.useEffect)(() => {
326
487
  if (!projectId || !apiKey || !apiHost) {
327
488
  setState({ notConfigured: true, loading: false, error: null, result: null });
328
489
  return;
@@ -330,14 +491,14 @@ function useDimensions({ apiHost, apiKey, projectId }) {
330
491
  const runEffect = async () => {
331
492
  setState({ notConfigured: false, loading: true, error: null, result: null });
332
493
  try {
333
- const client = new import_api2.CachedDimensionClient({
494
+ const client = new import_api3.CachedDimensionClient({
334
495
  projectId,
335
496
  apiKey,
336
497
  apiHost
337
498
  });
338
499
  const dimensions = (await client.get()).dimensions.map((dim) => ({
339
500
  ...dim,
340
- displayName: (0, import_api2.computeDimensionDisplayName)(dim)
501
+ displayName: (0, import_api3.computeDimensionDisplayName)(dim)
341
502
  }));
342
503
  const result = {
343
504
  dimensions,
@@ -350,7 +511,7 @@ function useDimensions({ apiHost, apiKey, projectId }) {
350
511
  setState({ notConfigured: false, loading: false, error: null, result });
351
512
  } catch (e) {
352
513
  let message;
353
- if (e instanceof import_api2.ApiClientError) {
514
+ if (e instanceof import_api3.ApiClientError) {
354
515
  message = e.message;
355
516
  } else {
356
517
  message = e.toString();
@@ -370,8 +531,8 @@ function useDimensions({ apiHost, apiKey, projectId }) {
370
531
  }
371
532
 
372
533
  // src/components/DataContext/DataContext.tsx
373
- var import_jsx_runtime5 = require("@emotion/react/jsx-runtime");
374
- var ContextDataContext = (0, import_react5.createContext)(null);
534
+ var import_jsx_runtime6 = require("@emotion/react/jsx-runtime");
535
+ var ContextDataContext = (0, import_react8.createContext)(null);
375
536
  var ContextData = ({
376
537
  loadingComponent: LoadingComponent,
377
538
  errorComponent: ErrorComponent,
@@ -382,23 +543,23 @@ var ContextData = ({
382
543
  const dimensionsData = useDimensions(contextConfig);
383
544
  if (contextData.error || contextData.notConfigured) {
384
545
  if (ErrorComponent)
385
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ErrorComponent, { contextConfig, result: contextData });
546
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ErrorComponent, { contextConfig, result: contextData });
386
547
  else
387
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, { children: "ErrorComponent is not configured" });
548
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment, { children: "ErrorComponent is not configured" });
388
549
  }
389
550
  if (dimensionsData.error || dimensionsData.notConfigured) {
390
551
  if (ErrorComponent)
391
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ErrorComponent, { contextConfig, result: dimensionsData });
552
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ErrorComponent, { contextConfig, result: dimensionsData });
392
553
  else
393
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_jsx_runtime5.Fragment, { children: "ErrorComponent is not configured" });
554
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_jsx_runtime6.Fragment, { children: "ErrorComponent is not configured" });
394
555
  }
395
556
  if (contextData.loading || dimensionsData.loading) {
396
557
  if (LoadingComponent)
397
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(LoadingComponent, {});
558
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(LoadingComponent, {});
398
559
  else
399
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_design_system2.LoadingIndicator, {});
560
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_design_system3.LoadingIndicator, {});
400
561
  }
401
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
562
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
402
563
  ContextDataContext.Provider,
403
564
  {
404
565
  value: { manifest: contextData.result, dimensions: dimensionsData.result, contextConfig },
@@ -407,21 +568,21 @@ var ContextData = ({
407
568
  );
408
569
  };
409
570
  function useContextConfig() {
410
- const context = (0, import_react5.useContext)(ContextDataContext);
571
+ const context = (0, import_react8.useContext)(ContextDataContext);
411
572
  if (!(context == null ? void 0 : context.contextConfig)) {
412
573
  throw new Error("Not within DataContext! Configuration data is not exist.");
413
574
  }
414
575
  return context.contextConfig;
415
576
  }
416
577
  function useManifest() {
417
- const context = (0, import_react5.useContext)(ContextDataContext);
578
+ const context = (0, import_react8.useContext)(ContextDataContext);
418
579
  if (!(context == null ? void 0 : context.manifest)) {
419
580
  throw new Error("Not within DataContext! Manifest data is not exist.");
420
581
  }
421
582
  return context.manifest;
422
583
  }
423
584
  function useDimensionsDataContext() {
424
- const context = (0, import_react5.useContext)(ContextDataContext);
585
+ const context = (0, import_react8.useContext)(ContextDataContext);
425
586
  if (!(context == null ? void 0 : context.dimensions)) {
426
587
  throw new Error("Not within DataContext! Dimensions data is not exist.");
427
588
  }
@@ -429,11 +590,11 @@ function useDimensionsDataContext() {
429
590
  }
430
591
 
431
592
  // src/components/DimensionMenu/CriteriaMatchMenu.tsx
432
- var import_design_system5 = require("@uniformdev/design-system");
433
- var import_react7 = require("react");
593
+ var import_design_system6 = require("@uniformdev/design-system");
594
+ var import_react10 = require("react");
434
595
 
435
596
  // src/components/DimensionMenu/DimensionGroupHeading.tsx
436
- var import_design_system3 = require("@uniformdev/design-system");
597
+ var import_design_system4 = require("@uniformdev/design-system");
437
598
 
438
599
  // src/components/DimensionMenu/utils.ts
439
600
  function dimensionToMenuOption(dimension) {
@@ -474,11 +635,11 @@ function groupDimensions(dimensions) {
474
635
  }
475
636
 
476
637
  // src/components/DimensionMenu/DimensionGroupHeading.tsx
477
- var import_jsx_runtime6 = require("@emotion/react/jsx-runtime");
638
+ var import_jsx_runtime7 = require("@emotion/react/jsx-runtime");
478
639
  var DimensionGroupHeading = (props) => {
479
640
  var _a;
480
641
  const { data, getStyles, className } = props;
481
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
642
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
482
643
  "div",
483
644
  {
484
645
  css: {
@@ -487,13 +648,13 @@ var DimensionGroupHeading = (props) => {
487
648
  fontSize: "var(--font-size-sm)"
488
649
  },
489
650
  className,
490
- children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
651
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
491
652
  "small",
492
653
  {
493
654
  css: { color: "var(--gray-500)", display: "flex", alignItems: "center", gap: "var(--spacing-xs)" },
494
655
  children: [
495
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_design_system3.Icon, { icon: dimensionIcon((_a = data.label) != null ? _a : ""), iconColor: "currentColor", size: 16 }),
496
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { children: data.label })
656
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_design_system4.Icon, { icon: dimensionIcon((_a = data.label) != null ? _a : ""), iconColor: "currentColor", size: 16 }),
657
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: data.label })
497
658
  ]
498
659
  }
499
660
  )
@@ -502,15 +663,15 @@ var DimensionGroupHeading = (props) => {
502
663
  };
503
664
 
504
665
  // src/components/DimensionMenu/DimensionMenuErrorMessage.tsx
505
- var import_react6 = require("@emotion/react");
506
- var import_jsx_runtime7 = require("@emotion/react/jsx-runtime");
666
+ var import_react9 = require("@emotion/react");
667
+ var import_jsx_runtime8 = require("@emotion/react/jsx-runtime");
507
668
  function DimensionMenuErrorMessage({ message }) {
508
669
  if (!message)
509
670
  return null;
510
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
671
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
511
672
  "div",
512
673
  {
513
- css: import_react6.css`
674
+ css: import_react9.css`
514
675
  color: var(--brand-primary-2);
515
676
  font-size: var(--fs-xs);
516
677
  position: absolute;
@@ -522,12 +683,12 @@ function DimensionMenuErrorMessage({ message }) {
522
683
  }
523
684
 
524
685
  // src/components/DimensionMenu/DimensionOption.tsx
525
- var import_jsx_runtime8 = require("@emotion/react/jsx-runtime");
686
+ var import_jsx_runtime9 = require("@emotion/react/jsx-runtime");
526
687
  var DimensionOption = (props) => {
527
688
  var _a, _b;
528
689
  const { data, getStyles, cx, isDisabled, isFocused, isSelected, className, innerRef, innerProps } = props;
529
690
  const [, value] = (_b = (_a = data.label) == null ? void 0 : _a.split(":")) != null ? _b : [];
530
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
691
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
531
692
  "div",
532
693
  {
533
694
  css: getStyles("option", props),
@@ -543,17 +704,17 @@ var DimensionOption = (props) => {
543
704
  ref: innerRef,
544
705
  "aria-disabled": isDisabled,
545
706
  ...innerProps,
546
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { css: { color: "var(--gray-700)" }, children: value != null ? value : data.label })
707
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { css: { color: "var(--gray-700)" }, children: value != null ? value : data.label })
547
708
  }
548
709
  );
549
710
  };
550
711
 
551
712
  // src/components/DimensionMenu/DimensionValue.tsx
552
- var import_design_system4 = require("@uniformdev/design-system");
553
- var import_jsx_runtime9 = require("@emotion/react/jsx-runtime");
713
+ var import_design_system5 = require("@uniformdev/design-system");
714
+ var import_jsx_runtime10 = require("@emotion/react/jsx-runtime");
554
715
  function DimensionValue({ displayName }) {
555
716
  const [type, name] = displayName.split(":");
556
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
717
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
557
718
  "div",
558
719
  {
559
720
  css: {
@@ -561,31 +722,31 @@ function DimensionValue({ displayName }) {
561
722
  overflow: "hidden"
562
723
  },
563
724
  children: [
564
- name ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
725
+ name ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
565
726
  "small",
566
727
  {
567
728
  css: { color: "var(--gray-500)", display: "flex", alignItems: "center", gap: "var(--spacing-xs)" },
568
729
  children: [
569
- type ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_design_system4.Icon, { icon: dimensionIcon(type), iconColor: "currentColor", size: 16 }) : null,
570
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { "data-testid": "dimension-name", children: type })
730
+ type ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_design_system5.Icon, { icon: dimensionIcon(type), iconColor: "currentColor", size: 16 }) : null,
731
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { "data-testid": "dimension-name", children: type })
571
732
  ]
572
733
  }
573
734
  ) : null,
574
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { css: { color: "var(--gray-700)" }, "data-testid": "dimension-value", children: name != null ? name : type })
735
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { css: { color: "var(--gray-700)" }, "data-testid": "dimension-value", children: name != null ? name : type })
575
736
  ]
576
737
  }
577
738
  );
578
739
  }
579
740
 
580
741
  // src/components/DimensionMenu/DimensionSingleValue.tsx
581
- var import_jsx_runtime10 = require("@emotion/react/jsx-runtime");
742
+ var import_jsx_runtime11 = require("@emotion/react/jsx-runtime");
582
743
  var DimensionSingleValue = (props) => {
583
744
  const { data, getStyles } = props;
584
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { css: getStyles("singleValue", props), children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(DimensionValue, { displayName: data.label }) });
745
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { css: getStyles("singleValue", props), children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DimensionValue, { displayName: data.label }) });
585
746
  };
586
747
 
587
748
  // src/components/DimensionMenu/CriteriaMatchMenu.tsx
588
- var import_jsx_runtime11 = require("@emotion/react/jsx-runtime");
749
+ var import_jsx_runtime12 = require("@emotion/react/jsx-runtime");
589
750
  function CriteriaMatchMenu({
590
751
  onChange,
591
752
  criteriaMatch,
@@ -594,14 +755,14 @@ function CriteriaMatchMenu({
594
755
  ...props
595
756
  }) {
596
757
  var _a, _b;
597
- const [inputValue, setInputValue] = (0, import_react7.useState)(
758
+ const [inputValue, setInputValue] = (0, import_react10.useState)(
598
759
  typeof criteriaMatch.r !== "undefined" && isInt(criteriaMatch.r) !== null ? criteriaMatch.r.toString(10) : ""
599
760
  );
600
761
  const rDim = criteriaMatch.rDim;
601
762
  const targetDim = criteriaMatch.rDim ? dimensions.dimIndex[criteriaMatch.rDim] : void 0;
602
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
603
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
604
- import_design_system5.InputComboBox,
763
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
764
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
765
+ import_design_system6.InputComboBox,
605
766
  {
606
767
  ...props,
607
768
  inputValue,
@@ -667,26 +828,26 @@ function CriteriaMatchMenu({
667
828
  },
668
829
  noOptionsMessage: ({ inputValue: inputValue2 }) => {
669
830
  if (isInt(inputValue2)) {
670
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
671
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { children: [
831
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
832
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { children: [
672
833
  "Score: ",
673
834
  inputValue2
674
835
  ] }),
675
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("small", { children: "If you want to match on another dimension\u2019s score instead, clear the score value to search for a dimension." })
836
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("small", { children: "If you want to match on another dimension\u2019s score instead, clear the score value to search for a dimension." })
676
837
  ] });
677
838
  }
678
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
679
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { children: [
839
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
840
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { children: [
680
841
  "No dimensions match your search \u201C",
681
842
  inputValue2,
682
843
  "\u201D"
683
844
  ] }),
684
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("small", { children: "If you want to match a literal score, enter a numeric value." })
845
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("small", { children: "If you want to match a literal score, enter a numeric value." })
685
846
  ] });
686
847
  }
687
848
  }
688
849
  ),
689
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(DimensionMenuErrorMessage, { message: errorMessage })
850
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DimensionMenuErrorMessage, { message: errorMessage })
690
851
  ] });
691
852
  }
692
853
  function isInt(value) {
@@ -694,12 +855,12 @@ function isInt(value) {
694
855
  }
695
856
 
696
857
  // src/components/DimensionMenu/DimensionMenu.tsx
697
- var import_design_system6 = require("@uniformdev/design-system");
698
- var import_jsx_runtime12 = require("@emotion/react/jsx-runtime");
858
+ var import_design_system7 = require("@uniformdev/design-system");
859
+ var import_jsx_runtime13 = require("@emotion/react/jsx-runtime");
699
860
  function DimensionMenu({ onChange, value, dimensions, errorMessage, ...props }) {
700
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
701
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
702
- import_design_system6.InputComboBox,
861
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
862
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
863
+ import_design_system7.InputComboBox,
703
864
  {
704
865
  ...props,
705
866
  value: value ? dimensionToMenuOption(value) : void 0,
@@ -728,17 +889,17 @@ function DimensionMenu({ onChange, value, dimensions, errorMessage, ...props })
728
889
  }
729
890
  }
730
891
  ),
731
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DimensionMenuErrorMessage, { message: errorMessage })
892
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(DimensionMenuErrorMessage, { message: errorMessage })
732
893
  ] });
733
894
  }
734
895
 
735
896
  // src/components/EditLink/EditLink.tsx
736
897
  var import_CgChevronRight = require("@react-icons/all-files/cg/CgChevronRight");
737
- var import_design_system7 = require("@uniformdev/design-system");
898
+ var import_design_system8 = require("@uniformdev/design-system");
738
899
 
739
900
  // src/components/EditLink/EditLink.styles.ts
740
- var import_react8 = require("@emotion/react");
741
- var editLink = import_react8.css`
901
+ var import_react11 = require("@emotion/react");
902
+ var editLink = import_react11.css`
742
903
  display: flex;
743
904
  align-items: center;
744
905
  font-weight: var(--fw-bold);
@@ -752,9 +913,9 @@ var editLink = import_react8.css`
752
913
  `;
753
914
 
754
915
  // src/components/EditLink/EditLink.tsx
755
- var import_jsx_runtime13 = require("@emotion/react/jsx-runtime");
916
+ var import_jsx_runtime14 = require("@emotion/react/jsx-runtime");
756
917
  var EditLink = ({ linkTo, name, linkText = `Edit ${name} Component` }) => {
757
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
918
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
758
919
  "a",
759
920
  {
760
921
  css: editLink,
@@ -764,23 +925,23 @@ var EditLink = ({ linkTo, name, linkText = `Edit ${name} Component` }) => {
764
925
  href: linkTo,
765
926
  children: [
766
927
  linkText,
767
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_design_system7.Icon, { icon: import_CgChevronRight.CgChevronRight, iconColor: "currentColor", size: "1.5rem" })
928
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_design_system8.Icon, { icon: import_CgChevronRight.CgChevronRight, iconColor: "currentColor", size: "1.5rem" })
768
929
  ]
769
930
  }
770
931
  );
771
932
  };
772
933
 
773
934
  // src/components/EnrichmentTag/EnrichmentTag.tsx
774
- var import_react9 = require("@emotion/react");
935
+ var import_react12 = require("@emotion/react");
775
936
  var import_CgCloseO = require("@react-icons/all-files/cg/CgCloseO");
776
937
  var import_CgMathMinus = require("@react-icons/all-files/cg/CgMathMinus");
777
938
  var import_CgMathPlus = require("@react-icons/all-files/cg/CgMathPlus");
778
939
  var import_context = require("@uniformdev/context");
779
- var import_design_system8 = require("@uniformdev/design-system");
940
+ var import_design_system9 = require("@uniformdev/design-system");
780
941
  var import_immer = require("immer");
781
- var import_react10 = require("react");
782
- var import_jsx_runtime14 = require("@emotion/react/jsx-runtime");
783
- var addEnrichmentLink = import_react9.css`
942
+ var import_react13 = require("react");
943
+ var import_jsx_runtime15 = require("@emotion/react/jsx-runtime");
944
+ var addEnrichmentLink = import_react12.css`
784
945
  flex: 2;
785
946
  display: flex;
786
947
  width: 50%;
@@ -799,11 +960,11 @@ var EnrichmentTag = ({
799
960
  displayTitle = true
800
961
  }) => {
801
962
  const { loading, result: dimensions, error } = useDimensions(contextConfig);
802
- const allEnrichments = (0, import_react10.useMemo)(() => {
963
+ const allEnrichments = (0, import_react13.useMemo)(() => {
803
964
  if (dimensions)
804
965
  return dimensions.dimensions.filter((dimension) => dimension.category === "ENR");
805
966
  }, [dimensions]);
806
- const remainingEnrichments = (0, import_react10.useMemo)(() => {
967
+ const remainingEnrichments = (0, import_react13.useMemo)(() => {
807
968
  if (!value)
808
969
  return allEnrichments;
809
970
  if (allEnrichments)
@@ -811,9 +972,9 @@ var EnrichmentTag = ({
811
972
  (enr) => !value.some((val) => (0, import_context.getEnrichmentVectorKey)(val.cat, val.key) === enr.dim)
812
973
  );
813
974
  }, [allEnrichments, value]);
814
- const [selectValue, setSelectValue] = (0, import_react10.useState)("");
815
- const [score, setScore] = (0, import_react10.useState)(50);
816
- const [showAddNewEnrichmentTagPanel, setShowAddNewEnrichmentTagPanel] = (0, import_react10.useState)(false);
975
+ const [selectValue, setSelectValue] = (0, import_react13.useState)("");
976
+ const [score, setScore] = (0, import_react13.useState)(50);
977
+ const [showAddNewEnrichmentTagPanel, setShowAddNewEnrichmentTagPanel] = (0, import_react13.useState)(false);
817
978
  const selectedEnrichment = allEnrichments == null ? void 0 : allEnrichments.find((dimension) => dimension.dim === selectValue);
818
979
  const addEnrichment = () => {
819
980
  const [cat, key] = selectValue.split("_");
@@ -836,21 +997,21 @@ var EnrichmentTag = ({
836
997
  setValue(finalValue);
837
998
  };
838
999
  if (error)
839
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_design_system8.Callout, { type: "danger", children: error });
1000
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Callout, { type: "danger", children: error });
840
1001
  if (loading || dimensions === null)
841
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_design_system8.LoadingIndicator, {});
842
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("fieldset", { className: "enrichment-tag", children: [
843
- displayTitle ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { css: { display: "flex", justifyContent: "space-between", marginBottom: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("legend", { css: { fontSize: "var(--fs-md)", fontWeight: "var(--fw-bold)" }, children: "Enrichment Tags" }) }) : null,
844
- !(allEnrichments == null ? void 0 : allEnrichments.length) ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(NoEnrichmentsView, { contextConfig }) : !showAddNewEnrichmentTagPanel && !value ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
845
- import_design_system8.Callout,
1002
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.LoadingIndicator, {});
1003
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("fieldset", { className: "enrichment-tag", children: [
1004
+ displayTitle ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { css: { display: "flex", justifyContent: "space-between", marginBottom: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("legend", { css: { fontSize: "var(--fs-md)", fontWeight: "var(--fw-bold)" }, children: "Enrichment Tags" }) }) : null,
1005
+ !(allEnrichments == null ? void 0 : allEnrichments.length) ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(NoEnrichmentsView, { contextConfig }) : !showAddNewEnrichmentTagPanel && !value ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1006
+ import_design_system9.Callout,
846
1007
  {
847
1008
  title: "No enrichment tags assigned.",
848
1009
  type: "info",
849
1010
  css: { marginBlock: "var(--spacing-base)" },
850
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("p", { children: [
1011
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("p", { children: [
851
1012
  "Click",
852
1013
  " ",
853
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1014
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
854
1015
  "a",
855
1016
  {
856
1017
  onClick: () => setShowAddNewEnrichmentTagPanel(true),
@@ -864,9 +1025,9 @@ var EnrichmentTag = ({
864
1025
  "to assign your first enrichment tag."
865
1026
  ] })
866
1027
  }
867
- ) : /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
868
- dimensions && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SelectedEnrichments, { list: value != null ? value : [], setList: update, dimIndex: dimensions.dimIndex }),
869
- showAddNewEnrichmentTagPanel && remainingEnrichments && remainingEnrichments.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1028
+ ) : /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_jsx_runtime15.Fragment, { children: [
1029
+ dimensions && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(SelectedEnrichments, { list: value != null ? value : [], setList: update, dimIndex: dimensions.dimIndex }),
1030
+ showAddNewEnrichmentTagPanel && remainingEnrichments && remainingEnrichments.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
870
1031
  "div",
871
1032
  {
872
1033
  className: "add-enrichment-tag",
@@ -878,8 +1039,8 @@ var EnrichmentTag = ({
878
1039
  alignItems: "center"
879
1040
  },
880
1041
  children: [
881
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { css: { flexGrow: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
882
- import_design_system8.InputSelect,
1042
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { css: { flexGrow: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1043
+ import_design_system9.InputSelect,
883
1044
  {
884
1045
  name: `enrichment-type`,
885
1046
  label: "Enrichment Tag",
@@ -895,7 +1056,7 @@ var EnrichmentTag = ({
895
1056
  onChange: (e) => setSelectValue(e.currentTarget.value)
896
1057
  }
897
1058
  ) }),
898
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1059
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
899
1060
  ScoreCounter,
900
1061
  {
901
1062
  score,
@@ -904,8 +1065,8 @@ var EnrichmentTag = ({
904
1065
  css: { flexBasis: "9rem" }
905
1066
  }
906
1067
  ),
907
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
908
- import_design_system8.Button,
1068
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1069
+ import_design_system9.Button,
909
1070
  {
910
1071
  buttonType: "tertiary",
911
1072
  size: "xl",
@@ -923,21 +1084,21 @@ var EnrichmentTag = ({
923
1084
  ]
924
1085
  }
925
1086
  ) : null,
926
- /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1087
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
927
1088
  "div",
928
1089
  {
929
1090
  className: "enrichment-cta",
930
1091
  style: { paddingTop: "10px", display: "flex", justifyContent: "space-between" },
931
1092
  children: [
932
- !showAddNewEnrichmentTagPanel && remainingEnrichments && remainingEnrichments.length > 0 && value ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
933
- import_design_system8.AddListButton,
1093
+ !showAddNewEnrichmentTagPanel && remainingEnrichments && remainingEnrichments.length > 0 && value ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1094
+ import_design_system9.AddListButton,
934
1095
  {
935
1096
  className: "add-more",
936
1097
  buttonText: "Add More",
937
1098
  onButtonClick: () => setShowAddNewEnrichmentTagPanel(true)
938
1099
  }
939
- ) : /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("a", { css: addEnrichmentLink, title: `none`, href: "#" }),
940
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1100
+ ) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("a", { css: addEnrichmentLink, title: `none`, href: "#" }),
1101
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
941
1102
  EditLink,
942
1103
  {
943
1104
  name: "Enrichments",
@@ -953,10 +1114,10 @@ var EnrichmentTag = ({
953
1114
  ] })
954
1115
  ] });
955
1116
  };
956
- var NoEnrichmentsView = ({ contextConfig }) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_design_system8.Callout, { title: "No enrichments found.", type: "caution", css: { marginBlock: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("p", { children: [
1117
+ var NoEnrichmentsView = ({ contextConfig }) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Callout, { title: "No enrichments found.", type: "caution", css: { marginBlock: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("p", { children: [
957
1118
  "Looks like you do not have any enrichment created in your connected Uniform project. Start by creating your first enrichment",
958
1119
  " ",
959
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1120
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
960
1121
  "a",
961
1122
  {
962
1123
  href: `${contextConfig.apiHost}/projects/${encodeURIComponent(
@@ -973,7 +1134,7 @@ var NoEnrichmentsView = ({ contextConfig }) => /* @__PURE__ */ (0, import_jsx_ru
973
1134
  var getCappedValue = (value, maxCap = 100, minCap = 0) => {
974
1135
  return Math.max(Math.min(value, maxCap), minCap);
975
1136
  };
976
- var scoreCounterMinusButtonStyles = import_react9.css`
1137
+ var scoreCounterMinusButtonStyles = import_react12.css`
977
1138
  position: absolute;
978
1139
  bottom: 0.875rem;
979
1140
  left: var(--spacing-sm);
@@ -986,7 +1147,7 @@ var scoreCounterMinusButtonStyles = import_react9.css`
986
1147
  border: 1px solid var(--gray-300);
987
1148
  border-radius: var(--rounded-full);
988
1149
  `;
989
- var scoreCounterPlusButtonStyles = import_react9.css`
1150
+ var scoreCounterPlusButtonStyles = import_react12.css`
990
1151
  ${scoreCounterMinusButtonStyles}
991
1152
  left: auto;
992
1153
  right: var(--spacing-sm);
@@ -1007,9 +1168,9 @@ var ScoreCounter = ({
1007
1168
  }
1008
1169
  setValue(newScore);
1009
1170
  };
1010
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { css: { position: "relative" }, ...otherProps, children: [
1011
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1012
- import_design_system8.Input,
1171
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { css: { position: "relative" }, ...otherProps, children: [
1172
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1173
+ import_design_system9.Input,
1013
1174
  {
1014
1175
  label: "Strength",
1015
1176
  id: "enrichment-score",
@@ -1021,7 +1182,7 @@ var ScoreCounter = ({
1021
1182
  css: { textAlign: "center", boxSizing: "border-box" }
1022
1183
  }
1023
1184
  ),
1024
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1185
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1025
1186
  "button",
1026
1187
  {
1027
1188
  type: "button",
@@ -1030,10 +1191,10 @@ var ScoreCounter = ({
1030
1191
  disabled: score === 0,
1031
1192
  className: "scoreCounterButton",
1032
1193
  css: scoreCounterMinusButtonStyles,
1033
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_design_system8.Icon, { icon: import_CgMathMinus.CgMathMinus, iconColor: "gray", size: "1.5rem" })
1194
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Icon, { icon: import_CgMathMinus.CgMathMinus, iconColor: "gray", size: "1.5rem" })
1034
1195
  }
1035
1196
  ),
1036
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1197
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1037
1198
  "button",
1038
1199
  {
1039
1200
  type: "button",
@@ -1041,7 +1202,7 @@ var ScoreCounter = ({
1041
1202
  onClick: () => handleCounter("increment"),
1042
1203
  className: "scoreCounterButton",
1043
1204
  css: scoreCounterPlusButtonStyles,
1044
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_design_system8.Icon, { icon: import_CgMathPlus.CgMathPlus, iconColor: "gray", size: "1.5rem" })
1205
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Icon, { icon: import_CgMathPlus.CgMathPlus, iconColor: "gray", size: "1.5rem" })
1045
1206
  }
1046
1207
  )
1047
1208
  ] });
@@ -1063,11 +1224,11 @@ var SelectedEnrichments = ({ list, setList, dimIndex }) => {
1063
1224
  })
1064
1225
  );
1065
1226
  };
1066
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_jsx_runtime14.Fragment, { children: list.map((enrichment, index) => {
1227
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_jsx_runtime15.Fragment, { children: list.map((enrichment, index) => {
1067
1228
  const dimData = dimIndex[(0, import_context.getEnrichmentVectorKey)(enrichment.cat, enrichment.key)];
1068
1229
  if (!dimData)
1069
1230
  return;
1070
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
1231
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1071
1232
  "div",
1072
1233
  {
1073
1234
  css: {
@@ -1082,14 +1243,14 @@ var SelectedEnrichments = ({ list, setList, dimIndex }) => {
1082
1243
  },
1083
1244
  className: "selected-enrichments",
1084
1245
  children: [
1085
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1246
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1086
1247
  "span",
1087
1248
  {
1088
1249
  css: { fontWeight: "var(--fw-bold)", color: dimData ? void 0 : "var(--brand-secondary-5)" },
1089
1250
  children: dimData ? dimData.displayName : `Enrichment '${enrichment.cat}_${enrichment.key}' is unknown`
1090
1251
  }
1091
1252
  ),
1092
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1253
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1093
1254
  "div",
1094
1255
  {
1095
1256
  css: {
@@ -1102,8 +1263,8 @@ var SelectedEnrichments = ({ list, setList, dimIndex }) => {
1102
1263
  padding: "var(--spacing-sm) var(--spacing-base)",
1103
1264
  flexBasis: "9rem"
1104
1265
  },
1105
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1106
- import_design_system8.Input,
1266
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1267
+ import_design_system9.Input,
1107
1268
  {
1108
1269
  type: "text",
1109
1270
  min: 0,
@@ -1116,14 +1277,14 @@ var SelectedEnrichments = ({ list, setList, dimIndex }) => {
1116
1277
  )
1117
1278
  }
1118
1279
  ),
1119
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1280
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1120
1281
  "button",
1121
1282
  {
1122
1283
  type: "button",
1123
1284
  title: `Delete enrichment`,
1124
1285
  onClick: () => removeEnrichment(index),
1125
1286
  css: { border: 0 },
1126
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_design_system8.Icon, { icon: import_CgCloseO.CgCloseO, iconColor: "red", size: "1.5rem" })
1287
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Icon, { icon: import_CgCloseO.CgCloseO, iconColor: "red", size: "1.5rem" })
1127
1288
  }
1128
1289
  )
1129
1290
  ]
@@ -1134,8 +1295,8 @@ var SelectedEnrichments = ({ list, setList, dimIndex }) => {
1134
1295
  };
1135
1296
 
1136
1297
  // src/components/PersonalizationCriteria/PersonalizationCriteria.tsx
1137
- var import_design_system10 = require("@uniformdev/design-system");
1138
- var import_react13 = require("react");
1298
+ var import_design_system11 = require("@uniformdev/design-system");
1299
+ var import_react16 = require("react");
1139
1300
  var import_react_use = require("react-use");
1140
1301
  var yup = __toESM(require("yup"));
1141
1302
 
@@ -1151,15 +1312,15 @@ function opHasRhs(op) {
1151
1312
  }
1152
1313
 
1153
1314
  // src/components/PersonalizationCriteria/PersonalizationCriteriaStatic.tsx
1154
- var import_react12 = require("@emotion/react");
1315
+ var import_react15 = require("@emotion/react");
1155
1316
  var import_CgCloseO2 = require("@react-icons/all-files/cg/CgCloseO");
1156
- var import_design_system9 = require("@uniformdev/design-system");
1317
+ var import_design_system10 = require("@uniformdev/design-system");
1157
1318
  var import_immer2 = require("immer");
1158
1319
 
1159
1320
  // src/components/PersonalizationCriteria/PersonalizationCriteriaStatic.styles.ts
1160
- var import_react11 = require("@emotion/react");
1321
+ var import_react14 = require("@emotion/react");
1161
1322
  var spaceBetweenCriteriaItems = "6rem";
1162
- var criteriaItem = import_react11.css`
1323
+ var criteriaItem = import_react14.css`
1163
1324
  position: relative;
1164
1325
  padding: var(--spacing-md) var(--spacing-base);
1165
1326
  border: 1px solid var(--gray-300);
@@ -1187,35 +1348,35 @@ var criteriaItem = import_react11.css`
1187
1348
  }
1188
1349
  }
1189
1350
  `;
1190
- var criteriaItemInner = import_react11.css`
1351
+ var criteriaItemInner = import_react14.css`
1191
1352
  display: flex;
1192
1353
  gap: var(--spacing-base);
1193
1354
  flex-grow: 1;
1194
1355
  flex-wrap: wrap;
1195
1356
  margin-right: var(--spacing-base);
1196
1357
  `;
1197
- var criteriaWrapper = import_react11.css`
1358
+ var criteriaWrapper = import_react14.css`
1198
1359
  width: 100%;
1199
1360
  display: flex;
1200
1361
  align-items: stretch;
1201
1362
  position: relative;
1202
1363
  `;
1203
- var criteriaOperandWrapper = import_react11.css`
1364
+ var criteriaOperandWrapper = import_react14.css`
1204
1365
  flex: 2;
1205
1366
  height: 52px;
1206
1367
  min-width: 200px;
1207
1368
  `;
1208
- var criteriaOperatorWrapper = import_react11.css`
1369
+ var criteriaOperatorWrapper = import_react14.css`
1209
1370
  flex: 1;
1210
1371
  min-width: 80px;
1211
1372
  `;
1212
- var expand = import_react11.css`
1373
+ var expand = import_react14.css`
1213
1374
  height: 100%;
1214
1375
  width: 100%;
1215
1376
  `;
1216
1377
 
1217
1378
  // src/components/PersonalizationCriteria/PersonalizationCriteriaStatic.tsx
1218
- var import_jsx_runtime15 = require("@emotion/react/jsx-runtime");
1379
+ var import_jsx_runtime16 = require("@emotion/react/jsx-runtime");
1219
1380
  var PersonalizationCriteriaStatic = ({
1220
1381
  value,
1221
1382
  setValue,
@@ -1261,8 +1422,8 @@ var PersonalizationCriteriaStatic = ({
1261
1422
  setValue(finalValue);
1262
1423
  onRemoveCriteria == null ? void 0 : onRemoveCriteria(finalValue);
1263
1424
  };
1264
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("fieldset", { className: "personalization-criteria", children: [
1265
- displayTitle ? (components == null ? void 0 : components.Title) ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(components.Title, {}) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1425
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("fieldset", { className: "personalization-criteria", children: [
1426
+ displayTitle ? (components == null ? void 0 : components.Title) ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(components.Title, {}) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1266
1427
  "legend",
1267
1428
  {
1268
1429
  css: {
@@ -1272,27 +1433,27 @@ var PersonalizationCriteriaStatic = ({
1272
1433
  children: "Personalize This"
1273
1434
  }
1274
1435
  ) : null,
1275
- (components == null ? void 0 : components.CustomVariantName) ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(components.CustomVariantName, {}) : null,
1276
- !currentValue.crit.length ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Callout, { title: "Default variant", type: "info", css: { marginBlock: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Paragraph, { children: 'This personalized variant has no match criteria and will be shown to any visitor that does not match any preceding variants. Ensure that default variants come last in the variant list. Personalize this variant by clicking "Add Criteria" to get started.' }) }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { children: currentValue.crit.map((currentCriteria, index) => {
1436
+ (components == null ? void 0 : components.CustomVariantName) ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(components.CustomVariantName, {}) : null,
1437
+ !currentValue.crit.length ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system10.Callout, { title: "Default variant", type: "info", css: { marginBlock: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system10.Paragraph, { children: 'This personalized variant has no match criteria and will be shown to any visitor that does not match any preceding variants. Ensure that default variants come last in the variant list. Personalize this variant by clicking "Add Criteria" to get started.' }) }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { children: currentValue.crit.map((currentCriteria, index) => {
1277
1438
  var _a2, _b, _c, _d;
1278
1439
  const critHasLhs = ((_a2 = currentCriteria.l) == null ? void 0 : _a2.length) > 0;
1279
1440
  const critHasRhs = currentCriteria.op !== "+" && currentCriteria.op !== "-";
1280
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { css: criteriaItem, "data-testid": "criteria-container", children: [
1281
- /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
1441
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { css: criteriaItem, "data-testid": "criteria-container", children: [
1442
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
1282
1443
  "div",
1283
1444
  {
1284
- css: import_react12.css`
1445
+ css: import_react15.css`
1285
1446
  ${criteriaItemInner}/* grid-template-columns: minmax(0, 1fr) ${critHasRhs ? "minmax(0, 79px) minmax(0, 1fr)" : "minmax(0, 1fr)"} */
1286
1447
  `,
1287
1448
  className: "criteriaItemInner",
1288
1449
  children: [
1289
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1450
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1290
1451
  "div",
1291
1452
  {
1292
1453
  css: [criteriaWrapper, criteriaOperandWrapper],
1293
1454
  className: "criteria-wrapper",
1294
1455
  "data-testid": "select-criteria",
1295
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1456
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1296
1457
  DimensionMenu,
1297
1458
  {
1298
1459
  errorMessage: (_b = errors.lhs) == null ? void 0 : _b[index],
@@ -1309,13 +1470,13 @@ var PersonalizationCriteriaStatic = ({
1309
1470
  )
1310
1471
  }
1311
1472
  ),
1312
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1473
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1313
1474
  "div",
1314
1475
  {
1315
1476
  css: [criteriaWrapper, criteriaOperatorWrapper],
1316
1477
  className: "criteria-wrapper",
1317
1478
  "data-testid": "select-operator",
1318
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1479
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1319
1480
  CriteriaOperatorMenu,
1320
1481
  {
1321
1482
  name: `op-${index}`,
@@ -1335,13 +1496,13 @@ var PersonalizationCriteriaStatic = ({
1335
1496
  )
1336
1497
  }
1337
1498
  ),
1338
- critHasRhs ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1499
+ critHasRhs ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1339
1500
  "div",
1340
1501
  {
1341
1502
  css: [criteriaWrapper, criteriaOperandWrapper],
1342
1503
  className: "criteria-wrapper",
1343
1504
  "data-testid": "select-match-criteria",
1344
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1505
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1345
1506
  CriteriaMatchMenu,
1346
1507
  {
1347
1508
  errorMessage: (_c = errors.rhs) == null ? void 0 : _c[index],
@@ -1362,7 +1523,7 @@ var PersonalizationCriteriaStatic = ({
1362
1523
  ]
1363
1524
  }
1364
1525
  ),
1365
- /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1526
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1366
1527
  "button",
1367
1528
  {
1368
1529
  type: "button",
@@ -1370,10 +1531,10 @@ var PersonalizationCriteriaStatic = ({
1370
1531
  title: `Delete Personalization`,
1371
1532
  css: { backgroundColor: "transparent", backgroundImage: "none", borderWidth: 0 },
1372
1533
  "data-testid": "button-delete",
1373
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Icon, { icon: import_CgCloseO2.CgCloseO, iconColor: "red", size: "1.5rem" })
1534
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system10.Icon, { icon: import_CgCloseO2.CgCloseO, iconColor: "red", size: "1.5rem" })
1374
1535
  }
1375
1536
  ),
1376
- index > 0 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1537
+ index > 0 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1377
1538
  "div",
1378
1539
  {
1379
1540
  className: "criteria-group-operation",
@@ -1382,8 +1543,8 @@ var PersonalizationCriteriaStatic = ({
1382
1543
  top: "-4rem",
1383
1544
  transform: "translateX(calc(1.5rem - 50%))"
1384
1545
  },
1385
- children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1386
- import_design_system9.InputInlineSelect,
1546
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1547
+ import_design_system10.InputInlineSelect,
1387
1548
  {
1388
1549
  "data-testid": "dropdown-button-combine",
1389
1550
  disabled: index > 1,
@@ -1401,8 +1562,8 @@ var PersonalizationCriteriaStatic = ({
1401
1562
  ) : null
1402
1563
  ] }, index);
1403
1564
  }) }),
1404
- dimensions.dimensions.length === 0 ? (components == null ? void 0 : components.NoDimensionsDefined) ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(components.NoDimensionsDefined, {}) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system9.Callout, { title: "Dimensions", type: "info", css: { marginBlock: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { children: "You do not have any dimensions configured." }) }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1405
- import_design_system9.AddListButton,
1565
+ dimensions.dimensions.length === 0 ? (components == null ? void 0 : components.NoDimensionsDefined) ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(components.NoDimensionsDefined, {}) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system10.Callout, { title: "Dimensions", type: "info", css: { marginBlock: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { children: "You do not have any dimensions configured." }) }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1566
+ import_design_system10.AddListButton,
1406
1567
  {
1407
1568
  "data-testid": "button-add-criteria",
1408
1569
  className: "add-more",
@@ -1414,7 +1575,7 @@ var PersonalizationCriteriaStatic = ({
1414
1575
  };
1415
1576
 
1416
1577
  // src/components/PersonalizationCriteria/PersonalizationCriteria.tsx
1417
- var import_jsx_runtime16 = require("@emotion/react/jsx-runtime");
1578
+ var import_jsx_runtime17 = require("@emotion/react/jsx-runtime");
1418
1579
  function convertErrorsToObj(errors) {
1419
1580
  const result = { crit: [] };
1420
1581
  errors.forEach((err) => {
@@ -1475,7 +1636,7 @@ var PersonalizationCriteria = ({
1475
1636
  ...staticProps
1476
1637
  }) => {
1477
1638
  var _a, _b;
1478
- const [validationError, setValidationError] = (0, import_react13.useState)(void 0);
1639
+ const [validationError, setValidationError] = (0, import_react16.useState)(void 0);
1479
1640
  const { loading, result: dimensions, error } = useDimensions(contextConfig);
1480
1641
  (0, import_react_use.useAsync)(async () => {
1481
1642
  if (value && dimensions) {
@@ -1484,15 +1645,15 @@ var PersonalizationCriteria = ({
1484
1645
  }
1485
1646
  }, [value, dimensions, validate]);
1486
1647
  if (error)
1487
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system10.Callout, { type: "danger", children: error });
1648
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system11.Callout, { type: "danger", children: error });
1488
1649
  if (loading || dimensions === null)
1489
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system10.LoadingIndicator, {});
1650
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system11.LoadingIndicator, {});
1490
1651
  const handleSetValue = async (value2) => {
1491
1652
  const err = await validate(value2, dimensions);
1492
1653
  setValidationError(err);
1493
1654
  setValue(value2);
1494
1655
  };
1495
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1656
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1496
1657
  PersonalizationCriteriaStatic,
1497
1658
  {
1498
1659
  ...staticProps,
@@ -1504,10 +1665,10 @@ var PersonalizationCriteria = ({
1504
1665
  },
1505
1666
  dimensions,
1506
1667
  components: {
1507
- NoDimensionsDefined: () => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system10.Callout, { title: "Dimensions", type: "info", css: { marginBlock: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("p", { children: [
1668
+ NoDimensionsDefined: () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system11.Callout, { title: "Dimensions", type: "info", css: { marginBlock: "var(--spacing-base)" }, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("p", { children: [
1508
1669
  "You do not have any dimensions configured. Create your first",
1509
1670
  " ",
1510
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1671
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1511
1672
  "a",
1512
1673
  {
1513
1674
  href: `${contextConfig.apiHost}/projects/${encodeURIComponent(
@@ -1526,182 +1687,21 @@ var PersonalizationCriteria = ({
1526
1687
  };
1527
1688
 
1528
1689
  // src/components/ProjectUIVersion/ProjectUIVersion.tsx
1529
- var import_design_system11 = require("@uniformdev/design-system");
1530
- var import_jsx_runtime17 = require("@emotion/react/jsx-runtime");
1690
+ var import_design_system12 = require("@uniformdev/design-system");
1691
+ var import_jsx_runtime18 = require("@emotion/react/jsx-runtime");
1531
1692
  function ProjectUIVersion({ children, versionMap, contextConfig }) {
1532
1693
  const { loading, result: data } = useContextData(contextConfig);
1533
1694
  if (loading)
1534
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system11.LoadingIndicator, {});
1695
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.LoadingIndicator, {});
1535
1696
  if (data) {
1536
1697
  const Component = versionMap[data.project.ui_version];
1537
1698
  if (Component) {
1538
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Component, {});
1699
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Component, {});
1539
1700
  }
1540
1701
  }
1541
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_jsx_runtime17.Fragment, { children });
1702
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_jsx_runtime18.Fragment, { children });
1542
1703
  }
1543
1704
 
1544
- // src/components/AbTestSelector/AbTestSelector.tsx
1545
- var import_react15 = require("@emotion/react");
1546
- var import_design_system12 = require("@uniformdev/design-system");
1547
- var import_react16 = require("react");
1548
-
1549
- // src/hooks/useABTests.ts
1550
- var import_api3 = require("@uniformdev/context/api");
1551
- var import_react14 = require("react");
1552
- function useABTests({ apiHost, apiKey, projectId }) {
1553
- const [reload, setReload] = (0, import_react14.useState)(true);
1554
- const [state, setState] = (0, import_react14.useState)({
1555
- loading: false,
1556
- notConfigured: false,
1557
- error: null,
1558
- result: null
1559
- });
1560
- (0, import_react14.useEffect)(() => {
1561
- if (!projectId || !apiKey || !apiHost) {
1562
- setState({ notConfigured: true, loading: false, error: null, result: null });
1563
- return;
1564
- }
1565
- const runEffect = async () => {
1566
- setState({ notConfigured: false, loading: true, error: null, result: null });
1567
- try {
1568
- const client = new import_api3.CachedTestClient({
1569
- projectId,
1570
- apiKey,
1571
- apiHost
1572
- });
1573
- const { tests } = await client.get();
1574
- setState({ notConfigured: false, loading: false, error: null, result: tests });
1575
- } catch (e) {
1576
- let message;
1577
- if (e instanceof import_api3.ApiClientError) {
1578
- message = e.message;
1579
- } else {
1580
- message = e.toString();
1581
- }
1582
- setState({ notConfigured: false, loading: false, error: message, result: null });
1583
- return;
1584
- }
1585
- };
1586
- if (reload) {
1587
- runEffect().then(() => {
1588
- setReload(false);
1589
- });
1590
- }
1591
- }, [apiHost, apiKey, projectId, reload]);
1592
- return {
1593
- result: state.result,
1594
- error: state.error,
1595
- loading: state.loading,
1596
- notConfigured: state.notConfigured,
1597
- doReload: () => setReload(true)
1598
- };
1599
- }
1600
-
1601
- // src/components/AbTestSelector/AbTestSelector.tsx
1602
- var import_jsx_runtime18 = require("@emotion/react/jsx-runtime");
1603
- var addAbTestLink = import_react15.css`
1604
- flex: 2;
1605
- display: flex;
1606
- width: 50%;
1607
- align-items: center;
1608
- font-weight: var(--fw-bold);
1609
- color: var(--brand-primary-1);
1610
- &:hover,
1611
- &:focus {
1612
- text-decoration-line: underline;
1613
- }
1614
- `;
1615
- var AbTestList = ({ contextConfig, onSelect, value }) => {
1616
- const { loading, result, doReload = () => {
1617
- } } = useABTests(contextConfig);
1618
- if (loading) {
1619
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.LoadingIndicator, {});
1620
- }
1621
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
1622
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.Link, { text: "Refresh A/B Test list", style: { marginRight: "10px" }, onClick: () => doReload() }) }),
1623
- !result || result.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(NoAbTestsView, { contextConfig }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { style: { marginTop: "10px" }, children: [
1624
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.ScrollableList, { children: result.map((abTest) => {
1625
- const { id, name } = abTest;
1626
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1627
- import_design_system12.ScrollableListItem,
1628
- {
1629
- buttonText: name,
1630
- active: id === (value == null ? void 0 : value.id),
1631
- onClick: () => onSelect(abTest)
1632
- },
1633
- id
1634
- );
1635
- }) }),
1636
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1637
- import_design_system12.AddListButton,
1638
- {
1639
- className: "add-more",
1640
- onButtonClick: () => {
1641
- window.open(
1642
- `${contextConfig.apiHost}/projects/${encodeURIComponent(contextConfig.projectId)}/testing`,
1643
- "_blank"
1644
- );
1645
- },
1646
- buttonText: "Add new A/B Test"
1647
- }
1648
- )
1649
- ] })
1650
- ] });
1651
- };
1652
- var AbTestSelector = ({ value, setValue, contextConfig, loading }) => {
1653
- var _a;
1654
- const [showAbTests, setShowAbTests] = (0, import_react16.useState)(false);
1655
- if (loading) {
1656
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.LoadingIndicator, {});
1657
- }
1658
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("fieldset", { className: "ab-test", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
1659
- !showAbTests && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { children: [
1660
- value && Object.keys(value).length > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.Heading, { level: 4, style: { marginBottom: "10px" }, children: (_a = value == null ? void 0 : value.name) != null ? _a : "Unknown test" }),
1661
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system12.Button, { buttonType: "primary", style: { marginRight: "10px" }, onClick: () => setShowAbTests(true), children: "Select A/B Test" })
1662
- ] }),
1663
- showAbTests && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1664
- AbTestList,
1665
- {
1666
- contextConfig,
1667
- onSelect: (abTest) => {
1668
- if ((value == null ? void 0 : value.id) === abTest.id) {
1669
- setValue(void 0);
1670
- setShowAbTests(true);
1671
- return;
1672
- }
1673
- setValue(abTest);
1674
- setShowAbTests(false);
1675
- },
1676
- value
1677
- }
1678
- )
1679
- ] }) });
1680
- };
1681
- var NoAbTestsView = ({ contextConfig }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1682
- import_design_system12.Callout,
1683
- {
1684
- title: "No A/B tests found in your Uniform project.",
1685
- type: "caution",
1686
- css: { marginBlock: "var(--spacing-base)" },
1687
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("p", { children: [
1688
- "Looks like you do not have any A/B tests created in your connected Uniform project. Start by creating your first test",
1689
- " ",
1690
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1691
- "a",
1692
- {
1693
- href: `${contextConfig.apiHost}/projects/${encodeURIComponent(contextConfig.projectId)}/testing`,
1694
- target: "_blank",
1695
- rel: "noopener noreferrer",
1696
- css: { ":hover": { textDecorationLine: "underline" } },
1697
- children: "here"
1698
- }
1699
- ),
1700
- "."
1701
- ] })
1702
- }
1703
- );
1704
-
1705
1705
  // src/hooks/useValidateContextConfig.ts
1706
1706
  var import_react17 = require("react");
1707
1707