@planningcenter/topbar 12.4.0 → 12.4.1-qa-959.1

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/topbar.js CHANGED
@@ -7,16 +7,18 @@ var general = require('@planningcenter/icons/paths/general');
7
7
  var Jolt = require('@planningcenter/jolt-client');
8
8
  var shim = require('use-sync-external-store/shim');
9
9
  require('react/jsx-runtime');
10
+ var toolbar = require('@planningcenter/icons/paths/toolbar');
11
+ var datetimeFmt = require('@planningcenter/datetime-fmt');
12
+ var pluralize = require('pluralize');
13
+ var logomarks = require('@planningcenter/icons/paths/logomark');
10
14
  var tapestryReact = require('@planningcenter/tapestry-react');
11
15
  var addOns = require('@planningcenter/add-ons');
12
16
  var churchCenter = require('@planningcenter/icons/paths/church-center');
13
17
  var people = require('@planningcenter/icons/paths/people');
14
- var toolbar = require('@planningcenter/icons/paths/toolbar');
15
18
  var reactCalendly = require('react-calendly');
16
19
  var algoliasearch = require('algoliasearch');
17
20
  var reactInstantsearchCore = require('react-instantsearch-core');
18
21
  var reactTransitionGroup = require('react-transition-group');
19
- var datetimeFmt = require('@planningcenter/datetime-fmt');
20
22
 
