@uniformdev/design-system 19.119.0 → 19.122.1-alpha.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
@@ -1476,6 +1476,8 @@ __export(src_exports, {
1476
1476
  SearchAndFilterOptionsContainer: () => SearchAndFilterOptionsContainer2,
1477
1477
  SearchAndFilterProvider: () => SearchAndFilterProvider,
1478
1478
  SearchAndFilterResultContainer: () => SearchAndFilterResultContainer,
1479
+ SearchOnlyContext: () => SearchOnlyContext,
1480
+ SearchOnlyFilter: () => SearchOnlyFilter,
1479
1481
  SegmentedControl: () => SegmentedControl,
1480
1482
  ShortcutContext: () => ShortcutContext,
1481
1483
  ShortcutRevealer: () => ShortcutRevealer,
@@ -1505,6 +1507,7 @@ __export(src_exports, {
1505
1507
  ToastContainer: () => ToastContainer,
1506
1508
  Tooltip: () => Tooltip,
1507
1509
  TwoColumnLayout: () => TwoColumnLayout,
1510
+ USER_OPERATORS: () => USER_OPERATORS,
1508
1511
  UniformBadge: () => UniformBadge,
1509
1512
  UniformLogo: () => UniformLogo,
1510
1513
  UniformLogoLarge: () => UniformLogoLarge,
@@ -2244,7 +2247,7 @@ var input = (whiteSpaceWrap) => import_react4.css`
2244
2247
  border-radius: var(--rounded-sm);
2245
2248
  color: var(--gray-700);
2246
2249
  padding: var(--input-padding);
2247
- min-height: 46px;
2250
+ min-height: 50px;
2248
2251
  width: 100%;
2249
2252
  position: relative;
2250
2253
  white-space: ${whiteSpaceWrap};
@@ -2849,6 +2852,9 @@ var IconColorAction = import_react12.css`
2849
2852
  var IconColorAccent = import_react12.css`
2850
2853
  color: var(--accent-alt-dark);
2851
2854
  `;
2855
+ var IconColorAccentDark = import_react12.css`
2856
+ color: var(--accent-dark);
2857
+ `;
2852
2858
  var IconColorAccentLight = import_react12.css`
2853
2859
  color: var(--accent-light);
2854
2860
  `;
@@ -2893,6 +2899,7 @@ var IconInner = ({ icon, iconColor = "default", size = "1.5rem", ...otherProps }
2893
2899
  red: IconColorRed,
2894
2900
  accent: IconColorAccent,
2895
2901
  currentColor: IconColorCurrent,
2902
+ "accent-dark": IconColorAccentDark,
2896
2903
  "accent-light": IconColorAccentLight
2897
2904
  };
2898
2905
  if (isIconName && isLoading) {
@@ -13895,6 +13902,7 @@ var import_react_aria_components = require("react-aria-components");
13895
13902
  init_emotion_jsx_shim();
13896
13903
  var import_react39 = require("@emotion/react");
13897
13904
  var container = import_react39.css`
13905
+ --calendar-cell-size: 1.8rem;
13898
13906
  width: fit-content;
13899
13907
  max-width: 100%;
13900
13908
  `;
@@ -13919,13 +13927,13 @@ var headerNavButton = import_react39.css`
13919
13927
  }
13920
13928
  `;
13921
13929
  var cell = import_react39.css`
13922
- width: 2rem;
13923
- line-height: 2rem;
13930
+ width: var(--calendar-cell-size);
13931
+ line-height: var(--calendar-cell-size);
13924
13932
  text-align: center;
13925
13933
  border-radius: var(--rounded-sm);
13926
13934
  cursor: default;
13927
13935
  outline: none;
13928
- margin: 1px;
13936
+ margin: 1px 0;
13929
13937
  forced-color-adjust: none;
13930
13938
 
13931
13939
  &:hover {
@@ -13951,6 +13959,12 @@ var cell = import_react39.css`
13951
13959
  color: var(--white);
13952
13960
  }
13953
13961
  `;
13962
+ var cellIsOutsideRange = import_react39.css`
13963
+ color: var(--gray-400);
13964
+ `;
13965
+ var cellIsToday = import_react39.css`
13966
+ background: var(--gray-200);
13967
+ `;
13954
13968
  var actions = import_react39.css`
13955
13969
  display: flex;
13956
13970
  justify-content: end;
@@ -13979,6 +13993,9 @@ var Calendar = ({
13979
13993
  ...props
13980
13994
  }) => {
13981
13995
  const [focusedValue, setFocusedValue] = (0, import_react40.useState)(void 0);
13996
+ const today_date = (0, import_date.today)(timeZone);
13997
+ const minDate = tryParseDate(minValue);
13998
+ const maxDate = tryParseDate(maxValue);
13982
13999
  const handleChange = (0, import_react40.useCallback)(
13983
14000
  (value2) => {
13984
14001
  onChange == null ? void 0 : onChange(value2.toString());
@@ -13986,10 +14003,9 @@ var Calendar = ({
13986
14003
  [onChange]
13987
14004
  );
13988
14005
  const gotoToday = (0, import_react40.useCallback)(() => {
13989
- const date = (0, import_date.today)(timeZone);
13990
- onChange == null ? void 0 : onChange(date.toString());
13991
- setFocusedValue(date);
13992
- }, [onChange, timeZone]);
14006
+ onChange == null ? void 0 : onChange(today_date.toString());
14007
+ setFocusedValue(today_date);
14008
+ }, [onChange, today_date]);
13993
14009
  return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("div", { ...props, children: [
13994
14010
  /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
13995
14011
  import_react_aria_components.Calendar,
@@ -13997,8 +14013,8 @@ var Calendar = ({
13997
14013
  value: tryParseDate(value) || null,
13998
14014
  focusedValue,
13999
14015
  onFocusChange: setFocusedValue,
14000
- minValue: tryParseDate(minValue),
14001
- maxValue: tryParseDate(maxValue),
14016
+ minValue: minDate,
14017
+ maxValue: maxDate,
14002
14018
  onChange: handleChange,
14003
14019
  css: container,
14004
14020
  "aria-label": "Appointment date",
@@ -14025,7 +14041,18 @@ var Calendar = ({
14025
14041
  }
14026
14042
  )
14027
14043
  ] }),
14028
- /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_aria_components.CalendarGrid, { children: (date) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_aria_components.CalendarCell, { css: cell, date }) })
14044
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(import_react_aria_components.CalendarGrid, { children: (date) => /* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
14045
+ import_react_aria_components.CalendarCell,
14046
+ {
14047
+ css: [
14048
+ cell,
14049
+ minDate && date.compare(minDate) < 0 ? cellIsOutsideRange : null,
14050
+ maxDate && date.compare(maxDate) > 0 ? cellIsOutsideRange : null,
14051
+ (0, import_date.isToday)(date, timeZone) ? cellIsToday : null
14052
+ ],
14053
+ date
14054
+ }
14055
+ ) })
14029
14056
  ]
14030
14057
  }
14031
14058
  ),
@@ -15548,6 +15575,12 @@ function InputComboBox(props) {
15548
15575
  boxShadow: "none",
15549
15576
  borderColor: "var(--accent-dark-hover)"
15550
15577
  },
15578
+ '&:has([aria-readonly="true"])': {
15579
+ background: "var(--gray-100)",
15580
+ "&:hover": {
15581
+ borderColor: "var(--gray-300)"
15582
+ }
15583
+ },
15551
15584
  ...(_b = (_a2 = props.styles) == null ? void 0 : _a2.control) == null ? void 0 : _b.call(_a2, base, state)
15552
15585
  };
15553
15586
  },
@@ -16221,7 +16254,7 @@ var popover = import_react69.css`
16221
16254
  padding: var(--spacing-md);
16222
16255
  max-width: none;
16223
16256
  gap: var(--spacing-md);
16224
- grid-template-columns: 1fr 0.9fr;
16257
+ grid-template-columns: 0.8fr 1fr;
16225
16258
  grid-template-rows: 1fr 1fr;
16226
16259
 
16227
16260
  [data-variant='date'] & {
@@ -16277,7 +16310,7 @@ var import_date3 = require("@internationalized/date");
16277
16310
  function getTimeZoneLabel(tz) {
16278
16311
  var _a;
16279
16312
  const offset = (_a = Intl.DateTimeFormat("en", { timeZoneName: "shortOffset", timeZone: tz }).formatToParts().find((p) => p.type === "timeZoneName")) == null ? void 0 : _a.value;
16280
- return tz + (offset ? ` (${offset})` : "");
16313
+ return String(tz).replace(/_/g, " ") + (offset ? ` (${offset})` : "");
16281
16314
  }
16282
16315
  function tryParseAbsolute(isoDateTime, timeZone) {
16283
16316
  try {
@@ -16313,7 +16346,8 @@ var DateTimePickerVariant = /* @__PURE__ */ ((DateTimePickerVariant2) => {
16313
16346
 
16314
16347
  // src/components/DateTimePicker/DateTimePicker.tsx
16315
16348
  var import_jsx_runtime61 = require("@emotion/react/jsx-runtime");
16316
- var TIMEZONE_OPTIONS = Intl.supportedValuesOf("timeZone").map((v) => ({
16349
+ var timeZoneOptions = typeof Intl !== "undefined" && typeof Intl.supportedValuesOf === "function" ? Intl.supportedValuesOf("timeZone") : ["Etc/UTC"];
16350
+ var TIMEZONE_OPTIONS = timeZoneOptions.map((v) => ({
16317
16351
  label: getTimeZoneLabel(v),
16318
16352
  value: v
16319
16353
  }));
@@ -16363,9 +16397,10 @@ var DateTimePicker = ({
16363
16397
  return TIMEZONE_OPTIONS.find(({ value: value2 }) => value2 === timeZone);
16364
16398
  });
16365
16399
  (0, import_react70.useEffect)(() => {
16400
+ var _a;
16366
16401
  if (popover2.visible) {
16367
16402
  setDraftDate(tryToCalendarDate(parsedValue));
16368
- setDraftTime(tryToTime(parsedValue));
16403
+ setDraftTime((_a = tryToTime(parsedValue)) != null ? _a : new import_date4.Time(0, 0));
16369
16404
  }
16370
16405
  }, [parsedValue, popover2.visible]);
16371
16406
  const handleDateChange = (0, import_react70.useCallback)((isoDate) => {
@@ -22064,6 +22099,23 @@ var TEXTBOX_OPERATORS = [
22064
22099
  editorType: "empty"
22065
22100
  }
22066
22101
  ];
22102
+ var USER_OPERATORS = [
22103
+ {
22104
+ label: "is...",
22105
+ value: "eq",
22106
+ editorType: "text"
22107
+ },
22108
+ {
22109
+ label: "contains...",
22110
+ value: "match",
22111
+ editorType: "text"
22112
+ },
22113
+ {
22114
+ label: "is not...",
22115
+ value: "neq",
22116
+ editorType: "text"
22117
+ }
22118
+ ];
22067
22119
  var RICHTEXT_OPERATORS = [
22068
22120
  {
22069
22121
  label: "is empty...",
@@ -22123,16 +22175,16 @@ init_emotion_jsx_shim();
22123
22175
  init_emotion_jsx_shim();
22124
22176
  var import_react138 = require("@emotion/react");
22125
22177
  var SearchAndFilterContainer = import_react138.css``;
22126
- var SearchAndFilterControlsWrapper = import_react138.css`
22178
+ var SearchAndFilterControlsWrapper = (gridColumns) => import_react138.css`
22127
22179
  align-items: stretch;
22128
22180
  display: grid;
22129
- grid-template-columns: auto auto 1fr 0.5fr;
22181
+ grid-template-columns: ${gridColumns};
22130
22182
  gap: var(--spacing-sm);
22131
22183
  `;
22132
- var SearchAndFilterOutterControlWrapper = import_react138.css`
22184
+ var SearchAndFilterOutterControlWrapper = (gridColumns) => import_react138.css`
22133
22185
  align-items: stretch;
22134
22186
  display: grid;
22135
- grid-template-columns: 1fr auto;
22187
+ grid-template-columns: ${gridColumns};
22136
22188
  gap: var(--spacing-sm);
22137
22189
  `;
22138
22190
  var ConditionalFilterRow = import_react138.css`
@@ -22165,7 +22217,7 @@ var ConditionalInputRow = import_react138.css`
22165
22217
  }
22166
22218
  ${cq("580px")} {
22167
22219
  display: grid;
22168
- grid-template-columns: 200px 160px repeat(2, minmax(160px, 240px)) 32px;
22220
+ grid-template-columns: 200px 160px 1fr 32px;
22169
22221
  }
22170
22222
  `;
22171
22223
  var SearchInput = import_react138.css`
@@ -22209,6 +22261,12 @@ var FilterButton = import_react138.css`
22209
22261
  opacity: var(--opacity-50);
22210
22262
  }
22211
22263
  `;
22264
+ var FilterButtonText = import_react138.css`
22265
+ overflow: hidden;
22266
+ text-overflow: ellipsis;
22267
+ white-space: nowrap;
22268
+ max-width: 14ch;
22269
+ `;
22212
22270
  var FilterButtonSelected = import_react138.css`
22213
22271
  background: var(--gray-100);
22214
22272
  border-color: var(--gray-300);
@@ -22300,7 +22358,7 @@ var SearchAndFilterOptionsContainer = import_react138.css`
22300
22358
  padding: var(--spacing-md) var(--spacing-md) var(--spacing-base);
22301
22359
  will-change: height;
22302
22360
  position: relative;
22303
- z-index: 1;
22361
+ z-index: 2;
22304
22362
  `;
22305
22363
  var SearchAndFilterOptionsInnerContainer = import_react138.css`
22306
22364
  display: flex;
@@ -22333,7 +22391,7 @@ var FilterButton2 = ({
22333
22391
  "data-testid": "filters-button",
22334
22392
  children: [
22335
22393
  /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Icon, { icon, iconColor: "currentColor", size: "1rem" }),
22336
- text,
22394
+ /* @__PURE__ */ (0, import_jsx_runtime117.jsx)("span", { css: FilterButtonText, children: text }),
22337
22395
  filterCount ? /* @__PURE__ */ (0, import_jsx_runtime117.jsx)(Counter, { count: filterCount, bgColor: "var(--white)" }) : null
22338
22396
  ]
22339
22397
  }
@@ -22378,6 +22436,7 @@ var SearchAndFilterProvider = ({
22378
22436
  filterOptions,
22379
22437
  sortOptions,
22380
22438
  defaultSortByValue,
22439
+ filterMode: filterMode3 = void 0,
22381
22440
  onSearchChange,
22382
22441
  onChange,
22383
22442
  onSortChange,
@@ -22386,12 +22445,12 @@ var SearchAndFilterProvider = ({
22386
22445
  }) => {
22387
22446
  const [searchTerm, setSearchTerm] = (0, import_react139.useState)("");
22388
22447
  const deferredSearchTerm = (0, import_react139.useDeferredValue)(searchTerm);
22389
- const [filterVisibility, setFilterVisibility] = (0, import_react139.useState)(void 0);
22448
+ const [filterVisibility, setFilterVisibility] = (0, import_react139.useState)(filterMode3);
22390
22449
  const [sortByValue, setSortByValue] = (0, import_react139.useState)(defaultSortByValue);
22391
22450
  const handleSearchTerm = (0, import_react139.useCallback)(
22392
22451
  (term) => {
22393
22452
  setSearchTerm(term);
22394
- onSearchChange(term);
22453
+ onSearchChange == null ? void 0 : onSearchChange(term);
22395
22454
  },
22396
22455
  [setSearchTerm, onSearchChange]
22397
22456
  );
@@ -22470,9 +22529,20 @@ var useSearchAndFilter = () => {
22470
22529
  // src/components/SearchAndFilter/FilterControls.tsx
22471
22530
  var import_jsx_runtime119 = require("@emotion/react/jsx-runtime");
22472
22531
  var FilterControls = ({
22473
- children
22532
+ children,
22533
+ defaultSortByValue,
22534
+ hideSearchInput
22474
22535
  }) => {
22475
- const { setFilterVisibility, filterVisibility, setSearchTerm, validFilterQuery, searchTerm, sortByValue } = useSearchAndFilter();
22536
+ var _a, _b, _c;
22537
+ const {
22538
+ setFilterVisibility,
22539
+ filterVisibility,
22540
+ setSearchTerm,
22541
+ validFilterQuery,
22542
+ searchTerm,
22543
+ sortByValue,
22544
+ filterOptions
22545
+ } = useSearchAndFilter();
22476
22546
  const [localeSearchTerm, setLocaleSearchTerm] = (0, import_react140.useState)("");
22477
22547
  (0, import_react_use3.useDebounce)(
22478
22548
  () => {
@@ -22492,9 +22562,12 @@ var FilterControls = ({
22492
22562
  }
22493
22563
  return setFilterVisibility(mode);
22494
22564
  };
22495
- const sortByValues = sortByValue ? sortByValue == null ? void 0 : sortByValue.split("_") : "Sort";
22496
- const sortByValueLabel = Array.isArray(sortByValues) ? sortByValue == null ? void 0 : sortByValue.split("_")[0] : "Sort";
22497
- const sortByIcon = Array.isArray(sortByValues) ? sortByValues[1] === "ASC" ? "arrow-up" : "arrow-down" : "sort-az";
22565
+ const sortValue = (sortByValue != null ? sortByValue : defaultSortByValue).split("_");
22566
+ const sortDirection = sortValue == null ? void 0 : sortValue.pop();
22567
+ const sortField = sortValue == null ? void 0 : sortValue.join("_");
22568
+ const sortOn = sortField.startsWith("fields.") ? "contentTypeFields" : "metadata";
22569
+ const sortByValueLabel = (_c = (_b = (_a = filterOptions == null ? void 0 : filterOptions.find((op) => op.value === sortOn)) == null ? void 0 : _a.options) == null ? void 0 : _b.find((f) => f.value === sortField)) == null ? void 0 : _c.label;
22570
+ const sortByIcon = sortDirection === "ASC" ? "arrow-up" : "arrow-down";
22498
22571
  return /* @__PURE__ */ (0, import_jsx_runtime119.jsxs)(import_jsx_runtime119.Fragment, { children: [
22499
22572
  /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
22500
22573
  FilterButton2,
@@ -22521,7 +22594,7 @@ var FilterControls = ({
22521
22594
  "data-testid": "sort-by-dropdown"
22522
22595
  }
22523
22596
  ),
22524
- /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
22597
+ hideSearchInput ? null : /* @__PURE__ */ (0, import_jsx_runtime119.jsx)(
22525
22598
  InputKeywordSearch,
22526
22599
  {
22527
22600
  placeholder: "Search...",
@@ -22621,6 +22694,11 @@ var StatusUnknown = import_react141.css`
22621
22694
  background: var(--gray-800);
22622
22695
  }
22623
22696
  `;
22697
+ var StatusDeleted = import_react141.css`
22698
+ &:before {
22699
+ background: var(--error);
22700
+ }
22701
+ `;
22624
22702
 
22625
22703
  // src/components/Validation/StatusBullet.tsx
22626
22704
  var import_jsx_runtime120 = require("@emotion/react/jsx-runtime");
@@ -22639,7 +22717,8 @@ var StatusBullet = ({
22639
22717
  Published: StatusPublished,
22640
22718
  Draft: StatusDraft,
22641
22719
  Previous: StatusDraft,
22642
- Unknown: StatusUnknown
22720
+ Unknown: StatusUnknown,
22721
+ Deleted: StatusDeleted
22643
22722
  };
22644
22723
  const statusSize = size === "base" ? StatusBulletBase : StatusBulletSmall;
22645
22724
  return /* @__PURE__ */ (0, import_jsx_runtime120.jsx)(
@@ -22656,12 +22735,19 @@ var StatusBullet = ({
22656
22735
 
22657
22736
  // src/components/SearchAndFilter/FilterEditor.tsx
22658
22737
  var import_jsx_runtime121 = require("@emotion/react/jsx-runtime");
22738
+ var readOnlyAttributes = {
22739
+ isSearchable: false,
22740
+ menuIsOpen: false,
22741
+ isClearable: false
22742
+ };
22659
22743
  var FilterMultiChoiceEditor = ({
22660
22744
  value,
22661
22745
  options,
22662
22746
  isDisabled,
22747
+ readOnly,
22663
22748
  ...props
22664
22749
  }) => {
22750
+ const readOnlyProps = readOnly ? readOnlyAttributes : {};
22665
22751
  return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
22666
22752
  InputComboBox,
22667
22753
  {
@@ -22675,7 +22761,9 @@ var FilterMultiChoiceEditor = ({
22675
22761
  var _a;
22676
22762
  return props.onChange((_a = e.map((item) => item.value)) != null ? _a : []);
22677
22763
  },
22678
- value
22764
+ value,
22765
+ "aria-readonly": readOnly,
22766
+ ...readOnlyProps
22679
22767
  }
22680
22768
  );
22681
22769
  };
@@ -22683,8 +22771,10 @@ var FilterSingleChoiceEditor = ({
22683
22771
  options,
22684
22772
  value,
22685
22773
  isDisabled,
22774
+ readOnly,
22686
22775
  onChange
22687
22776
  }) => {
22777
+ const readOnlyProps = readOnly ? readOnlyAttributes : {};
22688
22778
  return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
22689
22779
  InputComboBox,
22690
22780
  {
@@ -22696,7 +22786,9 @@ var FilterSingleChoiceEditor = ({
22696
22786
  return onChange((_a = e == null ? void 0 : e.value) != null ? _a : "");
22697
22787
  },
22698
22788
  isDisabled,
22699
- value
22789
+ value,
22790
+ "aria-readonly": readOnly,
22791
+ ...readOnlyProps
22700
22792
  }
22701
22793
  );
22702
22794
  };
@@ -22707,8 +22799,10 @@ var StatusMultiEditor = ({
22707
22799
  options,
22708
22800
  value,
22709
22801
  isDisabled,
22802
+ readOnly,
22710
22803
  onChange
22711
22804
  }) => {
22805
+ const readOnlyProps = readOnly ? readOnlyAttributes : {};
22712
22806
  return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
22713
22807
  InputComboBox,
22714
22808
  {
@@ -22720,7 +22814,8 @@ var StatusMultiEditor = ({
22720
22814
  },
22721
22815
  formatOptionLabel: CustomOptions,
22722
22816
  value,
22723
- isDisabled
22817
+ isDisabled,
22818
+ ...readOnlyProps
22724
22819
  }
22725
22820
  );
22726
22821
  };
@@ -22728,8 +22823,10 @@ var StatusSingleEditor = ({
22728
22823
  options,
22729
22824
  value,
22730
22825
  isDisabled,
22826
+ readOnly,
22731
22827
  onChange
22732
22828
  }) => {
22829
+ const readOnlyProps = readOnly ? readOnlyAttributes : {};
22733
22830
  return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
22734
22831
  InputComboBox,
22735
22832
  {
@@ -22740,11 +22837,12 @@ var StatusSingleEditor = ({
22740
22837
  },
22741
22838
  formatOptionLabel: CustomOptions,
22742
22839
  value,
22743
- isDisabled
22840
+ isDisabled,
22841
+ ...readOnlyProps
22744
22842
  }
22745
22843
  );
22746
22844
  };
22747
- var TextEditor = ({ onChange, ariaLabel, value }) => {
22845
+ var TextEditor = ({ onChange, ariaLabel, value, readOnly }) => {
22748
22846
  (0, import_react_use4.useDebounce)(() => onChange, 500, [value]);
22749
22847
  return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
22750
22848
  Input,
@@ -22753,11 +22851,12 @@ var TextEditor = ({ onChange, ariaLabel, value }) => {
22753
22851
  label: ariaLabel,
22754
22852
  onChange: (e) => onChange(e.currentTarget.value),
22755
22853
  placeholder: "Enter phrase to search\u2026",
22756
- value
22854
+ value,
22855
+ readOnly
22757
22856
  }
22758
22857
  );
22759
22858
  };
22760
- var NumberRangeEditor = ({ onChange, disabled: disabled2, ariaLabel, value }) => {
22859
+ var NumberRangeEditor = ({ onChange, disabled: disabled2, ariaLabel, value, readOnly }) => {
22761
22860
  const [minValue, setMinValue] = (0, import_react142.useState)("");
22762
22861
  const [maxValue, setMaxValue] = (0, import_react142.useState)("");
22763
22862
  const [error, setError] = (0, import_react142.useState)("");
@@ -22780,7 +22879,7 @@ var NumberRangeEditor = ({ onChange, disabled: disabled2, ariaLabel, value }) =>
22780
22879
  setError("");
22781
22880
  onChange([minValue, maxValue]);
22782
22881
  }, [maxValue, minValue, setError]);
22783
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_jsx_runtime121.Fragment, { children: [
22882
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("div", { css: twoColumnGrid, children: [
22784
22883
  /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
22785
22884
  Input,
22786
22885
  {
@@ -22792,7 +22891,8 @@ var NumberRangeEditor = ({ onChange, disabled: disabled2, ariaLabel, value }) =>
22792
22891
  onChange: (e) => setMinValue(e.currentTarget.value),
22793
22892
  "aria-invalid": !error ? false : true,
22794
22893
  disabled: disabled2,
22795
- value: value ? value[0] : ""
22894
+ value: value ? value[0] : "",
22895
+ readOnly
22796
22896
  }
22797
22897
  ),
22798
22898
  /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
@@ -22806,13 +22906,14 @@ var NumberRangeEditor = ({ onChange, disabled: disabled2, ariaLabel, value }) =>
22806
22906
  onChange: (e) => setMaxValue(e.currentTarget.value),
22807
22907
  "aria-invalid": !error ? false : true,
22808
22908
  disabled: disabled2,
22809
- value: value ? value[1] : ""
22909
+ value: value ? value[1] : "",
22910
+ readOnly
22810
22911
  }
22811
22912
  ),
22812
22913
  /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(ErrorContainer, { errorMessage: error })
22813
22914
  ] });
22814
22915
  };
22815
- var NumberEditor = ({ ariaLabel, onChange, disabled: disabled2, value }) => {
22916
+ var NumberEditor = ({ ariaLabel, onChange, disabled: disabled2, value, readOnly }) => {
22816
22917
  return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
22817
22918
  Input,
22818
22919
  {
@@ -22822,11 +22923,12 @@ var NumberEditor = ({ ariaLabel, onChange, disabled: disabled2, value }) => {
22822
22923
  min: 0,
22823
22924
  onChange: (e) => onChange(e.currentTarget.value),
22824
22925
  disabled: disabled2,
22825
- value
22926
+ value,
22927
+ readOnly
22826
22928
  }
22827
22929
  );
22828
22930
  };
22829
- var DateEditor = ({ onChange, ariaLabel, disabled: disabled2, value }) => {
22931
+ var DateEditor = ({ onChange, ariaLabel, disabled: disabled2, value, readOnly }) => {
22830
22932
  return /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
22831
22933
  Input,
22832
22934
  {
@@ -22835,11 +22937,12 @@ var DateEditor = ({ onChange, ariaLabel, disabled: disabled2, value }) => {
22835
22937
  showLabel: false,
22836
22938
  onChange: (e) => onChange(e.currentTarget.value),
22837
22939
  disabled: disabled2,
22838
- value
22940
+ value,
22941
+ readOnly
22839
22942
  }
22840
22943
  );
22841
22944
  };
22842
- var DateRangeEditor = ({ ariaLabel, onChange, disabled: disabled2, value }) => {
22945
+ var DateRangeEditor = ({ ariaLabel, onChange, disabled: disabled2, value, readOnly }) => {
22843
22946
  const [minDateValue, setMinDateValue] = (0, import_react142.useState)(value ? value[0] : "");
22844
22947
  const [maxDateValue, setMaxDateValue] = (0, import_react142.useState)(value ? value[1] : "");
22845
22948
  const [error, setError] = (0, import_react142.useState)("");
@@ -22874,7 +22977,7 @@ var DateRangeEditor = ({ ariaLabel, onChange, disabled: disabled2, value }) => {
22874
22977
  setError("");
22875
22978
  onChange([minDateValue, maxDateValue]);
22876
22979
  }, [minDateValue, maxDateValue, setError]);
22877
- return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)(import_jsx_runtime121.Fragment, { children: [
22980
+ return /* @__PURE__ */ (0, import_jsx_runtime121.jsxs)("div", { css: twoColumnGrid, children: [
22878
22981
  /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
22879
22982
  Input,
22880
22983
  {
@@ -22884,7 +22987,8 @@ var DateRangeEditor = ({ ariaLabel, onChange, disabled: disabled2, value }) => {
22884
22987
  value: minDateValue,
22885
22988
  onChange: (e) => setMinDateValue(e.currentTarget.value),
22886
22989
  "aria-invalid": !error ? false : true,
22887
- disabled: disabled2
22990
+ disabled: disabled2,
22991
+ readOnly
22888
22992
  }
22889
22993
  ),
22890
22994
  /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(
@@ -22896,7 +23000,8 @@ var DateRangeEditor = ({ ariaLabel, onChange, disabled: disabled2, value }) => {
22896
23000
  value: maxDateValue,
22897
23001
  onChange: (e) => setMaxDateValue(e.currentTarget.value),
22898
23002
  "aria-invalid": !error ? false : true,
22899
- disabled: disabled2
23003
+ disabled: disabled2,
23004
+ readOnly
22900
23005
  }
22901
23006
  ),
22902
23007
  /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(ErrorContainer, { errorMessage: error })
@@ -22936,6 +23041,11 @@ var ErrorContainer = ({ errorMessage }) => {
22936
23041
  }
22937
23042
  );
22938
23043
  };
23044
+ var twoColumnGrid = {
23045
+ display: "grid",
23046
+ gridTemplateColumns: "1fr 1fr",
23047
+ gap: "var(--spacing-sm);"
23048
+ };
22939
23049
 
22940
23050
  // src/components/SearchAndFilter/FilterMenu.tsx
22941
23051
  init_emotion_jsx_shim();
@@ -23001,15 +23111,16 @@ var FilterItem = ({
23001
23111
  const operatorLabel = filters[index].operator !== "" ? `operator ${filters[index].operator}` : "unknown operator";
23002
23112
  const metaDataLabel = filters[index].value !== "" ? `value ${filters[index].value}` : "unknown value";
23003
23113
  const metaDataPossibleOptions = (_b = (_a = operatorOptions.find((op) => filters[index].operator === op.value)) == null ? void 0 : _a.editorType) != null ? _b : "singleChoice";
23004
- const { selectedFieldValue, selectedOperatorValue, selectedMetaValue } = (0, import_react144.useMemo)(() => {
23005
- var _a2, _b2;
23114
+ const { selectedFieldValue, selectedOperatorValue, selectedMetaValue, readOnly } = (0, import_react144.useMemo)(() => {
23115
+ var _a2;
23006
23116
  const currentSelectedFilter = filterOptions.find((item) => {
23007
23117
  var _a3;
23008
23118
  return (_a3 = item.options) == null ? void 0 : _a3.find((op) => op.value === filters[index].field);
23009
23119
  });
23010
- const selectedFieldValue2 = (_b2 = (_a2 = currentSelectedFilter == null ? void 0 : currentSelectedFilter.options) == null ? void 0 : _a2.find((item) => {
23120
+ const selectedFieldValue2 = (_a2 = currentSelectedFilter == null ? void 0 : currentSelectedFilter.options) == null ? void 0 : _a2.find((item) => {
23011
23121
  return filters[index].field === item.value;
23012
- })) != null ? _b2 : [];
23122
+ });
23123
+ const isCurrentFieldReadOnly = selectedFieldValue2 == null ? void 0 : selectedFieldValue2.readOnly;
23013
23124
  const selectedOperatorValue2 = operatorOptions == null ? void 0 : operatorOptions.find((item) => {
23014
23125
  return filters[index].operator === item.value;
23015
23126
  });
@@ -23022,9 +23133,16 @@ var FilterItem = ({
23022
23133
  return {
23023
23134
  selectedFieldValue: selectedFieldValue2,
23024
23135
  selectedOperatorValue: selectedOperatorValue2 != null ? selectedOperatorValue2 : void 0,
23025
- selectedMetaValue: selectedMetaValue2.length > 0 ? selectedMetaValue2 : filters[index].value
23136
+ selectedMetaValue: selectedMetaValue2.length > 0 ? selectedMetaValue2 : filters[index].value,
23137
+ readOnly: isCurrentFieldReadOnly
23026
23138
  };
23027
23139
  }, [filters, filterOptions, index, operatorOptions, valueOptions]);
23140
+ const readOnlyProps = readOnly ? {
23141
+ "aria-readonly": true,
23142
+ isSearchable: false,
23143
+ menuIsOpen: false,
23144
+ isClearable: false
23145
+ } : {};
23028
23146
  return /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("div", { css: ConditionalFilterRow, children: [
23029
23147
  /* @__PURE__ */ (0, import_jsx_runtime123.jsx)("span", { children: index === 0 ? "where" : "and" }),
23030
23148
  /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("div", { css: ConditionalInputRow, children: [
@@ -23037,7 +23155,8 @@ var FilterItem = ({
23037
23155
  var _a2;
23038
23156
  onParamChange((_a2 = e == null ? void 0 : e.value) != null ? _a2 : "");
23039
23157
  },
23040
- value: selectedFieldValue
23158
+ value: selectedFieldValue,
23159
+ ...readOnlyProps
23041
23160
  }
23042
23161
  ),
23043
23162
  /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
@@ -23050,7 +23169,8 @@ var FilterItem = ({
23050
23169
  return onOperatorChange((_a2 = e == null ? void 0 : e.value) != null ? _a2 : "");
23051
23170
  },
23052
23171
  isDisabled: !filters[index].field,
23053
- value: selectedOperatorValue
23172
+ value: selectedOperatorValue,
23173
+ ...readOnlyProps
23054
23174
  }
23055
23175
  ),
23056
23176
  /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
@@ -23060,6 +23180,7 @@ var FilterItem = ({
23060
23180
  editorType: metaDataPossibleOptions,
23061
23181
  options: valueOptions,
23062
23182
  onChange: (e) => onValueChange(e != null ? e : ""),
23183
+ readOnly,
23063
23184
  isDisabled: !filters[index].operator,
23064
23185
  value: selectedMetaValue
23065
23186
  }
@@ -23081,15 +23202,7 @@ var FilterItems = ({
23081
23202
  addButtonText = "add condition",
23082
23203
  resetButtonText = "reset filters"
23083
23204
  }) => {
23084
- const {
23085
- filterOptions,
23086
- filters,
23087
- setFilters,
23088
- handleAddFilter,
23089
- handleResetFilters,
23090
- setFilterVisibility,
23091
- validFilterQuery
23092
- } = useSearchAndFilter();
23205
+ const { filterOptions, filters, setFilters, handleAddFilter, handleResetFilters, setFilterVisibility } = useSearchAndFilter();
23093
23206
  const handleUpdateFilter = (index, prop, value) => {
23094
23207
  const next = [...filters];
23095
23208
  next[index] = { ...next[index], [prop]: value };
@@ -23113,20 +23226,11 @@ var FilterItems = ({
23113
23226
  {
23114
23227
  id: "search-and-filter-options",
23115
23228
  menuControls: /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(import_jsx_runtime123.Fragment, { children: [
23116
- /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)(
23117
- "button",
23118
- {
23119
- type: "button",
23120
- css: AddConditionalBtn,
23121
- onClick: handleAddFilter,
23122
- disabled: !validFilterQuery,
23123
- children: [
23124
- /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Icon, { icon: "math-plus", iconColor: !validFilterQuery ? "currentColor" : "gray", size: "1rem" }),
23125
- addButtonText
23126
- ]
23127
- }
23128
- ),
23129
- (validFilterQuery == null ? void 0 : validFilterQuery.length) ? /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
23229
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsxs)("button", { type: "button", css: AddConditionalBtn, onClick: handleAddFilter, children: [
23230
+ /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(Icon, { icon: "math-plus", iconColor: "currentColor", size: "1rem" }),
23231
+ addButtonText
23232
+ ] }),
23233
+ (filters == null ? void 0 : filters.length) ? /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(
23130
23234
  "button",
23131
23235
  {
23132
23236
  type: "button",
@@ -23435,24 +23539,52 @@ var FilterModeView = () => {
23435
23539
  init_emotion_jsx_shim();
23436
23540
  var import_jsx_runtime127 = require("@emotion/react/jsx-runtime");
23437
23541
  var SearchAndFilterResultContainer = ({
23438
- clearButtonLabel = "clear"
23542
+ buttonText,
23543
+ clearButtonLabel = "clear",
23544
+ calloutTitle: calloutTitle2,
23545
+ calloutText,
23546
+ onHandleClear
23439
23547
  }) => {
23440
- const { searchTerm, setSearchTerm, totalResults } = useSearchAndFilter();
23441
- return searchTerm ? /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_jsx_runtime127.Fragment, { children: [
23548
+ const { searchTerm, setSearchTerm, totalResults, setFilters, filters } = useSearchAndFilter();
23549
+ const automateCalloutTitle = () => {
23550
+ if (searchTerm && !filters.length) {
23551
+ return "No search results found";
23552
+ }
23553
+ if (filters.length && !searchTerm) {
23554
+ return "No results match the selected filters";
23555
+ }
23556
+ return "No matching results found";
23557
+ };
23558
+ const handleResetFilters = () => {
23559
+ if (searchTerm && !filters.length) {
23560
+ setSearchTerm("");
23561
+ return;
23562
+ } else if (!searchTerm && filters.length) {
23563
+ setFilters([{ field: "", operator: "", value: "" }]);
23564
+ return;
23565
+ } else {
23566
+ setSearchTerm("");
23567
+ setFilters([{ field: "", operator: "", value: "" }]);
23568
+ return;
23569
+ }
23570
+ };
23571
+ if (totalResults && totalResults > 0) {
23572
+ return null;
23573
+ }
23574
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_jsx_runtime127.Fragment, { children: [
23442
23575
  /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(HorizontalRhythm, { children: [
23443
23576
  /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("span", { children: [
23444
23577
  totalResults,
23445
- " results for ",
23446
- /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)("strong", { children: [
23447
- '"',
23448
- searchTerm,
23449
- '"'
23450
- ] })
23578
+ " results ",
23579
+ searchTerm ? `for "${searchTerm}"` : null
23451
23580
  ] }),
23452
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Button, { buttonType: "ghostDestructive", size: "zero", onClick: () => setSearchTerm(""), children: clearButtonLabel })
23581
+ !searchTerm ? null : /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Button, { buttonType: "ghostDestructive", size: "zero", onClick: () => setSearchTerm(""), children: clearButtonLabel })
23453
23582
  ] }),
23454
- totalResults === 0 ? /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Callout, { title: "No search results found", type: "note", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Button, { buttonType: "tertiaryOutline", size: "sm", onClick: () => setSearchTerm(""), children: "Clear search" }) }) : null
23455
- ] }) : null;
23583
+ totalResults === 0 ? /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(Callout, { title: calloutTitle2 != null ? calloutTitle2 : automateCalloutTitle(), type: "note", children: [
23584
+ calloutText ? /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Paragraph, { children: calloutText }) : null,
23585
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Button, { buttonType: "tertiaryOutline", size: "xs", onClick: onHandleClear != null ? onHandleClear : handleResetFilters, children: buttonText != null ? buttonText : "Clear search" })
23586
+ ] }) : null
23587
+ ] });
23456
23588
  };
23457
23589
 
23458
23590
  // src/components/SearchAndFilter/SearchAndFilter.tsx
@@ -23460,10 +23592,12 @@ var import_jsx_runtime128 = require("@emotion/react/jsx-runtime");
23460
23592
  var SearchAndFilter = ({
23461
23593
  filters,
23462
23594
  filterOptions,
23595
+ filterMode: filterMode3,
23463
23596
  sortOptions,
23464
23597
  defaultSortByValue,
23465
- filterControls = /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(FilterControls, {}),
23598
+ filterControls,
23466
23599
  viewSwitchControls,
23600
+ resultsContainerView = /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SearchAndFilterResultContainer, {}),
23467
23601
  children = /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(FilterModeView, {}),
23468
23602
  onChange,
23469
23603
  onSearchChange,
@@ -23475,6 +23609,7 @@ var SearchAndFilter = ({
23475
23609
  {
23476
23610
  filters,
23477
23611
  filterOptions,
23612
+ filterMode: filterMode3,
23478
23613
  defaultSortByValue,
23479
23614
  sortOptions,
23480
23615
  onChange,
@@ -23482,34 +23617,84 @@ var SearchAndFilter = ({
23482
23617
  onSortChange,
23483
23618
  totalResults,
23484
23619
  children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(VerticalRhythm, { css: SearchAndFilterContainer, "data-testid": "search-and-filter", children: [
23485
- /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { css: SearchAndFilterOutterControlWrapper, children: [
23486
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("div", { css: SearchAndFilterControlsWrapper, children: filterControls }),
23620
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)("div", { css: SearchAndFilterOutterControlWrapper(viewSwitchControls ? "1fr auto" : "1fr"), children: [
23621
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
23622
+ "div",
23623
+ {
23624
+ css: SearchAndFilterControlsWrapper(
23625
+ viewSwitchControls ? "auto auto 1fr 0.5fr" : "auto auto 1fr"
23626
+ ),
23627
+ children: !filterControls ? /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(FilterControls, { hideSearchInput: !onSearchChange, defaultSortByValue }) : filterControls
23628
+ }
23629
+ ),
23487
23630
  viewSwitchControls
23488
23631
  ] }),
23489
23632
  children,
23490
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SearchAndFilterResultContainer, {})
23633
+ resultsContainerView
23491
23634
  ] })
23492
23635
  }
23493
23636
  );
23494
23637
  };
23495
23638
 
23639
+ // src/components/SearchAndFilter/SearchOnlyFilter.tsx
23640
+ init_emotion_jsx_shim();
23641
+ var import_react148 = require("react");
23642
+ var import_react_use5 = require("react-use");
23643
+ var import_jsx_runtime129 = require("@emotion/react/jsx-runtime");
23644
+ var SearchOnlyContext = (0, import_react148.createContext)({
23645
+ searchTerm: "",
23646
+ setSearchTerm: () => {
23647
+ }
23648
+ });
23649
+ var SearchOnlyFilter = ({ onSearchChange, maxWidth }) => {
23650
+ const { searchTerm, setSearchTerm } = useSearchAndFilter();
23651
+ const [localeSearchTerm, setLocaleSearchTerm] = (0, import_react148.useState)("");
23652
+ (0, import_react_use5.useDebounce)(
23653
+ () => {
23654
+ setSearchTerm(localeSearchTerm);
23655
+ onSearchChange == null ? void 0 : onSearchChange(localeSearchTerm);
23656
+ },
23657
+ 300,
23658
+ [localeSearchTerm]
23659
+ );
23660
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
23661
+ SearchOnlyContext.Provider,
23662
+ {
23663
+ value: {
23664
+ searchTerm,
23665
+ setSearchTerm: setLocaleSearchTerm
23666
+ },
23667
+ children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("div", { css: { maxWidth: maxWidth != null ? maxWidth : "712px" }, children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
23668
+ InputKeywordSearch,
23669
+ {
23670
+ placeholder: "Search...",
23671
+ onSearchTextChanged: (e) => setLocaleSearchTerm(e),
23672
+ value: localeSearchTerm,
23673
+ compact: true,
23674
+ rounded: true
23675
+ }
23676
+ ) })
23677
+ }
23678
+ );
23679
+ };
23680
+
23496
23681
  // src/components/Skeleton/Skeleton.tsx
23497
23682
  init_emotion_jsx_shim();
23498
23683
 
23499
23684
  // src/components/Skeleton/Skeleton.styles.ts
23500
23685
  init_emotion_jsx_shim();
23501
- var import_react148 = require("@emotion/react");
23502
- var lightFadingOut = import_react148.keyframes`
23686
+ var import_react149 = require("@emotion/react");
23687
+ var lightFadingOut = import_react149.keyframes`
23503
23688
  from { opacity: 0.1; }
23504
23689
  to { opacity: 0.025; }
23505
23690
  `;
23506
- var skeletonStyles = import_react148.css`
23691
+ var skeletonStyles = import_react149.css`
23507
23692
  animation: ${lightFadingOut} 1s ease-out infinite alternate;
23508
23693
  background-color: var(--gray-900);
23509
23694
  `;
23510
23695
 
23511
23696
  // src/components/Skeleton/Skeleton.tsx
23512
- var import_jsx_runtime129 = require("@emotion/react/jsx-runtime");
23697
+ var import_jsx_runtime130 = require("@emotion/react/jsx-runtime");
23513
23698
  var Skeleton = ({
23514
23699
  width = "100%",
23515
23700
  height = "1.25rem",
@@ -23517,7 +23702,7 @@ var Skeleton = ({
23517
23702
  circle = false,
23518
23703
  children,
23519
23704
  ...otherProps
23520
- }) => /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
23705
+ }) => /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
23521
23706
  "div",
23522
23707
  {
23523
23708
  css: [
@@ -23542,8 +23727,8 @@ var React26 = __toESM(require("react"));
23542
23727
 
23543
23728
  // src/components/Switch/Switch.styles.ts
23544
23729
  init_emotion_jsx_shim();
23545
- var import_react149 = require("@emotion/react");
23546
- var SwitchInputContainer = import_react149.css`
23730
+ var import_react150 = require("@emotion/react");
23731
+ var SwitchInputContainer = import_react150.css`
23547
23732
  cursor: pointer;
23548
23733
  display: inline-block;
23549
23734
  position: relative;
@@ -23552,7 +23737,7 @@ var SwitchInputContainer = import_react149.css`
23552
23737
  vertical-align: middle;
23553
23738
  user-select: none;
23554
23739
  `;
23555
- var SwitchInput = import_react149.css`
23740
+ var SwitchInput = import_react150.css`
23556
23741
  appearance: none;
23557
23742
  border-radius: var(--rounded-full);
23558
23743
  background-color: var(--white);
@@ -23590,7 +23775,7 @@ var SwitchInput = import_react149.css`
23590
23775
  cursor: not-allowed;
23591
23776
  }
23592
23777
  `;
23593
- var SwitchInputDisabled = import_react149.css`
23778
+ var SwitchInputDisabled = import_react150.css`
23594
23779
  opacity: var(--opacity-50);
23595
23780
  cursor: not-allowed;
23596
23781
 
@@ -23598,7 +23783,7 @@ var SwitchInputDisabled = import_react149.css`
23598
23783
  cursor: not-allowed;
23599
23784
  }
23600
23785
  `;
23601
- var SwitchInputLabel = import_react149.css`
23786
+ var SwitchInputLabel = import_react150.css`
23602
23787
  align-items: center;
23603
23788
  color: var(--typography-base);
23604
23789
  display: inline-flex;
@@ -23619,26 +23804,26 @@ var SwitchInputLabel = import_react149.css`
23619
23804
  top: 0;
23620
23805
  }
23621
23806
  `;
23622
- var SwitchText = import_react149.css`
23807
+ var SwitchText = import_react150.css`
23623
23808
  color: var(--gray-500);
23624
23809
  font-size: var(--fs-sm);
23625
23810
  padding-inline: var(--spacing-2xl) 0;
23626
23811
  `;
23627
23812
 
23628
23813
  // src/components/Switch/Switch.tsx
23629
- var import_jsx_runtime130 = require("@emotion/react/jsx-runtime");
23814
+ var import_jsx_runtime131 = require("@emotion/react/jsx-runtime");
23630
23815
  var Switch = React26.forwardRef(
23631
23816
  ({ label, infoText, toggleText, children, ...inputProps }, ref) => {
23632
23817
  let additionalText = infoText;
23633
23818
  if (infoText && toggleText) {
23634
23819
  additionalText = inputProps.checked ? toggleText : infoText;
23635
23820
  }
23636
- return /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(import_jsx_runtime130.Fragment, { children: [
23637
- /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)("label", { css: [SwitchInputContainer, inputProps.disabled ? SwitchInputDisabled : void 0], children: [
23638
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("input", { type: "checkbox", css: SwitchInput, ...inputProps, ref }),
23639
- /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("span", { css: SwitchInputLabel, children: label })
23821
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)(import_jsx_runtime131.Fragment, { children: [
23822
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsxs)("label", { css: [SwitchInputContainer, inputProps.disabled ? SwitchInputDisabled : void 0], children: [
23823
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("input", { type: "checkbox", css: SwitchInput, ...inputProps, ref }),
23824
+ /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("span", { css: SwitchInputLabel, children: label })
23640
23825
  ] }),
23641
- additionalText ? /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("p", { css: SwitchText, children: additionalText }) : null,
23826
+ additionalText ? /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("p", { css: SwitchText, children: additionalText }) : null,
23642
23827
  children
23643
23828
  ] });
23644
23829
  }
@@ -23650,8 +23835,8 @@ var React27 = __toESM(require("react"));
23650
23835
 
23651
23836
  // src/components/Table/Table.styles.ts
23652
23837
  init_emotion_jsx_shim();
23653
- var import_react150 = require("@emotion/react");
23654
- var table = ({ cellPadding = "var(--spacing-base) var(--spacing-md)" }) => import_react150.css`
23838
+ var import_react151 = require("@emotion/react");
23839
+ var table = ({ cellPadding = "var(--spacing-base) var(--spacing-md)" }) => import_react151.css`
23655
23840
  border-bottom: 1px solid var(--gray-400);
23656
23841
  border-collapse: collapse;
23657
23842
  min-width: 100%;
@@ -23662,67 +23847,67 @@ var table = ({ cellPadding = "var(--spacing-base) var(--spacing-md)" }) => impor
23662
23847
  padding: ${cellPadding};
23663
23848
  }
23664
23849
  `;
23665
- var tableHead = import_react150.css`
23850
+ var tableHead = import_react151.css`
23666
23851
  background: var(--gray-100);
23667
23852
  color: var(--typography-base);
23668
23853
  text-align: left;
23669
23854
  `;
23670
- var tableRow = import_react150.css`
23855
+ var tableRow = import_react151.css`
23671
23856
  border-bottom: 1px solid var(--gray-200);
23672
23857
  `;
23673
- var tableCellHead = import_react150.css`
23858
+ var tableCellHead = import_react151.css`
23674
23859
  font-size: var(--fs-sm);
23675
23860
  text-transform: uppercase;
23676
23861
  font-weight: var(--fw-bold);
23677
23862
  `;
23678
23863
 
23679
23864
  // src/components/Table/Table.tsx
23680
- var import_jsx_runtime131 = require("@emotion/react/jsx-runtime");
23865
+ var import_jsx_runtime132 = require("@emotion/react/jsx-runtime");
23681
23866
  var Table = React27.forwardRef(
23682
23867
  ({ children, cellPadding, ...otherProps }, ref) => {
23683
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("table", { ref, css: table({ cellPadding }), ...otherProps, children });
23868
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("table", { ref, css: table({ cellPadding }), ...otherProps, children });
23684
23869
  }
23685
23870
  );
23686
23871
  var TableHead = React27.forwardRef(
23687
23872
  ({ children, ...otherProps }, ref) => {
23688
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("thead", { ref, css: tableHead, ...otherProps, children });
23873
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("thead", { ref, css: tableHead, ...otherProps, children });
23689
23874
  }
23690
23875
  );
23691
23876
  var TableBody = React27.forwardRef(
23692
23877
  ({ children, ...otherProps }, ref) => {
23693
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("tbody", { ref, ...otherProps, children });
23878
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("tbody", { ref, ...otherProps, children });
23694
23879
  }
23695
23880
  );
23696
23881
  var TableFoot = React27.forwardRef(
23697
23882
  ({ children, ...otherProps }, ref) => {
23698
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("tfoot", { ref, ...otherProps, children });
23883
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("tfoot", { ref, ...otherProps, children });
23699
23884
  }
23700
23885
  );
23701
23886
  var TableRow = React27.forwardRef(
23702
23887
  ({ children, ...otherProps }, ref) => {
23703
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("tr", { ref, css: tableRow, ...otherProps, children });
23888
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("tr", { ref, css: tableRow, ...otherProps, children });
23704
23889
  }
23705
23890
  );
23706
23891
  var TableCellHead = React27.forwardRef(
23707
23892
  ({ children, ...otherProps }, ref) => {
23708
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("th", { ref, css: tableCellHead, ...otherProps, children });
23893
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("th", { ref, css: tableCellHead, ...otherProps, children });
23709
23894
  }
23710
23895
  );
23711
23896
  var TableCellData = React27.forwardRef(
23712
23897
  ({ children, ...otherProps }, ref) => {
23713
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)("td", { ref, ...otherProps, children });
23898
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)("td", { ref, ...otherProps, children });
23714
23899
  }
23715
23900
  );
23716
23901
 
23717
23902
  // src/components/Tabs/Tabs.tsx
23718
23903
  init_emotion_jsx_shim();
23719
- var import_react152 = require("@ariakit/react");
23720
- var import_react153 = require("react");
23904
+ var import_react153 = require("@ariakit/react");
23905
+ var import_react154 = require("react");
23721
23906
 
23722
23907
  // src/components/Tabs/Tabs.styles.ts
23723
23908
  init_emotion_jsx_shim();
23724
- var import_react151 = require("@emotion/react");
23725
- var tabButtonStyles = import_react151.css`
23909
+ var import_react152 = require("@emotion/react");
23910
+ var tabButtonStyles = import_react152.css`
23726
23911
  align-items: center;
23727
23912
  border: 0;
23728
23913
  height: 2.5rem;
@@ -23739,16 +23924,16 @@ var tabButtonStyles = import_react151.css`
23739
23924
  box-shadow: inset 0 -2px 0 var(--brand-secondary-3);
23740
23925
  }
23741
23926
  `;
23742
- var tabButtonGroupStyles = import_react151.css`
23927
+ var tabButtonGroupStyles = import_react152.css`
23743
23928
  display: flex;
23744
23929
  gap: var(--spacing-base);
23745
23930
  border-bottom: 1px solid var(--gray-300);
23746
23931
  `;
23747
23932
 
23748
23933
  // src/components/Tabs/Tabs.tsx
23749
- var import_jsx_runtime132 = require("@emotion/react/jsx-runtime");
23934
+ var import_jsx_runtime133 = require("@emotion/react/jsx-runtime");
23750
23935
  var useCurrentTab = () => {
23751
- const context = (0, import_react152.useTabStore)();
23936
+ const context = (0, import_react153.useTabStore)();
23752
23937
  if (!context) {
23753
23938
  throw new Error("This component can only be used inside <Tabs>");
23754
23939
  }
@@ -23762,13 +23947,13 @@ var Tabs = ({
23762
23947
  manual,
23763
23948
  ...props
23764
23949
  }) => {
23765
- const selected = (0, import_react153.useMemo)(() => {
23950
+ const selected = (0, import_react154.useMemo)(() => {
23766
23951
  if (selectedId)
23767
23952
  return selectedId;
23768
23953
  return useHashForState && typeof window !== "undefined" && window.location.hash ? window.location.hash.substring(1) : void 0;
23769
23954
  }, [selectedId, useHashForState]);
23770
- const tab = (0, import_react152.useTabStore)({ ...props, selectOnMove: !manual, selectedId: selected });
23771
- const onTabSelect = (0, import_react153.useCallback)(
23955
+ const tab = (0, import_react153.useTabStore)({ ...props, selectOnMove: !manual, selectedId: selected });
23956
+ const onTabSelect = (0, import_react154.useCallback)(
23772
23957
  (value) => {
23773
23958
  const selectedValueWithoutNull = value != null ? value : void 0;
23774
23959
  onSelectedIdChange == null ? void 0 : onSelectedIdChange(selectedValueWithoutNull);
@@ -23779,28 +23964,28 @@ var Tabs = ({
23779
23964
  },
23780
23965
  [onSelectedIdChange, useHashForState]
23781
23966
  );
23782
- (0, import_react153.useEffect)(() => {
23967
+ (0, import_react154.useEffect)(() => {
23783
23968
  if (selected && selected !== tab.getState().activeId) {
23784
23969
  tab.setSelectedId(selected);
23785
23970
  }
23786
23971
  }, [selected, tab]);
23787
- return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(import_react152.TabProvider, { store: tab, setSelectedId: onTabSelect, children });
23972
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_react153.TabProvider, { store: tab, setSelectedId: onTabSelect, children });
23788
23973
  };
23789
23974
  var TabButtonGroup = ({ children, ...props }) => {
23790
- return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(import_react152.TabList, { ...props, css: tabButtonGroupStyles, children });
23975
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_react153.TabList, { ...props, css: tabButtonGroupStyles, children });
23791
23976
  };
23792
23977
  var TabButton = ({
23793
23978
  children,
23794
23979
  id,
23795
23980
  ...props
23796
23981
  }) => {
23797
- return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(import_react152.Tab, { type: "button", id, ...props, css: tabButtonStyles, children });
23982
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_react153.Tab, { type: "button", id, ...props, css: tabButtonStyles, children });
23798
23983
  };
23799
23984
  var TabContent = ({
23800
23985
  children,
23801
23986
  ...props
23802
23987
  }) => {
23803
- return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(import_react152.TabPanel, { ...props, children });
23988
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_react153.TabPanel, { ...props, children });
23804
23989
  };
23805
23990
 
23806
23991
  // src/components/Toast/Toast.tsx
@@ -23809,8 +23994,8 @@ var import_react_toastify = require("react-toastify");
23809
23994
 
23810
23995
  // src/components/Toast/Toast.styles.ts
23811
23996
  init_emotion_jsx_shim();
23812
- var import_react154 = require("@emotion/react");
23813
- var toastContainerStyles = import_react154.css`
23997
+ var import_react155 = require("@emotion/react");
23998
+ var toastContainerStyles = import_react155.css`
23814
23999
  ${functionalColors}
23815
24000
 
23816
24001
  --toastify-color-light: white;
@@ -24033,9 +24218,9 @@ var toastContainerStyles = import_react154.css`
24033
24218
  `;
24034
24219
 
24035
24220
  // src/components/Toast/Toast.tsx
24036
- var import_jsx_runtime133 = require("@emotion/react/jsx-runtime");
24221
+ var import_jsx_runtime134 = require("@emotion/react/jsx-runtime");
24037
24222
  var ToastContainer = ({ limit = 4 }) => {
24038
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
24223
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
24039
24224
  import_react_toastify.ToastContainer,
24040
24225
  {
24041
24226
  css: toastContainerStyles,
@@ -24181,6 +24366,8 @@ var ToastContainer = ({ limit = 4 }) => {
24181
24366
  SearchAndFilterOptionsContainer,
24182
24367
  SearchAndFilterProvider,
24183
24368
  SearchAndFilterResultContainer,
24369
+ SearchOnlyContext,
24370
+ SearchOnlyFilter,
24184
24371
  SegmentedControl,
24185
24372
  ShortcutContext,
24186
24373
  ShortcutRevealer,
@@ -24210,6 +24397,7 @@ var ToastContainer = ({ limit = 4 }) => {
24210
24397
  ToastContainer,
24211
24398
  Tooltip,
24212
24399
  TwoColumnLayout,
24400
+ USER_OPERATORS,
24213
24401
  UniformBadge,
24214
24402
  UniformLogo,
24215
24403
  UniformLogoLarge,