@uniformdev/design-system 19.114.0 → 19.114.1-alpha.7

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/esm/index.js CHANGED
@@ -704,6 +704,15 @@ var input = (whiteSpaceWrap) => css2`
704
704
  font-size: var(--fs-sm);
705
705
  margin-right: var(--spacing-base);
706
706
  }
707
+
708
+ &[aria-invalid='true'] {
709
+ border-color: var(--action-destructive-default);
710
+ box-shadow: var(--elevation-100);
711
+
712
+ &:hover {
713
+ border-color: var(--action-destructive-hover);
714
+ }
715
+ }
707
716
  `;
708
717
  var inputError = css2`
709
718
  border-color: var(--action-destructive-default);
@@ -2013,6 +2022,27 @@ var listViewLong = GenIcon({
2013
2022
  }
2014
2023
  ]
2015
2024
  });
2025
+ var filterAdd = GenIcon({
2026
+ tag: "svg",
2027
+ attr: {
2028
+ role: "img",
2029
+ viewBox: "0 0 16 16",
2030
+ fill: "none",
2031
+ strokeWidth: ""
2032
+ },
2033
+ child: [
2034
+ {
2035
+ tag: "path",
2036
+ attr: {
2037
+ stroke: "currentColor",
2038
+ d: "M8 13.3334L6 14V8.33335L3.01333 5.04802C2.7903 4.80264 2.6667 4.48295 2.66666 4.15135V2.66669H13.3333V4.11469C13.3333 4.46828 13.1927 4.80736 12.9427 5.05735L10 8.00002V10M10.6667 12.6667H14.6667M12.6667 10.6667V14.6667",
2039
+ strokeLinejoin: "round",
2040
+ strokeLinecap: "round"
2041
+ },
2042
+ child: []
2043
+ }
2044
+ ]
2045
+ });
2016
2046
  var customIcons = {
2017
2047
  "rectangle-rounded": rectangleRoundedIcon,
2018
2048
  card: cardIcon,
@@ -2039,7 +2069,8 @@ var customIcons = {
2039
2069
  "diamond-fill": diamondFill,
2040
2070
  "magic-wand": magicWand,
2041
2071
  "list-view-short": listViewShort,
2042
- "list-view-long": listViewLong
2072
+ "list-view-long": listViewLong,
2073
+ "filter-add": filterAdd
2043
2074
  };
2044
2075
 
2045
2076
  // src/components/AddListButton/AddListButton.styles.ts
@@ -13345,7 +13376,7 @@ var DashedBox = ({
13345
13376
 
13346
13377
  // src/components/DateTimePicker/DateTimePicker.tsx
13347
13378
  import { getLocalTimeZone as getLocalTimeZone2, parseDate as parseDate2, parseTime as parseTime2 } from "@internationalized/date";
13348
- import { createContext as createContext2, useCallback as useCallback3, useContext as useContext3, useEffect as useEffect4, useMemo, useState as useState5 } from "react";
13379
+ import { createContext as createContext2, useCallback as useCallback3, useContext as useContext3, useEffect as useEffect4, useMemo, useState as useState6 } from "react";
13349
13380
  import { Popover as Popover2, PopoverDisclosure, usePopoverState } from "reakit/Popover";
13350
13381
 
13351
13382
  // src/components/Input/styles/CaptionText.styles.ts
@@ -13996,6 +14027,8 @@ var InputInlineSelect = ({
13996
14027
  // src/components/Input/InputKeywordSearch.tsx
13997
14028
  import { CgClose as CgClose4 } from "@react-icons/all-files/cg/CgClose";
13998
14029
  import { CgSearch } from "@react-icons/all-files/cg/CgSearch";
14030
+ import * as React12 from "react";
14031
+ import { useDebounce } from "react-use";
13999
14032
  import { jsx as jsx53 } from "@emotion/react/jsx-runtime";
14000
14033
  var InputKeywordSearch = ({
14001
14034
  onSearchTextChanged,
@@ -14017,6 +14050,9 @@ var InputKeywordSearch = ({
14017
14050
  e.preventDefault();
14018
14051
  }
14019
14052
  };
14053
+ const handleClear = () => {
14054
+ onClear ? onClear() : onSearchTextChanged("");
14055
+ };
14020
14056
  return /* @__PURE__ */ jsx53(
14021
14057
  Input,
14022
14058
  {
@@ -14025,7 +14061,16 @@ var InputKeywordSearch = ({
14025
14061
  placeholder,
14026
14062
  showLabel: false,
14027
14063
  value,
14028
- icon: value ? /* @__PURE__ */ jsx53("button", { css: inputSearchCloseBtn, onClick: onClear, type: "button", children: /* @__PURE__ */ jsx53(Icon, { icon: CgClose4, iconColor: "red", size: "1rem" }) }) : /* @__PURE__ */ jsx53(Icon, { icon: CgSearch, iconColor: "gray", size: "1rem" }),
14064
+ icon: value ? /* @__PURE__ */ jsx53(
14065
+ "button",
14066
+ {
14067
+ css: inputSearchCloseBtn,
14068
+ onClick: handleClear,
14069
+ type: "button",
14070
+ "data-testid": "keyword-search-clear-button",
14071
+ children: /* @__PURE__ */ jsx53(Icon, { icon: CgClose4, iconColor: "red", size: "1rem" })
14072
+ }
14073
+ ) : /* @__PURE__ */ jsx53(Icon, { icon: CgSearch, iconColor: "gray", size: "1rem" }),
14029
14074
  onChange: handleSearchTextChanged,
14030
14075
  onKeyPress: preventSubmitOnField,
14031
14076
  disabled: disabled2,
@@ -14042,6 +14087,16 @@ var InputKeywordSearch = ({
14042
14087
  }
14043
14088
  );
14044
14089
  };
14090
+ var DebouncedInputKeywordSearch = ({
14091
+ delay = 300,
14092
+ onSearchTextChanged,
14093
+ defaultValue,
14094
+ ...props
14095
+ }) => {
14096
+ const [searchText, setSearchText] = React12.useState(defaultValue != null ? defaultValue : "");
14097
+ useDebounce(() => onSearchTextChanged(searchText), delay, [searchText]);
14098
+ return /* @__PURE__ */ jsx53(InputKeywordSearch, { ...props, value: searchText, onSearchTextChanged: setSearchText });
14099
+ };
14045
14100
 
14046
14101
  // src/components/Input/InputSelect.tsx
14047
14102
  import { forwardRef as forwardRef8 } from "react";
@@ -14110,7 +14165,7 @@ var InputSelect = forwardRef8(
14110
14165
 
14111
14166
  // src/components/Input/InputTime.tsx
14112
14167
  import { parseTime } from "@internationalized/date";
14113
- import * as React12 from "react";
14168
+ import * as React13 from "react";
14114
14169
  import { useCallback as useCallback2 } from "react";
14115
14170
  import {
14116
14171
  DateInput,
@@ -14174,7 +14229,7 @@ function tryParseTime(isoTime) {
14174
14229
  return void 0;
14175
14230
  }
14176
14231
  }
14177
- var InputTime = React12.forwardRef(
14232
+ var InputTime = React13.forwardRef(
14178
14233
  ({
14179
14234
  id,
14180
14235
  label,
@@ -14255,9 +14310,9 @@ var InputTime = React12.forwardRef(
14255
14310
  InputTime.displayName = "InputTime";
14256
14311
 
14257
14312
  // src/components/Input/InputToggle.tsx
14258
- import * as React13 from "react";
14313
+ import * as React14 from "react";
14259
14314
  import { jsx as jsx56, jsxs as jsxs34 } from "@emotion/react/jsx-runtime";
14260
- var InputToggle = React13.forwardRef(
14315
+ var InputToggle = React14.forwardRef(
14261
14316
  ({
14262
14317
  label,
14263
14318
  type,
@@ -14567,9 +14622,9 @@ var DateTimePicker = ({
14567
14622
  () => tryParseAbsoluteToDateString(maxVisible, value == null ? void 0 : value.timeZone),
14568
14623
  [maxVisible, value == null ? void 0 : value.timeZone]
14569
14624
  );
14570
- const [draftDate, setDraftDate] = useState5(null);
14571
- const [draftTime, setDraftTime] = useState5(null);
14572
- const [draftTimeZone, setDraftTimeZone] = useState5(() => {
14625
+ const [draftDate, setDraftDate] = useState6(null);
14626
+ const [draftTime, setDraftTime] = useState6(null);
14627
+ const [draftTimeZone, setDraftTimeZone] = useState6(() => {
14573
14628
  const timeZone = (parsedValue == null ? void 0 : parsedValue.timeZone) || getLocalTimeZone2();
14574
14629
  return TIMEZONE_OPTIONS.find(({ value: value2 }) => value2 === timeZone);
14575
14630
  });
@@ -14704,7 +14759,7 @@ var DateTimePicker = ({
14704
14759
  // src/components/DescriptionList/DescriptionList.tsx
14705
14760
  import { TbCheck } from "@react-icons/all-files/tb/TbCheck";
14706
14761
  import { TbMinus } from "@react-icons/all-files/tb/TbMinus";
14707
- import React14 from "react";
14762
+ import React15 from "react";
14708
14763
 
14709
14764
  // src/components/DescriptionList/DescriptionList.styles.ts
14710
14765
  import { css as css53 } from "@emotion/react";
@@ -14735,7 +14790,7 @@ var descriptionListValueStyles = css53`
14735
14790
 
14736
14791
  // src/components/DescriptionList/DescriptionList.tsx
14737
14792
  import { jsx as jsx62, jsxs as jsxs39 } from "@emotion/react/jsx-runtime";