21
23
  function _interopNamespaceDefault(e) {
22
24
  var n = Object.create(null);
@@ -37,11 +39,12 @@ function _interopNamespaceDefault(e) {
37
39
 
38
40
  var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
39
41
  var general__namespace = /*#__PURE__*/_interopNamespaceDefault(general);
42
+ var toolbar__namespace = /*#__PURE__*/_interopNamespaceDefault(toolbar);
43
+ var logomarks__namespace = /*#__PURE__*/_interopNamespaceDefault(logomarks);
40
44
  var churchCenter__namespace = /*#__PURE__*/_interopNamespaceDefault(churchCenter);
41
45
  var people__namespace = /*#__PURE__*/_interopNamespaceDefault(people);
42
- var toolbar__namespace = /*#__PURE__*/_interopNamespaceDefault(toolbar);
43
46
 
44
- var styles$m = {"accessibility-toolbar":"accessibility-toolbar-jgjUG"};
47
+ var styles$u = {"accessibility-toolbar":"accessibility-toolbar-jgjUG"};
45
48
 
46
49
  const AccessibilityToolbar = ({
47
50
  children
@@ -53,7 +56,7 @@ const AccessibilityToolbar = ({
53
56
  (_a = document.getElementById("main-content")) === null || _a === void 0 ? void 0 : _a.focus();
54
57
  };
55
58
  return /*#__PURE__*/React.createElement("div", {
56
- className: styles$m["accessibility-toolbar"]
59
+ className: styles$u["accessibility-toolbar"]
57
60
  }, /*#__PURE__*/React.createElement(tapestry.Link, {
58
61
  href: "#main-content",
59
62
  kind: "primary",
@@ -372,11 +375,11 @@ const X = ({
372
375
  fill: fill
373
376
  })));
374
377
 
375
- var styles$l = {"announcement":"announcement-pI5tM","announcement--platform":"announcement--platform-EcUn2","announcement--promo":"announcement--promo-FarUk","announcement-icon":"announcement-icon-Ov39-","announcement-content":"announcement-content-q2ad6","dismiss":"dismiss-wUAoU","dismiss--promo":"dismiss--promo-7zvO4"};
378
+ var styles$t = {"announcement":"announcement-pI5tM","announcement--platform":"announcement--platform-EcUn2","announcement--promo":"announcement--promo-FarUk","announcement-icon":"announcement-icon-Ov39-","announcement-content":"announcement-content-q2ad6","dismiss":"dismiss-wUAoU","dismiss--promo":"dismiss--promo-7zvO4"};
376
379
 
377
380
  function AnnouncementIcon() {
378
381
  return /*#__PURE__*/React.createElement("svg", {
379
- className: styles$l["announcement-icon"],
382
+ className: styles$t["announcement-icon"],
380
383
  width: "16",
381
384
  height: "16",
382
385
  viewBox: "0 0 16 16",
@@ -501,7 +504,7 @@ let StyledAnnouncement$1 = class StyledAnnouncement extends React.Component {
501
504
  } = this.props;
502
505
  const isPromo = variant === "promo";
503
506
  return /*#__PURE__*/React.createElement("div", {
504
- className: classnames(styles$l["announcement"], styles$l[`announcement--${variant !== null && variant !== void 0 ? variant : "platform"}`]),
507
+ className: classnames(styles$t["announcement"], styles$t[`announcement--${variant !== null && variant !== void 0 ? variant : "platform"}`]),
505
508
  "data-announcement-variant": variant !== null && variant !== void 0 ? variant : "platform",
506
509
  style: isPromo ? {
507
510
  backgroundImage: promoBackgroundUrl,
@@ -510,7 +513,7 @@ let StyledAnnouncement$1 = class StyledAnnouncement extends React.Component {
510
513
  backgroundSize: "cover"
511
514
  } : undefined
512
515
  }, !isPromo && /*#__PURE__*/React.createElement(AnnouncementIcon, null), /*#__PURE__*/React.createElement("div", {
513
- className: styles$l["announcement-content"],
516
+ className: styles$t["announcement-content"],
514
517
  style: style,
515
518
  ...platformProps
516
519
  }));
@@ -559,7 +562,7 @@ function StyledDismissButton$1({
559
562
  const isPromo = variant === "promo";
560
563
  return /*#__PURE__*/React.createElement("button", {
561
564
  type: "button",
562
- className: classnames(styles$l.dismiss, isPromo && styles$l["dismiss--promo"]),
565
+ className: classnames(styles$t.dismiss, isPromo && styles$t["dismiss--promo"]),
563
566
  ...props
564
567
  }, /*#__PURE__*/React.createElement(X, {
565
568
  fill: isPromo ? "currentColor" : "white",
@@ -639,9 +642,9 @@ class StyledAnnouncement extends React.Component {
639
642
  ...platformProps
640
643
  } = this.props;
641
644
  return /*#__PURE__*/React.createElement("div", {
642
- className: styles$l["announcement"]
645
+ className: styles$t["announcement"]
643
646
  }, /*#__PURE__*/React.createElement(AnnouncementIcon, null), /*#__PURE__*/React.createElement("div", {
644
- className: styles$l["announcement-content"],
647
+ className: styles$t["announcement-content"],
645
648
  style: style,
646
649
  ...platformProps
647
650
  }));
@@ -652,7 +655,7 @@ function StyledDismissButton({
652
655
  }) {
653
656
  return /*#__PURE__*/React.createElement("button", {
654
657
  type: "button",
655
- className: styles$l.dismiss,
658
+ className: styles$t.dismiss,
656
659
  ...props
657
660
  }, /*#__PURE__*/React.createElement(X, {
658
661
  fill: "white",
@@ -1774,7 +1777,7 @@ function MonoAppIcon({
1774
1777
  })) : (/*#__PURE__*/React.createElement("div", null, "appName not supported")));
1775
1778
  }
1776
1779
 
1777
- var styles$k = {"icon-slot":"icon-slot-m3ZIk","name":"name-UNqbW"};
1780
+ var styles$s = {"icon-slot":"icon-slot-m3ZIk","name":"name-UNqbW"};
1778
1781
 
1779
1782
  const AppRow = ({
1780
1783
  appName,
@@ -1783,24 +1786,24 @@ const AppRow = ({
1783
1786
  }) => {
1784
1787
  if (appName === "Accounts") {
1785
1788
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("span", {
1786
- className: styles$k["icon-slot"]
1789
+ className: styles$s["icon-slot"]
1787
1790
  }, /*#__PURE__*/React.createElement(MonoAppIcon, {
1788
1791
  appName: "Accounts",
1789
1792
  colors: colors,
1790
1793
  size: iconSize
1791
1794
  })), /*#__PURE__*/React.createElement("span", {
1792
- className: styles$k.name
1795
+ className: styles$s.name
1793
1796
  }, "Account settings"));
1794
1797
  }
1795
1798
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ColorAppIcon, {
1796
1799
  appName: appName.replace(/[\s-]/, ""),
1797
1800
  size: iconSize
1798
1801
  }), /*#__PURE__*/React.createElement("span", {
1799
- className: styles$k.name
1802
+ className: styles$s.name
1800
1803
  }, appName));
1801
1804
  };
1802
1805
 
1803
- var styles$j = {"button":"button-XMbeQ","label":"label-884of","chevron":"chevron-RRg9k"};
1806
+ var styles$r = {"button":"button-XMbeQ","label":"label-884of","chevron":"chevron-RRg9k"};
1804
1807
 
1805
1808
  const AppsButton = /*#__PURE__*/React.forwardRef(({
1806
1809
  appName,
@@ -1812,10 +1815,10 @@ const AppsButton = /*#__PURE__*/React.forwardRef(({
1812
1815
  ...restProps,
1813
1816
  ref: ref,
1814
1817
  "aria-label": `App switcher: ${appName}`,
1815
- className: styles$j.button,
1818
+ className: styles$r.button,
1816
1819
  kind: "neutral-inline",
1817
1820
  label: /*#__PURE__*/React.createElement("span", {
1818
- className: styles$j.label
1821
+ className: styles$r.label
1819
1822
  }, isAccounts ? "Account settings" : appName),
1820
1823
  prefix: isAccounts ? (/*#__PURE__*/React.createElement(MonoAppIcon, {
1821
1824
  appName: "Accounts",
@@ -1826,13 +1829,13 @@ const AppsButton = /*#__PURE__*/React.forwardRef(({
1826
1829
  size: 22
1827
1830
  })),
1828
1831
  suffix: /*#__PURE__*/React.createElement(DisclosureChevronIcon, {
1829
- className: `${styles$j.chevron} symbol`
1832
+ className: `${styles$r.chevron} symbol`
1830
1833
  })
1831
1834
  });
1832
1835
  });
1833
1836
  AppsButton.displayName = "AppsButton";
1834
1837
 
1835
- var styles$i = {"nav":"nav-y-6ML","popover-content":"popover-content-jOAAY","list":"list-jUxvp","link":"link-LMp2h","current":"current-4U4VL","accounts-item":"accounts-item-erJW0","accounts-link":"accounts-link-4jwPW"};
1838
+ var styles$q = {"nav":"nav-y-6ML","popover-content":"popover-content-jOAAY","list":"list-jUxvp","link":"link-LMp2h","current":"current-4U4VL","accounts-item":"accounts-item-erJW0","accounts-link":"accounts-link-4jwPW"};
1836
1839
 
1837
1840
  const AppsMenu = ({
1838
1841
  appName,
@@ -1853,8 +1856,8 @@ const AppsMenu = ({
1853
1856
  }, /*#__PURE__*/React.createElement("a", {
1854
1857
  "aria-current": isCurrent ? "page" : undefined,
1855
1858
  "aria-label": name,
1856
- className: classnames(styles$i.link, {
1857
- [styles$i.current]: isCurrent
1859
+ className: classnames(styles$q.link, {
1860
+ [styles$q.current]: isCurrent
1858
1861
  }),
1859
1862
  "data-pendo": `app-switcher--change-app--${name}`,
1860
1863
  "data-turbolinks": false,
@@ -1870,22 +1873,22 @@ const AppsMenu = ({
1870
1873
  colors: colors
1871
1874
  })), /*#__PURE__*/React.createElement(tapestry.PopoverContent, {
1872
1875
  "aria-label": "Switch app",
1873
- className: styles$i["popover-content"],
1876
+ className: styles$q["popover-content"],
1874
1877
  placement: "bottom start"
1875
1878
  }, /*#__PURE__*/React.createElement("nav", {
1876
- className: styles$i.nav,
1879
+ className: styles$q.nav,
1877
1880
  "data-pendo": "app-switcher"
1878
1881
  }, /*#__PURE__*/React.createElement("ul", {
1879
- className: styles$i.list,
1882
+ className: styles$q.list,
1880
1883
  role: "list"
1881
1884
  }, homeProduct && renderProductLink(homeProduct.name), restProducts.map(({
1882
1885
  name
1883
1886
  }) => renderProductLink(name)), accountsProduct && (/*#__PURE__*/React.createElement("li", {
1884
- className: styles$i["accounts-item"]
1887
+ className: styles$q["accounts-item"]
1885
1888
  }, /*#__PURE__*/React.createElement("a", {
1886
1889
  "aria-current": appName === accountsProduct.name ? "page" : undefined,
1887
1890
  "aria-label": "Account settings",
1888
- className: classnames(styles$i.link, styles$i["accounts-link"]),
1891
+ className: classnames(styles$q.link, styles$q["accounts-link"]),
1889
1892
  "data-pendo": "app-switcher--change-app--Accounts",
1890
1893
  "data-turbolinks": false,
1891
1894
  href: pcoUrl$1(env)("accounts") + getAppsSwitchProductPath(accountsProduct.name)
@@ -2093,7 +2096,7 @@ function MonoAppName({
2093
2096
  })) : (/*#__PURE__*/React.createElement("div", null, "appName not supported"));
2094
2097
  }
2095
2098
 
2096
- var styles$h = {"unbutton":"unbutton-lEbTR"};
2099
+ var styles$p = {"unbutton":"unbutton-lEbTR"};
2097
2100
 
2098
2101
  function Unbutton({
2099
2102
  className,
@@ -2102,7 +2105,7 @@ function Unbutton({
2102
2105
  ...nativeProps
2103
2106
  }) {
2104
2107
  return /*#__PURE__*/React.createElement("button", {
2105
- className: classnames(styles$h.unbutton, className),
2108
+ className: classnames(styles$p.unbutton, className),
2106
2109
  style: {
2107
2110
  ...style
2108
2111
  },
@@ -2111,7 +2114,7 @@ function Unbutton({
2111
2114
  });
2112
2115
  }
2113
2116
 
2114
- var styles$g = {"button":"button-wsipc","button-accounts":"button-accounts-zQmBM","chevron":"chevron-obyBF","is-expanded":"is-expanded-PoCQ9"};
2117
+ var styles$o = {"button":"button-wsipc","button-accounts":"button-accounts-zQmBM","chevron":"chevron-obyBF","is-expanded":"is-expanded-PoCQ9"};
2115
2118
 
2116
2119
  const LegacyAppsButton = ({
2117
2120
  appName,
@@ -2126,8 +2129,8 @@ const LegacyAppsButton = ({
2126
2129
  "aria-haspopup": "true",
2127
2130
  "aria-label": `App switcher: ${appName}`,
2128
2131
  onClick: onClick,
2129
- className: classnames(styles$g.button, {
2130
- [styles$g["is-expanded"]]: expanded
2132
+ className: classnames(styles$o.button, {
2133
+ [styles$o["is-expanded"]]: expanded
2131
2134
  }),
2132
2135
  type: "button",
2133
2136
  style: style,
@@ -2136,7 +2139,7 @@ const LegacyAppsButton = ({
2136
2139
  appName: "Accounts",
2137
2140
  colors: colors
2138
2141
  }), /*#__PURE__*/React.createElement("div", {
2139
- className: styles$g["button-accounts"]
2142
+ className: styles$o["button-accounts"]
2140
2143
  }, "Account settings"))) : (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ColorAppIcon, {
2141
2144
  appName: appName.replace(/[\s-]/, "")
2142
2145
  }), /*#__PURE__*/React.createElement(MonoAppName, {
@@ -2144,7 +2147,7 @@ const LegacyAppsButton = ({
2144
2147
  key: "mono-app-name",
2145
2148
  size: 24
2146
2149
  }))), /*#__PURE__*/React.createElement(DisclosureChevronIcon, {
2147
- className: styles$g.chevron,
2150
+ className: styles$o.chevron,
2148
2151
  key: "disclosure-chevron-icon"
2149
2152
  }));
2150
2153
  };
@@ -2277,7 +2280,7 @@ class Outsider extends React.Component {
2277
2280
  }
2278
2281
  }
2279
2282
 
2280
- var styles$f = {"popup-root":"popup-root-SeL5u","popup":"popup-nQXYW","is-visible":"is-visible-3DAUP"};
2283
+ var styles$n = {"popup-root":"popup-root-SeL5u","popup":"popup-nQXYW","is-visible":"is-visible-3DAUP"};
2281
2284
 
2282
2285
  const Popup = ({
2283
2286
  className,
@@ -2285,8 +2288,8 @@ const Popup = ({
2285
2288
  isVisible,
2286
2289
  ...nativeProps
2287
2290
  }) => (/*#__PURE__*/React.createElement(C, {
2288
- className: classnames(styles$f.popup, {
2289
- [styles$f["is-visible"]]: isVisible
2291
+ className: classnames(styles$n.popup, {
2292
+ [styles$n["is-visible"]]: isVisible
2290
2293
  }, className),
2291
2294
  ...nativeProps
2292
2295
  }));
@@ -2294,11 +2297,11 @@ const Popup = ({
2294
2297
  const PopupRoot = ({
2295
2298
  ...nativeProps
2296
2299
  }) => (/*#__PURE__*/React.createElement("div", {
2297
- className: styles$f["popup-root"],
2300
+ className: styles$n["popup-root"],
2298
2301
  ...nativeProps
2299
2302
  }));
2300
2303
 
2301
- var styles$e = {"popup":"popup-bVhSa"};
2304
+ var styles$m = {"popup":"popup-bVhSa"};
2302
2305
 
2303
2306
  const LegacyAppsMenu = ({
2304
2307
  appName,
@@ -2336,7 +2339,7 @@ const LegacyAppsMenu = ({
2336
2339
  cleanup: !visible,
2337
2340
  component: Outsider,
2338
2341
  onOutsideClick: toggle,
2339
- className: styles$e.popup,
2342
+ className: styles$m.popup,
2340
2343
  isVisible: visible
2341
2344
  }, /*#__PURE__*/React.createElement("menu", {
2342
2345
  ref: menuRef,
@@ -3246,34 +3249,117 @@ const useUpdateStore = () => React.useCallback(updates => {
3246
3249
  });
3247
3250
  }, []);
3248
3251
 
3252
+ const collections = {
3253
+ general: general__namespace,
3254
+ toolbar: toolbar__namespace
3255
+ };
3256
+ const paths = collections;
3257
+ function Icon({
3258
+ name,
3259
+ size = 16,
3260
+ style,
3261
+ theme,
3262
+ title,
3263
+ ...props
3264
+ }) {
3265
+ const [collection, symbol] = name.split(".");
3266
+ return /*#__PURE__*/React.createElement("svg", {
3267
+ "aria-hidden": title ? undefined : true,
3268
+ fill: "currentColor",
3269
+ height: size,
3270
+ role: title ? "img" : undefined,
3271
+ style: {
3272
+ color: theme && `var(${theme})`,
3273
+ flexShrink: 0,
3274
+ ...style
3275
+ },
3276
+ viewBox: "0 0 16 16",
3277
+ width: size,
3278
+ ...props
3279
+ }, title && /*#__PURE__*/React.createElement("title", null, title), /*#__PURE__*/React.createElement("path", {
3280
+ d: paths[collection][symbol]
3281
+ }));
3282
+ }
3283
+
3284
+ const SEARCHABLE_PRODUCTS = [{
3285
+ appName: "Calendar",
3286
+ slug: "calendar"
3287
+ }, {
3288
+ appName: "Check-Ins",
3289
+ slug: "check-ins"
3290
+ }, {
3291
+ appName: "Giving",
3292
+ slug: "giving"
3293
+ }, {
3294
+ appName: "Groups",
3295
+ slug: "groups"
3296
+ }, {
3297
+ appName: "People",
3298
+ slug: "people"
3299
+ }, {
3300
+ appName: "Publishing",
3301
+ slug: "publishing"
3302
+ }, {
3303
+ appName: "Registrations",
3304
+ slug: "registrations"
3305
+ }, {
3306
+ appName: "Services",
3307
+ slug: "services"
3308
+ }];
3309
+ const KEYBOARD_SHORTCUTS = {
3310
+ copyLink: {
3311
+ key: "c",
3312
+ label: "Copy link",
3313
+ modifierKey: true
3314
+ },
3315
+ openInNewTab: {
3316
+ label: "Open in new tab"},
3317
+ openSearch: {
3318
+ key: "k",
3319
+ label: "Open search",
3320
+ modifierKey: true
3321
+ },
3322
+ select: {
3323
+ label: "Select",
3324
+ modifierKey: false,
3325
+ next: "ArrowDown",
3326
+ previous: "ArrowUp"
3327
+ }
3328
+ };
3329
+
3249
3330
  const isMac = () => /Mac|iPhone|iPad|iPod/.test(navigator.platform);
3250
3331
  const hasCommandKey = event => isMac() ? event.metaKey : event.ctrlKey;
3251
- const commandKeyLabel = () => isMac() ? "⌘" : "Ctrl+";
3252
- const isSearchShortcut = event => event.key.toLowerCase() === "k" && !event.altKey && !event.shiftKey && hasCommandKey(event);
3332
+ const matchesShortcut = (shortcut, event) => event.key.toLowerCase() === shortcut.key && !event.altKey && !event.shiftKey && hasCommandKey(event) === shortcut.modifierKey;
3333
+ const isSearchShortcut = event => matchesShortcut(KEYBOARD_SHORTCUTS.openSearch, event);
3253
3334
  // Products opened their own search with `/` before this one replaced it.
3254
3335
  const isLegacySearchShortcut = event => event.key === "/" && !event.altKey && !event.ctrlKey && !event.metaKey && !isTypingIn(event.target);
3255
- const isCopyShortcut = event => event.key.toLowerCase() === "c" && !event.altKey && !event.shiftKey && hasCommandKey(event);
3336
+ const isCopyShortcut = event => matchesShortcut(KEYBOARD_SHORTCUTS.copyLink, event);
3256
3337
  const isTypingIn = target => target instanceof Element && target.closest('input, select, textarea, [contenteditable]:not([contenteditable="false"])') !== null;
3257
3338
  const isTypingKey = event => event.key.length === 1 && event.key !== " " && !event.altKey && !event.ctrlKey && !event.metaKey;
3258
3339
  const verticalStep = key => ({
3259
- ArrowDown: 1,
3260
- ArrowUp: -1
3340
+ [KEYBOARD_SHORTCUTS.select.next]: 1,
3341
+ [KEYBOARD_SHORTCUTS.select.previous]: -1
3261
3342
  })[key];
3262
3343
  const horizontalStep = key => ({
3263
3344
  ArrowLeft: -1,
3264
3345
  ArrowRight: 1
3265
3346
  })[key];
3266
3347
 
3348
+ var styles$l = {"searchButton":"searchButton-fYa5-"};
3349
+
3267
3350
  function SearchButton({
3351
+ mobile = false,
3268
3352
  onClick
3269
3353
  }) {
3270
3354
  return /*#__PURE__*/React.createElement("button", {
3271
- "aria-keyshortcuts": `${isMac() ? "Meta+K" : "Control+K"} /`,
3355
+ "aria-keyshortcuts": mobile ? undefined : `${isMac() ? "Meta" : "Control"}+${KEYBOARD_SHORTCUTS.openSearch.key.toUpperCase()} /`,
3272
3356
  "aria-label": "Search",
3357
+ className: styles$l.searchButton,
3273
3358
  onClick: onClick,
3274
3359
  type: "button"
3275
- }, /*#__PURE__*/React.createElement(Spyglass, {
3276
- fill: "currentColor"
3360
+ }, /*#__PURE__*/React.createElement(Icon, {
3361
+ name: "general.search",
3362
+ size: mobile ? 18 : 14
3277
3363
  }));
3278
3364
  }
3279
3365
 
@@ -3588,16 +3674,16 @@ function useRecentlyVisitableMetadata() {
3588
3674
  const ENTRY_VERSION = 3;
3589
3675
  const MAX_ENTRIES = 50;
3590
3676
  const MAX_TEXT_LENGTH = 200;
3591
- const PRODUCTS = ["accounts", "calendar", "check-ins", "giving", "groups", "home", "login", "people", "publishing", "registrations", "services"];
3677
+ const PRODUCTS$1 = ["accounts", "calendar", "check-ins", "giving", "groups", "home", "login", "people", "publishing", "registrations", "services"];
3592
3678
  // Login has no pages worth returning to.
3593
- const APPS = PRODUCTS.filter(product => product !== "login");
3679
+ const APPS = PRODUCTS$1.filter(product => product !== "login");
3594
3680
  function isId(value) {
3595
3681
  return value !== "" && Array.from(value).every(character => character >= "0" && character <= "9");
3596
3682
  }
3597
3683
  // A PCRL looks like `<product>/v2/<resource_type>/<id>`.
3598
3684
  function isPcrl(value) {
3599
3685
  const segments = value.split("/");
3600
- return segments.length === 4 && PRODUCTS.some(product => product === segments[0]) && isId(segments[3]);
3686
+ return segments.length === 4 && PRODUCTS$1.some(product => product === segments[0]) && isId(segments[3]);
3601
3687
  }
3602
3688
  function isApp(value) {
3603
3689
  return APPS.some(app => app === value);
@@ -3996,7 +4082,13 @@ function hasSelectedText(element) {
3996
4082
  return selectedInField || ((_b = (_a = window.getSelection()) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : "") !== "";
3997
4083
  }
3998
4084
 
3999
- const COPIED_FEEDBACK_MS = 1500;
4085
+ // eslint-disable-next-line sort-keys-fix/sort-keys-fix
4086
+ const COPIED_TIMING = {
4087
+ enter: 240,
4088
+ active: 1000,
4089
+ exit: 240
4090
+ };
4091
+ const COPIED_FEEDBACK_MS = COPIED_TIMING.enter + COPIED_TIMING.active + COPIED_TIMING.exit;
4000
4092
  // `copiedUrl` stays set briefly after a copy so the UI can confirm it.
4001
4093
  function useCopyLink() {
4002
4094
  const [copiedUrl, setCopiedUrl] = React.useState(null);
@@ -4020,22 +4112,27 @@ function useCopyLink() {
4020
4112
  // Remembering which list the index belongs to puts the highlight back on the
4021
4113
  // first item whenever a new list replaces it, without an effect to reset it.
4022
4114
  // A list that grows or fills in under the same `list` keeps its highlight.
4023
- function useResultNavigation(items, list) {
4115
+ // Disabled, nothing is highlighted and the keys and pointer leave it alone.
4116
+ function useResultNavigation(items, list, enabled = true) {
4024
4117
  const [highlight, setHighlight] = React.useState({
4025
4118
  index: 0,
4026
4119
  list
4027
4120
  });
4028
4121
  const highlightedIndex = highlight.list === list ? highlight.index : 0;
4029
- const highlighted = items[highlightedIndex];
4122
+ const highlighted = enabled ? items[highlightedIndex] : undefined;
4030
4123
  const {
4031
4124
  copiedUrl,
4032
4125
  copy
4033
4126
  } = useCopyLink();
4034
- const highlightIndex = React.useCallback(index => setHighlight(current => current.list === list && current.index === index ? current : {
4035
- index,
4036
- list
4037
- }), [list]);
4127
+ const highlightIndex = React.useCallback(index => {
4128
+ if (!enabled) return;
4129
+ setHighlight(current => current.list === list && current.index === index ? current : {
4130
+ index,
4131
+ list
4132
+ });
4133
+ }, [enabled, list]);
4038
4134
  const handleKeyDown = event => {
4135
+ if (!enabled) return;
4039
4136
  const step = verticalStep(event.key);
4040
4137
  if (step && items.length > 0) {
4041
4138
  event.preventDefault();
@@ -4059,41 +4156,89 @@ function useResultNavigation(items, list) {
4059
4156
  };
4060
4157
  }
4061
4158
 
4062
- function groupSections(groups = []) {
4159
+ var styles$k = {"modal":"modal-NR3TO","visuallyHidden":"visuallyHidden-C28ju","panel":"panel-HlF7S"};
4160
+
4161
+ const FALLBACK_SLUGS = ["people", "services"];
4162
+ function defaultProduct(products, appName) {
4163
+ var _a;
4164
+ const current = products.find(product => product.appName === appName);
4165
+ const fallback = FALLBACK_SLUGS.map(slug => products.find(product => product.slug === slug)).find(Boolean);
4166
+ return (_a = current !== null && current !== void 0 ? current : fallback) !== null && _a !== void 0 ? _a : products[0];
4167
+ }
4168
+
4169
+ function groupSections(groups = [], timeZone) {
4063
4170
  return groups.map(({
4064
4171
  results,
4065
4172
  type
4066
4173
  }) => ({
4067
4174
  heading: type,
4068
- items: results.map(resultItem),
4175
+ items: results.map(result => resultItem(result, timeZone)),
4069
4176
  key: type
4070
4177
  }));
4071
4178
  }
4072
4179
  function resultItem({
4073
4180
  attributes,
4074
4181
  id
4075
- }) {
4182
+ }, timeZone) {
4076
4183
  return {
4184
+ category: attributes.category,
4185
+ imageUrl: attributes.image_url,
4077
4186
  key: id,
4078
- subtitle: summarize(attributes.metadata),
4187
+ product: attributes.product,
4188
+ subtitle: summarize(attributes, timeZone),
4079
4189
  title: attributes.title,
4080
4190
  url: attributes.url
4081
4191
  };
4082
4192
  }
4083
- function visitItem(visit) {
4193
+ function visitItem(visit, timeZone) {
4084
4194
  return {
4085
4195
  key: entryKey(visit.entry),
4086
- ...describeVisit(visit)
4196
+ ...describeVisit(visit, timeZone)
4197
+ };
4198
+ }
4199
+ const joinParts = (...parts) => parts.filter(Boolean).join(" · ");
4200
+ // Matches home-mobile's search subtitles, so a result reads the same in both.
4201
+ function summarize({
4202
+ category,
4203
+ metadata
4204
+ }, timeZone) {
4205
+ const text = key => {
4206
+ const value = metadata === null || metadata === void 0 ? void 0 : metadata[key];
4207
+ return typeof value === "string" ? value : "";
4087
4208
  };
4209
+ if (category === "profile") {
4210
+ return joinParts(text("phone"), text("email"));
4211
+ } else if (category === "event") {
4212
+ return eventTime(text("starts_at"), text("ends_at"), {
4213
+ recurring: (metadata === null || metadata === void 0 ? void 0 : metadata.recurring) === true,
4214
+ timeZone
4215
+ });
4216
+ } else {
4217
+ return text("details");
4218
+ }
4088
4219
  }
4089
- function summarize(metadata) {
4090
- return Object.values(metadata !== null && metadata !== void 0 ? metadata : {}).filter(value => typeof value === "string" && value !== "").join(" · ");
4220
+ // "Oct 25, 9–10:30am", in the organization's time zone like the rest
4221
+ // of Planning Center.
4222
+ function eventTime(startsAt, endsAt, {
4223
+ recurring,
4224
+ timeZone
4225
+ }) {
4226
+ if (startsAt === "") {
4227
+ return "";
4228
+ } else {
4229
+ const time = datetimeFmt.datetime(startsAt, endsAt || null, {
4230
+ style: "abbreviated",
4231
+ ...(timeZone && {
4232
+ timeZone
4233
+ })
4234
+ });
4235
+ return recurring ? joinParts(time, "Repeating") : time;
4236
+ }
4091
4237
  }
4092
4238
  // Unlike search results, recents come from every product, so each one names
4093
- // its product and type.
4094
- function describeVisit(visit) {
4239
+ // its type. The row's product icon says which product it came from.
4240
+ function describeVisit(visit, timeZone) {
4095
4241
  var _a, _b;
4096
- const subtitle = (...parts) => parts.filter(Boolean).join(" · ");
4097
4242
  if (visit.status === "page") {
4098
4243
  const {
4099
4244
  app,
@@ -4101,65 +4246,312 @@ function describeVisit(visit) {
4101
4246
  title
4102
4247
  } = visit.entry;
4103
4248
  return {
4104
- subtitle: subtitle(productName(app), (_a = metadata === null || metadata === void 0 ? void 0 : metadata.type) !== null && _a !== void 0 ? _a : "", (_b = metadata === null || metadata === void 0 ? void 0 : metadata.details) !== null && _b !== void 0 ? _b : ""),
4249
+ category: "generic",
4250
+ imageUrl: null,
4251
+ product: app,
4252
+ subtitle: joinParts(capitalize((_a = metadata === null || metadata === void 0 ? void 0 : metadata.type) !== null && _a !== void 0 ? _a : ""), (_b = metadata === null || metadata === void 0 ? void 0 : metadata.details) !== null && _b !== void 0 ? _b : ""),
4105
4253
  title,
4106
4254
  url: visit.url
4107
4255
  };
4108
4256
  } else {
4109
4257
  const {
4110
- metadata,
4258
+ attributes
4259
+ } = visit.result;
4260
+ const {
4261
+ category,
4262
+ image_url,
4111
4263
  product,
4112
4264
  title,
4113
4265
  type
4114
- } = visit.result.attributes;
4266
+ } = attributes;
4267
+ // Profiles and events say what they are with a phone number or a date.
4268
+ const kind = category === "generic" ? capitalize(pluralize.singular(type)) : "";
4115
4269
  return {
4116
- subtitle: subtitle(productName(product), type, summarize(metadata)),
4270
+ category,
4271
+ imageUrl: image_url,
4272
+ product,
4273
+ subtitle: joinParts(kind, summarize(attributes, timeZone)),
4117
4274
  title,
4118
4275
  url: visit.url
4119
4276
  };
4120
4277
  }
4121
4278
  }
4122
- // check-ins → Check-Ins
4123
- function productName(slug) {
4124
- return slug.split("-").map(capitalize).join("-");
4125
- }
4126
4279
  function capitalize(word) {
4127
4280
  return word.charAt(0).toUpperCase() + word.slice(1);
4128
4281
  }
4129
4282
 
4130
- const STORAGE_KEY = "topbar.product_search.last_product";
4131
- function readLastProduct() {
4132
- try {
4133
- return localStorage.getItem(STORAGE_KEY);
4134
- } catch {
4135
- return null;
4136
- }
4137
- }
4138
- function saveLastProduct(slug) {
4139
- try {
4140
- localStorage.setItem(STORAGE_KEY, slug);
4141
- } catch {
4142
- // Storage can be full or blocked; search still works without it.
4283
+ var styles$j = {"container":"container-YDdM1","hint":"hint-017Rd","keycap":"keycap-ENJM2","labels":"labels-GHPqL","copied":"copied-DUFa1"};
4284
+
4285
+ const SYMBOLS = {
4286
+ command: {
4287
+ label: "⌘",
4288
+ paths: ["M7 9a2 2 0 1 1 2 -2v10a2 2 0 1 1 -2 -2h10a2 2 0 1 1 -2 2v-10a2 2 0 1 1 2 2h-10"]
4289
+ },
4290
+ down: {
4291
+ label: "↓",
4292
+ paths: ["M12 6l0 12", "M16 14l-4 4", "M8 14l4 4"]
4293
+ },
4294
+ return: {
4295
+ label: "↵",
4296
+ paths: ["M18 6v6a3 3 0 0 1 -3 3h-10l4 -4m0 8l-4 -4"]
4297
+ },
4298
+ up: {
4299
+ label: "↑",
4300
+ paths: ["M12 6l0 12", "M16 10l-4 -4", "M8 10l4 -4"]
4143
4301
  }
4302
+ };
4303
+ function Keycap(props) {
4304
+ return /*#__PURE__*/React.createElement("kbd", {
4305
+ className: styles$j.keycap
4306
+ }, "symbol" in props ? (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("svg", {
4307
+ "aria-hidden": true,
4308
+ fill: "none",
4309
+ stroke: "currentColor",
4310
+ strokeLinecap: "round",
4311
+ strokeLinejoin: "round",
4312
+ viewBox: "0 0 24 24"
4313
+ }, SYMBOLS[props.symbol].paths.map(d => (/*#__PURE__*/React.createElement("path", {
4314
+ d: d,
4315
+ key: d
4316
+ })))), /*#__PURE__*/React.createElement("span", {
4317
+ className: styles$k.visuallyHidden
4318
+ }, SYMBOLS[props.symbol].label))) : props.label);
4319
+ }
4320
+ function CommandKey() {
4321
+ return isMac() ? /*#__PURE__*/React.createElement(Keycap, {
4322
+ symbol: "command"
4323
+ }) : /*#__PURE__*/React.createElement(Keycap, {
4324
+ label: "Ctrl"
4325
+ });
4144
4326
  }
4145
- function initialProduct(products) {
4146
- var _a, _b, _c;
4147
- const lastProduct = readLastProduct();
4148
- const bySlug = slug => products.find(product => product.slug === slug);
4149
- return (_c = (_b = (_a = bySlug(lastProduct)) !== null && _a !== void 0 ? _a : bySlug("people")) !== null && _b !== void 0 ? _b : bySlug("services")) !== null && _c !== void 0 ? _c : products[0];
4327
+ function EnterKey() {
4328
+ return isMac() ? /*#__PURE__*/React.createElement(Keycap, {
4329
+ symbol: "return"
4330
+ }) : /*#__PURE__*/React.createElement(Keycap, {
4331
+ label: "Enter"
4332
+ });
4150
4333
  }
4151
-
4334
+ const {
4335
+ copyLink,
4336
+ openInNewTab,
4337
+ openSearch,
4338
+ select
4339
+ } = KEYBOARD_SHORTCUTS;
4152
4340
  function KeyboardHints({
4153
4341
  copied
4154
4342
  }) {
4155
- const command = commandKeyLabel();
4156
- return /*#__PURE__*/React.createElement("p", null, "\u2191\u2193 Select \u00B7 \u21B5 Open \u00B7 ", command, "\u21B5 Open in new tab \u00B7 ", command, "C", " ", /*#__PURE__*/React.createElement("span", {
4343
+ return /*#__PURE__*/React.createElement("ul", {
4344
+ "aria-label": "Keyboard shortcuts",
4345
+ className: styles$j.container
4346
+ }, /*#__PURE__*/React.createElement("li", {
4347
+ className: styles$j.hint
4348
+ }, /*#__PURE__*/React.createElement(tapestry.Flex, {
4349
+ gap: 0.5
4350
+ }, select.modifierKey, /*#__PURE__*/React.createElement(Keycap, {
4351
+ symbol: "up"
4352
+ }), /*#__PURE__*/React.createElement(Keycap, {
4353
+ symbol: "down"
4354
+ })), select.label), /*#__PURE__*/React.createElement("li", {
4355
+ className: styles$j.hint
4356
+ }, /*#__PURE__*/React.createElement(tapestry.Flex, {
4357
+ gap: 0.5
4358
+ }, /*#__PURE__*/React.createElement(CommandKey, null), /*#__PURE__*/React.createElement(EnterKey, null)), openInNewTab.label), /*#__PURE__*/React.createElement("li", {
4359
+ className: classnames(styles$j.hint, copied && styles$j.copied),
4360
+ style: {
4361
+ "--copied-active": `${COPIED_TIMING.active}ms`,
4362
+ "--copied-enter": `${COPIED_TIMING.enter}ms`,
4363
+ "--copied-exit": `${COPIED_TIMING.exit}ms`
4364
+ }
4365
+ }, /*#__PURE__*/React.createElement(tapestry.Flex, {
4366
+ gap: 0.5
4367
+ }, /*#__PURE__*/React.createElement(CommandKey, null), /*#__PURE__*/React.createElement(Keycap, {
4368
+ label: copyLink.key.toUpperCase()
4369
+ })), /*#__PURE__*/React.createElement("span", {
4370
+ className: styles$j.labels
4371
+ }, /*#__PURE__*/React.createElement("span", {
4372
+ "aria-hidden": copied
4373
+ }, copyLink.label), /*#__PURE__*/React.createElement("span", {
4157
4374
  role: "status"
4158
- }, copied ? "Copied!" : "Copy link"), " \u00B7 ", command, "K Open search");
4375
+ }, copied && "Copied!"))), /*#__PURE__*/React.createElement("li", {
4376
+ className: styles$j.hint
4377
+ }, /*#__PURE__*/React.createElement(tapestry.Flex, {
4378
+ gap: 0.5
4379
+ }, /*#__PURE__*/React.createElement(CommandKey, null), /*#__PURE__*/React.createElement(Keycap, {
4380
+ label: openSearch.key.toUpperCase()
4381
+ })), openSearch.label));
4382
+ }
4383
+
4384
+ var styles$i = {"icon":"icon-XKLvN","squircle":"squircle-JCHr6"};
4385
+
4386
+ const PRODUCTS = {
4387
+ accounts: {
4388
+ gradient: "--t-fill-color-product-accounts-gradient-brand",
4389
+ path: logomarks__namespace.accounts
4390
+ },
4391
+ api: {
4392
+ gradient: "--t-fill-color-product-api-gradient-brand",
4393
+ path: logomarks__namespace.api
4394
+ },
4395
+ calendar: {
4396
+ gradient: "--t-fill-color-product-calendar-gradient-brand",
4397
+ path: logomarks__namespace.calendar
4398
+ },
4399
+ "check-ins": {
4400
+ gradient: "--t-fill-color-product-checkins-gradient-brand",
4401
+ path: logomarks__namespace.checkIns
4402
+ },
4403
+ "church-center": {
4404
+ gradient: "--t-fill-color-product-cc-gradient-brand",
4405
+ path: logomarks__namespace.churchCenter
4406
+ },
4407
+ giving: {
4408
+ gradient: "--t-fill-color-product-giving-gradient-brand",
4409
+ path: logomarks__namespace.giving
4410
+ },
4411
+ groups: {
4412
+ gradient: "--t-fill-color-product-groups-gradient-brand",
4413
+ path: logomarks__namespace.groups
4414
+ },
4415
+ home: {
4416
+ gradient: "--t-fill-color-product-home-gradient-brand",
4417
+ path: logomarks__namespace.home
4418
+ },
4419
+ "music-stand": {
4420
+ gradient: "--t-fill-color-product-musicstand-gradient-brand",
4421
+ path: logomarks__namespace.musicStand
4422
+ },
4423
+ people: {
4424
+ gradient: "--t-fill-color-product-people-gradient-brand",
4425
+ path: logomarks__namespace.people
4426
+ },
4427
+ publishing: {
4428
+ gradient: "--t-fill-color-product-publishing-gradient-brand",
4429
+ path: logomarks__namespace.publishing
4430
+ },
4431
+ registrations: {
4432
+ gradient: "--t-fill-color-product-registrations-gradient-brand",
4433
+ path: logomarks__namespace.registrations
4434
+ },
4435
+ services: {
4436
+ gradient: "--t-fill-color-product-services-gradient-brand",
4437
+ path: logomarks__namespace.services
4438
+ }
4439
+ };
4440
+ const isProductIconSlug = slug => Object.prototype.hasOwnProperty.call(PRODUCTS, slug);
4441
+ const maskFor = path => `url("data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16"><path d="${path}"/></svg>`)}")`;
4442
+ function ProductIcon({
4443
+ size = 16,
4444
+ slug
4445
+ }) {
4446
+ const {
4447
+ gradient,
4448
+ path
4449
+ } = PRODUCTS[slug];
4450
+ const mask = maskFor(path);
4451
+ return /*#__PURE__*/React.createElement("span", {
4452
+ "aria-hidden": true,
4453
+ className: styles$i.icon,
4454
+ style: {
4455
+ height: size,
4456
+ width: size
4457
+ }
4458
+ }, /*#__PURE__*/React.createElement("span", {
4459
+ className: styles$i.squircle,
4460
+ style: {
4461
+ WebkitMaskImage: mask,
4462
+ background: `var(${gradient})`,
4463
+ maskImage: mask
4464
+ }
4465
+ }));
4466
+ }
4467
+
4468
+ var styles$h = {"picker":"picker-iuzzj","option":"option--7LXg"};
4469
+
4470
+ // Phones have no room for a tab per product, so they pick from a dropdown.
4471
+ // Complex mode renders each option's logomark, in the list and the trigger.
4472
+ function ProductSelect({
4473
+ children,
4474
+ onSelect,
4475
+ products,
4476
+ selected
4477
+ }) {
4478
+ const options = products.map(({
4479
+ appName,
4480
+ slug
4481
+ }) => ({
4482
+ label: (/*#__PURE__*/React.createElement("span", {
4483
+ className: styles$h.option
4484
+ }, /*#__PURE__*/React.createElement(ProductIcon, {
4485
+ slug: slug
4486
+ }), appName)),
4487
+ textValue: appName,
4488
+ value: slug
4489
+ }));
4490
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
4491
+ className: styles$h.picker
4492
+ }, /*#__PURE__*/React.createElement(tapestry.Select, {
4493
+ "aria-label": "Product",
4494
+ complex: true,
4495
+ onChange: event => onSelect(event.target.value),
4496
+ options: options,
4497
+ value: selected.slug
4498
+ })), /*#__PURE__*/React.createElement("div", {
4499
+ className: styles$k.panel
4500
+ }, children));
4501
+ }
4502
+
4503
+ // Browsers match :focus-visible on every focused text field, keyboard or not,
4504
+ // since typing follows either way. So this remembers what last moved focus,
4505
+ // shared by every field and listened for once, in the capture phase so it's
4506
+ // known before focus moves.
4507
+ let lastInteraction = "pointer";
4508
+ let listening = false;
4509
+ function listen() {
4510
+ if (listening) return;
4511
+ listening = true;
4512
+ document.addEventListener("keydown", event => {
4513
+ // Shortcuts like ⌘C don't move focus.
4514
+ if (!event.metaKey && !event.ctrlKey && !event.altKey) {
4515
+ lastInteraction = "keyboard";
4516
+ }
4517
+ }, true);
4518
+ document.addEventListener("pointerdown", () => {
4519
+ lastInteraction = "pointer";
4520
+ }, true);
4521
+ }
4522
+ /**
4523
+ * Whether a field was focused from the keyboard, as by Tab, rather than by a
4524
+ * click or tap. Spread `focusProps` onto the field, and style it by
4525
+ * `data-focus-visible`.
4526
+ */
4527
+ function useKeyboardFocus({
4528
+ onBlur,
4529
+ onFocus
4530
+ } = {}) {
4531
+ const [focusVisible, setFocusVisible] = React.useState(false);
4532
+ React.useEffect(listen, []);
4533
+ return {
4534
+ focusProps: {
4535
+ "data-focus-visible": focusVisible || undefined,
4536
+ onBlur: event => {
4537
+ setFocusVisible(false);
4538
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
4539
+ },
4540
+ onFocus: event => {
4541
+ const keyboard = lastInteraction === "keyboard";
4542
+ setFocusVisible(keyboard);
4543
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(event, keyboard);
4544
+ }
4545
+ },
4546
+ focusVisible
4547
+ };
4159
4548
  }
4160
4549
 
4161
- var styles$d = {"tab":"tab-dz8ki"};
4550
+ var styles$g = {"tablist":"tablist-7ASvc","tab":"tab-dz8ki"};
4162
4551
 
4552
+ // With this many tabs or more, only the selected tab shows its name, so they
4553
+ // all fit. Fewer always fit with their names.
4554
+ const ICON_ONLY_TAB_COUNT = 5;
4163
4555
  function ProductTabs({
4164
4556
  children,
4165
4557
  onKeyDown,
@@ -4170,6 +4562,7 @@ function ProductTabs({
4170
4562
  const id = useInstanceId("product-tabs");
4171
4563
  const tabId = slug => `${id}-tab-${slug}`;
4172
4564
  const tabRefs = React.useRef(new Map());
4565
+ const showAllNames = products.length < ICON_ONLY_TAB_COUNT;
4173
4566
  const handleKeyDown = event => {
4174
4567
  var _a;
4175
4568
  const offset = horizontalStep(event.key);
@@ -4184,13 +4577,14 @@ function ProductTabs({
4184
4577
  }
4185
4578
  };
4186
4579
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
4187
- "aria-label": "Product",
4580
+ "aria-label": "Search in",
4581
+ className: styles$g.tablist,
4188
4582
  onKeyDown: handleKeyDown,
4189
4583
  role: "tablist"
4190
- }, products.map(product => (/*#__PURE__*/React.createElement("button", {
4584
+ }, products.map(product => (/*#__PURE__*/React.createElement(Tab, {
4191
4585
  "aria-controls": `${id}-panel`,
4586
+ "aria-describedby": `${tabId(product.slug)}-description`,
4192
4587
  "aria-selected": product === selected,
4193
- className: styles$d.tab,
4194
4588
  id: tabId(product.slug),
4195
4589
  key: product.slug,
4196
4590
  onClick: () => onSelect(product.slug),
@@ -4201,15 +4595,397 @@ function ProductTabs({
4201
4595
  tabRefs.current.delete(product.slug);
4202
4596
  }
4203
4597
  },
4204
- role: "tab",
4205
- tabIndex: product === selected ? 0 : -1,
4206
- type: "button"
4207
- }, product.appName)))), /*#__PURE__*/React.createElement("div", {
4598
+ tabIndex: product === selected ? 0 : -1
4599
+ }, /*#__PURE__*/React.createElement(ProductIcon, {
4600
+ slug: product.slug
4601
+ }), showAllNames || product === selected ? product.appName : (/*#__PURE__*/React.createElement("span", {
4602
+ className: styles$k.visuallyHidden
4603
+ }, product.appName)))))), /*#__PURE__*/React.createElement("div", {
4604
+ className: styles$k.visuallyHidden
4605
+ }, products.map(product => (/*#__PURE__*/React.createElement("span", {
4606
+ id: `${tabId(product.slug)}-description`,
4607
+ key: product.slug
4608
+ }, "Planning Center ", product.appName)))), /*#__PURE__*/React.createElement("div", {
4208
4609
  "aria-labelledby": tabId(selected.slug),
4610
+ className: styles$k.panel,
4209
4611
  id: `${id}-panel`,
4210
4612
  role: "tabpanel"
4211
4613
  }, children));
4212
4614
  }
4615
+ // The modal's focus scope moves focus here by script when Tab is pressed, and
4616
+ // Safari doesn't match :focus-visible on focus moved by script. So the tab
4617
+ // remembers whether the keyboard brought focus, and the ring keys off that.
4618
+ const Tab = /*#__PURE__*/React.forwardRef(function Tab(props, ref) {
4619
+ const {
4620
+ focusProps
4621
+ } = useKeyboardFocus();
4622
+ return /*#__PURE__*/React.createElement("button", {
4623
+ className: styles$g.tab,
4624
+ ref: ref,
4625
+ role: "tab",
4626
+ type: "button",
4627
+ ...props,
4628
+ ...focusProps
4629
+ });
4630
+ });
4631
+
4632
+ function BlankStateRecentlyVisited(props) {
4633
+ const id = useInstanceId("blank-state-initial");
4634
+ return /*#__PURE__*/React.createElement("svg", {
4635
+ viewBox: "0 0 197 174",
4636
+ fill: "none",
4637
+ "aria-hidden": "true",
4638
+ focusable: "false",
4639
+ ...props
4640
+ }, /*#__PURE__*/React.createElement("path", {
4641
+ d: "M139.863 32.119c10.938 10.028 21.777 20.154 32.912 30.084 8.376 7.373 21.975 15.828 23.157 28.02.592 6.095-2.167 11.993-5.321 17.204-24.635 40.8-81.098 67.148-127.412 48.862-30.646-12.093-76.172-47.387-59.716-85.041 15.865-36.377 64.84-55.056 83.957-57.71 21.876-4.621 34.883 2.457 52.423 18.58Z",
4642
+ fill: "currentColor"
4643
+ }), /*#__PURE__*/React.createElement("g", {
4644
+ clipPath: `url(#${id}-a)`
4645
+ }, /*#__PURE__*/React.createElement("path", {
4646
+ d: "M115.885 109.31c-.478-.686-.01-1.845 1.046-2.589s2.3-.791 2.778-.105c.478.686.009 1.845-1.047 2.589-1.056.744-2.299.791-2.777.105Z",
4647
+ fill: "#333"
4648
+ }), /*#__PURE__*/React.createElement("path", {
4649
+ d: "M123.403 113.599c-3.456 0-6.259-2.817-6.259-6.293 0-3.475 2.803-6.293 6.259-6.293 3.457 0 6.259 2.818 6.259 6.293 0 3.476-2.802 6.293-6.259 6.293Z",
4650
+ fill: "#333"
4651
+ }), /*#__PURE__*/React.createElement("path", {
4652
+ d: "M118.853 100.968a2.85 2.85 0 0 0 2.832-2.484 2.89 2.89 0 0 0-.071-1.115c-2.638-9.955-9.668-9.687-9.964-9.665l.311 5.716h-.104c.119 0 2.853.134 4.254 5.421a2.874 2.874 0 0 0 1.013 1.53 2.846 2.846 0 0 0 1.729.597Z",
4653
+ fill: "#4D4D4D"
4654
+ }), /*#__PURE__*/React.createElement("path", {
4655
+ d: "M114.96 100.503c-.462-5.894 2.796-10.96 7.279-11.315 4.482-.356 8.491 4.134 8.953 10.027.462 5.894-2.796 10.96-7.279 11.315-4.482.356-8.491-4.134-8.953-10.027Z",
4656
+ fill: "#F2F2F2"
4657
+ }), /*#__PURE__*/React.createElement("path", {
4658
+ d: "M125.964 107.738c-4.48.354-8.489-4.135-8.953-10.026a12.893 12.893 0 0 1 1.223-6.707c-2.249 2.046-3.591 5.59-3.283 9.505.463 5.895 4.469 10.384 8.953 10.027 2.594-.205 4.765-1.986 6.055-4.591a6.682 6.682 0 0 1-3.995 1.792Z",
4659
+ fill: "#E6E6E6"
4660
+ }), /*#__PURE__*/React.createElement("path", {
4661
+ d: "M115.885 109.31c-.478-.686-.01-1.845 1.046-2.589s2.3-.791 2.778-.105c.478.686.009 1.845-1.047 2.589-1.056.744-2.299.791-2.777.105Z",
4662
+ fill: "#333"
4663
+ }), /*#__PURE__*/React.createElement("path", {
4664
+ d: "M123.403 113.599c-3.456 0-6.259-2.817-6.259-6.293 0-3.475 2.803-6.293 6.259-6.293 3.457 0 6.259 2.818 6.259 6.293 0 3.476-2.802 6.293-6.259 6.293Z",
4665
+ fill: "#333"
4666
+ }), /*#__PURE__*/React.createElement("path", {
4667
+ d: "M118.853 100.968a2.85 2.85 0 0 0 2.832-2.484 2.89 2.89 0 0 0-.071-1.115c-2.638-9.955-9.668-9.687-9.964-9.665l.311 5.716h-.104c.119 0 2.853.134 4.254 5.421a2.874 2.874 0 0 0 1.013 1.53 2.846 2.846 0 0 0 1.729.597Z",
4668
+ fill: "#4D4D4D"
4669
+ }), /*#__PURE__*/React.createElement("path", {
4670
+ d: "M114.96 100.503c-.462-5.894 2.796-10.96 7.279-11.315 4.482-.356 8.491 4.134 8.953 10.027.462 5.894-2.796 10.96-7.279 11.315-4.482.356-8.491-4.134-8.953-10.027Z",
4671
+ fill: "#F2F2F2"
4672
+ }), /*#__PURE__*/React.createElement("path", {
4673
+ d: "M125.964 107.738c-4.48.354-8.489-4.135-8.953-10.026a12.893 12.893 0 0 1 1.223-6.707c-2.249 2.046-3.591 5.59-3.283 9.505.463 5.895 4.469 10.384 8.953 10.027 2.594-.205 4.765-1.986 6.055-4.591a6.682 6.682 0 0 1-3.995 1.792Z",
4674
+ fill: "#E6E6E6"
4675
+ }), /*#__PURE__*/React.createElement("path", {
4676
+ d: "M89.317 121.331a2.836 2.836 0 0 1-1.92-.752 2.869 2.869 0 0 1-.911-1.857c-.534-5.726 3.527-13.808 3.99-14.713a2.849 2.849 0 0 1 1.666-1.413 2.835 2.835 0 0 1 2.172.185 2.86 2.86 0 0 1 1.405 1.675 2.876 2.876 0 0 1-.184 2.183c-1.46 2.843-3.669 8.492-3.383 11.551a2.868 2.868 0 0 1-1.504 2.797 2.84 2.84 0 0 1-1.064.318 1.378 1.378 0 0 1-.267.026Z",
4677
+ fill: "#4D4D4D"
4678
+ }), /*#__PURE__*/React.createElement("path", {
4679
+ d: "M92.155 112.314c3.308 0 5.989-2.696 5.989-6.021 0-3.326-2.681-6.021-5.989-6.021-3.307 0-5.988 2.695-5.988 6.021 0 3.325 2.681 6.021 5.988 6.021Z",
4680
+ fill: "gray"
4681
+ }), /*#__PURE__*/React.createElement("path", {
4682
+ d: "M80.597 128.771h11.769v3.726a1.118 1.118 0 0 1-1.112 1.118H78.57a1.118 1.118 0 0 1-1.112-1.118v-.566c0-.841.332-1.648.924-2.242a3.144 3.144 0 0 1 2.23-.929l-.015.011Z",
4683
+ fill: "#333"
4684
+ }), /*#__PURE__*/React.createElement("path", {
4685
+ d: "M89.572 132.084s8.075.119 6.3-8.268c-1.775-8.387-12.188-15.351-15.234-6.066-3.046 9.285-1.386 15.232 8.934 14.334Z",
4686
+ fill: "#F2F2F2"
4687
+ }), /*#__PURE__*/React.createElement("path", {
4688
+ d: "M106.67 121.334h-.27a2.84 2.84 0 0 1-1.925-1.025 2.872 2.872 0 0 1-.639-2.093c.285-3.059-1.92-8.708-3.38-11.551a2.873 2.873 0 0 1 1.296-3.721 2.832 2.832 0 0 1 2.102-.199 2.848 2.848 0 0 1 1.66 1.312c.463.906 4.521 8.991 3.988 14.714a2.874 2.874 0 0 1-.926 1.828 2.832 2.832 0 0 1-1.906.735Z",
4689
+ fill: "#4D4D4D"
4690
+ }), /*#__PURE__*/React.createElement("path", {
4691
+ d: "M103.835 112.314c3.307 0 5.988-2.696 5.988-6.021 0-3.326-2.681-6.021-5.988-6.021-3.307 0-5.988 2.695-5.988 6.021 0 3.325 2.681 6.021 5.988 6.021Z",
4692
+ fill: "gray"
4693
+ }), /*#__PURE__*/React.createElement("path", {
4694
+ d: "m117.408 133.652-12.674-.002c-.295 0-.577-.118-.786-.328a1.121 1.121 0 0 1-.325-.79v-3.726l11.773.002c.837 0 1.639.334 2.23.929s.923 1.401.923 2.242v.567a1.116 1.116 0 0 1-1.141 1.106Z",
4695
+ fill: "#333"
4696
+ }), /*#__PURE__*/React.createElement("path", {
4697
+ d: "M106.414 132.084s-8.075.119-6.318-8.268c1.756-8.387 12.195-15.343 15.237-6.062 3.043 9.281 1.405 15.235-8.919 14.33Z",
4698
+ fill: "#F2F2F2"
4699
+ }), /*#__PURE__*/React.createElement("path", {
4700
+ d: "M109.107 94.58a2.305 2.305 0 0 0 2.191 2.412 2.302 2.302 0 0 0 2.399-2.202l.333-7.33a2.306 2.306 0 0 0-2.191-2.412 2.303 2.303 0 0 0-2.4 2.203l-.332 7.328Z",
4701
+ fill: "gray"
4702
+ }), /*#__PURE__*/React.createElement("path", {
4703
+ d: "M80.968 109.31c.478-.686.01-1.845-1.047-2.589-1.056-.744-2.3-.791-2.777-.105-.478.686-.01 1.845 1.046 2.589s2.3.791 2.778.105Z",
4704
+ fill: "#333"
4705
+ }), /*#__PURE__*/React.createElement("path", {
4706
+ d: "M73.448 113.599c3.457 0 6.26-2.817 6.26-6.293 0-3.475-2.803-6.293-6.26-6.293-3.456 0-6.258 2.818-6.258 6.293 0 3.476 2.802 6.293 6.258 6.293Z",
4707
+ fill: "#333"
4708
+ }), /*#__PURE__*/React.createElement("path", {
4709
+ d: "M78 100.968a2.853 2.853 0 0 1-2.832-2.484 2.876 2.876 0 0 1 .07-1.115c2.639-9.955 9.669-9.687 9.965-9.665l-.311 5.716h.104c-.12 0-2.854.134-4.255 5.421a2.87 2.87 0 0 1-1.013 1.53 2.845 2.845 0 0 1-1.729.597Z",
4710
+ fill: "#4D4D4D"
4711
+ }), /*#__PURE__*/React.createElement("path", {
4712
+ d: "M87.37 88.17a2.305 2.305 0 0 0-2.19-2.413 2.302 2.302 0 0 0-2.4 2.202l-.332 7.329a2.305 2.305 0 0 0 2.19 2.413 2.302 2.302 0 0 0 2.4-2.203l.332-7.328Z",
4713
+ fill: "gray"
4714
+ }), /*#__PURE__*/React.createElement("path", {
4715
+ d: "M81.893 100.503c.462-5.894-2.797-10.96-7.28-11.315-4.482-.356-8.49 4.134-8.953 10.027-.462 5.894 2.797 10.96 7.28 11.315 4.482.356 8.49-4.134 8.953-10.027Z",
4716
+ fill: "#F2F2F2"
4717
+ }), /*#__PURE__*/React.createElement("path", {
4718
+ d: "M70.888 107.738c4.48.354 8.49-4.135 8.953-10.026a12.89 12.89 0 0 0-1.223-6.707c2.25 2.046 3.591 5.59 3.284 9.505-.464 5.895-4.47 10.384-8.953 10.027-2.594-.205-4.766-1.986-6.055-4.591a6.682 6.682 0 0 0 3.994 1.792Z",
4719
+ fill: "#E6E6E6"
4720
+ }), /*#__PURE__*/React.createElement("path", {
4721
+ d: "M112.717 94.105c-.511-9.095-7.459-11.703-15.82-11.226-8.36.477-14.97 3.856-14.451 12.951.518 9.095 7.707 16.081 16.067 15.605 8.36-.477 14.719-8.231 14.204-17.33Z",
4722
+ fill: "#F2F2F2"
4723
+ }), /*#__PURE__*/React.createElement("path", {
4724
+ d: "M112.565 92.656c-1.056 7.496-6.799 13.413-14.059 13.812-7.852.451-14.67-5.686-15.897-13.965a14.571 14.571 0 0 0-.17 3.327c.51 9.095 7.704 16.081 16.067 15.605 8.364-.477 14.723-8.235 14.211-17.33a16.83 16.83 0 0 0-.152-1.45Z",
4725
+ fill: "#E6E6E6"
4726
+ }), /*#__PURE__*/React.createElement("path", {
4727
+ d: "M103.546 90.353H91.61a.62.62 0 0 0-.619.623v1.762a.62.62 0 0 0 .62.622h11.935a.62.62 0 0 0 .619-.622v-1.762a.62.62 0 0 0-.619-.623Zm0 5.187H91.61a.62.62 0 0 0-.619.622v1.762a.62.62 0 0 0 .62.623h11.935a.62.62 0 0 0 .619-.623v-1.762a.62.62 0 0 0-.619-.622Zm-.004 5.19H91.606a.62.62 0 0 0-.619.622v1.763a.62.62 0 0 0 .62.622h11.935a.62.62 0 0 0 .619-.622v-1.763a.62.62 0 0 0-.619-.622Z",
4728
+ fill: "#3690EA"
4729
+ }), /*#__PURE__*/React.createElement("path", {
4730
+ d: "M89.317 121.331a2.836 2.836 0 0 1-1.92-.752 2.869 2.869 0 0 1-.911-1.857c-.534-5.726 3.527-13.808 3.99-14.713a2.849 2.849 0 0 1 1.666-1.413 2.835 2.835 0 0 1 2.172.185 2.86 2.86 0 0 1 1.405 1.675 2.876 2.876 0 0 1-.184 2.183c-1.46 2.843-3.669 8.492-3.383 11.551a2.868 2.868 0 0 1-1.504 2.797 2.84 2.84 0 0 1-1.064.318 1.378 1.378 0 0 1-.267.026Z",
4731
+ fill: "#4D4D4D"
4732
+ }), /*#__PURE__*/React.createElement("path", {
4733
+ d: "M92.155 112.314c3.308 0 5.989-2.696 5.989-6.021 0-3.326-2.681-6.021-5.989-6.021-3.307 0-5.988 2.695-5.988 6.021 0 3.325 2.681 6.021 5.988 6.021Z",
4734
+ fill: "gray"
4735
+ }), /*#__PURE__*/React.createElement("path", {
4736
+ d: "M80.597 128.771h11.769v3.726a1.118 1.118 0 0 1-1.112 1.118H78.57a1.118 1.118 0 0 1-1.112-1.118v-.566c0-.841.332-1.648.924-2.242a3.144 3.144 0 0 1 2.23-.929l-.015.011Z",
4737
+ fill: "#333"
4738
+ }), /*#__PURE__*/React.createElement("path", {
4739
+ d: "M89.572 132.084s8.075.119 6.3-8.268c-1.775-8.387-12.188-15.351-15.234-6.066-3.046 9.285-1.386 15.232 8.934 14.334Z",
4740
+ fill: "#F2F2F2"
4741
+ }), /*#__PURE__*/React.createElement("path", {
4742
+ d: "M106.67 121.334h-.27a2.84 2.84 0 0 1-1.925-1.025 2.872 2.872 0 0 1-.639-2.093c.285-3.059-1.92-8.708-3.38-11.551a2.873 2.873 0 0 1 1.296-3.721 2.832 2.832 0 0 1 2.102-.199 2.848 2.848 0 0 1 1.66 1.312c.463.906 4.521 8.991 3.988 14.714a2.874 2.874 0 0 1-.926 1.828 2.832 2.832 0 0 1-1.906.735Z",
4743
+ fill: "#4D4D4D"
4744
+ }), /*#__PURE__*/React.createElement("path", {
4745
+ d: "M103.835 112.314c3.307 0 5.988-2.696 5.988-6.021 0-3.326-2.681-6.021-5.988-6.021-3.307 0-5.988 2.695-5.988 6.021 0 3.325 2.681 6.021 5.988 6.021Z",
4746
+ fill: "gray"
4747
+ }), /*#__PURE__*/React.createElement("path", {
4748
+ d: "m117.408 133.652-12.674-.002c-.295 0-.577-.118-.786-.328a1.121 1.121 0 0 1-.325-.79v-3.726l11.773.002c.837 0 1.639.334 2.23.929s.923 1.401.923 2.242v.567a1.116 1.116 0 0 1-1.141 1.106Z",
4749
+ fill: "#333"
4750
+ }), /*#__PURE__*/React.createElement("path", {
4751
+ d: "M106.414 132.084s-8.075.119-6.318-8.268c1.756-8.387 12.195-15.343 15.237-6.062 3.043 9.281 1.405 15.235-8.919 14.33Z",
4752
+ fill: "#F2F2F2"
4753
+ }), /*#__PURE__*/React.createElement("path", {
4754
+ d: "M109.107 94.58a2.305 2.305 0 0 0 2.191 2.412 2.302 2.302 0 0 0 2.399-2.202l.333-7.33a2.306 2.306 0 0 0-2.191-2.412 2.303 2.303 0 0 0-2.4 2.203l-.332 7.328Z",
4755
+ fill: "gray"
4756
+ }), /*#__PURE__*/React.createElement("path", {
4757
+ d: "M80.968 109.31c.478-.686.01-1.845-1.047-2.589-1.056-.744-2.3-.791-2.777-.105-.478.686-.01 1.845 1.046 2.589s2.3.791 2.778.105Z",
4758
+ fill: "#333"
4759
+ }), /*#__PURE__*/React.createElement("path", {
4760
+ d: "M73.448 113.599c3.457 0 6.26-2.817 6.26-6.293 0-3.475-2.803-6.293-6.26-6.293-3.456 0-6.258 2.818-6.258 6.293 0 3.476 2.802 6.293 6.258 6.293Z",
4761
+ fill: "#333"
4762
+ }), /*#__PURE__*/React.createElement("path", {
4763
+ d: "M78 100.968a2.853 2.853 0 0 1-2.832-2.484 2.876 2.876 0 0 1 .07-1.115c2.639-9.955 9.669-9.687 9.965-9.665l-.311 5.716h.104c-.12 0-2.854.134-4.255 5.421a2.87 2.87 0 0 1-1.013 1.53 2.845 2.845 0 0 1-1.729.597Z",
4764
+ fill: "#4D4D4D"
4765
+ }), /*#__PURE__*/React.createElement("path", {
4766
+ d: "M87.37 88.17a2.305 2.305 0 0 0-2.19-2.413 2.302 2.302 0 0 0-2.4 2.202l-.332 7.329a2.305 2.305 0 0 0 2.19 2.413 2.302 2.302 0 0 0 2.4-2.203l.332-7.328Z",
4767
+ fill: "gray"
4768
+ }), /*#__PURE__*/React.createElement("path", {
4769
+ d: "M81.893 100.503c.462-5.894-2.797-10.96-7.28-11.315-4.482-.356-8.49 4.134-8.953 10.027-.462 5.894 2.797 10.96 7.28 11.315 4.482.356 8.49-4.134 8.953-10.027Z",
4770
+ fill: "#F2F2F2"
4771
+ }), /*#__PURE__*/React.createElement("path", {
4772
+ d: "M70.888 107.738c4.48.354 8.49-4.135 8.953-10.026a12.89 12.89 0 0 0-1.223-6.707c2.25 2.046 3.591 5.59 3.284 9.505-.464 5.895-4.47 10.384-8.953 10.027-2.594-.205-4.766-1.986-6.055-4.591a6.682 6.682 0 0 0 3.994 1.792Z",
4773
+ fill: "#E6E6E6"
4774
+ }), /*#__PURE__*/React.createElement("path", {
4775
+ d: "M112.717 94.105c-.511-9.095-7.459-11.703-15.82-11.226-8.36.477-14.97 3.856-14.451 12.951.518 9.095 7.707 16.081 16.067 15.605 8.36-.477 14.719-8.231 14.204-17.33Z",
4776
+ fill: "#F2F2F2"
4777
+ }), /*#__PURE__*/React.createElement("path", {
4778
+ d: "M112.565 92.656c-1.056 7.496-6.799 13.413-14.059 13.812-7.852.451-14.67-5.686-15.897-13.965a14.571 14.571 0 0 0-.17 3.327c.51 9.095 7.704 16.081 16.067 15.605 8.364-.477 14.723-8.235 14.211-17.33a16.83 16.83 0 0 0-.152-1.45Z",
4779
+ fill: "#E6E6E6"
4780
+ }), /*#__PURE__*/React.createElement("path", {
4781
+ d: "M94.626 78.445c-.114-.488 6.548-.927 5.815.246v.775c0 .746.033 1.49.033 2.258s.037 1.595.044 2.392c.278.593-6.473.935-5.817-.115v-.67c-.015-1.63-.06-3.257-.075-4.886Z",
4782
+ fill: "#999"
4783
+ }), /*#__PURE__*/React.createElement("path", {
4784
+ d: "M103.546 90.353H91.61a.62.62 0 0 0-.619.623v1.762a.62.62 0 0 0 .62.622h11.935a.62.62 0 0 0 .619-.622v-1.762a.62.62 0 0 0-.619-.623Zm0 5.187H91.61a.62.62 0 0 0-.619.622v1.762a.62.62 0 0 0 .62.623h11.935a.62.62 0 0 0 .619-.623v-1.762a.62.62 0 0 0-.619-.622Zm-.004 5.19H91.606a.62.62 0 0 0-.619.622v1.763a.62.62 0 0 0 .62.622h11.935a.62.62 0 0 0 .619-.622v-1.763a.62.62 0 0 0-.619-.622ZM55.773 64.004c4.349 0 7.874-5.285 7.874-11.804s-3.525-11.804-7.874-11.804-7.875 5.285-7.875 11.804c0 6.52 3.526 11.804 7.875 11.804Zm84.17.015c4.349 0 7.874-5.285 7.874-11.804 0-6.52-3.525-11.804-7.874-11.804s-7.875 5.285-7.875 11.804 3.526 11.804 7.875 11.804Z",
4785
+ fill: "#3690EA"
4786
+ }), /*#__PURE__*/React.createElement("path", {
4787
+ d: "M97.962 29.036c7.273 0 13.17-2.224 13.17-4.967 0-2.743-5.897-4.966-13.17-4.966-7.274 0-13.17 2.223-13.17 4.966 0 2.743 5.896 4.967 13.17 4.967Z",
4788
+ fill: "#B3B3B3"
4789
+ }), /*#__PURE__*/React.createElement("path", {
4790
+ d: "M97.962 16.55c4.545 0 8.23-3.705 8.23-8.275S102.507 0 97.962 0c-4.546 0-8.23 3.705-8.23 8.275s3.684 8.275 8.23 8.275Z",
4791
+ fill: "#3690EA"
4792
+ }), /*#__PURE__*/React.createElement("path", {
4793
+ d: "M141.607 59.283V45.147a19.038 19.038 0 0 0-3.687-11.301 18.872 18.872 0 0 0-9.653-6.874c-8.838-2.69-19.203-4.24-30.29-4.244-11.088-.004-21.452 1.546-30.29 4.233a18.871 18.871 0 0 0-9.668 6.866 19.041 19.041 0 0 0-3.699 11.305v14.132a19.03 19.03 0 0 0 3.685 11.303 18.86 18.86 0 0 0 9.656 6.872c8.841 2.694 19.206 4.244 30.29 4.244 11.083 0 21.452-1.542 30.294-4.233a18.858 18.858 0 0 0 9.666-6.863 19.028 19.028 0 0 0 3.696-11.304Z",
4794
+ fill: "#F2F2F2"
4795
+ }), /*#__PURE__*/React.createElement("path", {
4796
+ d: "M97.954 75.051c-10.068 0-19.88-1.371-28.381-3.957a12.353 12.353 0 0 1-6.262-4.485 12.463 12.463 0 0 1-2.41-7.34V45.131c.006-2.642.85-5.214 2.411-7.34a12.345 12.345 0 0 1 6.264-4.482c8.501-2.586 18.317-3.95 28.382-3.95 10.065 0 19.877 1.371 28.382 3.96a12.35 12.35 0 0 1 6.262 4.486 12.46 12.46 0 0 1 2.409 7.34V59.28a12.453 12.453 0 0 1-2.41 7.341 12.343 12.343 0 0 1-6.265 4.482c-8.486 2.585-18.317 3.949-28.382 3.949Z",
4797
+ fill: "#E6E6E6"
4798
+ }), /*#__PURE__*/React.createElement("path", {
4799
+ d: "M100.863 15.992h-5.81v1.293h5.81v-1.293Z",
4800
+ fill: "#F2F2F2"
4801
+ }), /*#__PURE__*/React.createElement("path", {
4802
+ d: "M76.472 66.05c4.327 0 7.834-6.2 7.834-13.846 0-7.647-3.507-13.846-7.834-13.846-4.326 0-7.833 6.2-7.833 13.846s3.507 13.845 7.833 13.845Z",
4803
+ fill: "#1A1A1A"
4804
+ }), /*#__PURE__*/React.createElement("path", {
4805
+ d: "M77.844 52.766c1.743 0 3.157-2.088 3.157-4.664 0-2.577-1.414-4.665-3.157-4.665-1.744 0-3.157 2.088-3.157 4.665 0 2.576 1.413 4.664 3.157 4.664Z",
4806
+ fill: "#fff"
4807
+ }), /*#__PURE__*/React.createElement("path", {
4808
+ d: "M118.662 66.057c4.326 0 7.834-6.2 7.834-13.846s-3.508-13.845-7.834-13.845c-4.327 0-7.834 6.199-7.834 13.845 0 7.647 3.507 13.846 7.834 13.846Z",
4809
+ fill: "#1A1A1A"
4810
+ }), /*#__PURE__*/React.createElement("path", {
4811
+ d: "M120.032 52.774c1.744 0 3.157-2.089 3.157-4.665s-1.413-4.665-3.157-4.665c-1.743 0-3.157 2.089-3.157 4.665s1.414 4.665 3.157 4.665Z",
4812
+ fill: "#fff"
4813
+ }), /*#__PURE__*/React.createElement("path", {
4814
+ d: "M92.674 63.11a10.286 10.286 0 0 0 7.949 1.095 13.2 13.2 0 0 0 2.623-1.118.738.738 0 0 1 1.035.639.748.748 0 0 1-.119.453c-2.224 2.82-6.474 3.625-9.672 2.12a7.284 7.284 0 0 1-2.75-2.12.748.748 0 0 1 .465-1.139.738.738 0 0 1 .469.054v.015Z",
4815
+ fill: "#999"
4816
+ }), /*#__PURE__*/React.createElement("path", {
4817
+ d: "M55.773 64.004c4.349 0 7.874-5.285 7.874-11.804s-3.525-11.804-7.874-11.804-7.875 5.285-7.875 11.804c0 6.52 3.526 11.804 7.875 11.804Zm84.17.015c4.349 0 7.874-5.285 7.874-11.804 0-6.52-3.525-11.804-7.874-11.804s-7.875 5.285-7.875 11.804 3.526 11.804 7.875 11.804Z",
4818
+ fill: "#3690EA"
4819
+ }), /*#__PURE__*/React.createElement("path", {
4820
+ d: "M95.008 14.315c-.115-.488 6.548-.932 5.815.246v.771c0 .745.033 1.51.037 2.262.003.752.033 1.594.04 2.392.282.592-6.474.935-5.818-.116v-.67c-.014-1.629-.055-3.257-.074-4.885Z",
4821
+ fill: "#F2F2F2"
4822
+ }), /*#__PURE__*/React.createElement("path", {
4823
+ d: "M97.962 29.036c7.273 0 13.17-2.224 13.17-4.967 0-2.743-5.897-4.966-13.17-4.966-7.274 0-13.17 2.223-13.17 4.966 0 2.743 5.896 4.967 13.17 4.967Z",
4824
+ fill: "#B3B3B3"
4825
+ }), /*#__PURE__*/React.createElement("path", {
4826
+ d: "M97.962 16.55c4.545 0 8.23-3.705 8.23-8.275S102.507 0 97.962 0c-4.546 0-8.23 3.705-8.23 8.275s3.684 8.275 8.23 8.275Z",
4827
+ fill: "#3690EA"
4828
+ }), /*#__PURE__*/React.createElement("path", {
4829
+ d: "M141.607 59.283V45.147a19.038 19.038 0 0 0-3.687-11.301 18.872 18.872 0 0 0-9.653-6.874c-8.838-2.69-19.203-4.24-30.29-4.244-11.088-.004-21.452 1.546-30.29 4.233a18.871 18.871 0 0 0-9.668 6.866 19.041 19.041 0 0 0-3.699 11.305v14.132a19.03 19.03 0 0 0 3.685 11.303 18.86 18.86 0 0 0 9.656 6.872c8.841 2.694 19.206 4.244 30.29 4.244 11.083 0 21.452-1.542 30.294-4.233a18.858 18.858 0 0 0 9.666-6.863 19.028 19.028 0 0 0 3.696-11.304Z",
4830
+ fill: "#F2F2F2"
4831
+ }), /*#__PURE__*/React.createElement("path", {
4832
+ d: "M97.954 75.051c-10.068 0-19.88-1.371-28.381-3.957a12.353 12.353 0 0 1-6.262-4.485 12.463 12.463 0 0 1-2.41-7.34V45.131c.006-2.642.85-5.214 2.411-7.34a12.345 12.345 0 0 1 6.264-4.482c8.501-2.586 18.317-3.95 28.382-3.95 10.065 0 19.877 1.371 28.382 3.96a12.35 12.35 0 0 1 6.262 4.486 12.46 12.46 0 0 1 2.409 7.34V59.28a12.453 12.453 0 0 1-2.41 7.341 12.343 12.343 0 0 1-6.265 4.482c-8.486 2.585-18.317 3.949-28.382 3.949Zm2.909-59.059h-5.81v1.293h5.81v-1.293Z",
4833
+ fill: "#E6E6E6"
4834
+ }), /*#__PURE__*/React.createElement("path", {
4835
+ d: "M76.472 66.05c4.327 0 7.834-6.2 7.834-13.846 0-7.647-3.507-13.846-7.834-13.846-4.326 0-7.833 6.2-7.833 13.846s3.507 13.845 7.833 13.845Z",
4836
+ fill: "#1A1A1A"
4837
+ }), /*#__PURE__*/React.createElement("path", {
4838
+ d: "M77.844 52.766c1.743 0 3.157-2.088 3.157-4.664 0-2.577-1.414-4.665-3.157-4.665-1.744 0-3.157 2.088-3.157 4.665 0 2.576 1.413 4.664 3.157 4.664Z",
4839
+ fill: "#fff"
4840
+ }), /*#__PURE__*/React.createElement("path", {
4841
+ d: "M118.662 66.057c4.326 0 7.834-6.2 7.834-13.846s-3.508-13.845-7.834-13.845c-4.327 0-7.834 6.199-7.834 13.845 0 7.647 3.507 13.846 7.834 13.846Z",
4842
+ fill: "#1A1A1A"
4843
+ }), /*#__PURE__*/React.createElement("path", {
4844
+ d: "M120.032 52.774c1.744 0 3.157-2.089 3.157-4.665s-1.413-4.665-3.157-4.665c-1.743 0-3.157 2.089-3.157 4.665s1.414 4.665 3.157 4.665Z",
4845
+ fill: "#fff"
4846
+ }), /*#__PURE__*/React.createElement("path", {
4847
+ d: "M92.674 63.11a10.286 10.286 0 0 0 7.949 1.095 13.2 13.2 0 0 0 2.623-1.118.738.738 0 0 1 1.035.639.748.748 0 0 1-.119.453c-2.224 2.82-6.474 3.625-9.672 2.12a7.284 7.284 0 0 1-2.75-2.12.748.748 0 0 1 .465-1.139.738.738 0 0 1 .469.054v.015Z",
4848
+ fill: "#999"
4849
+ }), /*#__PURE__*/React.createElement("path", {
4850
+ d: "M101.117 9.562a3.035 3.035 0 0 0 3.027-3.043 3.035 3.035 0 0 0-3.027-3.043A3.035 3.035 0 0 0 98.09 6.52a3.035 3.035 0 0 0 3.027 3.043ZM51.578 54.84c.801 0 1.45-1.64 1.45-3.66 0-2.023-.649-3.662-1.45-3.662-.802 0-1.451 1.64-1.451 3.661 0 2.022.65 3.66 1.45 3.66Zm93.429 0c.802 0 1.451-1.64 1.451-3.66 0-2.023-.649-3.662-1.451-3.662-.801 0-1.45 1.64-1.45 3.661 0 2.022.649 3.66 1.45 3.66Z",
4851
+ fill: "#4BAAF7"
4852
+ }), /*#__PURE__*/React.createElement("g", {
4853
+ clipPath: `url(#${id}-b)`
4854
+ }, /*#__PURE__*/React.createElement("path", {
4855
+ d: "M52.39 160.841h-2.919a1.774 1.774 0 0 1-1.766-1.782v-7.334h9.035l-2.677 7.911a1.766 1.766 0 0 1-1.671 1.206l-.001-.001Zm91.774 0h2.919c.977 0 1.767-.799 1.767-1.782v-7.334h-9.036l2.677 7.911a1.767 1.767 0 0 0 1.672 1.206l.001-.001Z",
4856
+ fill: "#6D4932"
4857
+ }), /*#__PURE__*/React.createElement("path", {
4858
+ d: "M163.181 108.015H33.375c-2.37 0-4.291 1.479-4.291 3.305v2.216c0 1.825 1.921 3.305 4.29 3.305h129.807c2.369 0 4.29-1.48 4.29-3.305v-2.216c0-1.826-1.921-3.305-4.29-3.305Z",
4859
+ fill: "#A87B5D"
4860
+ }), /*#__PURE__*/React.createElement("path", {
4861
+ d: "M38.282 116.841h119.992v33.16c0 1.648-1.554 2.985-3.469 2.985H41.752c-1.915 0-3.468-1.337-3.468-2.985v-33.16h-.002Z",
4862
+ fill: "#916A50"
4863
+ }), /*#__PURE__*/React.createElement("path", {
4864
+ opacity: ".3",
4865
+ d: "M131.002 109.794h-97.18a.996.996 0 0 0-.992 1.001c0 .552.444 1 .992 1h97.18a.996.996 0 0 0 .991-1 .996.996 0 0 0-.991-1.001Zm30.849 0h-24.24a.996.996 0 0 0-.992 1.001c0 .552.444 1 .992 1h24.24a.996.996 0 0 0 .992-1 .996.996 0 0 0-.992-1.001Z",
4866
+ fill: "#D4B097"
4867
+ })), /*#__PURE__*/React.createElement("g", {
4868
+ clipPath: `url(#${id}-c)`
4869
+ }, /*#__PURE__*/React.createElement("path", {
4870
+ d: "M151.367 97.536h2.894c1.6 0 2.895 1.307 2.895 2.913a2.906 2.906 0 0 1-2.895 2.914h-2.894v-5.827Z",
4871
+ strokeWidth: "6",
4872
+ strokeMiterlimit: "10",
4873
+ stroke: `url(#${id}-d)`
4874
+ }), /*#__PURE__*/React.createElement("path", {
4875
+ d: "M135.876 93.304h17.017a.6.6 0 0 1 .597.602v10.166c0 1.942-1.566 3.522-3.499 3.522h-11.214c-1.933 0-3.499-1.58-3.499-3.522V93.906a.6.6 0 0 1 .598-.602Z",
4876
+ fill: `url(#${id}-e)`
4877
+ })), /*#__PURE__*/React.createElement("path", {
4878
+ d: "m37.492 78.174 38.863-6.725a3.453 3.453 0 0 1 3.455 3.45v30.087H34.04V81.623a3.452 3.452 0 0 1 3.452-3.45Z",
4879
+ fill: `url(#${id}-f)`
4880
+ }), /*#__PURE__*/React.createElement("path", {
4881
+ d: "M34.1 108.015v-3.363h57.697v3.363H34.1Z",
4882
+ fill: `url(#${id}-g)`
4883
+ }), /*#__PURE__*/React.createElement("path", {
4884
+ d: "M79.673 108.015v-3.363h12.124v3.363H79.673Z",
4885
+ fill: `url(#${id}-h)`
4886
+ })), /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("linearGradient", {
4887
+ id: `${id}-d`,
4888
+ x1: "150.254",
4889
+ y1: "100.449",
4890
+ x2: "158.273",
4891
+ y2: "100.449",
4892
+ gradientUnits: "userSpaceOnUse"
4893
+ }, /*#__PURE__*/React.createElement("stop", {
4894
+ stopColor: "#FEFEFE"
4895
+ }), /*#__PURE__*/React.createElement("stop", {
4896
+ offset: "1",
4897
+ stopColor: "#fff"
4898
+ })), /*#__PURE__*/React.createElement("linearGradient", {
4899
+ id: `${id}-e`,
4900
+ x1: "132.629",
4901
+ y1: "100.449",
4902
+ x2: "155.32",
4903
+ y2: "100.449",
4904
+ gradientUnits: "userSpaceOnUse"
4905
+ }, /*#__PURE__*/React.createElement("stop", {
4906
+ stopColor: "#FEFEFE"
4907
+ }), /*#__PURE__*/React.createElement("stop", {
4908
+ offset: "1",
4909
+ stopColor: "#F3F3F3"
4910
+ })), /*#__PURE__*/React.createElement("linearGradient", {
4911
+ id: `${id}-f`,
4912
+ x1: "56.925",
4913
+ y1: "45.291",
4914
+ x2: "56.925",
4915
+ y2: "93.076",
4916
+ gradientUnits: "userSpaceOnUse"
4917
+ }, /*#__PURE__*/React.createElement("stop", {
4918
+ stopColor: "#FEFEFE"
4919
+ }), /*#__PURE__*/React.createElement("stop", {
4920
+ offset: "1",
4921
+ stopColor: "#D1D6E7"
4922
+ })), /*#__PURE__*/React.createElement("linearGradient", {
4923
+ id: `${id}-g`,
4924
+ x1: "62.684",
4925
+ y1: "108.015",
4926
+ x2: "62.684",
4927
+ y2: "104.85",
4928
+ gradientUnits: "userSpaceOnUse"
4929
+ }, /*#__PURE__*/React.createElement("stop", {
4930
+ stopColor: "#D2D6E8"
4931
+ }), /*#__PURE__*/React.createElement("stop", {
4932
+ offset: ".726",
4933
+ stopColor: "#D1D6E7"
4934
+ })), /*#__PURE__*/React.createElement("linearGradient", {
4935
+ id: `${id}-h`,
4936
+ x1: "85.68",
4937
+ y1: "108.015",
4938
+ x2: "85.68",
4939
+ y2: "104.85",
4940
+ gradientUnits: "userSpaceOnUse"
4941
+ }, /*#__PURE__*/React.createElement("stop", {
4942
+ stopColor: "#D8DDF1"
4943
+ }), /*#__PURE__*/React.createElement("stop", {
4944
+ offset: ".726",
4945
+ stopColor: "#E2E6F6"
4946
+ })), /*#__PURE__*/React.createElement("clipPath", {
4947
+ id: `${id}-a`
4948
+ }, /*#__PURE__*/React.createElement("path", {
4949
+ fill: "#fff",
4950
+ transform: "translate(12.006)",
4951
+ d: "M0 0h172v174H0z"
4952
+ })), /*#__PURE__*/React.createElement("clipPath", {
4953
+ id: `${id}-b`
4954
+ }, /*#__PURE__*/React.createElement("path", {
4955
+ fill: "#fff",
4956
+ transform: "translate(29.084 105.073)",
4957
+ d: "M0 0h138.387v68.927H0z"
4958
+ })), /*#__PURE__*/React.createElement("clipPath", {
4959
+ id: `${id}-c`
4960
+ }, /*#__PURE__*/React.createElement("path", {
4961
+ fill: "#fff",
4962
+ transform: "translate(135.278 93.304)",
4963
+ d: "M0 0h22.995v14.29H0z"
4964
+ }))));
4965
+ }
4966
+
4967
+ var styles$f = {"blank_state":"blank_state-wMOWN","image":"image-uy0Fd"};
4968
+
4969
+ function BlankState$1({
4970
+ image,
4971
+ role,
4972
+ subtitle,
4973
+ title
4974
+ }) {
4975
+ return /*#__PURE__*/React.createElement(tapestry.Flex, {
4976
+ role: role,
4977
+ className: styles$f.blank_state,
4978
+ direction: "column",
4979
+ align: "center",
4980
+ gap: 3
4981
+ }, /*#__PURE__*/React.createElement(tapestry.Flex, {
4982
+ className: styles$f.image
4983
+ }, image), /*#__PURE__*/React.createElement(tapestry.Flex, {
4984
+ direction: "column",
4985
+ align: "center",
4986
+ gap: 1
4987
+ }, /*#__PURE__*/React.createElement("h2", null, title), /*#__PURE__*/React.createElement("p", null, subtitle)));
4988
+ }
4213
4989
 
4214
4990
  function EndOfResultsObserver({
4215
4991
  onVisible
@@ -4229,39 +5005,98 @@ function EndOfResultsObserver({
4229
5005
 
4230
5006
  const resultId = (listboxId, index) => `${listboxId}-result-${index}`;
4231
5007
 
4232
- var styles$c = {"result":"result-Thq2C"};
5008
+ var styles$e = {"result":"result-Thq2C","title":"title-KYUEn","subtitle":"subtitle-R2haq","image":"image-KVDor","avatar":"avatar-6Gh62","photo":"photo-FZR3Q","badge":"badge-trUKt"};
4233
5009
 
4234
5010
  function SearchResult({
5011
+ category,
5012
+ describedBy,
4235
5013
  highlighted,
4236
5014
  id,
5015
+ imageUrl,
4237
5016
  onHighlight,
5017
+ product,
4238
5018
  subtitle,
4239
5019
  title,
4240
5020
  url
4241
5021
  }) {
4242
5022
  const ref = React.useRef(null);
5023
+ // A hovered result is already under the pointer, and scrolling it clear of
5024
+ // the panel's scroll padding would slide the list out from under the mouse.
5025
+ const highlightedByPointer = React.useRef(false);
4243
5026
  React.useEffect(() => {
4244
5027
  var _a;
4245
- if (highlighted) (_a = ref.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({
4246
- block: "nearest"
4247
- });
5028
+ if (!highlighted) return;
5029
+ if (highlightedByPointer.current) {
5030
+ highlightedByPointer.current = false;
5031
+ } else {
5032
+ (_a = ref.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({
5033
+ block: "nearest"
5034
+ });
5035
+ }
4248
5036
  }, [highlighted]);
5037
+ const highlightFromPointer = () => {
5038
+ if (highlighted) return;
5039
+ highlightedByPointer.current = true;
5040
+ onHighlight();
5041
+ };
4249
5042
  // Focus stays in the search input, which points at the highlighted result
4250
5043
  // with aria-activedescendant, so results are kept out of the tab order.
4251
5044
  // Mouse move rather than enter: arrowing scrolls results under a resting
4252
5045
  // pointer, and that shouldn't steal the highlight.
4253
- return /*#__PURE__*/React.createElement("a", {
4254
- "aria-selected": highlighted,
4255
- className: styles$c.result,
4256
- href: url,
4257
- id: id,
4258
- onMouseMove: onHighlight,
4259
- ref: ref,
4260
- role: "option",
4261
- tabIndex: -1
4262
- }, /*#__PURE__*/React.createElement("div", null, title), /*#__PURE__*/React.createElement("div", null, subtitle));
5046
+ return (
5047
+ /*#__PURE__*/
5048
+ // Named by the title alone, so screen readers say "Ada Lovelace" rather
5049
+ // than the whole row. The section and subtitle are read after a pause.
5050
+ React.createElement("a", {
5051
+ "aria-describedby": [describedBy, subtitle && `${id}-subtitle`].filter(Boolean).join(" ") || undefined,
5052
+ "aria-labelledby": title ? `${id}-title` : undefined,
5053
+ "aria-selected": highlighted,
5054
+ className: styles$e.result,
5055
+ href: url,
5056
+ id: id,
5057
+ onMouseMove: highlightFromPointer,
5058
+ ref: ref,
5059
+ role: "option",
5060
+ tabIndex: -1
5061
+ }, /*#__PURE__*/React.createElement(ResultImage, {
5062
+ category: category,
5063
+ imageUrl: imageUrl,
5064
+ product: product
5065
+ }), /*#__PURE__*/React.createElement("span", {
5066
+ className: styles$e.title,
5067
+ id: `${id}-title`
5068
+ }, title), /*#__PURE__*/React.createElement("span", {
5069
+ className: styles$e.subtitle,
5070
+ id: `${id}-subtitle`
5071
+ }, subtitle))
5072
+ );
5073
+ }
5074
+ // A person's photo or the result's own image, badged with its product, or
5075
+ // just the product's logomark when there's no image.
5076
+ function ResultImage({
5077
+ category,
5078
+ imageUrl,
5079
+ product
5080
+ }) {
5081
+ const icon = size => isProductIconSlug(product) ? (/*#__PURE__*/React.createElement(ProductIcon, {
5082
+ size: size,
5083
+ slug: product
5084
+ })) : null;
5085
+ return /*#__PURE__*/React.createElement("span", {
5086
+ "aria-hidden": true,
5087
+ className: styles$e.image
5088
+ }, imageUrl ? (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("img", {
5089
+ alt: "",
5090
+ className: category === "profile" ? styles$e.avatar : styles$e.photo,
5091
+ loading: "lazy",
5092
+ src: imageUrl
5093
+ }), /*#__PURE__*/React.createElement("span", {
5094
+ className: styles$e.badge
5095
+ }, icon(16)))) : icon("100%"));
4263
5096
  }
4264
5097
 
5098
+ var styles$d = {"heading":"heading-LioUF","group":"group-cKChg"};
5099
+
4265
5100
  // Sections with a heading render as labelled groups; ones without render
4266
5101
  // their items straight into the listbox. Indexes run across every section.
4267
5102
  function ResultListbox({
@@ -4274,13 +5109,19 @@ function ResultListbox({
4274
5109
  sections
4275
5110
  }) {
4276
5111
  let index = 0;
4277
- const renderItem = item => {
5112
+ // With aria-activedescendant, screen readers don't reliably announce the
5113
+ // group a highlighted option is in, so each option names its heading too.
5114
+ const renderItem = (item, headingId) => {
4278
5115
  const itemIndex = index++;
4279
5116
  return /*#__PURE__*/React.createElement(SearchResult, {
5117
+ category: item.category,
5118
+ describedBy: headingId,
4280
5119
  highlighted: itemIndex === highlightedIndex,
4281
5120
  id: resultId(id, itemIndex),
5121
+ imageUrl: item.imageUrl,
4282
5122
  key: item.key,
4283
5123
  onHighlight: () => onHighlight(itemIndex),
5124
+ product: item.product,
4284
5125
  subtitle: item.subtitle,
4285
5126
  title: item.title,
4286
5127
  url: item.url
@@ -4296,16 +5137,18 @@ function ResultListbox({
4296
5137
  if (section.heading === undefined) {
4297
5138
  return /*#__PURE__*/React.createElement(React.Fragment, {
4298
5139
  key: section.key
4299
- }, section.items.map(renderItem));
5140
+ }, section.items.map(item => renderItem(item)));
4300
5141
  }
4301
5142
  const headingId = `${id}-group-${sectionIndex}`;
4302
5143
  return /*#__PURE__*/React.createElement("div", {
4303
5144
  "aria-labelledby": headingId,
5145
+ className: styles$d.group,
4304
5146
  key: section.key,
4305
5147
  role: "group"
4306
5148
  }, /*#__PURE__*/React.createElement("div", {
5149
+ className: styles$d.heading,
4307
5150
  id: headingId
4308
- }, section.heading), section.items.map(renderItem));
5151
+ }, section.heading), section.items.map(item => renderItem(item, headingId)));
4309
5152
  }));
4310
5153
  }
4311
5154
 
@@ -4319,9 +5162,14 @@ function RecentlyVisited({
4319
5162
  }) {
4320
5163
  const headingId = `${navigation.id}-heading`;
4321
5164
  if (items.length === 0 && !hasMore && !loading) {
4322
- return /*#__PURE__*/React.createElement("p", null, "Pages you visit will show up here.");
5165
+ return /*#__PURE__*/React.createElement(BlankState$1, {
5166
+ image: /*#__PURE__*/React.createElement(BlankStateRecentlyVisited, null),
5167
+ subtitle: "Pages you visit will show up here.",
5168
+ title: "Recently visited"
5169
+ });
4323
5170
  } else {
4324
5171
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
5172
+ className: styles$d.heading,
4325
5173
  id: headingId
4326
5174
  }, "Recently visited"), /*#__PURE__*/React.createElement(ResultListbox, {
4327
5175
  labelledBy: headingId,
@@ -4337,6 +5185,8 @@ function RecentlyVisited({
4337
5185
  }
4338
5186
  }
4339
5187
 
5188
+ var styles$c = {"row":"row-5P7UQ","header":"header-sXEyG","closeButton":"closeButton-rPJJV","input":"input-YQkTC","clearButton":"clearButton-9Yh9w"};
5189
+
4340
5190
  // A combobox: focus stays here while aria-activedescendant points screen
4341
5191
  // readers at the highlighted result in the listbox it controls.
4342
5192
  function SearchInput({
@@ -4345,29 +5195,433 @@ function SearchInput({
4345
5195
  inputRef,
4346
5196
  listboxId,
4347
5197
  onChange,
5198
+ onClose,
4348
5199
  onFocus,
4349
5200
  onKeyDown,
4350
5201
  value
4351
5202
  }) {
4352
- return /*#__PURE__*/React.createElement("input", {
5203
+ const {
5204
+ focusProps
5205
+ } = useKeyboardFocus({
5206
+ onFocus: (event, keyboard) => {
5207
+ // Tabbing in selects the whole term, which the next keystroke would
5208
+ // replace. Put the cursor after it instead, to keep typing. The
5209
+ // browser selects after the focus event, so this waits a frame and
5210
+ // only undoes that select-all: typing on the tabs moves focus here by
5211
+ // script, which keeps the cursor, and the keystroke may already be in.
5212
+ if (keyboard) {
5213
+ const input = event.currentTarget;
5214
+ requestAnimationFrame(() => {
5215
+ const length = input.value.length;
5216
+ const selectedAll = length > 0 && input.selectionStart === 0 && input.selectionEnd === length;
5217
+ if (document.activeElement !== input || !selectedAll) return;
5218
+ input.setSelectionRange(length, length);
5219
+ });
5220
+ }
5221
+ onFocus();
5222
+ }
5223
+ });
5224
+ return /*#__PURE__*/React.createElement("div", {
5225
+ className: styles$c.row
5226
+ }, /*#__PURE__*/React.createElement("label", {
5227
+ className: styles$c.header
5228
+ }, /*#__PURE__*/React.createElement(Icon, {
5229
+ name: "general.search",
5230
+ size: 20,
5231
+ theme: "--t-icon-color-dim"
5232
+ }), /*#__PURE__*/React.createElement("input", {
4353
5233
  "aria-activedescendant": highlightedIndex === null ? undefined : resultId(listboxId, highlightedIndex),
4354
5234
  "aria-autocomplete": "list",
4355
5235
  "aria-controls": expanded ? listboxId : undefined,
4356
5236
  "aria-expanded": expanded,
4357
5237
  "aria-label": "Search",
4358
5238
  autoFocus: true,
5239
+ className: styles$c.input,
5240
+ id: "product_search",
4359
5241
  onChange: event => onChange(event.target.value),
4360
- onFocus: onFocus,
4361
5242
  onKeyDown: onKeyDown,
4362
5243
  placeholder: "Search",
4363
5244
  ref: inputRef,
4364
5245
  role: "combobox",
4365
5246
  type: "search",
4366
- value: value
4367
- });
5247
+ value: value,
5248
+ ...focusProps
5249
+ }), !onClose && value !== "" && (/*#__PURE__*/React.createElement("button", {
5250
+ "aria-label": "Clear search",
5251
+ className: styles$c.clearButton,
5252
+ onClick: () => {
5253
+ var _a;
5254
+ onChange("");
5255
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
5256
+ },
5257
+ tabIndex: -1,
5258
+ type: "button"
5259
+ }, /*#__PURE__*/React.createElement(Icon, {
5260
+ name: "general.smallX"
5261
+ })))), onClose && (/*#__PURE__*/React.createElement(tapestry.IconButton, {
5262
+ "aria-label": "Close search",
5263
+ className: styles$c.closeButton,
5264
+ icon: /*#__PURE__*/React.createElement(Icon, {
5265
+ name: "general.x",
5266
+ theme: "--t-icon-color-dim"
5267
+ }),
5268
+ kind: "ghost",
5269
+ onClick: onClose,
5270
+ size: "md"
5271
+ })));
5272
+ }
5273
+
5274
+ function BlankStateError(props) {
5275
+ const id = useInstanceId("blank-state-error");
5276
+ return /*#__PURE__*/React.createElement("svg", {
5277
+ viewBox: "0 0 197 158",
5278
+ fill: "none",
5279
+ "aria-hidden": "true",
5280
+ focusable: "false",
5281
+ ...props
5282
+ }, /*#__PURE__*/React.createElement("path", {
5283
+ d: "M139.863 26.119c10.938 10.028 21.777 20.154 32.912 30.084 8.376 7.373 21.975 15.828 23.157 28.02.592 6.095-2.167 11.993-5.321 17.204-24.635 40.8-81.098 67.148-127.412 48.862-30.646-12.093-76.172-47.387-59.716-85.041C19.348 28.87 68.323 10.192 87.44 7.538c21.876-4.621 34.883 2.457 52.423 18.58Z",
5284
+ fill: "currentColor"
5285
+ }), /*#__PURE__*/React.createElement("g", {
5286
+ clipPath: `url(#${id}-a)`
5287
+ }, /*#__PURE__*/React.createElement("path", {
5288
+ d: "M76.296 111.268c-2.63 0-5.95-.883-9.822-3.622a3.39 3.39 0 0 1-1.375-2.212 3.375 3.375 0 0 1 .603-2.529 3.44 3.44 0 0 1 4.777-.767c5.305 3.786 7.949 1.838 8.056 1.767a1.23 1.23 0 0 0-.094.08l4.62 5.004a10.434 10.434 0 0 1-6.765 2.279Z",
5289
+ fill: "#4D4D4D"
5290
+ }), /*#__PURE__*/React.createElement("path", {
5291
+ d: "M83.313 102.999a2.751 2.751 0 0 0-2.882-2.611 2.747 2.747 0 0 0-2.63 2.86l.399 8.688a2.751 2.751 0 0 0 2.882 2.611 2.746 2.746 0 0 0 2.63-2.86l-.399-8.688Z",
5292
+ fill: "gray"
5293
+ }), /*#__PURE__*/React.createElement("path", {
5294
+ d: "M119.428 111.268a10.438 10.438 0 0 1-6.751-2.292l4.619-5.005a1.387 1.387 0 0 0-.093-.079c.106.084 2.75 2.032 8.055-1.767a3.439 3.439 0 0 1 4.777.766 3.378 3.378 0 0 1-.772 4.742c-3.885 2.774-7.205 3.635-9.835 3.635Z",
5295
+ fill: "#4D4D4D"
5296
+ }), /*#__PURE__*/React.createElement("path", {
5297
+ d: "M101.658 18.962H94.68v1.533h6.978v-1.533Z",
5298
+ fill: "#F2F2F2"
5299
+ }), /*#__PURE__*/React.createElement("path", {
5300
+ d: "M91.823 74.82a12.502 12.502 0 0 0 9.546 1.299 16.005 16.005 0 0 0 3.151-1.326.894.894 0 0 1 1.035.24.882.882 0 0 1 .064 1.053c-2.67 3.345-7.775 4.294-11.62 2.514a8.803 8.803 0 0 1-3.302-2.513.879.879 0 0 1 .561-1.353.887.887 0 0 1 .565.068v.017Z",
5301
+ fill: "#999"
5302
+ }), /*#__PURE__*/React.createElement("path", {
5303
+ d: "M88.236 143.397a3.433 3.433 0 0 1-2.304-.891 3.383 3.383 0 0 1-1.096-2.201c-.636-6.788 4.237-16.369 4.798-17.442a3.41 3.41 0 0 1 2-1.643 3.442 3.442 0 0 1 2.586.227 3.398 3.398 0 0 1 1.68 1.965 3.368 3.368 0 0 1-.196 2.569c-1.75 3.37-4.402 10.066-4.059 13.693a3.38 3.38 0 0 1-.773 2.479 3.43 3.43 0 0 1-2.31 1.213l-.326.031Z",
5304
+ fill: "#4D4D4D"
5305
+ }), /*#__PURE__*/React.createElement("path", {
5306
+ d: "M91.645 132.708c3.972 0 7.192-3.195 7.192-7.138 0-3.942-3.22-7.137-7.192-7.137s-7.191 3.195-7.191 7.137c0 3.943 3.22 7.138 7.191 7.138Z",
5307
+ fill: "gray"
5308
+ }), /*#__PURE__*/React.createElement("path", {
5309
+ d: "M77.765 152.218h14.134v4.417c0 .351-.141.689-.391.937-.25.249-.59.388-.944.388H75.33a1.34 1.34 0 0 1-.945-.388 1.32 1.32 0 0 1-.39-.937v-.671c0-.997.398-1.953 1.109-2.658a3.801 3.801 0 0 1 2.678-1.101l-.018.013Z",
5310
+ fill: "#333"
5311
+ }), /*#__PURE__*/React.createElement("path", {
5312
+ d: "M88.548 156.141s9.697.141 7.592-9.797c-2.105-9.939-14.641-18.198-18.295-7.191-3.654 11.007-1.695 18.056 10.703 16.988Z",
5313
+ fill: "#F2F2F2"
5314
+ }), /*#__PURE__*/React.createElement("path", {
5315
+ d: "M109.077 143.402h-.325a3.427 3.427 0 0 1-2.313-1.216 3.38 3.38 0 0 1-.771-2.481c.342-3.627-2.305-10.323-4.054-13.693a3.371 3.371 0 0 1-.11-2.514c.29-.821.887-1.5 1.666-1.897a3.44 3.44 0 0 1 2.525-.236 3.413 3.413 0 0 1 1.993 1.555c.556 1.069 5.429 10.654 4.789 17.443a3.383 3.383 0 0 1-1.113 2.167 3.426 3.426 0 0 1-2.287.872Z",
5316
+ fill: "#4D4D4D"
5317
+ }), /*#__PURE__*/React.createElement("path", {
5318
+ d: "M105.672 132.708c3.972 0 7.192-3.195 7.192-7.138 0-3.942-3.22-7.137-7.192-7.137s-7.191 3.195-7.191 7.137c0 3.943 3.219 7.138 7.191 7.138Z",
5319
+ fill: "gray"
5320
+ }), /*#__PURE__*/React.createElement("path", {
5321
+ d: "m121.972 158.007-15.22-.003c-.354 0-.693-.139-.943-.388a1.317 1.317 0 0 1-.391-.937v-4.417l14.139.003c1.004 0 1.967.396 2.678 1.101a3.745 3.745 0 0 1 1.108 2.658v.671c0 .352-.141.689-.391.937-.25.249-.59.388-.944.388l-.036-.013Z",
5322
+ fill: "#333"
5323
+ }), /*#__PURE__*/React.createElement("path", {
5324
+ d: "M108.769 156.145s-9.701.137-7.587-9.801c2.114-9.939 14.645-18.19 18.295-7.187 3.649 11.003 1.682 18.061-10.708 16.988Z",
5325
+ fill: "#F2F2F2"
5326
+ }), /*#__PURE__*/React.createElement("path", {
5327
+ d: "M112.002 111.683c-.07 1.51 1.108 2.791 2.63 2.86a2.75 2.75 0 0 0 2.882-2.611l.399-8.688a2.746 2.746 0 0 0-2.63-2.86 2.75 2.75 0 0 0-2.882 2.611l-.399 8.688Z",
5328
+ fill: "gray"
5329
+ }), /*#__PURE__*/React.createElement("path", {
5330
+ d: "M47.508 75.88c5.223 0 9.457-6.265 9.457-13.994 0-7.728-4.234-13.993-9.457-13.993-5.223 0-9.457 6.265-9.457 13.993 0 7.729 4.234 13.993 9.457 13.993Zm101.082.017c5.223 0 9.457-6.265 9.457-13.993 0-7.728-4.234-13.993-9.457-13.993-5.223 0-9.457 6.265-9.457 13.993 0 7.728 4.234 13.993 9.457 13.993Z",
5331
+ fill: "#3690EA"
5332
+ }), /*#__PURE__*/React.createElement("path", {
5333
+ d: "M94.622 16.97c-.133-.574 7.868-1.1 6.987.296 0 .305 0 .61.022.914 0 .884.04 1.767.04 2.681 0 .915.041 1.886.054 2.832.334.706-7.78 1.113-6.991-.133v-.795c-.036-1.935-.09-3.86-.112-5.795Z",
5334
+ fill: "#F2F2F2"
5335
+ }), /*#__PURE__*/React.createElement("path", {
5336
+ d: "M98.174 34.426c8.734 0 15.816-2.636 15.816-5.888s-7.082-5.888-15.816-5.888c-8.736 0-15.817 2.637-15.817 5.888 0 3.252 7.082 5.888 15.817 5.888Z",
5337
+ fill: "#B3B3B3"
5338
+ }), /*#__PURE__*/React.createElement("path", {
5339
+ d: "M98.174 19.625c5.458 0 9.883-4.393 9.883-9.81 0-5.418-4.425-9.81-9.883-9.81-5.46 0-9.884 4.392-9.884 9.81s4.425 9.81 9.883 9.81Z",
5340
+ fill: "#3690EA"
5341
+ }), /*#__PURE__*/React.createElement("path", {
5342
+ d: "M116.339 111.123c-.614-10.782-8.958-13.874-19.002-13.309-10.044.566-17.979 4.567-17.356 15.354.623 10.786 9.252 19.063 19.296 18.498 10.044-.565 17.676-9.761 17.062-20.543Z",
5343
+ fill: "#F2F2F2"
5344
+ }), /*#__PURE__*/React.createElement("path", {
5345
+ d: "M116.139 109.4c-1.268 8.891-8.171 15.901-16.884 16.378-9.43.53-17.623-6.74-19.096-16.559a17.615 17.615 0 0 0-.205 3.949c.619 10.781 9.257 19.063 19.297 18.498 10.039-.566 17.685-9.762 17.07-20.544a11.69 11.69 0 0 0-.182-1.722Z",
5346
+ fill: "#E6E6E6"
5347
+ }), /*#__PURE__*/React.createElement("path", {
5348
+ d: "M94.609 92.558c-.134-.579 7.868-1.1 6.987.291v.915c0 .883.035 1.789.04 2.68.004.893.04 1.891.053 2.837.334.702-7.779 1.108-6.991-.137v-.796c-.013-1.93-.067-3.86-.089-5.79Z",
5349
+ fill: "#999"
5350
+ }), /*#__PURE__*/React.createElement("path", {
5351
+ d: "M150.588 70.279V53.525a22.366 22.366 0 0 0-4.425-13.4 22.645 22.645 0 0 0-11.596-8.146c-10.613-3.19-23.061-5.027-36.376-5.031-13.315-.004-25.762 1.833-36.38 5.018a22.654 22.654 0 0 0-11.609 8.14 22.374 22.374 0 0 0-4.438 13.401v16.754a22.375 22.375 0 0 0 4.435 13.403 22.654 22.654 0 0 0 11.607 8.143c10.614 3.19 23.061 5.026 36.376 5.031 13.315.004 25.763-1.833 36.376-5.018a22.658 22.658 0 0 0 11.598-8.144 22.377 22.377 0 0 0 4.432-13.397Z",
5352
+ fill: "#F2F2F2"
5353
+ }), /*#__PURE__*/React.createElement("path", {
5354
+ d: "M98.16 88.976c-12.087 0-23.87-1.626-34.08-4.695a14.817 14.817 0 0 1-7.522-5.316 14.635 14.635 0 0 1-2.891-8.704V53.507a14.64 14.64 0 0 1 2.89-8.698 14.82 14.82 0 0 1 7.514-5.317c10.21-3.065 21.993-4.682 34.085-4.682 12.091 0 23.871 1.626 34.079 4.696a14.817 14.817 0 0 1 7.523 5.315 14.635 14.635 0 0 1 2.891 8.704V70.28a14.635 14.635 0 0 1-2.897 8.703 14.824 14.824 0 0 1-7.525 5.312c-10.191 3.047-21.976 4.682-34.067 4.682Zm3.498-70.014H94.68v1.533h6.978v-1.533Z",
5355
+ fill: "#E6E6E6"
5356
+ }), /*#__PURE__*/React.createElement("path", {
5357
+ d: "M72.367 78.304c5.195 0 9.407-7.348 9.407-16.413 0-9.065-4.212-16.414-9.407-16.414-5.196 0-9.408 7.349-9.408 16.414 0 9.065 4.212 16.413 9.408 16.413Z",
5358
+ fill: "#1A1A1A"
5359
+ }), /*#__PURE__*/React.createElement("path", {
5360
+ d: "M74.013 62.558c2.094 0 3.792-2.476 3.792-5.53 0-3.054-1.698-5.53-3.792-5.53s-3.791 2.476-3.791 5.53c0 3.054 1.697 5.53 3.791 5.53Z",
5361
+ fill: "#fff"
5362
+ }), /*#__PURE__*/React.createElement("path", {
5363
+ d: "M123.032 78.313c5.196 0 9.408-7.349 9.408-16.413 0-9.065-4.212-16.414-9.408-16.414-5.195 0-9.407 7.349-9.407 16.414 0 9.065 4.212 16.413 9.407 16.413Z",
5364
+ fill: "#1A1A1A"
5365
+ }), /*#__PURE__*/React.createElement("path", {
5366
+ d: "M124.679 62.567c2.094 0 3.792-2.476 3.792-5.53 0-3.054-1.698-5.53-3.792-5.53s-3.792 2.476-3.792 5.53c0 3.054 1.698 5.53 3.792 5.53Z",
5367
+ fill: "#fff"
5368
+ }), /*#__PURE__*/React.createElement("path", {
5369
+ d: "M105.325 106.675H90.991a.74.74 0 0 0-.743.737v2.089a.74.74 0 0 0 .743.738h14.334a.74.74 0 0 0 .743-.738v-2.089a.74.74 0 0 0-.743-.737Zm0 6.148H90.991a.74.74 0 0 0-.743.738v2.089a.74.74 0 0 0 .743.738h14.334c.41 0 .743-.331.743-.738v-2.089a.74.74 0 0 0-.743-.738Zm-.004 6.153H90.987a.74.74 0 0 0-.744.737v2.09a.74.74 0 0 0 .744.737h14.334a.74.74 0 0 0 .743-.737v-2.09a.74.74 0 0 0-.743-.737Z",
5370
+ fill: "#3690EA"
5371
+ }), /*#__PURE__*/React.createElement("path", {
5372
+ d: "M140.653 109.023c5.67-4.178 7.656-11.053 4.438-15.356-3.219-4.303-10.424-4.405-16.094-.227-5.67 4.177-7.656 11.052-4.438 15.356 3.219 4.303 10.424 4.405 16.094.227Z",
5373
+ fill: "#F2F2F2"
5374
+ }), /*#__PURE__*/React.createElement("path", {
5375
+ d: "M144.211 97.717c-3.217-4.302-10.422-4.417-16.092-.23a15.277 15.277 0 0 0-5.087 6.339c.067-3.613 2.194-7.58 5.964-10.358 5.669-4.174 12.874-4.073 16.092.23 1.86 2.486 1.976 5.83.649 9.019a7.943 7.943 0 0 0-1.526-5Z",
5376
+ fill: "#E6E6E6"
5377
+ }), /*#__PURE__*/React.createElement("path", {
5378
+ d: "M141.051 91.524c.966-1.66.874-3.508-.205-4.126-1.08-.618-2.737.226-3.703 1.887-.966 1.66-.874 3.508.205 4.126 1.079.619 2.737-.226 3.703-1.887Z",
5379
+ fill: "#333"
5380
+ }), /*#__PURE__*/React.createElement("path", {
5381
+ d: "M142.711 103.49c4.151 0 7.517-3.34 7.517-7.46s-3.366-7.46-7.517-7.46-7.516 3.34-7.516 7.46 3.365 7.46 7.516 7.46Z",
5382
+ fill: "#333"
5383
+ }), /*#__PURE__*/React.createElement("path", {
5384
+ d: "M70.234 108.894c3.219-4.303 1.232-11.178-4.437-15.356-5.67-4.178-12.875-4.076-16.094.227-3.219 4.303-1.232 11.179 4.438 15.356 5.67 4.178 12.875 4.076 16.093-.227Z",
5385
+ fill: "#F2F2F2"
5386
+ }), /*#__PURE__*/React.createElement("path", {
5387
+ d: "M50.574 97.717c3.218-4.302 10.422-4.417 16.092-.23a15.273 15.273 0 0 1 5.087 6.339c-.067-3.613-2.194-7.58-5.964-10.358-5.67-4.174-12.874-4.073-16.092.23-1.86 2.486-1.971 5.83-.65 9.019a7.945 7.945 0 0 1 1.527-5Z",
5388
+ fill: "#E6E6E6"
5389
+ }), /*#__PURE__*/React.createElement("path", {
5390
+ d: "M57.434 93.41c1.08-.618 1.171-2.466.206-4.126-.966-1.66-2.624-2.506-3.703-1.887-1.08.618-1.171 2.466-.205 4.126.965 1.66 2.623 2.506 3.702 1.887Z",
5391
+ fill: "#333"
5392
+ }), /*#__PURE__*/React.createElement("path", {
5393
+ d: "M52.074 103.49c4.151 0 7.516-3.34 7.516-7.46s-3.365-7.46-7.516-7.46-7.517 3.34-7.517 7.46 3.366 7.46 7.517 7.46Z",
5394
+ fill: "#333"
5395
+ }), /*#__PURE__*/React.createElement("path", {
5396
+ d: "M98.485 83.08c1.523-.183 2.609-1.544 2.426-3.041-.183-1.497-1.565-2.561-3.088-2.378-1.522.183-2.608 1.544-2.425 3.041.182 1.497 1.565 2.561 3.087 2.378Z",
5397
+ fill: "#1A1A1A"
5398
+ }), /*#__PURE__*/React.createElement("path", {
5399
+ d: "M101.729 11.17c1.733 0 3.138-1.394 3.138-3.113 0-1.72-1.405-3.114-3.138-3.114-1.733 0-3.137 1.394-3.137 3.114s1.404 3.114 3.137 3.114Zm52.37 52.753c.829 0 1.5-1.677 1.5-3.746s-.671-3.746-1.5-3.746c-.828 0-1.499 1.677-1.499 3.746s.671 3.746 1.499 3.746Zm-111.549 0c.829 0 1.5-1.677 1.5-3.746s-.671-3.746-1.5-3.746c-.828 0-1.5 1.677-1.5 3.746s.672 3.746 1.5 3.746Z",
5400
+ fill: "#4BAAF7"
5401
+ })), /*#__PURE__*/React.createElement("mask", {
5402
+ id: `${id}-b`,
5403
+ style: {
5404
+ maskType: "alpha"
5405
+ },
5406
+ maskUnits: "userSpaceOnUse",
5407
+ x: "0",
5408
+ y: "6",
5409
+ width: "197",
5410
+ height: "151"
5411
+ }, /*#__PURE__*/React.createElement("path", {
5412
+ d: "M139.863 26.12c10.938 10.028 21.777 20.154 32.912 30.084 8.376 7.373 21.975 15.828 23.157 28.02.592 6.095-2.167 11.993-5.321 17.204-24.635 40.8-81.098 67.148-127.412 48.862-30.646-12.093-76.172-47.387-59.716-85.041 15.865-36.377 64.84-55.056 83.957-57.71 21.876-4.621 34.883 2.457 52.423 18.58Z",
5413
+ fill: "#CEE1FF",
5414
+ fillOpacity: ".8"
5415
+ })), /*#__PURE__*/React.createElement("g", {
5416
+ mask: `url(#${id}-b)`
5417
+ }, /*#__PURE__*/React.createElement("path", {
5418
+ d: "m59.006 101 8 4m-4 1-4-5h6",
5419
+ stroke: "#FFD463"
5420
+ }), /*#__PURE__*/React.createElement("path", {
5421
+ d: "M60.006 100.999c-14.02-9.35-30.69-13.01-50-11S-26.916 103.01-38.276 115",
5422
+ strokeWidth: "2",
5423
+ stroke: "#fff"
5424
+ }), /*#__PURE__*/React.createElement("path", {
5425
+ d: "m125.304 89-8.08 3.84m1.68-3.77 6.4-.07-3.7 4.72",
5426
+ stroke: "#FFD463"
5427
+ }), /*#__PURE__*/React.createElement("path", {
5428
+ d: "M123.724 89.5c26.45-8.66 23 40.5 47 42.5 22.399 1.867 36.5-31.001 63 12",
5429
+ strokeWidth: "2",
5430
+ stroke: "#fff"
5431
+ })), /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("clipPath", {
5432
+ id: `${id}-a`
5433
+ }, /*#__PURE__*/React.createElement("path", {
5434
+ fill: "#fff",
5435
+ transform: "translate(38.051)",
5436
+ d: "M0 0h120v158H0z"
5437
+ }))));
4368
5438
  }
4369
5439
 
4370
- var styles$b = {"visuallyHidden":"visuallyHidden-S9VG5"};
5440
+ function BlankStateNoResults(props) {
5441
+ const id = useInstanceId("blank-state-no-results");
5442
+ return /*#__PURE__*/React.createElement("svg", {
5443
+ viewBox: "0 0 197 152",
5444
+ fill: "none",
5445
+ "aria-hidden": "true",
5446
+ focusable: "false",
5447
+ ...props
5448
+ }, /*#__PURE__*/React.createElement("path", {
5449
+ d: "M139.863 19.971C150.801 30 161.64 40.126 172.775 50.055c8.376 7.374 21.975 15.829 23.157 28.02.592 6.095-2.167 11.994-5.321 17.205-24.635 40.8-81.098 67.148-127.412 48.862C32.553 132.049-12.973 96.754 3.483 59.1 19.348 22.724 68.323 4.044 87.44 1.39c21.876-4.62 34.883 2.458 52.423 18.581Z",
5450
+ fill: "currentColor"
5451
+ }), /*#__PURE__*/React.createElement("path", {
5452
+ d: "M94.382 27.326c4.859 0 8.797-3.932 8.797-8.783 0-4.85-3.938-8.783-8.797-8.783-4.858 0-8.796 3.933-8.796 8.783 0 4.851 3.938 8.783 8.796 8.783Z",
5453
+ fill: "#3690EA"
5454
+ }), /*#__PURE__*/React.createElement("path", {
5455
+ d: "M97.481 19.861a3.22 3.22 0 0 0 3.222-3.217 3.22 3.22 0 0 0-3.222-3.217 3.22 3.22 0 0 0-3.222 3.217 3.22 3.22 0 0 0 3.222 3.217Z",
5456
+ fill: "#4BAAF7"
5457
+ }), /*#__PURE__*/React.createElement("path", {
5458
+ d: "M97.564 26.688h-6.248v3.565h6.248v-3.565Z",
5459
+ fill: "#F2F2F2"
5460
+ }), /*#__PURE__*/React.createElement("path", {
5461
+ d: "M49.297 77.706c4.649 0 8.417-5.61 8.417-12.53 0-6.921-3.768-12.531-8.417-12.531s-8.417 5.61-8.417 12.53c0 6.92 3.768 12.531 8.417 12.531Zm89.958 0c4.649 0 8.417-5.61 8.417-12.53 0-6.921-3.768-12.531-8.417-12.531s-8.417 5.61-8.417 12.53c0 6.92 3.768 12.531 8.417 12.531Z",
5462
+ fill: "#3690EA"
5463
+ }), /*#__PURE__*/React.createElement("path", {
5464
+ d: "M94.379 40.574c7.774 0 14.076-2.36 14.076-5.271 0-2.912-6.302-5.272-14.076-5.272-7.774 0-14.076 2.36-14.076 5.272 0 2.911 6.302 5.271 14.076 5.271Z",
5465
+ fill: "#B3B3B3"
5466
+ }), /*#__PURE__*/React.createElement("path", {
5467
+ d: "M141.036 72.671V57.672a20.118 20.118 0 0 0-3.949-12 20.166 20.166 0 0 0-10.333-7.29c-9.448-2.852-20.529-4.497-32.379-4.497-11.849 0-22.926 1.645-32.374 4.497a20.167 20.167 0 0 0-10.331 7.29 20.117 20.117 0 0 0-3.95 12v15a20.112 20.112 0 0 0 3.949 12A20.163 20.163 0 0 0 62 91.962c9.448 2.856 20.53 4.496 32.375 4.496 11.844 0 22.93-1.64 32.378-4.496a20.153 20.153 0 0 0 10.333-7.289 20.107 20.107 0 0 0 3.949-12.002Z",
5468
+ fill: "#F2F2F2"
5469
+ }), /*#__PURE__*/React.createElement("path", {
5470
+ d: "M94.387 89.422c-10.76 0-21.248-1.448-30.348-4.193a13.19 13.19 0 0 1-6.698-4.759 13.159 13.159 0 0 1-2.576-7.794v-15a13.163 13.163 0 0 1 2.577-7.793 13.196 13.196 0 0 1 6.697-4.76c9.082-2.744 19.574-4.193 30.348-4.193 10.773 0 21.248 1.449 30.348 4.194a13.2 13.2 0 0 1 6.701 4.757 13.17 13.17 0 0 1 2.582 7.795v15a13.164 13.164 0 0 1-2.577 7.794 13.195 13.195 0 0 1-6.697 4.759c-9.109 2.727-19.597 4.193-30.357 4.193Z",
5471
+ fill: "#E6E6E6"
5472
+ }), /*#__PURE__*/React.createElement("path", {
5473
+ d: "M71.426 79.868c4.624 0 8.373-6.58 8.373-14.696s-3.749-14.696-8.373-14.696c-4.624 0-8.372 6.58-8.372 14.696 0 8.117 3.748 14.697 8.372 14.697Z",
5474
+ fill: "#1A1A1A"
5475
+ }), /*#__PURE__*/React.createElement("path", {
5476
+ d: "M72.894 65.765c1.863 0 3.373-2.217 3.373-4.95 0-2.735-1.51-4.952-3.373-4.952-1.864 0-3.375 2.217-3.375 4.951 0 2.734 1.511 4.95 3.374 4.95Z",
5477
+ fill: "#fff"
5478
+ }), /*#__PURE__*/React.createElement("path", {
5479
+ d: "M116.517 79.868c4.624 0 8.373-6.58 8.373-14.696s-3.749-14.696-8.373-14.696c-4.624 0-8.372 6.58-8.372 14.696 0 8.117 3.748 14.697 8.372 14.697Z",
5480
+ fill: "#1A1A1A"
5481
+ }), /*#__PURE__*/React.createElement("path", {
5482
+ d: "M117.981 65.765c1.864 0 3.374-2.217 3.374-4.95 0-2.735-1.51-4.952-3.374-4.952-1.863 0-3.374 2.217-3.374 4.951 0 2.734 1.511 4.95 3.374 4.95Z",
5483
+ fill: "#fff"
5484
+ }), /*#__PURE__*/React.createElement("path", {
5485
+ d: "M100.012 80.196a14.156 14.156 0 0 0-2.785-1.159 10.598 10.598 0 0 0-5.713 0 14.09 14.09 0 0 0-2.78 1.159h-.027a.773.773 0 0 1-.973-1.159 8.74 8.74 0 0 1 6.639-3.049 8.754 8.754 0 0 1 6.638 3.05.773.773 0 0 1-.977 1.158h-.022Z",
5486
+ fill: "#999"
5487
+ }), /*#__PURE__*/React.createElement("path", {
5488
+ d: "M44.788 67.69c.853 0 1.545-1.731 1.545-3.867 0-2.137-.692-3.868-1.545-3.868-.852 0-1.544 1.731-1.544 3.867 0 2.137.691 3.868 1.544 3.868Zm99.38 0c.853 0 1.544-1.731 1.544-3.867 0-2.137-.691-3.868-1.544-3.868-.853 0-1.544 1.731-1.544 3.867 0 2.137.691 3.868 1.544 3.868Z",
5489
+ fill: "#4BAAF7"
5490
+ }), /*#__PURE__*/React.createElement("path", {
5491
+ d: "M79.596 106.857s-13.835 0-13.835-18.752",
5492
+ strokeWidth: "13.63",
5493
+ strokeMiterlimit: "10",
5494
+ strokeLinecap: "round",
5495
+ stroke: "#4D4D4D"
5496
+ }), /*#__PURE__*/React.createElement("path", {
5497
+ d: "M79.295 99.708h-.004a2.453 2.453 0 0 0-2.34 2.56l.353 7.781a2.453 2.453 0 0 0 2.564 2.337h.004a2.452 2.452 0 0 0 2.34-2.559l-.353-7.782a2.453 2.453 0 0 0-2.564-2.337Z",
5498
+ fill: "gray"
5499
+ }), /*#__PURE__*/React.createElement("path", {
5500
+ d: "M109.137 104.385s3.851 3.681 10.947-1.181",
5501
+ strokeWidth: "13.63",
5502
+ strokeMiterlimit: "10",
5503
+ strokeLinecap: "round",
5504
+ stroke: "#4D4D4D"
5505
+ }), /*#__PURE__*/React.createElement("path", {
5506
+ d: "m107.907 112.125.004.001a2.455 2.455 0 0 0 2.859-1.966l1.414-7.661a2.451 2.451 0 0 0-1.97-2.854h-.004a2.455 2.455 0 0 0-2.859 1.965l-1.413 7.661a2.45 2.45 0 0 0 1.969 2.854Z",
5507
+ fill: "gray"
5508
+ }), /*#__PURE__*/React.createElement("path", {
5509
+ d: "M89.494 121.176s-4.44 8.569-3.936 13.934",
5510
+ strokeWidth: "13.63",
5511
+ strokeMiterlimit: "10",
5512
+ strokeLinecap: "round",
5513
+ stroke: "#4D4D4D"
5514
+ }), /*#__PURE__*/React.createElement("path", {
5515
+ d: "M88.59 128.571c3.535 0 6.4-2.861 6.4-6.39a6.395 6.395 0 0 0-6.4-6.39 6.395 6.395 0 0 0-6.4 6.39 6.395 6.395 0 0 0 6.4 6.39Z",
5516
+ fill: "gray"
5517
+ }), /*#__PURE__*/React.createElement("path", {
5518
+ d: "M76.233 146.043h12.585v3.966a1.205 1.205 0 0 1-1.205 1.204H74.068a1.205 1.205 0 0 1-1.205-1.204v-.601a3.367 3.367 0 0 1 .989-2.378 3.38 3.38 0 0 1 2.38-.987Z",
5519
+ fill: "#333"
5520
+ }), /*#__PURE__*/React.createElement("path", {
5521
+ d: "M85.808 149.557s8.631.125 6.752-8.774c-1.878-8.899-13-16.291-16.263-6.434-3.262 9.857-1.499 16.166 9.511 15.208Z",
5522
+ fill: "#F2F2F2"
5523
+ }), /*#__PURE__*/React.createElement("path", {
5524
+ d: "M100.159 121.176s4.463 8.569 3.937 13.934",
5525
+ strokeWidth: "13.63",
5526
+ strokeMiterlimit: "10",
5527
+ strokeLinecap: "round",
5528
+ stroke: "#4D4D4D"
5529
+ }), /*#__PURE__*/React.createElement("path", {
5530
+ d: "M101.064 128.571c3.534 0 6.4-2.861 6.4-6.39 0-3.529-2.866-6.39-6.4-6.39a6.395 6.395 0 0 0-6.4 6.39 6.395 6.395 0 0 0 6.4 6.39Z",
5531
+ fill: "gray"
5532
+ }), /*#__PURE__*/React.createElement("path", {
5533
+ d: "M115.584 151.216h-13.545a1.206 1.206 0 0 1-1.205-1.203v-3.98h12.586a3.37 3.37 0 0 1 3.374 3.369v.602a1.21 1.21 0 0 1-.745 1.121 1.23 1.23 0 0 1-.465.091Z",
5534
+ fill: "#333"
5535
+ }), /*#__PURE__*/React.createElement("path", {
5536
+ d: "M103.838 149.557s-8.632.125-6.757-8.774c1.874-8.899 13.036-16.291 16.285-6.434 3.249 9.857 1.5 16.166-9.528 15.208Zm6.725-40.315c-.549-9.652-7.975-12.415-16.91-11.907-8.935.508-16.004 4.091-15.455 13.748.549 9.656 8.243 17.067 17.178 16.559 8.935-.508 15.736-8.743 15.187-18.4Z",
5537
+ fill: "#F2F2F2"
5538
+ }), /*#__PURE__*/React.createElement("path", {
5539
+ d: "M110.402 107.707c-1.129 7.958-7.271 14.228-15.027 14.665-8.39.477-15.683-6.034-16.995-14.821a15.77 15.77 0 0 0-.183 3.533c.549 9.652 8.239 17.067 17.178 16.559 8.939-.508 15.736-8.742 15.174-18.399a14.03 14.03 0 0 0-.147-1.537Z",
5540
+ fill: "#E6E6E6"
5541
+ }), /*#__PURE__*/React.createElement("path", {
5542
+ d: "M100.76 105.262H88a.66.66 0 0 0-.66.66v1.871c0 .365.296.66.66.66h12.76a.66.66 0 0 0 .66-.66v-1.871a.66.66 0 0 0-.66-.66Zm0 5.512H88a.66.66 0 0 0-.66.66v1.871c0 .364.296.66.66.66h12.76a.66.66 0 0 0 .66-.66v-1.871a.66.66 0 0 0-.66-.66Zm0 5.505H88a.66.66 0 0 0-.66.66v1.871c0 .364.296.66.66.66h12.76a.66.66 0 0 0 .66-.66v-1.871a.66.66 0 0 0-.66-.66Z",
5543
+ fill: "#3690EA"
5544
+ }), /*#__PURE__*/React.createElement("path", {
5545
+ d: "M133.43 107.146c5.688-4.463 7.529-11.6 4.111-15.943-3.417-4.343-10.799-4.245-16.487.218-5.688 4.463-7.529 11.601-4.111 15.943 3.417 4.343 10.799 4.245 16.487-.218Z",
5546
+ fill: "#F2F2F2"
5547
+ }), /*#__PURE__*/React.createElement("path", {
5548
+ d: "M136.74 95.34c-3.418-4.344-10.8-4.246-16.486.22a15.744 15.744 0 0 0-5.034 6.683c-.031-3.725 2.035-7.87 5.802-10.837 5.69-4.456 13.072-4.559 16.491-.218 1.972 2.508 2.182 5.953.919 9.273a8.246 8.246 0 0 0-1.692-5.12Z",
5549
+ fill: "#E6E6E6"
5550
+ }), /*#__PURE__*/React.createElement("path", {
5551
+ d: "M127.405 89.78c1.87.546 3.824.751 5.766.605v0a16.153 16.153 0 0 0 9.056-3.631",
5552
+ strokeWidth: "13.63",
5553
+ strokeMiterlimit: "10",
5554
+ strokeLinecap: "round",
5555
+ stroke: "#333"
5556
+ }), /*#__PURE__*/React.createElement("path", {
5557
+ d: "M79.875 85.766c2.25-7.476-.567-14.93-6.293-16.649-5.727-1.718-12.194 2.949-14.444 10.425-2.251 7.476.567 14.93 6.293 16.648 5.727 1.719 12.194-2.948 14.444-10.424Z",
5558
+ fill: "#F2F2F2"
5559
+ }), /*#__PURE__*/React.createElement("path", {
5560
+ d: "M69.713 71.558c5.726 1.72 8.542 9.175 6.293 16.652a16.978 16.978 0 0 1-4.74 7.687c3.767-1.435 7.141-5.151 8.627-10.12 2.232-7.477-.567-14.932-6.293-16.648-3.311-.993-6.863.152-9.706 2.736 1.85-.75 3.9-.858 5.82-.307Z",
5561
+ fill: "#E6E6E6"
5562
+ }), /*#__PURE__*/React.createElement("path", {
5563
+ d: "M77.006 68.04a6.195 6.195 0 0 1-4.269-1.866 6.176 6.176 0 0 1 0-8.623 6.195 6.195 0 0 1 4.27-1.867",
5564
+ strokeWidth: "13.63",
5565
+ strokeMiterlimit: "10",
5566
+ strokeLinecap: "round",
5567
+ stroke: "#333"
5568
+ }), /*#__PURE__*/React.createElement("path", {
5569
+ d: "M81.567 54.262c-.103.03-.205.07-.303.106l-.304.112-.303.111-.3.112-.303.111c-.103.031-.2.071-.303.111-.103.04-.201.072-.304.108l-.299.11-.303.112-.304.112c-.102.03-.2.071-.303.111l-.3.107-.303.111-.303.112-.304.111c-.098.031-.2.072-.299.112-.098.04-.205.07-.303.111-.099.04-.201.071-.304.107l-.299.111-.303.112a5.63 5.63 0 0 0-3.824 4.578 5.62 5.62 0 0 0 1.101 4.178 5.578 5.578 0 0 0 2.754 1.956l.303.112.304.111.308.112.303.11.304.112.303.112.304.111.303.112.308.111.304.111.303.112.304.111c.102.036.2.076.303.107l.308.116c.098.036.2.076.303.107.103.031.201.08.304.111.103.031.2.08.303.112.103.03.201.08.304.111.103.031.2.08.303.111.103.032.206.08.308.112a8.12 8.12 0 0 0 10.027-3.863 8.087 8.087 0 0 0-2.619-10.407 8.117 8.117 0 0 0-7.479-.88v.004Z",
5570
+ fill: "#2278D6"
5571
+ }), /*#__PURE__*/React.createElement("path", {
5572
+ d: "M97.105 47.237c-.192.062-.389.138-.58.21-.193.07-.393.142-.585.213-.192.072-.389.138-.585.214-.196.076-.388.138-.58.214-.192.076-.393.138-.585.214-.192.076-.388.138-.584.214-.197.076-.389.138-.585.214-.197.075-.388.138-.58.214-.192.075-.389.138-.585.213-.196.076-.388.139-.585.21-.196.071-.388.143-.58.214-.192.071-.392.138-.584.214-.192.075-.389.138-.585.214-.196.075-.388.138-.585.213-.196.076-.388.139-.58.214-.192.076-.393.139-.585.214-.191.076-.388.138-.584.214-.197.076-.389.138-.585.214-.196.076-.388.134-.58.21-.192.075-.388.138-.585.213a10.762 10.762 0 0 0-3.146 1.65 10.844 10.844 0 0 0-1.674 15.763 10.879 10.879 0 0 0 4.883 3.233c.196.075.388.151.589.213.2.063.388.152.585.214.196.063.392.152.589.219.196.067.388.147.584.214l.59.213c.196.076.388.152.589.214.2.063.388.152.584.214.197.063.388.152.59.214.2.063.388.152.584.219.196.066.388.147.59.213.2.067.387.148.584.214.196.067.388.147.589.214.2.067.388.152.584.214.197.063.393.152.59.214.196.062.388.151.584.218l.59.214c.196.072.388.147.584.214.196.067.393.147.59.214.196.067.387.151.588.214.201.062.388.151.585.214a15.669 15.669 0 0 0 14.439-1.806 15.624 15.624 0 0 0 6.706-12.895 15.597 15.597 0 0 0-1.829-7.256 15.659 15.659 0 0 0-19.454-7.244Z",
5573
+ fill: "#3690EA"
5574
+ }), /*#__PURE__*/React.createElement("path", {
5575
+ d: "M119.065 37.388a25.93 25.93 0 0 0-.978.356c-.326.125-.651.232-.977.357-.326.125-.652.232-.978.356-.325.125-.651.232-.977.361-.326.13-.652.232-.977.357-.326.125-.652.232-.978.356-.326.125-.656.232-.977.357-.322.125-.656.232-.978.36-.321.13-.651.228-.977.357-.326.13-.656.232-.977.357-.322.124-.656.231-.978.356-.321.125-.656.232-.977.357-.321.125-.656.231-.977.36-.322.13-.657.228-.978.357-.321.13-.656.232-.977.357-.322.124-.656.231-.978.356-.321.125-.656.232-.982.361-.325.13-.651.227-.977.357-.326.129-.651.227-.973.356-.321.13-.656.232-.982.357a18.217 18.217 0 0 0-7.281 4.523A18.158 18.158 0 0 0 90.716 72.8a18.097 18.097 0 0 0 8.926 6.314c.326.13.651.254.986.361.335.107.652.254.982.361.33.107.652.25.986.36.335.112.647.25.982.357.335.107.652.254.982.361.33.107.652.25.986.361.335.112.652.25.982.357.33.107.652.254.986.36.335.108.648.25.982.362.335.111.652.25.982.356.33.107.652.254.986.361.335.107.652.25.982.361.331.111.652.25.982.357.33.106.656.253.986.36.331.107.652.254.982.361.331.107.652.25.987.361.334.112.651.25.981.357.331.107.652.254.987.36.334.108.647.25.982.362.334.111.651.25.981.356a26.26 26.26 0 0 0 24.2-3.02 26.2 26.2 0 0 0 8.29-9.42 26.147 26.147 0 0 0-.114-24.35 26.194 26.194 0 0 0-8.377-9.343 26.244 26.244 0 0 0-24.226-2.795l-.022.009Z",
5576
+ fill: "#50B0FF"
5577
+ }), /*#__PURE__*/React.createElement("path", {
5578
+ d: "M128.994 80.692a18.926 18.926 0 0 1-11.736-4.091 18.853 18.853 0 0 1-5.352-22.825 18.889 18.889 0 0 1 8.696-8.867 18.93 18.93 0 0 1 22.967 4.864 18.856 18.856 0 0 1 .514 23.437 18.738 18.738 0 0 1-6.655 5.529 18.772 18.772 0 0 1-8.434 1.953Z",
5579
+ fill: "#D6DEE5"
5580
+ }), /*#__PURE__*/React.createElement("path", {
5581
+ d: "M129.021 45.14a16.719 16.719 0 0 1 10.373 3.604 16.67 16.67 0 0 1 5.887 9.258 16.65 16.65 0 0 1-1.144 10.906 16.687 16.687 0 0 1-7.681 7.838 16.724 16.724 0 0 1-10.896 1.38 16.704 16.704 0 0 1-9.398-5.675 16.657 16.657 0 0 1-.449-20.708 16.64 16.64 0 0 1 13.322-6.604h-.014Zm.014-4.417a21.143 21.143 0 0 0-13.684 5.01 21.066 21.066 0 0 0-4.43 26.958 21.12 21.12 0 0 0 11.363 9.113 21.153 21.153 0 0 0 14.569-.404 21.113 21.113 0 0 0 10.84-9.728 21.063 21.063 0 0 0 1.948-14.422 21.086 21.086 0 0 0-7.869-12.249 20.973 20.973 0 0 0-12.737-4.278Z",
5582
+ fill: "#1B64CE"
5583
+ }), /*#__PURE__*/React.createElement("path", {
5584
+ d: "M131.495 67.397c4.287 0 7.762-3.47 7.762-7.749 0-4.28-3.475-7.75-7.762-7.75-4.286 0-7.761 3.47-7.761 7.75 0 4.28 3.475 7.75 7.761 7.75Z",
5585
+ fill: "#fff"
5586
+ }), /*#__PURE__*/React.createElement("path", {
5587
+ d: "M137.039 56.638a3.996 3.996 0 0 0 3.999-3.993 3.996 3.996 0 0 0-3.999-3.992 3.996 3.996 0 0 0-3.999 3.992 3.996 3.996 0 0 0 3.999 3.993Z",
5588
+ fill: "#fff"
5589
+ }), /*#__PURE__*/React.createElement("mask", {
5590
+ id: `${id}-a`,
5591
+ style: {
5592
+ maskType: "alpha"
5593
+ },
5594
+ maskUnits: "userSpaceOnUse",
5595
+ x: "90",
5596
+ y: "96",
5597
+ width: "9",
5598
+ height: "4"
5599
+ }, /*#__PURE__*/React.createElement("path", {
5600
+ d: "M94.651 96.461c-1.785 0-3.26-.038-3.78-.038v2.897h7.14v-2.897c-.371 0-1.574.038-3.36.038Z",
5601
+ fill: "#000"
5602
+ })), /*#__PURE__*/React.createElement("g", {
5603
+ mask: `url(#${id}-a)`
5604
+ }, /*#__PURE__*/React.createElement("path", {
5605
+ d: "M94.51 95.545c-1.732.049-3.124.25-3.124.494v2.617c0 .245 1.392.446 3.124.495 1.731.049 3.124-.138 3.124-.384v-2.839c0-.245-1.393-.432-3.124-.383Z",
5606
+ fill: "#999"
5607
+ })));
5608
+ }
5609
+
5610
+ var styles$b = {"spinner":"spinner-b5tlz"};
5611
+
5612
+ function LoadingSpinner({
5613
+ size = 48,
5614
+ trackWidth = 6
5615
+ }) {
5616
+ return /*#__PURE__*/React.createElement("span", {
5617
+ "aria-hidden": "true",
5618
+ className: styles$b.spinner,
5619
+ style: {
5620
+ "--spinner-size": `${size}px`,
5621
+ "--spinner-track-width": `${trackWidth}px`
5622
+ }
5623
+ });
5624
+ }
4371
5625
 
4372
5626
  function SearchResults({
4373
5627
  label,
@@ -4388,18 +5642,36 @@ function SearchResults({
4388
5642
  ...navigation
4389
5643
  });
4390
5644
  }
4391
- return /*#__PURE__*/React.createElement("p", {
4392
- role: "status"
4393
- }, "Searching\u2026");
5645
+ return /*#__PURE__*/React.createElement(tapestry.Flex, {
5646
+ role: "status",
5647
+ justify: "center",
5648
+ align: "center",
5649
+ gap: 2,
5650
+ direction: "column",
5651
+ style: {
5652
+ color: "var(--t-text-color-placeholder)",
5653
+ fontSize: "var(--t-font-size-md)",
5654
+ marginTop: 48
5655
+ }
5656
+ }, /*#__PURE__*/React.createElement(LoadingSpinner, {
5657
+ size: 40,
5658
+ trackWidth: 5
5659
+ }), "Searching\u2026");
4394
5660
  case "error":
4395
- return /*#__PURE__*/React.createElement("p", {
4396
- role: "alert"
4397
- }, "Search isn\u2019t working right now. Try again.");
5661
+ return /*#__PURE__*/React.createElement(BlankState$1, {
5662
+ image: /*#__PURE__*/React.createElement(BlankStateError, null),
5663
+ role: "alert",
5664
+ subtitle: "Try again in a moment.",
5665
+ title: "Search isn\u2019t working right now"
5666
+ });
4398
5667
  case "done":
4399
5668
  if (sections.length === 0) {
4400
- return /*#__PURE__*/React.createElement("p", {
4401
- role: "status"
4402
- }, "No results for \u201C", term.trim(), "\u201D");
5669
+ return /*#__PURE__*/React.createElement(BlankState$1, {
5670
+ image: /*#__PURE__*/React.createElement(BlankStateNoResults, null),
5671
+ role: "status",
5672
+ subtitle: "Clear search and try again.",
5673
+ title: `No results for “${term.trim()}”`
5674
+ });
4403
5675
  }
4404
5676
  return /*#__PURE__*/React.createElement(ResultListbox, {
4405
5677
  busy: false,
@@ -4414,27 +5686,37 @@ function SearchResults({
4414
5686
  // stays put as more recents load and as their lookups answer.
4415
5687
  const RECENTS = "recents";
4416
5688
  function SearchPanel({
5689
+ appName,
5690
+ mobile = false,
4417
5691
  env,
5692
+ onClose,
4418
5693
  products
4419
5694
  }) {
4420
5695
  var _a, _b;
4421
5696
  const listboxId = useInstanceId("product-search-results");
4422
5697
  const [term, setTerm] = React.useState("");
4423
- const [selectedSlug, setSelectedSlug] = React.useState(() => initialProduct(products).slug);
5698
+ const [selectedSlug, setSelectedSlug] = React.useState(() => defaultProduct(products, appName).slug);
4424
5699
  const product = (_a = products.find(({
4425
5700
  slug
4426
5701
  }) => slug === selectedSlug)) !== null && _a !== void 0 ? _a : products[0];
4427
5702
  const hasTerm = term.trim() !== "";
4428
5703
  const search = useProductSearch(product.slug, term);
4429
5704
  const groups = "groups" in search ? search.groups : undefined;
4430
- const sections = React.useMemo(() => groupSections(groups), [groups]);
5705
+ const {
5706
+ organizationTimeZone
5707
+ } = useStore();
5708
+ const sections = React.useMemo(() => groupSections(groups, organizationTimeZone), [groups, organizationTimeZone]);
4431
5709
  const {
4432
5710
  visits,
4433
5711
  ...recents
4434
5712
  } = useRecentVisits(env);
4435
- const recentItems = visits.map(visitItem);
5713
+ const recentItems = visits.map(visit => visitItem(visit, organizationTimeZone));
4436
5714
  const items = hasTerm ? sections.flatMap(section => section.items) : recentItems;
4437
- const navigation = useResultNavigation(items, hasTerm ? sections : RECENTS);
5715
+ // Phones open results by tapping them, with no highlight to arrow through.
5716
+ // A narrow window with a keyboard and mouse keeps both, as does the desktop
5717
+ // layout on a touch device, whose keyboard hints still advertise them.
5718
+ const touchOnly = useMediaQuery("(hover: none) and (pointer: coarse)");
5719
+ const navigation = useResultNavigation(items, hasTerm ? sections : RECENTS, !(mobile && touchOnly));
4438
5720
  const {
4439
5721
  highlightedIndex
4440
5722
  } = navigation;
@@ -4454,41 +5736,48 @@ function SearchPanel({
4454
5736
  navigation.handleKeyDown(event);
4455
5737
  }
4456
5738
  };
4457
- React.useEffect(() => {
4458
- if (hasTerm) saveLastProduct(product.slug);
4459
- }, [hasTerm, product.slug]);
5739
+ const results = hasTerm ? (/*#__PURE__*/React.createElement(SearchResults, {
5740
+ highlightedIndex: highlightedIndex,
5741
+ id: listboxId,
5742
+ label: `Results from Planning Center ${product.appName}`,
5743
+ onHighlight: navigation.highlightIndex,
5744
+ sections: sections,
5745
+ status: search.status,
5746
+ term: term
5747
+ })) : (/*#__PURE__*/React.createElement(RecentlyVisited, {
5748
+ highlightedIndex: highlightedIndex,
5749
+ id: listboxId,
5750
+ items: recentItems,
5751
+ onHighlight: navigation.highlightIndex,
5752
+ ...recents
5753
+ }));
4460
5754
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SearchInput, {
4461
5755
  expanded: items.length > 0,
4462
5756
  highlightedIndex: highlightedIndex,
4463
5757
  inputRef: inputRef,
4464
5758
  listboxId: listboxId,
4465
5759
  onChange: setTerm,
5760
+ onClose: onClose,
4466
5761
  onFocus: () => setAnnounceHighlight(false),
4467
5762
  onKeyDown: navigation.handleKeyDown,
4468
5763
  value: term
4469
- }), /*#__PURE__*/React.createElement(ProductTabs, {
5764
+ }), mobile ? (/*#__PURE__*/React.createElement(ProductSelect, {
5765
+ onSelect: setSelectedSlug,
5766
+ products: products,
5767
+ selected: product
5768
+ }, results)) : (/*#__PURE__*/React.createElement(ProductTabs, {
4470
5769
  onKeyDown: handleTabsKeyDown,
4471
5770
  onSelect: setSelectedSlug,
4472
5771
  products: products,
4473
5772
  selected: product
4474
- }, hasTerm ? (/*#__PURE__*/React.createElement(SearchResults, {
4475
- highlightedIndex: highlightedIndex,
4476
- id: listboxId,
4477
- label: `${product.appName} results`,
4478
- onHighlight: navigation.highlightIndex,
4479
- sections: sections,
4480
- status: search.status,
4481
- term: term
4482
- })) : (/*#__PURE__*/React.createElement(RecentlyVisited, {
4483
- highlightedIndex: highlightedIndex,
4484
- id: listboxId,
4485
- items: recentItems,
4486
- onHighlight: navigation.highlightIndex,
4487
- ...recents
4488
- }))), /*#__PURE__*/React.createElement("div", {
5773
+ }, results)), /*#__PURE__*/React.createElement("div", {
4489
5774
  "aria-live": "polite",
4490
- className: styles$b.visuallyHidden
4491
- }, announceHighlight ? (_b = navigation.highlighted) === null || _b === void 0 ? void 0 : _b.title : null), /*#__PURE__*/React.createElement(KeyboardHints, {
5775
+ className: styles$k.visuallyHidden
5776
+ }, announceHighlight ? (_b = navigation.highlighted) === null || _b === void 0 ? void 0 : _b.title : null), /*#__PURE__*/React.createElement("div", {
5777
+ "aria-live": "polite",
5778
+ className: styles$k.visuallyHidden,
5779
+ "data-testid": "result-count"
5780
+ }, hasTerm && search.status === "done" && items.length > 0 ? `${items.length} ${items.length === 1 ? "result" : "results"} for “${term.trim()}” in ${product.appName}` : null), mobile ? null : /*#__PURE__*/React.createElement(KeyboardHints, {
4492
5781
  copied: navigation.copied
4493
5782
  }));
4494
5783
  }
@@ -4559,32 +5848,6 @@ function useSearchShortcut(enabled, open, setOpen) {
4559
5848
  }, [enabled, open, setOpen]);
4560
5849
  }
4561
5850
 
4562
- const SEARCHABLE_PRODUCTS = [{
4563
- appName: "Calendar",
4564
- slug: "calendar"
4565
- }, {
4566
- appName: "Check-Ins",
4567
- slug: "check-ins"
4568
- }, {
4569
- appName: "Giving",
4570
- slug: "giving"
4571
- }, {
4572
- appName: "Groups",
4573
- slug: "groups"
4574
- }, {
4575
- appName: "People",
4576
- slug: "people"
4577
- }, {
4578
- appName: "Publishing",
4579
- slug: "publishing"
4580
- }, {
4581
- appName: "Registrations",
4582
- slug: "registrations"
4583
- }, {
4584
- appName: "Services",
4585
- slug: "services"
4586
- }];
4587
-
4588
5851
  const PERMISSION_CHECKS = {
4589
5852
  "check-ins": () => fetchMe("check-ins", "permission").then(({
4590
5853
  permission
@@ -4689,24 +5952,59 @@ function inSwitcherOrder(apps) {
4689
5952
  return groupApps(apps).restProducts.flatMap(app => SEARCHABLE_PRODUCTS.filter(product => product.appName === app.name));
4690
5953
  }
4691
5954
 
5955
+ /**
5956
+ * Writes the height of the visible part of the page to the parent of `ref`'s
5957
+ * element as `--visual-viewport-height`. It shrinks when an on-screen keyboard
5958
+ * opens; `100dvh` doesn't, since mobile Safari draws the keyboard over it.
5959
+ */
5960
+ function useVisualViewportHeight(ref, enabled) {
5961
+ React.useEffect(() => {
5962
+ var _a;
5963
+ const viewport = window.visualViewport;
5964
+ const parent = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.parentElement;
5965
+ if (!enabled || !viewport || !parent) return undefined;
5966
+ const update = () => parent.style.setProperty("--visual-viewport-height", `${viewport.height}px`);
5967
+ update();
5968
+ viewport.addEventListener("resize", update);
5969
+ return () => {
5970
+ viewport.removeEventListener("resize", update);
5971
+ parent.style.removeProperty("--visual-viewport-height");
5972
+ };
5973
+ }, [enabled, ref]);
5974
+ }
5975
+
4692
5976
  function ProductSearch({
5977
+ appName,
4693
5978
  apps,
5979
+ mobile = false,
4694
5980
  env
4695
5981
  }) {
4696
5982
  const searchable = useSearchableProducts(apps);
4697
5983
  const [open, setOpen] = React.useState(false);
5984
+ const modalRef = React.useRef(null);
5985
+ // Sizes Tapestry's modal frame, the dialog's parent, to fit above the keyboard.
5986
+ useVisualViewportHeight(modalRef, mobile && open);
4698
5987
  const available = searchable.status === "done" && searchable.products.length > 0;
4699
5988
  useSearchShortcut(available, open, setOpen);
4700
5989
  if (!available) return null;
4701
5990
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SearchButton, {
5991
+ mobile: mobile,
4702
5992
  onClick: () => setOpen(true)
4703
5993
  }), /*#__PURE__*/React.createElement(tapestry.Modal, {
4704
5994
  "aria-label": "Search",
5995
+ className: styles$k.modal,
4705
5996
  dismissible: true,
5997
+ id: "product_search_modal",
4706
5998
  onClose: () => setOpen(false),
4707
- open: open
5999
+ open: open,
6000
+ ref: modalRef,
6001
+ size: "lg"
4708
6002
  }, /*#__PURE__*/React.createElement(SearchPanel, {
6003
+ appName: appName,
6004
+ mobile: mobile,
4709
6005
  env: env,
6006
+ // Phones have no Esc, so mobile search gets a close button.
6007
+ onClose: mobile ? () => setOpen(false) : undefined,
4710
6008
  products: searchable.products
4711
6009
  })));
4712
6010
  }
@@ -5000,6 +6298,7 @@ const NotSmallTopbar = ({
5000
6298
  margin: "auto"
5001
6299
  }
5002
6300
  }), !notificationsEnabled && notifications(), productSearchEnabled ? (/*#__PURE__*/React.createElement(ProductSearch, {
6301
+ appName: props.appName,
5003
6302
  apps: props.apps,
5004
6303
  env: props.env
5005
6304
  })) : search({
@@ -32914,7 +34213,7 @@ ClientStorage.defaultProps = {
32914
34213
  method: "localStorage"
32915
34214
  };
32916
34215
 
32917
- var styles$6 = {"appmenu-button":"appmenu-button-b0UvT","appmenu-layer":"appmenu-layer-0IQpN","appmenu-container":"appmenu-container-gackd","appmenu-scroll":"appmenu-scroll-mPSx0","appmenu-list":"appmenu-list-h7clX","appmenu-list-a":"appmenu-list-a-rGIQN","appmenu-list-a--top":"appmenu-list-a--top-RT-2F","appmenu-list-a--bottom":"appmenu-list-a--bottom-YDeBC","appmenu-close-button":"appmenu-close-button-vv9bV","current-route":"current-route-wpJgz","is-active":"is-active-wy8Bg","routes":"routes-Nmt1S","route":"route-kkknQ","profile-button":"profile-button-a2WO2"};
34216
+ var styles$6 = {"appmenu-button":"appmenu-button-b0UvT","appmenu-layer":"appmenu-layer-0IQpN","appmenu-container":"appmenu-container-gackd","appmenu-scroll":"appmenu-scroll-mPSx0","appmenu-list":"appmenu-list-h7clX","appmenu-list-a":"appmenu-list-a-rGIQN","appmenu-list-a--top":"appmenu-list-a--top-RT-2F","appmenu-list-a--bottom":"appmenu-list-a--bottom-YDeBC","appmenu-close-button":"appmenu-close-button-vv9bV","current-route":"current-route-wpJgz","is-active":"is-active-wy8Bg","routes":"routes-Nmt1S","route":"route-kkknQ","actions":"actions-INQ7-","profile-button":"profile-button-a2WO2"};
32918
34217
 
32919
34218
  function AccountSettingsLink({
32920
34219
  env
@@ -33134,7 +34433,14 @@ const SmallTopbar = ({
33134
34433
  setProductSwitcherVisible(false);
33135
34434
  setRoutesMenuVisible(visible => !visible);
33136
34435
  } : null
33137
- }, /*#__PURE__*/React.createElement(CurrentRouteComponent, null, capitalize$1(currentRouteText)), props.routes.length > 0 && /*#__PURE__*/React.createElement(DisclosureChevronIcon, null)), /*#__PURE__*/React.createElement("button", {
34436
+ }, /*#__PURE__*/React.createElement(CurrentRouteComponent, null, capitalize$1(currentRouteText)), props.routes.length > 0 && /*#__PURE__*/React.createElement(DisclosureChevronIcon, null)), /*#__PURE__*/React.createElement("div", {
34437
+ className: styles$6["actions"]
34438
+ }, productSearchEnabled && (/*#__PURE__*/React.createElement(ProductSearch, {
34439
+ appName: props.appName,
34440
+ apps: props.apps,
34441
+ mobile: true,
34442
+ env: props.env
34443
+ })), /*#__PURE__*/React.createElement("button", {
33138
34444
  type: "button",
33139
34445
  className: styles$6["profile-button"],
33140
34446
  onClick: () => {
@@ -33145,7 +34451,7 @@ const SmallTopbar = ({
33145
34451
  }, /*#__PURE__*/React.createElement(Avatar, {
33146
34452
  env: props.env,
33147
34453
  url: props.userAvatarPath
33148
- })));
34454
+ }))));
33149
34455
  };
33150
34456
  const SmallRoute = ({
33151
34457
  active,
@@ -33635,38 +34941,6 @@ const SwitchView = ({
33635
34941
  }));
33636
34942
  };
33637
34943
 
33638
- const collections = {
33639
- general: general__namespace,
33640
- toolbar: toolbar__namespace
33641
- };
33642
- const paths = collections;
33643
- function Icon({
33644
- name,
33645
- size = 16,
33646
- style,
33647
- theme,
33648
- title,
33649
- ...props
33650
- }) {
33651
- const [collection, symbol] = name.split(".");
33652
- return /*#__PURE__*/React.createElement("svg", {
33653
- "aria-hidden": title ? undefined : true,
33654
- fill: "currentColor",
33655
- height: size,
33656
- role: title ? "img" : undefined,
33657
- style: {
33658
- color: theme && `var(${theme})`,
33659
- flexShrink: 0,
33660
- ...style
33661
- },
33662
- viewBox: "0 0 16 16",
33663
- width: size,
33664
- ...props
33665
- }, title && /*#__PURE__*/React.createElement("title", null, title), /*#__PURE__*/React.createElement("path", {
33666
- d: paths[collection][symbol]
33667
- }));
33668
- }
33669
-
33670
34944
  var styles$3 = {"color-mode-switcher":"color-mode-switcher-JpczO","color-mode-switcher-label":"color-mode-switcher-label-3jPM2","color-mode-switcher-modes":"color-mode-switcher-modes-u-bic"};
33671
34945
 
33672
34946
  const COLOR_MODES = [{
@@ -34451,7 +35725,8 @@ function AskAIButton({
34451
35725
  onClick: () => onClick(),
34452
35726
  type: "button"
34453
35727
  }, /*#__PURE__*/React.createElement(SparkleIcon, {
34454
- className: styles.sparkle
35728
+ className: styles.sparkle,
35729
+ fill: "currentColor"
34455
35730
  }), /*#__PURE__*/React.createElement("span", {
34456
35731
  className: styles.label
34457
35732
  }, text));
@@ -34640,6 +35915,9 @@ function createPicobotIframe(picobotOrigin, {
34640
35915
  // Contact support) and picobot's own NEW_ROUTE_RENDERED reports—so it
34641
35916
  // always reflects the live conversation. See buildPicobotSrc.
34642
35917
  const [loadedPath, setLoadedPath] = React.useState(iframePath || "");
35918
+ // Hidden until picobot paints so its blank first frame doesn't flash
35919
+ // white against the drawer in dark mode.
35920
+ const [isReady, setIsReady] = React.useState(false);
34643
35921
  const hasReportedErrorRef = React.useRef(false);
34644
35922
  const loadTimeoutRef = React.useRef();
34645
35923
  const reportLoadError = React.useCallback(() => {
@@ -34667,7 +35945,10 @@ function createPicobotIframe(picobotOrigin, {
34667
35945
  setLoadedPath(reportedPath);
34668
35946
  onIframeChangePath(reportedPath);
34669
35947
  }
34670
- if (((_c = e.data) === null || _c === void 0 ? void 0 : _c.type) === "READY") clearTimeout(loadTimeoutRef.current);
35948
+ if (((_c = e.data) === null || _c === void 0 ? void 0 : _c.type) === "READY") {
35949
+ clearTimeout(loadTimeoutRef.current);
35950
+ setIsReady(true);
35951
+ }
34671
35952
  if (onMessage) onMessage(e.data);
34672
35953
  }
34673
35954
  window.addEventListener("message", handleGuestMessage);
@@ -34677,12 +35958,15 @@ function createPicobotIframe(picobotOrigin, {
34677
35958
  setLoadedPath(iframePath || "");
34678
35959
  }, [iframePath]);
34679
35960
  // A one-way channel for sending messages to picobot. Topbar just
34680
- // forwards the envelope to the iframe and holds no message semantics of
34681
- // its own—the consumer decides what to send and when.
35961
+ // forwards the envelope to the iframe—the consumer decides what to send
35962
+ // and when. The one exception is PANE_VISIBLE: Safari ignores focus()
35963
+ // from inside a cross-origin iframe, so the host has to focus the iframe
35964
+ // before picobot can focus its composer.
34682
35965
  React.useImperativeHandle(ref, () => ({
34683
35966
  postMessage(message) {
34684
- var _a, _b;
34685
- (_b = (_a = iframeRef.current) === null || _a === void 0 ? void 0 : _a.contentWindow) === null || _b === void 0 ? void 0 : _b.postMessage(message, picobotOrigin);
35967
+ var _a, _b, _c;
35968
+ if (message.type === "PANE_VISIBLE") (_a = iframeRef.current) === null || _a === void 0 ? void 0 : _a.focus();
35969
+ (_c = (_b = iframeRef.current) === null || _b === void 0 ? void 0 : _b.contentWindow) === null || _c === void 0 ? void 0 : _c.postMessage(message, picobotOrigin);
34686
35970
  }
34687
35971
  }), []);
34688
35972
  const iframeSrc = buildPicobotSrc(picobotOrigin, loadedPath, {
@@ -34696,6 +35980,7 @@ function createPicobotIframe(picobotOrigin, {
34696
35980
  border: 0,
34697
35981
  flex: 1,
34698
35982
  height: "100%",
35983
+ visibility: isReady ? undefined : "hidden",
34699
35984
  width: "100%"
34700
35985
  },
34701
35986
  title: "Picobot"
@@ -35424,6 +36709,7 @@ function PicobotComponent({
35424
36709
  closeDrawer,
35425
36710
  currentPath,
35426
36711
  env,
36712
+ isOpen,
35427
36713
  onChangePath,
35428
36714
  openTool,
35429
36715
  pending
@@ -35468,6 +36754,17 @@ function PicobotComponent({
35468
36754
  }
35469
36755
  clearPending();
35470
36756
  }, [pending, isPicobotReady, clearPending]);
36757
+ // The drawer keeps the iframe mounted while it's closed, so picobot's
36758
+ // autofocus is spent by the time the panel reopens. READY gates the signal
36759
+ // because picobot has no listener before it.
36760
+ React.useEffect(function tellPicobotThePanelIsVisible() {
36761
+ var _a;
36762
+ if (isOpen && isPicobotReady) {
36763
+ (_a = picobotRef.current) === null || _a === void 0 ? void 0 : _a.postMessage({
36764
+ type: "PANE_VISIBLE"
36765
+ });
36766
+ }
36767
+ }, [isOpen, isPicobotReady]);
35471
36768
  const [iframeErrored, setIframeErrored] = React.useState(false);
35472
36769
  const [mountKey, setMountKey] = React.useState(0);
35473
36770
  const handleRetry = React.useCallback(() => {
@@ -35984,6 +37281,11 @@ const Profile = {
35984
37281
  };
35985
37282
 
35986
37283
  const DURATION = 100;
37284
+ const TOOLBAR_DRAWER_CHANGE_EVENT = "topbar:toolbar-drawer-change";
37285
+ const CLOSED_TOOLBAR_DRAWER = {
37286
+ open: false,
37287
+ tool: null
37288
+ };
35987
37289
  // Exempt paths match regardless of query, so `email?conversationId=…` is
35988
37290
  // exempt along with `email`.
35989
37291
  function isToolPathExemptFromStorage(toolName, path) {
@@ -36097,6 +37399,27 @@ function Toolbar({
36097
37399
  delete window.openHelpdesk; /* TODO: Remove when products have migrated to window.topbar.openHelpdesk */
36098
37400
  };
36099
37401
  }, [Profile, openHelpdeskAtRoot]);
37402
+ const toolbarDrawerTool = open && currentContent ? currentContent.name.toLowerCase() : null;
37403
+ const lastToolbarDrawer = React.useRef(CLOSED_TOOLBAR_DRAWER);
37404
+ React.useEffect(() => {
37405
+ const toolbarDrawer = {
37406
+ open,
37407
+ tool: toolbarDrawerTool
37408
+ };
37409
+ window.topbar = window.topbar || {};
37410
+ window.topbar.toolbarDrawer = toolbarDrawer;
37411
+ const last = lastToolbarDrawer.current;
37412
+ if (last.open !== toolbarDrawer.open || last.tool !== toolbarDrawer.tool) {
37413
+ lastToolbarDrawer.current = toolbarDrawer;
37414
+ window.dispatchEvent(new CustomEvent(TOOLBAR_DRAWER_CHANGE_EVENT, {
37415
+ detail: toolbarDrawer
37416
+ }));
37417
+ }
37418
+ return () => {
37419
+ var _a;
37420
+ (_a = window.topbar) === null || _a === void 0 ? true : delete _a.toolbarDrawer;
37421
+ };
37422
+ }, [open, toolbarDrawerTool]);
36100
37423
  const loginSettingsUrl = getLoginProfilePath({
36101
37424
  appName: appName.replace(/[\s-]/, ""),
36102
37425
  env: env,