14738
- var DescriptionList = React14.forwardRef(
14793
+ var DescriptionList = React15.forwardRef(
14739
14794
  ({ items, variant = "horizontal", ...listProps }, ref) => {
14740
14795
  if (!(items == null ? void 0 : items.length)) {
14741
14796
  return null;
@@ -14746,7 +14801,7 @@ var DescriptionList = React14.forwardRef(
14746
14801
  ref,
14747
14802
  css: variant === "vertical" ? descriptionListVertical : descriptionListHorizontal,
14748
14803
  ...listProps,
14749
- children: items == null ? void 0 : items.map(({ label, value }) => /* @__PURE__ */ jsxs39(React14.Fragment, { children: [
14804
+ children: items == null ? void 0 : items.map(({ label, value }) => /* @__PURE__ */ jsxs39(React15.Fragment, { children: [
14750
14805
  /* @__PURE__ */ jsx62("dt", { css: descriptionListLabelStyles, children: label }),
14751
14806
  /* @__PURE__ */ jsx62("dd", { css: descriptionListValueStyles, children: typeof value === "boolean" ? /* @__PURE__ */ jsx62(DescriptionListValueBoolean, { value }) : value })
14752
14807
  ] }, label))
@@ -14762,7 +14817,7 @@ var DescriptionListValueBoolean = ({ value }) => {
14762
14817
  };
14763
14818
 
14764
14819
  // src/components/Details/Details.tsx
14765
- import * as React15 from "react";
14820
+ import * as React16 from "react";
14766
14821
 
14767
14822
  // src/components/Details/Details.styles.ts
14768
14823
  import { css as css54 } from "@emotion/react";
@@ -14821,9 +14876,9 @@ var Details = ({
14821
14876
  onChange,
14822
14877
  ...props
14823
14878
  }) => {
14824
- const detailsRef = React15.useRef(null);
14825
- const [internalOpen, setInternalOpen] = React15.useState(isOpenByDefault);
14826
- const memoizedIsOpen = React15.useMemo(() => {
14879
+ const detailsRef = React16.useRef(null);
14880
+ const [internalOpen, setInternalOpen] = React16.useState(isOpenByDefault);
14881
+ const memoizedIsOpen = React16.useMemo(() => {
14827
14882
  return isOpen !== void 0 ? isOpen : internalOpen;
14828
14883
  }, [internalOpen, isOpen]);
14829
14884
  return /* @__PURE__ */ jsxs40(
@@ -14866,7 +14921,7 @@ var Details = ({
14866
14921
 
14867
14922
  // src/components/Drawer/Drawer.tsx
14868
14923
  import { CgChevronRight } from "@react-icons/all-files/cg/CgChevronRight";
14869
- import React17, { createContext as createContext4, useContext as useContext5, useEffect as useEffect5, useRef as useRef4, useState as useState8 } from "react";
14924
+ import React18, { createContext as createContext4, useContext as useContext5, useEffect as useEffect5, useRef as useRef4, useState as useState9 } from "react";
14870
14925
  import { createPortal } from "react-dom";
14871
14926
 
14872
14927
  // src/components/Drawer/Drawer.styles.ts
@@ -14977,7 +15032,7 @@ var drawerWrapperOverlayStyles = css55`
14977
15032
  `;
14978
15033
 
14979
15034
  // src/components/Drawer/DrawerProvider.tsx
14980
- import { createContext as createContext3, useCallback as useCallback4, useContext as useContext4, useRef as useRef3, useState as useState7 } from "react";
15035
+ import { createContext as createContext3, useCallback as useCallback4, useContext as useContext4, useRef as useRef3, useState as useState8 } from "react";
14981
15036
  import { jsx as jsx64 } from "@emotion/react/jsx-runtime";
14982
15037
  var DrawerContext = createContext3({
14983
15038
  providerId: "",
@@ -14995,9 +15050,9 @@ function renderDrawerId(drawer) {
14995
15050
  return `${drawer.stackId ? `\u{1F95E} ${drawer.stackId} ` : ""}\u{1F194} ${drawer.id}${drawer.instanceKey ? ` \u{1F511} ${drawer.instanceKey}` : ""}`;
14996
15051
  }
14997
15052
  var DrawerProvider = ({ children }) => {
14998
- const [drawersRegistry, setDrawersRegistry] = useState7([]);
15053
+ const [drawersRegistry, setDrawersRegistry] = useState8([]);
14999
15054
  const providerId = useRef3(crypto.randomUUID());
15000
- const [drawerTakeoverStackId, setDrawerTakeoverStackId] = useState7(void 0);
15055
+ const [drawerTakeoverStackId, setDrawerTakeoverStackId] = useState8(void 0);
15001
15056
  useShortcut({
15002
15057
  handler: () => {
15003
15058
  var _a, _b;
@@ -15111,7 +15166,7 @@ var CurrentDrawerContext = createContext4({});
15111
15166
  var useCurrentDrawer = () => {
15112
15167
  return useContext5(CurrentDrawerContext);
15113
15168
  };
15114
- var Drawer = React17.forwardRef(
15169
+ var Drawer = React18.forwardRef(
15115
15170
  ({ minWidth, maxWidth, position, leftAligned, ...drawerProps }, ref) => {
15116
15171
  var _a;
15117
15172
  const { stackId: inheritedStackId } = useCurrentDrawer();
@@ -15139,7 +15194,7 @@ var DrawerInner = ({
15139
15194
  }) => {
15140
15195
  const { registerDrawer, unregisterDrawer, providerId } = useDrawer();
15141
15196
  const closeButtonRef = useRef4(null);
15142
- const [rendererElement, setRendererElement] = useState8(null);
15197
+ const [rendererElement, setRendererElement] = useState9(null);
15143
15198
  useEffect5(() => {
15144
15199
  registerDrawer({
15145
15200
  drawer: {
@@ -15412,7 +15467,7 @@ var IconButton = forwardRef12(
15412
15467
  IconButton.displayName = "IconButton";
15413
15468
 
15414
15469
  // src/components/Image/Image.tsx
15415
- import { useCallback as useCallback5, useEffect as useEffect8, useState as useState9 } from "react";
15470
+ import { useCallback as useCallback5, useEffect as useEffect8, useState as useState10 } from "react";
15416
15471
 
15417
15472
  // src/components/Image/Image.styles.ts
15418
15473
  import { css as css58 } from "@emotion/react";
@@ -15513,8 +15568,8 @@ function Image({
15513
15568
  height,
15514
15569
  ...imgAttribs
15515
15570
  }) {
15516
- const [loading, setLoading] = useState9(true);
15517
- const [loadErrorText, setLoadErrorText] = useState9("");
15571
+ const [loading, setLoading] = useState10(true);
15572
+ const [loadErrorText, setLoadErrorText] = useState10("");
15518
15573
  const errorText = "The text you provided is not a valid URL";
15519
15574
  const updateImageSrc = useCallback5(() => {
15520
15575
  let message = "";
@@ -15868,7 +15923,7 @@ var EditTeamIntegrationTile = ({
15868
15923
  // src/components/Tiles/IntegrationComingSoon.tsx
15869
15924
  import { css as css61 } from "@emotion/react";
15870
15925
  import { CgHeart } from "@react-icons/all-files/cg/CgHeart";
15871
- import { useEffect as useEffect9, useState as useState10 } from "react";
15926
+ import { useEffect as useEffect9, useState as useState11 } from "react";
15872
15927
  import { jsx as jsx76, jsxs as jsxs49 } from "@emotion/react/jsx-runtime";
15873
15928
  var IntegrationComingSoon = ({
15874
15929
  name,
@@ -15878,7 +15933,7 @@ var IntegrationComingSoon = ({
15878
15933
  timing = 1e3,
15879
15934
  ...props
15880
15935
  }) => {
15881
- const [upVote, setUpVote] = useState10(false);
15936
+ const [upVote, setUpVote] = useState11(false);
15882
15937
  const handleUpVoteInteraction = () => {
15883
15938
  setUpVote((prev) => !prev);
15884
15939
  onUpVoteClick();
@@ -17005,7 +17060,7 @@ var MediaCard = ({
17005
17060
 
17006
17061
  // src/components/Modal/Modal.tsx
17007
17062
  import { CgClose as CgClose5 } from "@react-icons/all-files/cg/CgClose";
17008
- import React20, { useEffect as useEffect11, useRef as useRef6 } from "react";
17063
+ import React21, { useEffect as useEffect11, useRef as useRef6 } from "react";
17009
17064
 
17010
17065
  // src/components/Modal/Modal.styles.ts
17011
17066
  import { css as css76 } from "@emotion/react";
@@ -17082,7 +17137,7 @@ var modalContentStyles = css76`
17082
17137
  // src/components/Modal/Modal.tsx
17083
17138
  import { jsx as jsx94, jsxs as jsxs63 } from "@emotion/react/jsx-runtime";
17084
17139
  var defaultModalHeight = "51rem";
17085
- var Modal = React20.forwardRef(
17140
+ var Modal = React21.forwardRef(
17086
17141
  ({
17087
17142
  header: header2,
17088
17143
  children,
@@ -17711,7 +17766,7 @@ var ParameterGroup = forwardRef13(
17711
17766
  import { forwardRef as forwardRef15, useDeferredValue } from "react";
17712
17767
 
17713
17768
  // src/components/ParameterInputs/ParameterImagePreview.tsx
17714
- import { useState as useState11 } from "react";
17769
+ import { useState as useState12 } from "react";
17715
17770
  import { createPortal as createPortal2 } from "react-dom";
17716
17771
 
17717
17772
  // src/components/ParameterInputs/styles/ParameterImage.styles.ts
@@ -17754,7 +17809,7 @@ var previewModalImage = css82`
17754
17809
  // src/components/ParameterInputs/ParameterImagePreview.tsx
17755
17810
  import { Fragment as Fragment13, jsx as jsx100, jsxs as jsxs68 } from "@emotion/react/jsx-runtime";
17756
17811
  function ParameterImagePreview({ imageSrc }) {
17757
- const [showModal, setShowModal] = useState11(false);
17812
+ const [showModal, setShowModal] = useState12(false);
17758
17813
  return imageSrc ? /* @__PURE__ */ jsxs68("div", { css: previewWrapper, children: [
17759
17814
  /* @__PURE__ */ jsx100(PreviewImageModal, { open: showModal, imageSrc, onRequestClose: () => setShowModal(false) }),
17760
17815
  /* @__PURE__ */ jsx100(
@@ -17786,7 +17841,7 @@ var PreviewImageModal = ({ open, onRequestClose, imageSrc }) => {
17786
17841
 
17787
17842
  // src/components/ParameterInputs/ParameterShell.tsx
17788
17843
  import { css as css84 } from "@emotion/react";
17789
- import { useState as useState12 } from "react";
17844
+ import { useState as useState13 } from "react";
17790
17845
 
17791
17846
  // src/components/ParameterInputs/ParameterLabel.tsx
17792
17847
  import { jsx as jsx101 } from "@emotion/react/jsx-runtime";
@@ -17907,7 +17962,7 @@ var ParameterShell = ({
17907
17962
  isParameterGroup = false,
17908
17963
  ...props
17909
17964
  }) => {
17910
- const [manualErrorMessage, setManualErrorMessage] = useState12(void 0);
17965
+ const [manualErrorMessage, setManualErrorMessage] = useState13(void 0);
17911
17966
  const setErrorMessage = (message) => setManualErrorMessage(message);
17912
17967
  const errorMessaging = errorMessage || manualErrorMessage;
17913
17968
  return /* @__PURE__ */ jsxs69("div", { css: inputContainer2, ...props, id, children: [
@@ -18525,7 +18580,7 @@ import {
18525
18580
  ElementNode as ElementNode2,
18526
18581
  FOCUS_COMMAND
18527
18582
  } from "lexical";
18528
- import { useCallback as useCallback8, useEffect as useEffect13, useRef as useRef7, useState as useState13 } from "react";
18583
+ import { useCallback as useCallback8, useEffect as useEffect13, useRef as useRef7, useState as useState14 } from "react";
18529
18584
 
18530
18585
  // src/components/ParameterInputs/rich-text/utils.ts
18531
18586
  import { $isAtNodeEnd } from "@lexical/selection";
@@ -18868,10 +18923,10 @@ function LinkNodePlugin({ onConnectLink, getBoundPath }) {
18868
18923
  return path;
18869
18924
  };
18870
18925
  const [editor] = useLexicalComposerContext2();
18871
- const [linkPopoverState, setLinkPopoverState] = useState13();
18926
+ const [linkPopoverState, setLinkPopoverState] = useState14();
18872
18927
  const linkPopoverElRef = useRef7(null);
18873
- const [isEditorFocused, setIsEditorFocused] = useState13(false);
18874
- const [isLinkPopoverFocused, setIsLinkPopoverFocused] = useState13(false);
18928
+ const [isEditorFocused, setIsEditorFocused] = useState14(false);
18929
+ const [isLinkPopoverFocused, setIsLinkPopoverFocused] = useState14(false);
18875
18930
  useEffect13(() => {
18876
18931
  if (!isEditorFocused && !isLinkPopoverFocused) {
18877
18932
  setLinkPopoverState(void 0);
@@ -19128,7 +19183,7 @@ import {
19128
19183
  FORMAT_TEXT_COMMAND,
19129
19184
  SELECTION_CHANGE_COMMAND
19130
19185
  } from "lexical";
19131
- import { useCallback as useCallback9, useEffect as useEffect15, useMemo as useMemo4, useState as useState14 } from "react";
19186
+ import { useCallback as useCallback9, useEffect as useEffect15, useMemo as useMemo4, useState as useState15 } from "react";
19132
19187
  import { Fragment as Fragment17, jsx as jsx110, jsxs as jsxs74 } from "@emotion/react/jsx-runtime";
19133
19188
  var toolbar = css87`
19134
19189
  background: var(--gray-50);
@@ -19439,7 +19494,7 @@ var useRichTextToolbarState = ({ config }) => {
19439
19494
  const enabledBuiltInFormatsWithoutIcon = enabledBuiltInFormats.filter(
19440
19495
  (format) => !FORMATS_WITH_ICON.has(format.type)
19441
19496
  );
19442
- const [activeFormats, setActiveFormats] = useState14([]);
19497
+ const [activeFormats, setActiveFormats] = useState15([]);
19443
19498
  const visibleFormatsWithIcon = useMemo4(() => {
19444
19499
  const visibleFormats = /* @__PURE__ */ new Set();
19445
19500
  activeFormats.filter((type) => FORMATS_WITH_ICON.has(type)).forEach((type) => {
@@ -19460,7 +19515,7 @@ var useRichTextToolbarState = ({ config }) => {
19460
19515
  });
19461
19516
  return richTextBuiltInFormats.filter((format) => visibleFormats.has(format.type));
19462
19517
  }, [activeFormats, enabledBuiltInFormatsWithoutIcon]);
19463
- const [activeElement, setActiveElement] = useState14("paragraph");
19518
+ const [activeElement, setActiveElement] = useState15("paragraph");
19464
19519
  const enabledTextualElements = enabledBuiltInElements.filter(
19465
19520
  (element) => TEXTUAL_ELEMENTS.includes(element.type)
19466
19521
  );
@@ -19475,7 +19530,7 @@ var useRichTextToolbarState = ({ config }) => {
19475
19530
  }
19476
19531
  );
19477
19532
  }, [activeElement, (_a = config == null ? void 0 : config.elements) == null ? void 0 : _a.builtIn, enabledTextualElements]);
19478
- const [isLink, setIsLink] = useState14(false);
19533
+ const [isLink, setIsLink] = useState15(false);
19479
19534
  const linkElementVisible = useMemo4(() => {
19480
19535
  return enabledBuiltInElements.some((element) => element.type === "link") || isLink;
19481
19536
  }, [isLink, enabledBuiltInElements]);
@@ -20057,134 +20112,1279 @@ var ProgressListItem = ({
20057
20112
  ] });
20058
20113
  };
20059
20114
 
20060
- // src/components/SegmentedControl/SegmentedControl.tsx
20061
- import { css as css93 } from "@emotion/react";
20062
- import { CgCheck as CgCheck4 } from "@react-icons/all-files/cg/CgCheck";
20063
- import { useCallback as useCallback10, useMemo as useMemo6 } from "react";
20115
+ // src/components/SearchAndFilter/constants.ts
20116
+ var NUMBER_OPERATORS = [
20117
+ {
20118
+ label: "equals...",
20119
+ symbol: "=",
20120
+ value: "eq",
20121
+ editorType: "number"
20122
+ },
20123
+ {
20124
+ label: "does not equal...",
20125
+ symbol: "\u2260",
20126
+ value: "neq",
20127
+ editorType: "number"
20128
+ },
20129
+ {
20130
+ label: "greater than...",
20131
+ symbol: ">",
20132
+ value: "gt",
20133
+ editorType: "number"
20134
+ },
20135
+ {
20136
+ label: "greater than or equal to...",
20137
+ symbol: "\u2265",
20138
+ value: "gte",
20139
+ editorType: "number"
20140
+ },
20141
+ {
20142
+ label: "less than...",
20143
+ symbol: "<",
20144
+ value: "lt",
20145
+ editorType: "number"
20146
+ },
20147
+ {
20148
+ label: "less than or equal to...",
20149
+ symbol: "\u2264",
20150
+ value: "lte",
20151
+ editorType: "number"
20152
+ },
20153
+ {
20154
+ label: "is empty...",
20155
+ value: "ndef",
20156
+ editorType: "empty"
20157
+ },
20158
+ {
20159
+ label: "is between...",
20160
+ value: "between",
20161
+ editorType: "numberRange"
20162
+ },
20163
+ {
20164
+ label: "is not empty...",
20165
+ value: "def",
20166
+ editorType: "empty"
20167
+ },
20168
+ {
20169
+ label: "is not between...",
20170
+ value: "nbetween",
20171
+ editorType: "numberRange"
20172
+ }
20173
+ ];
20174
+ var DATE_OPERATORS = [
20175
+ {
20176
+ label: "is...",
20177
+ value: "eq",
20178
+ editorType: "date"
20179
+ },
20180
+ {
20181
+ label: "is between...",
20182
+ value: "between",
20183
+ editorType: "dateRange"
20184
+ },
20185
+ {
20186
+ label: "is before...",
20187
+ value: "lt",
20188
+ editorType: "date"
20189
+ },
20190
+ {
20191
+ label: "is after...",
20192
+ value: "gt",
20193
+ editorType: "date"
20194
+ },
20195
+ {
20196
+ label: "is on or before...",
20197
+ value: "lte",
20198
+ editorType: "date"
20199
+ },
20200
+ {
20201
+ label: "is on or after...",
20202
+ value: "gte",
20203
+ editorType: "date"
20204
+ },
20205
+ {
20206
+ label: "is empty...",
20207
+ value: "ndef",
20208
+ editorType: "empty"
20209
+ },
20210
+ {
20211
+ label: "is not...",
20212
+ value: "neq",
20213
+ editorType: "date"
20214
+ },
20215
+ {
20216
+ label: "is not between...",
20217
+ value: "nbetween",
20218
+ editorType: "dateRange"
20219
+ },
20220
+ {
20221
+ label: "is not empty...",
20222
+ value: "def",
20223
+ editorType: "empty"
20224
+ }
20225
+ ];
20226
+ var TEXTBOX_OPERATORS = [
20227
+ {
20228
+ label: "is...",
20229
+ value: "eq",
20230
+ editorType: "text"
20231
+ },
20232
+ {
20233
+ label: "is empty...",
20234
+ value: "ndef",
20235
+ editorType: "empty"
20236
+ },
20237
+ {
20238
+ label: "contains...",
20239
+ value: "match",
20240
+ editorType: "text"
20241
+ },
20242
+ {
20243
+ label: "is not...",
20244
+ value: "neq",
20245
+ editorType: "text"
20246
+ },
20247
+ {
20248
+ label: "is not empty...",
20249
+ value: "def",
20250
+ editorType: "empty"
20251
+ }
20252
+ ];
20253
+ var RICHTEXT_OPERATORS = [
20254
+ {
20255
+ label: "is empty...",
20256
+ value: "ndef",
20257
+ editorType: "empty"
20258
+ },
20259
+ {
20260
+ label: "contains...",
20261
+ value: "match",
20262
+ editorType: "text"
20263
+ },
20264
+ {
20265
+ label: "is not empty...",
20266
+ value: "def",
20267
+ editorType: "empty"
20268
+ }
20269
+ ];
20270
+ var CHECKBOX_OPERATORS = [
20271
+ {
20272
+ label: "is checked...",
20273
+ value: "def",
20274
+ editorType: "empty"
20275
+ },
20276
+ {
20277
+ label: "is not checked...",
20278
+ value: "ndef",
20279
+ editorType: "empty"
20280
+ }
20281
+ ];
20282
+ var STATUS_OPERATORS = [
20283
+ {
20284
+ label: "is...",
20285
+ value: "eq",
20286
+ editorType: "statusSingleChoice"
20287
+ },
20288
+ {
20289
+ label: "contains...",
20290
+ value: "match",
20291
+ editorType: "statusMultiChoice"
20292
+ },
20293
+ {
20294
+ label: "is not...",
20295
+ value: "neq",
20296
+ editorType: "statusSingleChoice"
20297
+ },
20298
+ {
20299
+ label: "does not contain...",
20300
+ value: "nin",
20301
+ editorType: "statusMultiChoice"
20302
+ }
20303
+ ];
20304
+ var SYSTEM_FIELD_OPERATORS = [
20305
+ {
20306
+ label: "is...",
20307
+ value: "eq",
20308
+ editorType: "singleChoice"
20309
+ },
20310
+ {
20311
+ label: "is any of...",
20312
+ value: "in",
20313
+ editorType: "multiChoice"
20314
+ },
20315
+ {
20316
+ label: "is not...",
20317
+ value: "neq",
20318
+ editorType: "singleChoice"
20319
+ },
20320
+ {
20321
+ label: "is none of...",
20322
+ value: "nin",
20323
+ editorType: "multiChoice"
20324
+ }
20325
+ ];
20326
+ var CONTENT_TYPE_OPERATORS = [
20327
+ {
20328
+ label: "is...",
20329
+ value: "eq",
20330
+ editorType: "singleChoice"
20331
+ },
20332
+ {
20333
+ label: "is any of...",
20334
+ value: "in",
20335
+ editorType: "multiChoice"
20336
+ },
20337
+ {
20338
+ label: "is not...",
20339
+ value: "neq",
20340
+ editorType: "singleChoice"
20341
+ },
20342
+ {
20343
+ label: "is none of...",
20344
+ value: "nin",
20345
+ editorType: "multiChoice"
20346
+ }
20347
+ ];
20348
+ var LOCALE_OPERATORS = [
20349
+ {
20350
+ label: "is...",
20351
+ value: "eq",
20352
+ editorType: "singleChoice"
20353
+ },
20354
+ {
20355
+ label: "is any of...",
20356
+ value: "in",
20357
+ editorType: "multiChoice"
20358
+ },
20359
+ {
20360
+ label: "is not...",
20361
+ value: "neq",
20362
+ editorType: "singleChoice"
20363
+ },
20364
+ {
20365
+ label: "is none of...",
20366
+ value: "nin",
20367
+ editorType: "multiChoice"
20368
+ }
20369
+ ];
20064
20370
 
20065
- // src/components/SegmentedControl/SegmentedControl.styles.ts
20371
+ // src/components/SearchAndFilter/styles/SearchAndFilter.styles.ts
20066
20372
  import { css as css92 } from "@emotion/react";
20067
- var segmentedControlStyles = css92`
20068
- --segmented-control-rounded-value: var(--rounded-base);
20069
- --segmented-control-border-width: 1px;
20070
- --segmented-control-selected-color: var(--brand-secondary-3);
20071
- --segmented-control-first-border-radius: var(--segmented-control-rounded-value) 0 0
20072
- var(--segmented-control-rounded-value);
20073
- --segmented-control-last-border-radius: 0 var(--segmented-control-rounded-value)
20074
- var(--segmented-control-rounded-value) 0;
20373
+ var SearchAndFilterContainer = css92``;
20374
+ var SearchAndFilterControlsWrapper = css92`
20375
+ align-items: stretch;
20376
+ display: grid;
20377
+ grid-template-columns: auto 1fr 1fr;
20378
+ gap: var(--spacing-base);
20379
+ `;
20380
+ var ConditionalFilterRow = css92`
20381
+ display: grid;
20382
+ grid-template-columns: 35px 1fr;
20383
+ gap: var(--spacing-sm);
20384
+ padding: 0 var(--spacing-sm);
20385
+ margin-left: var(--spacing-base);
20075
20386
 
20076
- position: relative;
20077
- display: flex;
20078
- justify-content: flex-start;
20079
- width: fit-content;
20080
- background-color: var(--gray-300);
20081
- padding: var(--segmented-control-border-width);
20082
- gap: var(--segmented-control-border-width);
20083
- border-radius: calc(var(--segmented-control-rounded-value) + var(--segmented-control-border-width));
20084
- font-size: var(--fs-xs);
20387
+ ${cq("380px")} {
20388
+ align-items: center;
20389
+ }
20390
+
20391
+ &:first-of-type {
20392
+ margin-left: 0;
20393
+ grid-template-columns: 50px 1fr;
20394
+ }
20395
+
20396
+ @media (prefers-reduced-motion: no-preference) {
20397
+ animation: ${fadeInLtr} var(--duration-fast) var(--timing-ease-out);
20398
+ }
20085
20399
  `;
20086
- var segmentedControlVerticalStyles = css92`
20400
+ var ConditionalInputRow = css92`
20401
+ display: flex;
20402
+ gap: var(--spacing-sm);
20087
20403
  flex-direction: column;
20088
- --segmented-control-first-border-radius: var(--segmented-control-rounded-value)
20089
- var(--segmented-control-rounded-value) 0 0;
20090
- --segmented-control-last-border-radius: 0 0 var(--segmented-control-rounded-value)
20091
- var(--segmented-control-rounded-value);
20092
- `;
20093
- var segmentedControlItemStyles = css92`
20094
- &:first-of-type label {
20095
- border-radius: var(--segmented-control-first-border-radius);
20404
+
20405
+ ${cq("380px")} {
20406
+ align-items: center;
20407
+ flex-direction: row;
20096
20408
  }
20097
- &:last-of-type label {
20098
- border-radius: var(--segmented-control-last-border-radius);
20409
+ ${cq("580px")} {
20410
+ display: grid;
20411
+ grid-template-columns: repeat(4, minmax(160px, auto)) 32px;
20099
20412
  }
20100
20413
  `;
20101
- var segmentedControlInputStyles = css92`
20102
- ${accessibleHidden}
20414
+ var SearchInput = css92`
20415
+ ${input("nowrap")}
20416
+ border-radius: var(--rounded-full);
20417
+ padding: var(--spacing-sm) var(--spacing-base);
20418
+ font-size: var(--fs-sm);
20419
+ padding-right: var(--spacing-2xl);
20103
20420
  `;
20104
- var segmentedControlLabelStyles = (checked, disabled2) => css92`
20105
- position: relative;
20106
- display: flex;
20421
+ var FilterButton = css92`
20107
20422
  align-items: center;
20108
- justify-content: center;
20109
- height: 2rem;
20110
- padding-inline: var(--spacing-base);
20111
- background-color: white;
20112
- transition-property: background-color, color, box-shadow;
20113
- transition-duration: var(--duration-xfast);
20114
- transition-timing-function: ease-in-out;
20115
- z-index: 1;
20116
- cursor: pointer;
20117
-
20118
- &:has(:checked:not(:disabled)) {
20119
- background-color: var(--segmented-control-selected-color);
20120
- outline: var(--segmented-control-border-width) solid var(--segmented-control-selected-color);
20121
- box-shadow: 0 0.43em 1.7em 0 rgba(0, 0, 0, 0.15);
20122
- color: white;
20123
- -webkit-text-stroke-width: thin;
20124
- z-index: 0;
20125
- }
20423
+ background: var(--white);
20424
+ border: 1px solid var(--gray-300);
20425
+ border-radius: var(--rounded-full);
20426
+ color: var(--typography-base);
20427
+ display: flex;
20428
+ gap: var(--spacing-sm);
20429
+ padding: var(--spacing-sm) var(--spacing-base);
20430
+ transition: color var(--duration-fast) var(--timing-ease-out),
20431
+ background-color var(--duration-fast) var(--timing-ease-out);
20126
20432
 
20127
- &:hover:not(:has(:disabled, :checked)) {
20128
- background-color: var(--gray-100);
20433
+ svg {
20434
+ color: var(--gray-300);
20435
+ transition: color var(--duration-fast) var(--timing-ease-out);
20129
20436
  }
20130
20437
 
20131
- &:has(:disabled) {
20132
- color: var(--gray-400);
20133
- cursor: default;
20134
- }
20438
+ &:focus,
20439
+ &:hover {
20440
+ outline: none;
20441
+ background: var(--gray-300);
20135
20442
 
20136
- &:has(:checked:disabled) {
20137
- color: var(--gray-50);
20138
- background-color: var(--gray-400);
20443
+ svg {
20444
+ color: var(--typography-base);
20445
+ }
20139
20446
  }
20140
20447
 
20141
- // Firefox fallback using emotion variables
20142
- // we can delete this whole block of code and variables in SegmentedControl.tsx
20143
- // once Firefox supports :has selector
20144
- @supports not selector(:has(*)) {
20145
- // equivalent to &:has(:checked:not(:disabled))
20146
- ${checked && !disabled2 ? `
20147
- background-color: var(--segmented-control-selected-color);
20148
- outline: var(--segmented-control-border-width) solid var(--segmented-control-selected-color);
20149
- box-shadow: 0 0.43em 1.7em 0 rgba(0, 0, 0, 0.15);
20150
- color: white;
20151
- -webkit-text-stroke-width: thin;
20152
- z-index: 0;` : void 0}
20448
+ :where([aria-expanded='true']) {
20449
+ background: var(--purple-rain-100);
20153
20450
 
20154
- // equivalent to &:hover:not(:has(:disabled, :checked))
20155
- &:hover {
20156
- ${!checked && !disabled2 ? `background-color: var(--gray-100);` : void 0}
20451
+ svg {
20452
+ color: var(--typography-base);
20157
20453
  }
20158
-
20159
- // equivalent to &:has(:disabled)
20160
- ${disabled2 ? `
20161
- color: var(--gray-400);
20162
- cursor: default;` : void 0}
20163
-
20164
- // equivalent to &:has(:checked:disabled)
20454
+ }
20455
+ `;
20456
+ var FilterButtonWithOptions = css92`
20457
+ background: var(--purple-rain-100);
20458
+ color: var(--typography-base);
20459
+ svg {
20460
+ color: var(--typography-base);
20461
+ }
20462
+ `;
20463
+ var SearchIcon = css92`
20464
+ color: var(--icon-color);
20465
+ position: absolute;
20466
+ inset: 0 var(--spacing-base) 0 auto;
20467
+ margin: auto;
20468
+ transition: color var(--duration-fast) var(--timing-ease-out);
20469
+ `;
20470
+ var AddConditionalBtn = css92`
20471
+ align-items: center;
20472
+ background: transparent;
20473
+ border: none;
20474
+ color: var(--primary-action-default);
20475
+ display: flex;
20476
+ gap: var(--spacing-sm);
20477
+ transition: color var(--duration-fast) var(--timing-ease-out);
20478
+ padding: 0;
20479
+ font-size: var(--fs-sm);
20480
+
20481
+ &:hover,
20482
+ &:focus {
20483
+ color: var(--primary-action-hover);
20484
+ }
20485
+ `;
20486
+ var Title = css92`
20487
+ color: var(--typography-light);
20488
+ `;
20489
+ var ResetConditionsBtn = css92`
20490
+ background: transparent;
20491
+ border: none;
20492
+ color: var(--action-destructive-default);
20493
+ transition: color var(--duration-fast) var(--timing-ease-out);
20494
+ padding: 0;
20495
+
20496
+ &:hover,
20497
+ &:focus {
20498
+ color: var(--action-destructive-hover);
20499
+ }
20500
+ `;
20501
+ var IconBtn = css92`
20502
+ background: transparent;
20503
+ border: none;
20504
+ padding: var(--spacing-sm);
20505
+ `;
20506
+ var CloseBtn = css92`
20507
+ color: var(--gray-500);
20508
+ background: transparent;
20509
+ border: none;
20510
+ padding: 0;
20511
+ position: absolute;
20512
+ top: var(--spacing-base);
20513
+ right: var(--spacing-base);
20514
+ `;
20515
+ var SearchAndFilterOptionsContainer = css92`
20516
+ background: var(--gray-50);
20517
+ border: 1px solid var(--gray-300);
20518
+ border-radius: var(--rounded-base);
20519
+ container-type: inline-size;
20520
+ display: flex;
20521
+ flex-direction: column;
20522
+ gap: var(--spacing-sm);
20523
+ padding: var(--spacing-md) var(--spacing-md) var(--spacing-base);
20524
+ will-change: height;
20525
+ position: relative;
20526
+ z-index: var(--z-50);
20527
+ `;
20528
+ var SearchAndFilterOptionsInnerContainer = css92`
20529
+ display: flex;
20530
+ flex-direction: column;
20531
+ gap: var(--spacing-sm);
20532
+ // TODO: this is nice for responsive but is causing issue with the dropdown
20533
+ // ${scrollbarStyles}
20534
+ // overflow-x: auto;
20535
+ // overflow-y: visible;
20536
+ `;
20537
+ var SearchAndFilterButtonGroup = css92`
20538
+ margin-top: var(--spacing-base);
20539
+ `;
20540
+ var SelectOpen = css92`
20541
+ position: relative;
20542
+ .input-combobox__menu {
20543
+ background: red;
20544
+ z-index: 99999 !important;
20545
+ }
20546
+ `;
20547
+
20548
+ // src/components/SearchAndFilter/FilterButton.tsx
20549
+ import { jsx as jsx117, jsxs as jsxs79 } from "@emotion/react/jsx-runtime";
20550
+ var FilterButton2 = ({ text = "Filters", filterCount, ...props }) => {
20551
+ return /* @__PURE__ */ jsxs79(
20552
+ "button",
20553
+ {
20554
+ type: "button",
20555
+ css: [FilterButton, filterCount ? FilterButtonWithOptions : void 0],
20556
+ ...props,
20557
+ children: [
20558
+ /* @__PURE__ */ jsx117(Icon, { icon: "filter-add", iconColor: "currentColor", size: "1rem" }),
20559
+ text,
20560
+ filterCount ? /* @__PURE__ */ jsx117(Counter, { count: filterCount, bgColor: "var(--white)" }) : null
20561
+ ]
20562
+ }
20563
+ );
20564
+ };
20565
+
20566
+ // src/components/SearchAndFilter/hooks/useSearchAndFilter.tsx
20567
+ import {
20568
+ createContext as createContext6,
20569
+ useCallback as useCallback10,
20570
+ useContext as useContext7,
20571
+ useDeferredValue as useDeferredValue2,
20572
+ useEffect as useEffect17,
20573
+ useMemo as useMemo6,
20574
+ useState as useState16
20575
+ } from "react";
20576
+ import { jsx as jsx118 } from "@emotion/react/jsx-runtime";
20577
+ var SearchAndFilterContext = createContext6({
20578
+ searchTerm: "",
20579
+ setSearchTerm: () => {
20580
+ },
20581
+ filterVisibility: false,
20582
+ setFilterVisibility: () => {
20583
+ },
20584
+ filters: [],
20585
+ setFilters: () => {
20586
+ },
20587
+ handleAddFilter: () => {
20588
+ },
20589
+ handleResetFilters: () => {
20590
+ },
20591
+ handleDeleteFilter: () => {
20592
+ },
20593
+ filterOptions: [],
20594
+ validFilterQuery: []
20595
+ });
20596
+ var SearchAndFilterProvider = ({
20597
+ filters,
20598
+ filterOptions,
20599
+ onChange,
20600
+ children
20601
+ }) => {
20602
+ const [searchTerm, setSearchTerm] = useState16("");
20603
+ const deferredSearchTerm = useDeferredValue2(searchTerm);
20604
+ const [filterVisibility, setFilterVisibility] = useState16(false);
20605
+ const handleSearchTerm = useCallback10((term) => setSearchTerm(term), [setSearchTerm]);
20606
+ const handleToggleFilterVisibilty = useCallback10(
20607
+ (visible) => setFilterVisibility(visible),
20608
+ [setFilterVisibility]
20609
+ );
20610
+ const handleAddFilter = useCallback10(() => {
20611
+ onChange([...filters, { field: "", operator: "", value: "" }]);
20612
+ }, [filters, onChange]);
20613
+ const handleResetFilters = useCallback10(() => {
20614
+ onChange([]);
20615
+ }, [onChange]);
20616
+ const handleDeleteFilter = useCallback10(
20617
+ (index) => {
20618
+ const remainingFilters = filters.filter((_, i) => i !== index);
20619
+ onChange(remainingFilters);
20620
+ },
20621
+ [filters, onChange]
20622
+ );
20623
+ const validFilterQuery = useMemo6(() => {
20624
+ const hasValidFilters = filters.every((f) => f.field && f.operator && f.value);
20625
+ if (hasValidFilters) {
20626
+ return filters;
20627
+ }
20628
+ }, [filters]);
20629
+ useEffect17(() => {
20630
+ if (filterVisibility) {
20631
+ const handleEscKeyFilterClose = (e) => {
20632
+ if (e.key === "Escape") {
20633
+ setFilterVisibility(false);
20634
+ }
20635
+ };
20636
+ document.addEventListener("keydown", (e) => handleEscKeyFilterClose(e));
20637
+ return () => {
20638
+ document.removeEventListener("keydown", (e) => handleEscKeyFilterClose(e));
20639
+ };
20640
+ }
20641
+ }, [filterVisibility, setFilterVisibility]);
20642
+ return /* @__PURE__ */ jsx118(
20643
+ SearchAndFilterContext.Provider,
20644
+ {
20645
+ value: {
20646
+ searchTerm: deferredSearchTerm,
20647
+ setSearchTerm: (e) => handleSearchTerm(e),
20648
+ filterVisibility,
20649
+ setFilterVisibility: (e) => handleToggleFilterVisibilty(e),
20650
+ filters,
20651
+ setFilters: (e) => onChange(e),
20652
+ handleAddFilter: () => handleAddFilter(),
20653
+ handleResetFilters: () => handleResetFilters(),
20654
+ handleDeleteFilter: (index) => handleDeleteFilter(index),
20655
+ filterOptions,
20656
+ validFilterQuery
20657
+ },
20658
+ children: /* @__PURE__ */ jsx118(VerticalRhythm, { children })
20659
+ }
20660
+ );
20661
+ };
20662
+ var useSearchAndFilter = () => {
20663
+ const value = useContext7(SearchAndFilterContext);
20664
+ return { ...value };
20665
+ };
20666
+
20667
+ // src/components/SearchAndFilter/FilterControls.tsx
20668
+ import { Fragment as Fragment19, jsx as jsx119, jsxs as jsxs80 } from "@emotion/react/jsx-runtime";
20669
+ var FilterControls = ({ children }) => {
20670
+ const { setFilterVisibility, filterVisibility, setSearchTerm, validFilterQuery } = useSearchAndFilter();
20671
+ return /* @__PURE__ */ jsxs80(Fragment19, { children: [
20672
+ /* @__PURE__ */ jsx119(
20673
+ FilterButton2,
20674
+ {
20675
+ "aria-controls": "search-and-filter-options",
20676
+ "aria-label": "filter options",
20677
+ "aria-haspopup": "true",
20678
+ "aria-expanded": filterVisibility,
20679
+ filterCount: validFilterQuery == null ? void 0 : validFilterQuery.length,
20680
+ onClick: () => setFilterVisibility(!filterVisibility)
20681
+ }
20682
+ ),
20683
+ /* @__PURE__ */ jsx119(
20684
+ InputKeywordSearch,
20685
+ {
20686
+ type: "search",
20687
+ placeholder: "Search...",
20688
+ onSearchTextChanged: (e) => setSearchTerm(e),
20689
+ compact: true,
20690
+ rounded: true
20691
+ }
20692
+ ),
20693
+ children
20694
+ ] });
20695
+ };
20696
+
20697
+ // src/components/SearchAndFilter/FilterEditor.tsx
20698
+ import { css as css94 } from "@emotion/react";
20699
+ import { useEffect as useEffect18, useState as useState17 } from "react";
20700
+
20701
+ // src/components/Validation/StatusBullet.styles.ts
20702
+ import { css as css93 } from "@emotion/react";
20703
+ var StatusBulletContainer = css93`
20704
+ align-items: center;
20705
+ align-self: center;
20706
+ color: var(--gray-500);
20707
+ display: inline-flex;
20708
+ font-weight: var(--fw-regular);
20709
+ gap: var(--spacing-xs);
20710
+ line-height: 1;
20711
+ position: relative;
20712
+ text-transform: lowercase;
20713
+
20714
+ &:before {
20715
+ border-radius: var(--rounded-full);
20716
+ content: '';
20717
+ display: block;
20718
+ }
20719
+ `;
20720
+ var StatusBulletBase = css93`
20721
+ font-size: var(--fs-sm);
20722
+ &:before {
20723
+ width: var(--fs-xs);
20724
+ height: var(--fs-xs);
20725
+ }
20726
+ `;
20727
+ var StatusBulletSmall = css93`
20728
+ font-size: var(--fs-xs);
20729
+ &:before {
20730
+ width: var(--fs-xxs);
20731
+ height: var(--fs-xxs);
20732
+ }
20733
+ `;
20734
+ var StatusDraft = css93`
20735
+ &:before {
20736
+ background: var(--white);
20737
+ box-shadow: inset 0 0 0 0.125rem var(--primary-action-default);
20738
+ }
20739
+ `;
20740
+ var StatusModified = css93`
20741
+ &:before {
20742
+ background: linear-gradient(to right, var(--white) 50%, var(--primary-action-default) 50% 100%);
20743
+ box-shadow: inset 0 0 0 0.125rem var(--primary-action-default);
20744
+ }
20745
+ `;
20746
+ var StatusError = css93`
20747
+ color: var(--error);
20748
+ &:before {
20749
+ /* TODO: replace this with an svg icon */
20750
+ background: linear-gradient(
20751
+ 133deg,
20752
+ var(--error) 41%,
20753
+ var(--white) 42%,
20754
+ var(--white) 58%,
20755
+ var(--error) 59%
20756
+ );
20757
+ }
20758
+ `;
20759
+ var StatusPublished = css93`
20760
+ &:before {
20761
+ background: var(--primary-action-default);
20762
+ }
20763
+ `;
20764
+ var StatusOrphan = css93`
20765
+ &:before {
20766
+ background: var(--brand-secondary-5);
20767
+ }
20768
+ `;
20769
+ var StatusUnknown = css93`
20770
+ &:before {
20771
+ background: var(--gray-800);
20772
+ }
20773
+ `;
20774
+
20775
+ // src/components/Validation/StatusBullet.tsx
20776
+ import { jsx as jsx120 } from "@emotion/react/jsx-runtime";
20777
+ var StatusBullet = ({
20778
+ status,
20779
+ hideText = false,
20780
+ size = "base",
20781
+ message,
20782
+ ...props
20783
+ }) => {
20784
+ const currentStateStyles = {
20785
+ Error: StatusError,
20786
+ Modified: StatusModified,
20787
+ Unsaved: StatusDraft,
20788
+ Orphan: StatusOrphan,
20789
+ Published: StatusPublished,
20790
+ Draft: StatusDraft,
20791
+ Previous: StatusDraft,
20792
+ Unknown: StatusUnknown
20793
+ };
20794
+ const statusSize = size === "base" ? StatusBulletBase : StatusBulletSmall;
20795
+ return /* @__PURE__ */ jsx120(
20796
+ "span",
20797
+ {
20798
+ role: "status",
20799
+ css: [StatusBulletContainer, currentStateStyles[status], statusSize],
20800
+ title: message != null ? message : status,
20801
+ ...props,
20802
+ children: hideText ? null : message ? message : status
20803
+ }
20804
+ );
20805
+ };
20806
+
20807
+ // src/components/SearchAndFilter/FilterEditor.tsx
20808
+ import { Fragment as Fragment20, jsx as jsx121, jsxs as jsxs81 } from "@emotion/react/jsx-runtime";
20809
+ var FilterMultiChoiceEditor = ({
20810
+ value,
20811
+ options,
20812
+ ...props
20813
+ }) => {
20814
+ return /* @__PURE__ */ jsx121(
20815
+ InputComboBox,
20816
+ {
20817
+ ...props,
20818
+ options,
20819
+ isMulti: true,
20820
+ isClearable: true,
20821
+ onChange: (e) => {
20822
+ var _a;
20823
+ return props.onChange((_a = e.map((item) => item.value)) != null ? _a : []);
20824
+ }
20825
+ }
20826
+ );
20827
+ };
20828
+ var FilterSingleChoiceEditor = ({
20829
+ options,
20830
+ value,
20831
+ ...props
20832
+ }) => {
20833
+ return /* @__PURE__ */ jsx121(
20834
+ InputComboBox,
20835
+ {
20836
+ options,
20837
+ isClearable: true,
20838
+ ...props,
20839
+ onChange: (e) => {
20840
+ var _a;
20841
+ return props.onChange((_a = e == null ? void 0 : e.value) != null ? _a : "");
20842
+ }
20843
+ }
20844
+ );
20845
+ };
20846
+ var CustomOptions = ({ label, value }) => {
20847
+ return /* @__PURE__ */ jsx121(StatusBullet, { status: label, message: value });
20848
+ };
20849
+ var StatusMultiEditor = ({
20850
+ options,
20851
+ value,
20852
+ ...props
20853
+ }) => {
20854
+ return /* @__PURE__ */ jsx121(
20855
+ InputComboBox,
20856
+ {
20857
+ options,
20858
+ isMulti: true,
20859
+ ...props,
20860
+ onChange: (e) => {
20861
+ var _a;
20862
+ return props.onChange((_a = e.map((item) => item.value)) != null ? _a : []);
20863
+ },
20864
+ formatOptionLabel: CustomOptions
20865
+ }
20866
+ );
20867
+ };
20868
+ var StatusSingleEditor = ({
20869
+ options,
20870
+ value,
20871
+ ...props
20872
+ }) => {
20873
+ return /* @__PURE__ */ jsx121(
20874
+ InputComboBox,
20875
+ {
20876
+ options,
20877
+ ...props,
20878
+ onChange: (e) => {
20879
+ var _a;
20880
+ return props.onChange((_a = e == null ? void 0 : e.value) != null ? _a : "");
20881
+ },
20882
+ formatOptionLabel: CustomOptions
20883
+ }
20884
+ );
20885
+ };
20886
+ var TextEditor = ({ onChange, ariaLabel }) => {
20887
+ return /* @__PURE__ */ jsx121(
20888
+ Input,
20889
+ {
20890
+ showLabel: false,
20891
+ "aria-label": ariaLabel,
20892
+ onChange: (e) => onChange(e.currentTarget.value),
20893
+ placeholder: "Enter phrase to search\u2026"
20894
+ }
20895
+ );
20896
+ };
20897
+ var NumberRangeEditor = ({ onChange, ...props }) => {
20898
+ const [minValue, setMinValue] = useState17("");
20899
+ const [maxValue, setMaxValue] = useState17("");
20900
+ const [error, setError] = useState17("");
20901
+ useEffect18(() => {
20902
+ if (!maxValue && !minValue) {
20903
+ return;
20904
+ }
20905
+ const max = Number(maxValue);
20906
+ const min = Number(minValue);
20907
+ if (max < min || min > max) {
20908
+ setError("Please enter a valid numeric range");
20909
+ onChange([]);
20910
+ return;
20911
+ }
20912
+ if (maxValue && !minValue || minValue && !maxValue) {
20913
+ setError("Please enter both a low and high number");
20914
+ onChange([]);
20915
+ return;
20916
+ }
20917
+ setError("");
20918
+ onChange([minValue, maxValue]);
20919
+ }, [maxValue, minValue, setError]);
20920
+ return /* @__PURE__ */ jsxs81(Fragment20, { children: [
20921
+ /* @__PURE__ */ jsx121(
20922
+ Input,
20923
+ {
20924
+ ...props,
20925
+ type: "number",
20926
+ showLabel: false,
20927
+ min: 0,
20928
+ placeholder: "Low",
20929
+ onChange: (e) => setMinValue(e.currentTarget.value),
20930
+ "aria-invalid": !error ? false : true
20931
+ }
20932
+ ),
20933
+ /* @__PURE__ */ jsx121(
20934
+ Input,
20935
+ {
20936
+ ...props,
20937
+ type: "number",
20938
+ showLabel: false,
20939
+ min: 0,
20940
+ placeholder: "High",
20941
+ onChange: (e) => setMaxValue(e.currentTarget.value),
20942
+ "aria-invalid": !error ? false : true
20943
+ }
20944
+ ),
20945
+ /* @__PURE__ */ jsx121(ErrorContainer, { errorMessage: error })
20946
+ ] });
20947
+ };
20948
+ var NumberEditor = ({ ariaLabel, onChange }) => {
20949
+ return /* @__PURE__ */ jsx121(
20950
+ Input,
20951
+ {
20952
+ "aria-label": ariaLabel,
20953
+ type: "number",
20954
+ showLabel: false,
20955
+ min: 0,
20956
+ onChange: (e) => onChange(e.currentTarget.value)
20957
+ }
20958
+ );
20959
+ };
20960
+ var DateEditor = ({ onChange, ...props }) => {
20961
+ return /* @__PURE__ */ jsx121(Input, { type: "date", ...props, showLabel: false, onChange: (e) => onChange(e.currentTarget.value) });
20962
+ };
20963
+ var DateRangeEditor = ({ ariaLabel, onChange }) => {
20964
+ const [minDateValue, setMinDateValue] = useState17("");
20965
+ const [maxDateValue, setMaxDateValue] = useState17("");
20966
+ const [error, setError] = useState17("");
20967
+ useEffect18(() => {
20968
+ if (!minDateValue || !maxDateValue) {
20969
+ return;
20970
+ }
20971
+ const minDate = new Date(minDateValue);
20972
+ const maxDate = new Date(maxDateValue);
20973
+ if (maxDate < minDate) {
20974
+ setError("The max date cannot be lower than the min date");
20975
+ onChange([]);
20976
+ return;
20977
+ }
20978
+ if (maxDate && !minDate) {
20979
+ setError("Please enter both a low and high date");
20980
+ onChange([]);
20981
+ return;
20982
+ }
20983
+ const minDateString = minDate.toDateString();
20984
+ const maxDateString = maxDate.toDateString();
20985
+ if (minDateString === maxDateString || maxDateString === minDateString) {
20986
+ setError("The min and max date cannot be the same");
20987
+ onChange([]);
20988
+ return;
20989
+ }
20990
+ if (minDate > maxDate) {
20991
+ setError("The min date cannot be higher than the max date");
20992
+ onChange([]);
20993
+ return;
20994
+ }
20995
+ setError("");
20996
+ onChange([minDateValue, maxDateValue]);
20997
+ }, [minDateValue, maxDateValue, setError]);
20998
+ return /* @__PURE__ */ jsxs81(Fragment20, { children: [
20999
+ /* @__PURE__ */ jsx121(
21000
+ Input,
21001
+ {
21002
+ "aria-label": `${ariaLabel}-min-date`,
21003
+ type: "date",
21004
+ showLabel: false,
21005
+ value: minDateValue,
21006
+ onChange: (e) => setMinDateValue(e.currentTarget.value),
21007
+ "aria-invalid": !error ? false : true
21008
+ }
21009
+ ),
21010
+ /* @__PURE__ */ jsx121(
21011
+ Input,
21012
+ {
21013
+ "aria-label": `${ariaLabel}-max-date`,
21014
+ type: "date",
21015
+ showLabel: false,
21016
+ value: maxDateValue,
21017
+ onChange: (e) => setMaxDateValue(e.currentTarget.value),
21018
+ "aria-invalid": !error ? false : true
21019
+ }
21020
+ ),
21021
+ /* @__PURE__ */ jsx121(ErrorContainer, { errorMessage: error })
21022
+ ] });
21023
+ };
21024
+ var FilterEditorRenderer = ({ editorType, ...props }) => {
21025
+ const Editor = filterMapper[editorType];
21026
+ if (!Editor) {
21027
+ return null;
21028
+ }
21029
+ if (editorType === "empty") {
21030
+ return null;
21031
+ }
21032
+ return /* @__PURE__ */ jsx121(Editor, { ...props });
21033
+ };
21034
+ var filterMapper = {
21035
+ multiChoice: FilterMultiChoiceEditor,
21036
+ singleChoice: FilterSingleChoiceEditor,
21037
+ date: DateEditor,
21038
+ dateRange: DateRangeEditor,
21039
+ text: TextEditor,
21040
+ numberRange: NumberRangeEditor,
21041
+ number: NumberEditor,
21042
+ statusMultiChoice: StatusMultiEditor,
21043
+ statusSingleChoice: StatusSingleEditor,
21044
+ empty: null
21045
+ };
21046
+ var ErrorContainer = ({ errorMessage }) => {
21047
+ return /* @__PURE__ */ jsx121(
21048
+ "div",
21049
+ {
21050
+ css: css94`
21051
+ grid-column: span 6;
21052
+ order: 6;
21053
+ `,
21054
+ children: /* @__PURE__ */ jsx121(FieldMessage, { errorMessage })
21055
+ }
21056
+ );
21057
+ };
21058
+
21059
+ // src/components/SearchAndFilter/FilterMenu.tsx
21060
+ import { Fragment as Fragment21, jsx as jsx122, jsxs as jsxs82 } from "@emotion/react/jsx-runtime";
21061
+ var SearchAndFilterOptionsContainer2 = ({
21062
+ buttonRow,
21063
+ children
21064
+ }) => {
21065
+ return /* @__PURE__ */ jsxs82("div", { css: SearchAndFilterOptionsContainer, children: [
21066
+ /* @__PURE__ */ jsx122("div", { css: SearchAndFilterOptionsInnerContainer, children }),
21067
+ buttonRow ? /* @__PURE__ */ jsx122(
21068
+ HorizontalRhythm,
21069
+ {
21070
+ css: SearchAndFilterButtonGroup,
21071
+ gap: "sm",
21072
+ align: "center",
21073
+ justify: "space-between",
21074
+ children: buttonRow
21075
+ }
21076
+ ) : null
21077
+ ] });
21078
+ };
21079
+ var FilterMenu = ({
21080
+ id,
21081
+ addButtonText = "add condition",
21082
+ isAddDisabled,
21083
+ resetButtonText = "reset filters",
21084
+ filterTitle = "Show records",
21085
+ children
21086
+ }) => {
21087
+ const { filterVisibility, handleAddFilter, handleResetFilters, setFilterVisibility, validFilterQuery } = useSearchAndFilter();
21088
+ return /* @__PURE__ */ jsx122(VerticalRhythm, { gap: "sm", "aria-haspopup": "true", id, children: filterVisibility ? /* @__PURE__ */ jsxs82(
21089
+ SearchAndFilterOptionsContainer2,
21090
+ {
21091
+ buttonRow: /* @__PURE__ */ jsxs82(Fragment21, { children: [
21092
+ /* @__PURE__ */ jsxs82(
21093
+ "button",
21094
+ {
21095
+ type: "button",
21096
+ css: AddConditionalBtn,
21097
+ onClick: handleAddFilter,
21098
+ disabled: isAddDisabled,
21099
+ children: [
21100
+ /* @__PURE__ */ jsx122(Icon, { icon: "math-plus", iconColor: "gray", size: "1rem" }),
21101
+ addButtonText
21102
+ ]
21103
+ }
21104
+ ),
21105
+ (validFilterQuery == null ? void 0 : validFilterQuery.length) ? /* @__PURE__ */ jsx122(
21106
+ "button",
21107
+ {
21108
+ type: "button",
21109
+ css: ResetConditionsBtn,
21110
+ onClick: () => {
21111
+ handleResetFilters();
21112
+ setFilterVisibility(false);
21113
+ },
21114
+ children: resetButtonText
21115
+ }
21116
+ ) : null
21117
+ ] }),
21118
+ children: [
21119
+ /* @__PURE__ */ jsx122("span", { css: Title, children: filterTitle }),
21120
+ /* @__PURE__ */ jsx122(
21121
+ "button",
21122
+ {
21123
+ type: "button",
21124
+ "aria-label": "close filters",
21125
+ css: [CloseBtn],
21126
+ onClick: () => setFilterVisibility(!filterVisibility),
21127
+ children: /* @__PURE__ */ jsx122(Icon, { icon: "close", iconColor: "currentColor", size: "1.1rem" })
21128
+ }
21129
+ ),
21130
+ children
21131
+ ]
21132
+ }
21133
+ ) : null });
21134
+ };
21135
+
21136
+ // src/components/SearchAndFilter/FilterItem.tsx
21137
+ import { jsx as jsx123, jsxs as jsxs83 } from "@emotion/react/jsx-runtime";
21138
+ var FilterItem = ({
21139
+ index,
21140
+ paramOptions,
21141
+ operatorOptions,
21142
+ valueOptions,
21143
+ onParamChange,
21144
+ onOperatorChange,
21145
+ onValueChange
21146
+ }) => {
21147
+ var _a, _b;
21148
+ const { filters, handleDeleteFilter } = useSearchAndFilter();
21149
+ const label = filters[index].field !== "" ? filters[index].field : "unknown filter field";
21150
+ const operatorLabel = filters[index].operator !== "" ? `operator ${filters[index].operator}` : "unknown operator";
21151
+ const metaDataLabel = filters[index].value !== "" ? `value ${filters[index].value}` : "unknown value";
21152
+ const metaDataPossibleOptions = (_b = (_a = operatorOptions.find((op) => filters[index].operator === op.value)) == null ? void 0 : _a.editorType) != null ? _b : "singleChoice";
21153
+ return /* @__PURE__ */ jsxs83("div", { css: ConditionalFilterRow, children: [
21154
+ /* @__PURE__ */ jsx123("span", { children: index === 0 ? "where" : "and" }),
21155
+ /* @__PURE__ */ jsxs83("div", { css: ConditionalInputRow, children: [
21156
+ /* @__PURE__ */ jsx123(
21157
+ InputComboBox,
21158
+ {
21159
+ "aria-label": label,
21160
+ options: paramOptions,
21161
+ onChange: (e) => {
21162
+ var _a2;
21163
+ onParamChange((_a2 = e == null ? void 0 : e.value) != null ? _a2 : "");
21164
+ }
21165
+ }
21166
+ ),
21167
+ /* @__PURE__ */ jsx123(
21168
+ InputComboBox,
21169
+ {
21170
+ "aria-label": operatorLabel,
21171
+ options: operatorOptions,
21172
+ onChange: (e) => {
21173
+ var _a2;
21174
+ return onOperatorChange((_a2 = e == null ? void 0 : e.value) != null ? _a2 : "");
21175
+ },
21176
+ isDisabled: !filters[index].field
21177
+ }
21178
+ ),
21179
+ /* @__PURE__ */ jsx123(
21180
+ FilterEditorRenderer,
21181
+ {
21182
+ "aria-label": metaDataLabel,
21183
+ editorType: metaDataPossibleOptions,
21184
+ options: valueOptions,
21185
+ onChange: (e) => onValueChange(e != null ? e : "")
21186
+ }
21187
+ ),
21188
+ /* @__PURE__ */ jsx123(
21189
+ "button",
21190
+ {
21191
+ type: "button",
21192
+ onClick: () => handleDeleteFilter(index),
21193
+ "aria-label": "delete filter",
21194
+ css: IconBtn,
21195
+ children: /* @__PURE__ */ jsx123(Icon, { icon: "trash", iconColor: "red", size: "1rem" })
21196
+ }
21197
+ )
21198
+ ] })
21199
+ ] });
21200
+ };
21201
+ var FilterItems = () => {
21202
+ const { filterOptions, filters, setFilters } = useSearchAndFilter();
21203
+ const handleUpdateFilter = (index, prop, value) => {
21204
+ const next = [...filters];
21205
+ next[index] = { ...next[index], [prop]: value };
21206
+ if (prop === "operator") {
21207
+ next[index].value = "";
21208
+ if (value === "def" || value === "true") {
21209
+ next[index].value = "true";
21210
+ }
21211
+ if (value === "ndef" || value === "false") {
21212
+ next[index].value = "false";
21213
+ }
21214
+ }
21215
+ if (prop === "field") {
21216
+ next[index].operator = "";
21217
+ next[index].value = "";
21218
+ }
21219
+ setFilters(next);
21220
+ };
21221
+ return /* @__PURE__ */ jsx123(FilterMenu, { id: "search-and-filter-options", children: filters.map((item, i) => {
21222
+ var _a, _b, _c, _d, _e, _f;
21223
+ const availableTypeOptions = (_b = (_a = filterOptions.find((fo) => {
21224
+ var _a2;
21225
+ return (_a2 = fo.options) == null ? void 0 : _a2.find((op) => op.value === item.field);
21226
+ })) == null ? void 0 : _a.options) != null ? _b : [];
21227
+ const possibleValueOptions = (_d = (_c = availableTypeOptions == null ? void 0 : availableTypeOptions.find((op) => op.value === item.field)) == null ? void 0 : _c.valueOptions) != null ? _d : [];
21228
+ const possibleOperators = (_f = (_e = availableTypeOptions == null ? void 0 : availableTypeOptions.find((op) => op.value === item.field)) == null ? void 0 : _e.operatorOptions) != null ? _f : [];
21229
+ return /* @__PURE__ */ jsx123(
21230
+ FilterItem,
21231
+ {
21232
+ index: i,
21233
+ paramOptions: filterOptions,
21234
+ onParamChange: (e) => handleUpdateFilter(i, "field", e),
21235
+ operatorOptions: possibleOperators,
21236
+ onOperatorChange: (e) => handleUpdateFilter(i, "operator", e),
21237
+ onValueChange: (e) => handleUpdateFilter(i, "value", e),
21238
+ valueOptions: possibleValueOptions
21239
+ },
21240
+ i
21241
+ );
21242
+ }) });
21243
+ };
21244
+
21245
+ // src/components/SearchAndFilter/SearchAndFilter.tsx
21246
+ import { jsx as jsx124, jsxs as jsxs84 } from "@emotion/react/jsx-runtime";
21247
+ var SearchAndFilter = ({
21248
+ filters,
21249
+ filterOptions,
21250
+ filterControls = /* @__PURE__ */ jsx124(FilterControls, {}),
21251
+ children = /* @__PURE__ */ jsx124(FilterItems, {}),
21252
+ onChange
21253
+ }) => {
21254
+ return /* @__PURE__ */ jsx124(SearchAndFilterProvider, { filters, filterOptions, onChange, children: /* @__PURE__ */ jsxs84(VerticalRhythm, { css: SearchAndFilterContainer, "data-testid": "search-and-filter", children: [
21255
+ /* @__PURE__ */ jsx124("div", { css: SearchAndFilterControlsWrapper, children: filterControls }),
21256
+ children
21257
+ ] }) });
21258
+ };
21259
+
21260
+ // src/components/SegmentedControl/SegmentedControl.tsx
21261
+ import { css as css96 } from "@emotion/react";
21262
+ import { CgCheck as CgCheck4 } from "@react-icons/all-files/cg/CgCheck";
21263
+ import { useCallback as useCallback11, useMemo as useMemo7 } from "react";
21264
+
21265
+ // src/components/SegmentedControl/SegmentedControl.styles.ts
21266
+ import { css as css95 } from "@emotion/react";
21267
+ var segmentedControlStyles = css95`
21268
+ --segmented-control-rounded-value: var(--rounded-base);
21269
+ --segmented-control-border-width: 1px;
21270
+ --segmented-control-selected-color: var(--brand-secondary-3);
21271
+ --segmented-control-first-border-radius: var(--segmented-control-rounded-value) 0 0
21272
+ var(--segmented-control-rounded-value);
21273
+ --segmented-control-last-border-radius: 0 var(--segmented-control-rounded-value)
21274
+ var(--segmented-control-rounded-value) 0;
21275
+
21276
+ position: relative;
21277
+ display: flex;
21278
+ justify-content: flex-start;
21279
+ width: fit-content;
21280
+ background-color: var(--gray-300);
21281
+ padding: var(--segmented-control-border-width);
21282
+ gap: var(--segmented-control-border-width);
21283
+ border-radius: calc(var(--segmented-control-rounded-value) + var(--segmented-control-border-width));
21284
+ font-size: var(--fs-xs);
21285
+ `;
21286
+ var segmentedControlVerticalStyles = css95`
21287
+ flex-direction: column;
21288
+ --segmented-control-first-border-radius: var(--segmented-control-rounded-value)
21289
+ var(--segmented-control-rounded-value) 0 0;
21290
+ --segmented-control-last-border-radius: 0 0 var(--segmented-control-rounded-value)
21291
+ var(--segmented-control-rounded-value);
21292
+ `;
21293
+ var segmentedControlItemStyles = css95`
21294
+ &:first-of-type label {
21295
+ border-radius: var(--segmented-control-first-border-radius);
21296
+ }
21297
+ &:last-of-type label {
21298
+ border-radius: var(--segmented-control-last-border-radius);
21299
+ }
21300
+ `;
21301
+ var segmentedControlInputStyles = css95`
21302
+ ${accessibleHidden}
21303
+ `;
21304
+ var segmentedControlLabelStyles = (checked, disabled2) => css95`
21305
+ position: relative;
21306
+ display: flex;
21307
+ align-items: center;
21308
+ justify-content: center;
21309
+ height: 2rem;
21310
+ padding-inline: var(--spacing-base);
21311
+ background-color: white;
21312
+ transition-property: background-color, color, box-shadow;
21313
+ transition-duration: var(--duration-xfast);
21314
+ transition-timing-function: ease-in-out;
21315
+ z-index: 1;
21316
+ cursor: pointer;
21317
+
21318
+ &:has(:checked:not(:disabled)) {
21319
+ background-color: var(--segmented-control-selected-color);
21320
+ outline: var(--segmented-control-border-width) solid var(--segmented-control-selected-color);
21321
+ box-shadow: 0 0.43em 1.7em 0 rgba(0, 0, 0, 0.15);
21322
+ color: white;
21323
+ -webkit-text-stroke-width: thin;
21324
+ z-index: 0;
21325
+ }
21326
+
21327
+ &:hover:not(:has(:disabled, :checked)) {
21328
+ background-color: var(--gray-100);
21329
+ }
21330
+
21331
+ &:has(:disabled) {
21332
+ color: var(--gray-400);
21333
+ cursor: default;
21334
+ }
21335
+
21336
+ &:has(:checked:disabled) {
21337
+ color: var(--gray-50);
21338
+ background-color: var(--gray-400);
21339
+ }
21340
+
21341
+ // Firefox fallback using emotion variables
21342
+ // we can delete this whole block of code and variables in SegmentedControl.tsx
21343
+ // once Firefox supports :has selector
21344
+ @supports not selector(:has(*)) {
21345
+ // equivalent to &:has(:checked:not(:disabled))
21346
+ ${checked && !disabled2 ? `
21347
+ background-color: var(--segmented-control-selected-color);
21348
+ outline: var(--segmented-control-border-width) solid var(--segmented-control-selected-color);
21349
+ box-shadow: 0 0.43em 1.7em 0 rgba(0, 0, 0, 0.15);
21350
+ color: white;
21351
+ -webkit-text-stroke-width: thin;
21352
+ z-index: 0;` : void 0}
21353
+
21354
+ // equivalent to &:hover:not(:has(:disabled, :checked))
21355
+ &:hover {
21356
+ ${!checked && !disabled2 ? `background-color: var(--gray-100);` : void 0}
21357
+ }
21358
+
21359
+ // equivalent to &:has(:disabled)
21360
+ ${disabled2 ? `
21361
+ color: var(--gray-400);
21362
+ cursor: default;` : void 0}
21363
+
21364
+ // equivalent to &:has(:checked:disabled)
20165
21365
  ${checked && disabled2 && `
20166
21366
  color: var(--gray-50);
20167
21367
  background-color: var(--gray-400);
20168
21368
  `}
20169
21369
  }
20170
21370
  `;
20171
- var segmentedControlLabelIconOnlyStyles = css92`
21371
+ var segmentedControlLabelIconOnlyStyles = css95`
20172
21372
  padding-inline: 0.5em;
20173
21373
  `;
20174
- var segmentedControlLabelCheckStyles = css92`
21374
+ var segmentedControlLabelCheckStyles = css95`
20175
21375
  opacity: 0.5;
20176
21376
  `;
20177
- var segmentedControlLabelContentStyles = css92`
21377
+ var segmentedControlLabelContentStyles = css95`
20178
21378
  display: flex;
20179
21379
  align-items: center;
20180
21380
  justify-content: center;
20181
21381
  gap: var(--spacing-sm);
20182
21382
  height: 100%;
20183
21383
  `;
20184
- var segmentedControlLabelTextStyles = css92``;
21384
+ var segmentedControlLabelTextStyles = css95``;
20185
21385
 
20186
21386
  // src/components/SegmentedControl/SegmentedControl.tsx
20187
- import { jsx as jsx117, jsxs as jsxs79 } from "@emotion/react/jsx-runtime";
21387
+ import { jsx as jsx125, jsxs as jsxs85 } from "@emotion/react/jsx-runtime";
20188
21388
  var SegmentedControl = ({
20189
21389
  name,
20190
21390
  options,
@@ -20196,7 +21396,7 @@ var SegmentedControl = ({
20196
21396
  size = "md",
20197
21397
  ...props
20198
21398
  }) => {
20199
- const onOptionChange = useCallback10(
21399
+ const onOptionChange = useCallback11(
20200
21400
  (event) => {
20201
21401
  if (event.target.checked) {
20202
21402
  onChange == null ? void 0 : onChange(options[parseInt(event.target.value)].value);
@@ -20204,18 +21404,18 @@ var SegmentedControl = ({
20204
21404
  },
20205
21405
  [options, onChange]
20206
21406
  );
20207
- const sizeStyles = useMemo6(() => {
21407
+ const sizeStyles = useMemo7(() => {
20208
21408
  const map = {
20209
- sm: css93({ height: "calc(24px - 2px)", fontSize: "var(--fs-xs)" }),
20210
- md: css93({ height: "calc(32px - 2px)", fontSize: "var(--fs-sm)" }),
20211
- lg: css93({ height: "calc(40px - 2px)", fontSize: "var(--fs-base)" })
21409
+ sm: css96({ height: "calc(24px - 2px)", fontSize: "var(--fs-xs)" }),
21410
+ md: css96({ height: "calc(32px - 2px)", fontSize: "var(--fs-sm)" }),
21411
+ lg: css96({ height: "calc(40px - 2px)", fontSize: "var(--fs-base)" })
20212
21412
  };
20213
21413
  return map[size];
20214
21414
  }, [size]);
20215
- const isIconOnly = useMemo6(() => {
21415
+ const isIconOnly = useMemo7(() => {
20216
21416
  return options.every((option) => option && option.icon && !option.label);
20217
21417
  }, [options]);
20218
- return /* @__PURE__ */ jsx117(
21418
+ return /* @__PURE__ */ jsx125(
20219
21419
  "div",
20220
21420
  {
20221
21421
  css: [segmentedControlStyles, orientation === "vertical" ? segmentedControlVerticalStyles : void 0],
@@ -20227,7 +21427,7 @@ var SegmentedControl = ({
20227
21427
  }
20228
21428
  const text = option.label ? option.label : option.icon ? null : String(option.value);
20229
21429
  const isDisabled = disabled2 || option.disabled;
20230
- return /* @__PURE__ */ jsx117(Tooltip, { title: (_a = option.tooltip) != null ? _a : "", children: /* @__PURE__ */ jsx117("div", { css: segmentedControlItemStyles, "data-testid": "container-segmented-control", children: /* @__PURE__ */ jsxs79(
21430
+ return /* @__PURE__ */ jsx125(Tooltip, { title: (_a = option.tooltip) != null ? _a : "", children: /* @__PURE__ */ jsx125("div", { css: segmentedControlItemStyles, "data-testid": "container-segmented-control", children: /* @__PURE__ */ jsxs85(
20231
21431
  "label",
20232
21432
  {
20233
21433
  css: [
@@ -20236,7 +21436,7 @@ var SegmentedControl = ({
20236
21436
  isIconOnly ? segmentedControlLabelIconOnlyStyles : void 0
20237
21437
  ],
20238
21438
  children: [
20239
- /* @__PURE__ */ jsx117(
21439
+ /* @__PURE__ */ jsx125(
20240
21440
  "input",
20241
21441
  {
20242
21442
  css: segmentedControlInputStyles,
@@ -20248,10 +21448,10 @@ var SegmentedControl = ({
20248
21448
  disabled: isDisabled
20249
21449
  }
20250
21450
  ),
20251
- option.value !== value || noCheckmark ? null : /* @__PURE__ */ jsx117(CgCheck4, { css: segmentedControlLabelCheckStyles, "aria-label": "Selected", size: "1.5em" }),
20252
- /* @__PURE__ */ jsxs79("span", { css: segmentedControlLabelContentStyles, children: [
20253
- !option.icon ? null : /* @__PURE__ */ jsx117(Icon, { icon: option.icon, size: "1.5em", iconColor: "currentColor" }),
20254
- !text ? null : /* @__PURE__ */ jsx117("span", { css: segmentedControlLabelTextStyles, children: text })
21451
+ option.value !== value || noCheckmark ? null : /* @__PURE__ */ jsx125(CgCheck4, { css: segmentedControlLabelCheckStyles, "aria-label": "Selected", size: "1.5em" }),
21452
+ /* @__PURE__ */ jsxs85("span", { css: segmentedControlLabelContentStyles, children: [
21453
+ !option.icon ? null : /* @__PURE__ */ jsx125(Icon, { icon: option.icon, size: "1.5em", iconColor: "currentColor" }),
21454
+ !text ? null : /* @__PURE__ */ jsx125("span", { css: segmentedControlLabelTextStyles, children: text })
20255
21455
  ] })
20256
21456
  ]
20257
21457
  }
@@ -20262,18 +21462,18 @@ var SegmentedControl = ({
20262
21462
  };
20263
21463
 
20264
21464
  // src/components/Skeleton/Skeleton.styles.ts
20265
- import { css as css94, keyframes as keyframes5 } from "@emotion/react";
21465
+ import { css as css97, keyframes as keyframes5 } from "@emotion/react";
20266
21466
  var lightFadingOut = keyframes5`
20267
21467
  from { opacity: 0.1; }
20268
21468
  to { opacity: 0.025; }
20269
21469
  `;
20270
- var skeletonStyles = css94`
21470
+ var skeletonStyles = css97`
20271
21471
  animation: ${lightFadingOut} 1s ease-out infinite alternate;
20272
21472
  background-color: var(--gray-900);
20273
21473
  `;
20274
21474
 
20275
21475
  // src/components/Skeleton/Skeleton.tsx
20276
- import { jsx as jsx118 } from "@emotion/react/jsx-runtime";
21476
+ import { jsx as jsx126 } from "@emotion/react/jsx-runtime";
20277
21477
  var Skeleton = ({
20278
21478
  width = "100%",
20279
21479
  height = "1.25rem",
@@ -20281,7 +21481,7 @@ var Skeleton = ({
20281
21481
  circle = false,
20282
21482
  children,
20283
21483
  ...otherProps
20284
- }) => /* @__PURE__ */ jsx118(
21484
+ }) => /* @__PURE__ */ jsx126(
20285
21485
  "div",
20286
21486
  {
20287
21487
  css: [
@@ -20301,11 +21501,11 @@ var Skeleton = ({
20301
21501
  );
20302
21502
 
20303
21503
  // src/components/Switch/Switch.tsx
20304
- import * as React24 from "react";
21504
+ import * as React25 from "react";
20305
21505
 
20306
21506
  // src/components/Switch/Switch.styles.ts
20307
- import { css as css95 } from "@emotion/react";
20308
- var SwitchInputContainer = css95`
21507
+ import { css as css98 } from "@emotion/react";
21508
+ var SwitchInputContainer = css98`
20309
21509
  cursor: pointer;
20310
21510
  display: inline-block;
20311
21511
  position: relative;
@@ -20314,7 +21514,7 @@ var SwitchInputContainer = css95`
20314
21514
  vertical-align: middle;
20315
21515
  user-select: none;
20316
21516
  `;
20317
- var SwitchInput = css95`
21517
+ var SwitchInput = css98`
20318
21518
  appearance: none;
20319
21519
  border-radius: var(--rounded-full);
20320
21520
  background-color: var(--white);
@@ -20352,7 +21552,7 @@ var SwitchInput = css95`
20352
21552
  cursor: not-allowed;
20353
21553
  }
20354
21554
  `;
20355
- var SwitchInputDisabled = css95`
21555
+ var SwitchInputDisabled = css98`
20356
21556
  opacity: var(--opacity-50);
20357
21557
  cursor: not-allowed;
20358
21558
 
@@ -20360,7 +21560,7 @@ var SwitchInputDisabled = css95`
20360
21560
  cursor: not-allowed;
20361
21561
  }
20362
21562
  `;
20363
- var SwitchInputLabel = css95`
21563
+ var SwitchInputLabel = css98`
20364
21564
  align-items: center;
20365
21565
  color: var(--typography-base);
20366
21566
  display: inline-flex;
@@ -20381,37 +21581,37 @@ var SwitchInputLabel = css95`
20381
21581
  top: 0;
20382
21582
  }
20383
21583
  `;
20384
- var SwitchText = css95`
21584
+ var SwitchText = css98`
20385
21585
  color: var(--gray-500);
20386
21586
  font-size: var(--fs-sm);
20387
21587
  padding-inline: var(--spacing-2xl) 0;
20388
21588
  `;
20389
21589
 
20390
21590
  // src/components/Switch/Switch.tsx
20391
- import { Fragment as Fragment19, jsx as jsx119, jsxs as jsxs80 } from "@emotion/react/jsx-runtime";
20392
- var Switch = React24.forwardRef(
21591
+ import { Fragment as Fragment22, jsx as jsx127, jsxs as jsxs86 } from "@emotion/react/jsx-runtime";
21592
+ var Switch = React25.forwardRef(
20393
21593
  ({ label, infoText, toggleText, children, ...inputProps }, ref) => {
20394
21594
  let additionalText = infoText;
20395
21595
  if (infoText && toggleText) {
20396
21596
  additionalText = inputProps.checked ? toggleText : infoText;
20397
21597
  }
20398
- return /* @__PURE__ */ jsxs80(Fragment19, { children: [
20399
- /* @__PURE__ */ jsxs80("label", { css: [SwitchInputContainer, inputProps.disabled ? SwitchInputDisabled : void 0], children: [
20400
- /* @__PURE__ */ jsx119("input", { type: "checkbox", css: SwitchInput, ...inputProps, ref }),
20401
- /* @__PURE__ */ jsx119("span", { css: SwitchInputLabel, children: label })
21598
+ return /* @__PURE__ */ jsxs86(Fragment22, { children: [
21599
+ /* @__PURE__ */ jsxs86("label", { css: [SwitchInputContainer, inputProps.disabled ? SwitchInputDisabled : void 0], children: [
21600
+ /* @__PURE__ */ jsx127("input", { type: "checkbox", css: SwitchInput, ...inputProps, ref }),
21601
+ /* @__PURE__ */ jsx127("span", { css: SwitchInputLabel, children: label })
20402
21602
  ] }),
20403
- additionalText ? /* @__PURE__ */ jsx119("p", { css: SwitchText, children: additionalText }) : null,
21603
+ additionalText ? /* @__PURE__ */ jsx127("p", { css: SwitchText, children: additionalText }) : null,
20404
21604
  children
20405
21605
  ] });
20406
21606
  }
20407
21607
  );
20408
21608
 
20409
21609
  // src/components/Table/Table.tsx
20410
- import * as React25 from "react";
21610
+ import * as React26 from "react";
20411
21611
 
20412
21612
  // src/components/Table/Table.styles.ts
20413
- import { css as css96 } from "@emotion/react";
20414
- var table = ({ cellPadding = "var(--spacing-base) var(--spacing-md)" }) => css96`
21613
+ import { css as css99 } from "@emotion/react";
21614
+ var table = ({ cellPadding = "var(--spacing-base) var(--spacing-md)" }) => css99`
20415
21615
  border-bottom: 1px solid var(--gray-400);
20416
21616
  border-collapse: collapse;
20417
21617
  min-width: 100%;
@@ -20422,55 +21622,55 @@ var table = ({ cellPadding = "var(--spacing-base) var(--spacing-md)" }) => css96
20422
21622
  padding: ${cellPadding};
20423
21623
  }
20424
21624
  `;
20425
- var tableHead = css96`
21625
+ var tableHead = css99`
20426
21626
  background: var(--gray-100);
20427
21627
  color: var(--typography-base);
20428
21628
  text-align: left;
20429
21629
  `;
20430
- var tableRow = css96`
21630
+ var tableRow = css99`
20431
21631
  border-bottom: 1px solid var(--gray-200);
20432
21632
  `;
20433
- var tableCellHead = css96`
21633
+ var tableCellHead = css99`
20434
21634
  font-size: var(--fs-sm);
20435
21635
  text-transform: uppercase;
20436
21636
  font-weight: var(--fw-bold);
20437
21637
  `;
20438
21638
 
20439
21639
  // src/components/Table/Table.tsx
20440
- import { jsx as jsx120 } from "@emotion/react/jsx-runtime";
20441
- var Table = React25.forwardRef(
21640
+ import { jsx as jsx128 } from "@emotion/react/jsx-runtime";
21641
+ var Table = React26.forwardRef(
20442
21642
  ({ children, cellPadding, ...otherProps }, ref) => {
20443
- return /* @__PURE__ */ jsx120("table", { ref, css: table({ cellPadding }), ...otherProps, children });
21643
+ return /* @__PURE__ */ jsx128("table", { ref, css: table({ cellPadding }), ...otherProps, children });
20444
21644
  }
20445
21645
  );
20446
- var TableHead = React25.forwardRef(
21646
+ var TableHead = React26.forwardRef(
20447
21647
  ({ children, ...otherProps }, ref) => {
20448
- return /* @__PURE__ */ jsx120("thead", { ref, css: tableHead, ...otherProps, children });
21648
+ return /* @__PURE__ */ jsx128("thead", { ref, css: tableHead, ...otherProps, children });
20449
21649
  }
20450
21650
  );
20451
- var TableBody = React25.forwardRef(
21651
+ var TableBody = React26.forwardRef(
20452
21652
  ({ children, ...otherProps }, ref) => {
20453
- return /* @__PURE__ */ jsx120("tbody", { ref, ...otherProps, children });
21653
+ return /* @__PURE__ */ jsx128("tbody", { ref, ...otherProps, children });
20454
21654
  }
20455
21655
  );
20456
- var TableFoot = React25.forwardRef(
21656
+ var TableFoot = React26.forwardRef(
20457
21657
  ({ children, ...otherProps }, ref) => {
20458
- return /* @__PURE__ */ jsx120("tfoot", { ref, ...otherProps, children });
21658
+ return /* @__PURE__ */ jsx128("tfoot", { ref, ...otherProps, children });
20459
21659
  }
20460
21660
  );
20461
- var TableRow = React25.forwardRef(
21661
+ var TableRow = React26.forwardRef(
20462
21662
  ({ children, ...otherProps }, ref) => {
20463
- return /* @__PURE__ */ jsx120("tr", { ref, css: tableRow, ...otherProps, children });
21663
+ return /* @__PURE__ */ jsx128("tr", { ref, css: tableRow, ...otherProps, children });
20464
21664
  }
20465
21665
  );
20466
- var TableCellHead = React25.forwardRef(
21666
+ var TableCellHead = React26.forwardRef(
20467
21667
  ({ children, ...otherProps }, ref) => {
20468
- return /* @__PURE__ */ jsx120("th", { ref, css: tableCellHead, ...otherProps, children });
21668
+ return /* @__PURE__ */ jsx128("th", { ref, css: tableCellHead, ...otherProps, children });
20469
21669
  }
20470
21670
  );
20471
- var TableCellData = React25.forwardRef(
21671
+ var TableCellData = React26.forwardRef(
20472
21672
  ({ children, ...otherProps }, ref) => {
20473
- return /* @__PURE__ */ jsx120("td", { ref, ...otherProps, children });
21673
+ return /* @__PURE__ */ jsx128("td", { ref, ...otherProps, children });
20474
21674
  }
20475
21675
  );
20476
21676
 
@@ -20482,11 +21682,11 @@ import {
20482
21682
  TabProvider as AriakitTabProvider,
20483
21683
  useTabStore as useAriakitTabStore
20484
21684
  } from "@ariakit/react";
20485
- import { useCallback as useCallback11, useEffect as useEffect17, useMemo as useMemo7 } from "react";
21685
+ import { useCallback as useCallback12, useEffect as useEffect19, useMemo as useMemo8 } from "react";
20486
21686
 
20487
21687
  // src/components/Tabs/Tabs.styles.ts
20488
- import { css as css97 } from "@emotion/react";
20489
- var tabButtonStyles = css97`
21688
+ import { css as css100 } from "@emotion/react";
21689
+ var tabButtonStyles = css100`
20490
21690
  align-items: center;
20491
21691
  border: 0;
20492
21692
  height: 2.5rem;
@@ -20503,14 +21703,14 @@ var tabButtonStyles = css97`
20503
21703
  box-shadow: inset 0 -2px 0 var(--brand-secondary-3);
20504
21704
  }
20505
21705
  `;
20506
- var tabButtonGroupStyles = css97`
21706
+ var tabButtonGroupStyles = css100`
20507
21707
  display: flex;
20508
21708
  gap: var(--spacing-base);
20509
21709
  border-bottom: 1px solid var(--gray-300);
20510
21710
  `;
20511
21711
 
20512
21712
  // src/components/Tabs/Tabs.tsx
20513
- import { jsx as jsx121 } from "@emotion/react/jsx-runtime";
21713
+ import { jsx as jsx129 } from "@emotion/react/jsx-runtime";
20514
21714
  var useCurrentTab = () => {
20515
21715
  const context = useAriakitTabStore();
20516
21716
  if (!context) {
@@ -20526,13 +21726,13 @@ var Tabs = ({
20526
21726
  manual,
20527
21727
  ...props
20528
21728
  }) => {
20529
- const selected = useMemo7(() => {
21729
+ const selected = useMemo8(() => {
20530
21730
  if (selectedId)
20531
21731
  return selectedId;
20532
21732
  return useHashForState && typeof window !== "undefined" && window.location.hash ? window.location.hash.substring(1) : void 0;
20533
21733
  }, [selectedId, useHashForState]);
20534
21734
  const tab = useAriakitTabStore({ ...props, selectOnMove: !manual, selectedId: selected });
20535
- const onTabSelect = useCallback11(
21735
+ const onTabSelect = useCallback12(
20536
21736
  (value) => {
20537
21737
  const selectedValueWithoutNull = value != null ? value : void 0;
20538
21738
  onSelectedIdChange == null ? void 0 : onSelectedIdChange(selectedValueWithoutNull);
@@ -20543,36 +21743,36 @@ var Tabs = ({
20543
21743
  },
20544
21744
  [onSelectedIdChange, useHashForState]
20545
21745
  );
20546
- useEffect17(() => {
21746
+ useEffect19(() => {
20547
21747
  if (selected && selected !== tab.getState().activeId) {
20548
21748
  tab.setSelectedId(selected);
20549
21749
  }
20550
21750
  }, [selected, tab]);
20551
- return /* @__PURE__ */ jsx121(AriakitTabProvider, { store: tab, setSelectedId: onTabSelect, children });
21751
+ return /* @__PURE__ */ jsx129(AriakitTabProvider, { store: tab, setSelectedId: onTabSelect, children });
20552
21752
  };
20553
21753
  var TabButtonGroup = ({ children, ...props }) => {
20554
- return /* @__PURE__ */ jsx121(AriakitTabList, { ...props, css: tabButtonGroupStyles, children });
21754
+ return /* @__PURE__ */ jsx129(AriakitTabList, { ...props, css: tabButtonGroupStyles, children });
20555
21755
  };
20556
21756
  var TabButton = ({
20557
21757
  children,
20558
21758
  id,
20559
21759
  ...props
20560
21760
  }) => {
20561
- return /* @__PURE__ */ jsx121(AriakitTab, { type: "button", id, ...props, css: tabButtonStyles, children });
21761
+ return /* @__PURE__ */ jsx129(AriakitTab, { type: "button", id, ...props, css: tabButtonStyles, children });
20562
21762
  };
20563
21763
  var TabContent = ({
20564
21764
  children,
20565
21765
  ...props
20566
21766
  }) => {
20567
- return /* @__PURE__ */ jsx121(AriakitTabPanel, { ...props, children });
21767
+ return /* @__PURE__ */ jsx129(AriakitTabPanel, { ...props, children });
20568
21768
  };
20569
21769
 
20570
21770
  // src/components/Toast/Toast.tsx
20571
21771
  import { toast, ToastContainer as ToastifyContainer } from "react-toastify";
20572
21772
 
20573
21773
  // src/components/Toast/Toast.styles.ts
20574
- import { css as css98 } from "@emotion/react";
20575
- var toastContainerStyles = css98`
21774
+ import { css as css101 } from "@emotion/react";
21775
+ var toastContainerStyles = css101`
20576
21776
  ${functionalColors}
20577
21777
 
20578
21778
  --toastify-color-light: white;
@@ -20795,9 +21995,9 @@ var toastContainerStyles = css98`
20795
21995
  `;
20796
21996
 
20797
21997
  // src/components/Toast/Toast.tsx
20798
- import { jsx as jsx122 } from "@emotion/react/jsx-runtime";
21998
+ import { jsx as jsx130 } from "@emotion/react/jsx-runtime";
20799
21999
  var ToastContainer = ({ limit = 4 }) => {
20800
- return /* @__PURE__ */ jsx122(
22000
+ return /* @__PURE__ */ jsx130(
20801
22001
  ToastifyContainer,
20802
22002
  {
20803
22003
  css: toastContainerStyles,
@@ -20809,112 +22009,6 @@ var ToastContainer = ({ limit = 4 }) => {
20809
22009
  }
20810
22010
  );
20811
22011
  };
20812
-
20813
- // src/components/Validation/StatusBullet.styles.ts
20814
- import { css as css99 } from "@emotion/react";
20815
- var StatusBulletContainer = css99`
20816
- align-items: center;
20817
- align-self: center;
20818
- color: var(--gray-500);
20819
- display: inline-flex;
20820
- font-weight: var(--fw-regular);
20821
- gap: var(--spacing-xs);
20822
- line-height: 1;
20823
- position: relative;
20824
- text-transform: lowercase;
20825
-
20826
- &:before {
20827
- border-radius: var(--rounded-full);
20828
- content: '';
20829
- display: block;
20830
- }
20831
- `;
20832
- var StatusBulletBase = css99`
20833
- font-size: var(--fs-sm);
20834
- &:before {
20835
- width: var(--fs-xs);
20836
- height: var(--fs-xs);
20837
- }
20838
- `;
20839
- var StatusBulletSmall = css99`
20840
- font-size: var(--fs-xs);
20841
- &:before {
20842
- width: var(--fs-xxs);
20843
- height: var(--fs-xxs);
20844
- }
20845
- `;
20846
- var StatusDraft = css99`
20847
- &:before {
20848
- background: var(--white);
20849
- box-shadow: inset 0 0 0 0.125rem var(--primary-action-default);
20850
- }
20851
- `;
20852
- var StatusModified = css99`
20853
- &:before {
20854
- background: linear-gradient(to right, var(--white) 50%, var(--primary-action-default) 50% 100%);
20855
- box-shadow: inset 0 0 0 0.125rem var(--primary-action-default);
20856
- }
20857
- `;
20858
- var StatusError = css99`
20859
- color: var(--error);
20860
- &:before {
20861
- /* TODO: replace this with an svg icon */
20862
- background: linear-gradient(
20863
- 133deg,
20864
- var(--error) 41%,
20865
- var(--white) 42%,
20866
- var(--white) 58%,
20867
- var(--error) 59%
20868
- );
20869
- }
20870
- `;
20871
- var StatusPublished = css99`
20872
- &:before {
20873
- background: var(--primary-action-default);
20874
- }
20875
- `;
20876
- var StatusOrphan = css99`
20877
- &:before {
20878
- background: var(--brand-secondary-5);
20879
- }
20880
- `;
20881
- var StatusUnknown = css99`
20882
- &:before {
20883
- background: var(--gray-800);
20884
- }
20885
- `;
20886
-
20887
- // src/components/Validation/StatusBullet.tsx
20888
- import { jsx as jsx123 } from "@emotion/react/jsx-runtime";
20889
- var StatusBullet = ({
20890
- status,
20891
- hideText = false,
20892
- size = "base",
20893
- message,
20894
- ...props
20895
- }) => {
20896
- const currentStateStyles = {
20897
- Error: StatusError,
20898
- Modified: StatusModified,
20899
- Unsaved: StatusDraft,
20900
- Orphan: StatusOrphan,
20901
- Published: StatusPublished,
20902
- Draft: StatusDraft,
20903
- Previous: StatusDraft,
20904
- Unknown: StatusUnknown
20905
- };
20906
- const statusSize = size === "base" ? StatusBulletBase : StatusBulletSmall;
20907
- return /* @__PURE__ */ jsx123(
20908
- "span",
20909
- {
20910
- role: "status",
20911
- css: [StatusBulletContainer, currentStateStyles[status], statusSize],
20912
- title: message != null ? message : status,
20913
- ...props,
20914
- children: hideText ? null : message ? message : status
20915
- }
20916
- );
20917
- };
20918
22012
  export {
20919
22013
  AddButton,
20920
22014
  AddListButton,
@@ -20925,6 +22019,8 @@ export {
20925
22019
  Banner,
20926
22020
  Button,
20927
22021
  ButtonWithMenu,
22022
+ CHECKBOX_OPERATORS,
22023
+ CONTENT_TYPE_OPERATORS,
20928
22024
  Calendar,
20929
22025
  Callout,
20930
22026
  Caption,
@@ -20938,9 +22034,11 @@ export {
20938
22034
  Counter,
20939
22035
  CreateTeamIntegrationTile,
20940
22036
  CurrentDrawerContext,
22037
+ DATE_OPERATORS,
20941
22038
  DashedBox,
20942
22039
  DateTimePicker,
20943
22040
  DateTimePickerVariant,
22041
+ DebouncedInputKeywordSearch,
20944
22042
  DescriptionList,
20945
22043
  Details,
20946
22044
  DismissibleChipAction,
@@ -20951,6 +22049,11 @@ export {
20951
22049
  EditTeamIntegrationTile,
20952
22050
  ErrorMessage,
20953
22051
  Fieldset,
22052
+ FilterButton2 as FilterButton,
22053
+ FilterControls,
22054
+ FilterItem,
22055
+ FilterItems,
22056
+ FilterMenu,
20954
22057
  Heading,
20955
22058
  HexModalBackground,
20956
22059
  HorizontalRhythm,
@@ -20975,6 +22078,7 @@ export {
20975
22078
  IntegrationModalIcon,
20976
22079
  IntegrationTile,
20977
22080
  JsonEditor,
22081
+ LOCALE_OPERATORS,
20978
22082
  Label,
20979
22083
  LabelLeadingIcon,
20980
22084
  Legend,
@@ -20995,6 +22099,7 @@ export {
20995
22099
  MenuItemSeparator,
20996
22100
  Modal,
20997
22101
  MultilineChip,
22102
+ NUMBER_OPERATORS,
20998
22103
  PageHeaderSection,
20999
22104
  Pagination,
21000
22105
  Paragraph,
@@ -21027,11 +22132,18 @@ export {
21027
22132
  ProgressBar,
21028
22133
  ProgressList,
21029
22134
  ProgressListItem,
22135
+ RICHTEXT_OPERATORS,
21030
22136
  ResolveIcon,
21031
22137
  RichTextToolbarIcon,
22138
+ STATUS_OPERATORS,
22139
+ SYSTEM_FIELD_OPERATORS,
21032
22140
  ScrollableList,
21033
22141
  ScrollableListInputItem,
21034
22142
  ScrollableListItem,
22143
+ SearchAndFilter,
22144
+ SearchAndFilterContext,
22145
+ SearchAndFilterOptionsContainer2 as SearchAndFilterOptionsContainer,
22146
+ SearchAndFilterProvider,
21035
22147
  SegmentedControl,
21036
22148
  ShortcutContext,
21037
22149
  ShortcutRevealer,
@@ -21040,6 +22152,7 @@ export {
21040
22152
  SuccessMessage,
21041
22153
  Switch,
21042
22154
  TAKEOVER_STACK_ID,
22155
+ TEXTBOX_OPERATORS,
21043
22156
  TabButton,
21044
22157
  TabButtonGroup,
21045
22158
  TabContent,
@@ -21141,6 +22254,7 @@ export {
21141
22254
  useIconContext,
21142
22255
  useOutsideClick,
21143
22256
  useParameterShell,
22257
+ useSearchAndFilter,
21144
22258
  useShortcut,
21145
22259
  warningIcon,
21146
22260
  yesNoIcon