@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.
@@ -1,4 +1,4 @@
1
- import { Link, Button, Popover, PopoverTrigger, PopoverContent, Modal } from '@planningcenter/tapestry';
1
+ import { Link, Button, Popover, PopoverTrigger, PopoverContent, Flex, Select, IconButton, Modal } from '@planningcenter/tapestry';
2
2
  import * as React from 'react';
3
3
  import React__default, { useState, useEffect, useMemo, useLayoutEffect, useContext, createContext, useCallback, useRef } from 'react';
4
4
  import pcoUrl$1, { pcoUrl as pcoUrl$2, pcoApiUrl } from '@planningcenter/url';
@@ -6,18 +6,20 @@ import * as general from '@planningcenter/icons/paths/general';
6
6
  import Jolt from '@planningcenter/jolt-client';
7
7
  import { useSyncExternalStore } from 'use-sync-external-store/shim';
8
8
  import 'react/jsx-runtime';
9
+ import * as toolbar from '@planningcenter/icons/paths/toolbar';
10
+ import datetimeFmt from '@planningcenter/datetime-fmt';
11
+ import pluralize from 'pluralize';
12
+ import * as logomarks from '@planningcenter/icons/paths/logomark';
9
13
  import { ThemeProvider, Divider, Button as Button$1, StackView as StackView$2, Text, Icon as Icon$1, designSystem, Box, Heading, GridView, Avatar as Avatar$1, Link as Link$1, HeadingUppercase, List, Combobox, Logo, Dropdown, Spinner, Badge } from '@planningcenter/tapestry-react';
10
14
  import { components, UiExtensionFirstPartyComponent, UiExtensionDataContext } from '@planningcenter/add-ons';
11
15
  import * as churchCenter from '@planningcenter/icons/paths/church-center';
12
16
  import * as people from '@planningcenter/icons/paths/people';
13
- import * as toolbar from '@planningcenter/icons/paths/toolbar';
14
17
  import { InlineWidget } from 'react-calendly';
15
18
  import algoliasearch from 'algoliasearch';
16
19
  import { useSearchBox, useHits, InstantSearch, Configure } from 'react-instantsearch-core';
17
20
  import { TransitionGroup, Transition } from 'react-transition-group';
18
- import datetimeFmt from '@planningcenter/datetime-fmt';
19
21
 
20
- var styles$m = {"accessibility-toolbar":"accessibility-toolbar-jgjUG"};
22
+ var styles$u = {"accessibility-toolbar":"accessibility-toolbar-jgjUG"};
21
23
 
22
24
  const AccessibilityToolbar = ({
23
25
  children
@@ -29,7 +31,7 @@ const AccessibilityToolbar = ({
29
31
  (_a = document.getElementById("main-content")) === null || _a === void 0 ? void 0 : _a.focus();
30
32
  };
31
33
  return /*#__PURE__*/React__default.createElement("div", {
32
- className: styles$m["accessibility-toolbar"]
34
+ className: styles$u["accessibility-toolbar"]
33
35
  }, /*#__PURE__*/React__default.createElement(Link, {
34
36
  href: "#main-content",
35
37
  kind: "primary",
@@ -348,11 +350,11 @@ const X = ({
348
350
  fill: fill
349
351
  })));
350
352
 
351
- 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"};
353
+ 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"};
352
354
 
353
355
  function AnnouncementIcon() {
354
356
  return /*#__PURE__*/React__default.createElement("svg", {
355
- className: styles$l["announcement-icon"],
357
+ className: styles$t["announcement-icon"],
356
358
  width: "16",
357
359
  height: "16",
358
360
  viewBox: "0 0 16 16",
@@ -477,7 +479,7 @@ let StyledAnnouncement$1 = class StyledAnnouncement extends React__default.Compo
477
479
  } = this.props;
478
480
  const isPromo = variant === "promo";
479
481
  return /*#__PURE__*/React__default.createElement("div", {
480
- className: classnames(styles$l["announcement"], styles$l[`announcement--${variant !== null && variant !== void 0 ? variant : "platform"}`]),
482
+ className: classnames(styles$t["announcement"], styles$t[`announcement--${variant !== null && variant !== void 0 ? variant : "platform"}`]),
481
483
  "data-announcement-variant": variant !== null && variant !== void 0 ? variant : "platform",
482
484
  style: isPromo ? {
483
485
  backgroundImage: promoBackgroundUrl,
@@ -486,7 +488,7 @@ let StyledAnnouncement$1 = class StyledAnnouncement extends React__default.Compo
486
488
  backgroundSize: "cover"
487
489
  } : undefined
488
490
  }, !isPromo && /*#__PURE__*/React__default.createElement(AnnouncementIcon, null), /*#__PURE__*/React__default.createElement("div", {
489
- className: styles$l["announcement-content"],
491
+ className: styles$t["announcement-content"],
490
492
  style: style,
491
493
  ...platformProps
492
494
  }));
@@ -535,7 +537,7 @@ function StyledDismissButton$1({
535
537
  const isPromo = variant === "promo";
536
538
  return /*#__PURE__*/React__default.createElement("button", {
537
539
  type: "button",
538
- className: classnames(styles$l.dismiss, isPromo && styles$l["dismiss--promo"]),
540
+ className: classnames(styles$t.dismiss, isPromo && styles$t["dismiss--promo"]),
539
541
  ...props
540
542
  }, /*#__PURE__*/React__default.createElement(X, {
541
543
  fill: isPromo ? "currentColor" : "white",
@@ -615,9 +617,9 @@ class StyledAnnouncement extends React__default.Component {
615
617
  ...platformProps
616
618
  } = this.props;
617
619
  return /*#__PURE__*/React__default.createElement("div", {
618
- className: styles$l["announcement"]
620
+ className: styles$t["announcement"]
619
621
  }, /*#__PURE__*/React__default.createElement(AnnouncementIcon, null), /*#__PURE__*/React__default.createElement("div", {
620
- className: styles$l["announcement-content"],
622
+ className: styles$t["announcement-content"],
621
623
  style: style,
622
624
  ...platformProps
623
625
  }));
@@ -628,7 +630,7 @@ function StyledDismissButton({
628
630
  }) {
629
631
  return /*#__PURE__*/React__default.createElement("button", {
630
632
  type: "button",
631
- className: styles$l.dismiss,
633
+ className: styles$t.dismiss,
632
634
  ...props
633
635
  }, /*#__PURE__*/React__default.createElement(X, {
634
636
  fill: "white",
@@ -1750,7 +1752,7 @@ function MonoAppIcon({
1750
1752
  })) : (/*#__PURE__*/React__default.createElement("div", null, "appName not supported")));
1751
1753
  }
1752
1754
 
1753
- var styles$k = {"icon-slot":"icon-slot-m3ZIk","name":"name-UNqbW"};
1755
+ var styles$s = {"icon-slot":"icon-slot-m3ZIk","name":"name-UNqbW"};
1754
1756
 
1755
1757
  const AppRow = ({
1756
1758
  appName,
@@ -1759,24 +1761,24 @@ const AppRow = ({
1759
1761
  }) => {
1760
1762
  if (appName === "Accounts") {
1761
1763
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("span", {
1762
- className: styles$k["icon-slot"]
1764
+ className: styles$s["icon-slot"]
1763
1765
  }, /*#__PURE__*/React__default.createElement(MonoAppIcon, {
1764
1766
  appName: "Accounts",
1765
1767
  colors: colors,
1766
1768
  size: iconSize
1767
1769
  })), /*#__PURE__*/React__default.createElement("span", {
1768
- className: styles$k.name
1770
+ className: styles$s.name
1769
1771
  }, "Account settings"));
1770
1772
  }
1771
1773
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ColorAppIcon, {
1772
1774
  appName: appName.replace(/[\s-]/, ""),
1773
1775
  size: iconSize
1774
1776
  }), /*#__PURE__*/React__default.createElement("span", {
1775
- className: styles$k.name
1777
+ className: styles$s.name
1776
1778
  }, appName));
1777
1779
  };
1778
1780
 
1779
- var styles$j = {"button":"button-XMbeQ","label":"label-884of","chevron":"chevron-RRg9k"};
1781
+ var styles$r = {"button":"button-XMbeQ","label":"label-884of","chevron":"chevron-RRg9k"};
1780
1782
 
1781
1783
  const AppsButton = /*#__PURE__*/React__default.forwardRef(({
1782
1784
  appName,
@@ -1788,10 +1790,10 @@ const AppsButton = /*#__PURE__*/React__default.forwardRef(({
1788
1790
  ...restProps,
1789
1791
  ref: ref,
1790
1792
  "aria-label": `App switcher: ${appName}`,
1791
- className: styles$j.button,
1793
+ className: styles$r.button,
1792
1794
  kind: "neutral-inline",
1793
1795
  label: /*#__PURE__*/React__default.createElement("span", {
1794
- className: styles$j.label
1796
+ className: styles$r.label
1795
1797
  }, isAccounts ? "Account settings" : appName),
1796
1798
  prefix: isAccounts ? (/*#__PURE__*/React__default.createElement(MonoAppIcon, {
1797
1799
  appName: "Accounts",
@@ -1802,13 +1804,13 @@ const AppsButton = /*#__PURE__*/React__default.forwardRef(({
1802
1804
  size: 22
1803
1805
  })),
1804
1806
  suffix: /*#__PURE__*/React__default.createElement(DisclosureChevronIcon, {
1805
- className: `${styles$j.chevron} symbol`
1807
+ className: `${styles$r.chevron} symbol`
1806
1808
  })
1807
1809
  });
1808
1810
  });
1809
1811
  AppsButton.displayName = "AppsButton";
1810
1812
 
1811
- 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"};
1813
+ 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"};
1812
1814
 
1813
1815
  const AppsMenu = ({
1814
1816
  appName,
@@ -1829,8 +1831,8 @@ const AppsMenu = ({
1829
1831
  }, /*#__PURE__*/React__default.createElement("a", {
1830
1832
  "aria-current": isCurrent ? "page" : undefined,
1831
1833
  "aria-label": name,
1832
- className: classnames(styles$i.link, {
1833
- [styles$i.current]: isCurrent
1834
+ className: classnames(styles$q.link, {
1835
+ [styles$q.current]: isCurrent
1834
1836
  }),
1835
1837
  "data-pendo": `app-switcher--change-app--${name}`,
1836
1838
  "data-turbolinks": false,
@@ -1846,22 +1848,22 @@ const AppsMenu = ({
1846
1848
  colors: colors
1847
1849
  })), /*#__PURE__*/React__default.createElement(PopoverContent, {
1848
1850
  "aria-label": "Switch app",
1849
- className: styles$i["popover-content"],
1851
+ className: styles$q["popover-content"],
1850
1852
  placement: "bottom start"
1851
1853
  }, /*#__PURE__*/React__default.createElement("nav", {
1852
- className: styles$i.nav,
1854
+ className: styles$q.nav,
1853
1855
  "data-pendo": "app-switcher"
1854
1856
  }, /*#__PURE__*/React__default.createElement("ul", {
1855
- className: styles$i.list,
1857
+ className: styles$q.list,
1856
1858
  role: "list"
1857
1859
  }, homeProduct && renderProductLink(homeProduct.name), restProducts.map(({
1858
1860
  name
1859
1861
  }) => renderProductLink(name)), accountsProduct && (/*#__PURE__*/React__default.createElement("li", {
1860
- className: styles$i["accounts-item"]
1862
+ className: styles$q["accounts-item"]
1861
1863
  }, /*#__PURE__*/React__default.createElement("a", {
1862
1864
  "aria-current": appName === accountsProduct.name ? "page" : undefined,
1863
1865
  "aria-label": "Account settings",
1864
- className: classnames(styles$i.link, styles$i["accounts-link"]),
1866
+ className: classnames(styles$q.link, styles$q["accounts-link"]),
1865
1867
  "data-pendo": "app-switcher--change-app--Accounts",
1866
1868
  "data-turbolinks": false,
1867
1869
  href: pcoUrl$1(env)("accounts") + getAppsSwitchProductPath(accountsProduct.name)
@@ -2069,7 +2071,7 @@ function MonoAppName({
2069
2071
  })) : (/*#__PURE__*/React__default.createElement("div", null, "appName not supported"));
2070
2072
  }
2071
2073
 
2072
- var styles$h = {"unbutton":"unbutton-lEbTR"};
2074
+ var styles$p = {"unbutton":"unbutton-lEbTR"};
2073
2075
 
2074
2076
  function Unbutton({
2075
2077
  className,
@@ -2078,7 +2080,7 @@ function Unbutton({
2078
2080
  ...nativeProps
2079
2081
  }) {
2080
2082
  return /*#__PURE__*/React__default.createElement("button", {
2081
- className: classnames(styles$h.unbutton, className),
2083
+ className: classnames(styles$p.unbutton, className),
2082
2084
  style: {
2083
2085
  ...style
2084
2086
  },
@@ -2087,7 +2089,7 @@ function Unbutton({
2087
2089
  });
2088
2090
  }
2089
2091
 
2090
- var styles$g = {"button":"button-wsipc","button-accounts":"button-accounts-zQmBM","chevron":"chevron-obyBF","is-expanded":"is-expanded-PoCQ9"};
2092
+ var styles$o = {"button":"button-wsipc","button-accounts":"button-accounts-zQmBM","chevron":"chevron-obyBF","is-expanded":"is-expanded-PoCQ9"};
2091
2093
 
2092
2094
  const LegacyAppsButton = ({
2093
2095
  appName,
@@ -2102,8 +2104,8 @@ const LegacyAppsButton = ({
2102
2104
  "aria-haspopup": "true",
2103
2105
  "aria-label": `App switcher: ${appName}`,
2104
2106
  onClick: onClick,
2105
- className: classnames(styles$g.button, {
2106
- [styles$g["is-expanded"]]: expanded
2107
+ className: classnames(styles$o.button, {
2108
+ [styles$o["is-expanded"]]: expanded
2107
2109
  }),
2108
2110
  type: "button",
2109
2111
  style: style,
@@ -2112,7 +2114,7 @@ const LegacyAppsButton = ({
2112
2114
  appName: "Accounts",
2113
2115
  colors: colors
2114
2116
  }), /*#__PURE__*/React__default.createElement("div", {
2115
- className: styles$g["button-accounts"]
2117
+ className: styles$o["button-accounts"]
2116
2118
  }, "Account settings"))) : (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(ColorAppIcon, {
2117
2119
  appName: appName.replace(/[\s-]/, "")
2118
2120
  }), /*#__PURE__*/React__default.createElement(MonoAppName, {
@@ -2120,7 +2122,7 @@ const LegacyAppsButton = ({
2120
2122
  key: "mono-app-name",
2121
2123
  size: 24
2122
2124
  }))), /*#__PURE__*/React__default.createElement(DisclosureChevronIcon, {
2123
- className: styles$g.chevron,
2125
+ className: styles$o.chevron,
2124
2126
  key: "disclosure-chevron-icon"
2125
2127
  }));
2126
2128
  };
@@ -2253,7 +2255,7 @@ class Outsider extends React__default.Component {
2253
2255
  }
2254
2256
  }
2255
2257
 
2256
- var styles$f = {"popup-root":"popup-root-SeL5u","popup":"popup-nQXYW","is-visible":"is-visible-3DAUP"};
2258
+ var styles$n = {"popup-root":"popup-root-SeL5u","popup":"popup-nQXYW","is-visible":"is-visible-3DAUP"};
2257
2259
 
2258
2260
  const Popup = ({
2259
2261
  className,
@@ -2261,8 +2263,8 @@ const Popup = ({
2261
2263
  isVisible,
2262
2264
  ...nativeProps
2263
2265
  }) => (/*#__PURE__*/React__default.createElement(C, {
2264
- className: classnames(styles$f.popup, {
2265
- [styles$f["is-visible"]]: isVisible
2266
+ className: classnames(styles$n.popup, {
2267
+ [styles$n["is-visible"]]: isVisible
2266
2268
  }, className),
2267
2269
  ...nativeProps
2268
2270
  }));
@@ -2270,11 +2272,11 @@ const Popup = ({
2270
2272
  const PopupRoot = ({
2271
2273
  ...nativeProps
2272
2274
  }) => (/*#__PURE__*/React__default.createElement("div", {
2273
- className: styles$f["popup-root"],
2275
+ className: styles$n["popup-root"],
2274
2276
  ...nativeProps
2275
2277
  }));
2276
2278
 
2277
- var styles$e = {"popup":"popup-bVhSa"};
2279
+ var styles$m = {"popup":"popup-bVhSa"};
2278
2280
 
2279
2281
  const LegacyAppsMenu = ({
2280
2282
  appName,
@@ -2312,7 +2314,7 @@ const LegacyAppsMenu = ({
2312
2314
  cleanup: !visible,
2313
2315
  component: Outsider,
2314
2316
  onOutsideClick: toggle,
2315
- className: styles$e.popup,
2317
+ className: styles$m.popup,
2316
2318
  isVisible: visible
2317
2319
  }, /*#__PURE__*/React__default.createElement("menu", {
2318
2320
  ref: menuRef,
@@ -3222,34 +3224,117 @@ const useUpdateStore = () => useCallback(updates => {
3222
3224
  });
3223
3225
  }, []);
3224
3226
 
3227
+ const collections = {
3228
+ general,
3229
+ toolbar
3230
+ };
3231
+ const paths = collections;
3232
+ function Icon({
3233
+ name,
3234
+ size = 16,
3235
+ style,
3236
+ theme,
3237
+ title,
3238
+ ...props
3239
+ }) {
3240
+ const [collection, symbol] = name.split(".");
3241
+ return /*#__PURE__*/React__default.createElement("svg", {
3242
+ "aria-hidden": title ? undefined : true,
3243
+ fill: "currentColor",
3244
+ height: size,
3245
+ role: title ? "img" : undefined,
3246
+ style: {
3247
+ color: theme && `var(${theme})`,
3248
+ flexShrink: 0,
3249
+ ...style
3250
+ },
3251
+ viewBox: "0 0 16 16",
3252
+ width: size,
3253
+ ...props
3254
+ }, title && /*#__PURE__*/React__default.createElement("title", null, title), /*#__PURE__*/React__default.createElement("path", {
3255
+ d: paths[collection][symbol]
3256
+ }));
3257
+ }
3258
+
3259
+ const SEARCHABLE_PRODUCTS = [{
3260
+ appName: "Calendar",
3261
+ slug: "calendar"
3262
+ }, {
3263
+ appName: "Check-Ins",
3264
+ slug: "check-ins"
3265
+ }, {
3266
+ appName: "Giving",
3267
+ slug: "giving"
3268
+ }, {
3269
+ appName: "Groups",
3270
+ slug: "groups"
3271
+ }, {
3272
+ appName: "People",
3273
+ slug: "people"
3274
+ }, {
3275
+ appName: "Publishing",
3276
+ slug: "publishing"
3277
+ }, {
3278
+ appName: "Registrations",
3279
+ slug: "registrations"
3280
+ }, {
3281
+ appName: "Services",
3282
+ slug: "services"
3283
+ }];
3284
+ const KEYBOARD_SHORTCUTS = {
3285
+ copyLink: {
3286
+ key: "c",
3287
+ label: "Copy link",
3288
+ modifierKey: true
3289
+ },
3290
+ openInNewTab: {
3291
+ label: "Open in new tab"},
3292
+ openSearch: {
3293
+ key: "k",
3294
+ label: "Open search",
3295
+ modifierKey: true
3296
+ },
3297
+ select: {
3298
+ label: "Select",
3299
+ modifierKey: false,
3300
+ next: "ArrowDown",
3301
+ previous: "ArrowUp"
3302
+ }
3303
+ };
3304
+
3225
3305
  const isMac = () => /Mac|iPhone|iPad|iPod/.test(navigator.platform);
3226
3306
  const hasCommandKey = event => isMac() ? event.metaKey : event.ctrlKey;
3227
- const commandKeyLabel = () => isMac() ? "⌘" : "Ctrl+";
3228
- const isSearchShortcut = event => event.key.toLowerCase() === "k" && !event.altKey && !event.shiftKey && hasCommandKey(event);
3307
+ const matchesShortcut = (shortcut, event) => event.key.toLowerCase() === shortcut.key && !event.altKey && !event.shiftKey && hasCommandKey(event) === shortcut.modifierKey;
3308
+ const isSearchShortcut = event => matchesShortcut(KEYBOARD_SHORTCUTS.openSearch, event);
3229
3309
  // Products opened their own search with `/` before this one replaced it.
3230
3310
  const isLegacySearchShortcut = event => event.key === "/" && !event.altKey && !event.ctrlKey && !event.metaKey && !isTypingIn(event.target);
3231
- const isCopyShortcut = event => event.key.toLowerCase() === "c" && !event.altKey && !event.shiftKey && hasCommandKey(event);
3311
+ const isCopyShortcut = event => matchesShortcut(KEYBOARD_SHORTCUTS.copyLink, event);
3232
3312
  const isTypingIn = target => target instanceof Element && target.closest('input, select, textarea, [contenteditable]:not([contenteditable="false"])') !== null;
3233
3313
  const isTypingKey = event => event.key.length === 1 && event.key !== " " && !event.altKey && !event.ctrlKey && !event.metaKey;
3234
3314
  const verticalStep = key => ({
3235
- ArrowDown: 1,
3236
- ArrowUp: -1
3315
+ [KEYBOARD_SHORTCUTS.select.next]: 1,
3316
+ [KEYBOARD_SHORTCUTS.select.previous]: -1
3237
3317
  })[key];
3238
3318
  const horizontalStep = key => ({
3239
3319
  ArrowLeft: -1,
3240
3320
  ArrowRight: 1
3241
3321
  })[key];
3242
3322
 
3323
+ var styles$l = {"searchButton":"searchButton-fYa5-"};
3324
+
3243
3325
  function SearchButton({
3326
+ mobile = false,
3244
3327
  onClick
3245
3328
  }) {
3246
3329
  return /*#__PURE__*/React__default.createElement("button", {
3247
- "aria-keyshortcuts": `${isMac() ? "Meta+K" : "Control+K"} /`,
3330
+ "aria-keyshortcuts": mobile ? undefined : `${isMac() ? "Meta" : "Control"}+${KEYBOARD_SHORTCUTS.openSearch.key.toUpperCase()} /`,
3248
3331
  "aria-label": "Search",
3332
+ className: styles$l.searchButton,
3249
3333
  onClick: onClick,
3250
3334
  type: "button"
3251
- }, /*#__PURE__*/React__default.createElement(Spyglass, {
3252
- fill: "currentColor"
3335
+ }, /*#__PURE__*/React__default.createElement(Icon, {
3336
+ name: "general.search",
3337
+ size: mobile ? 18 : 14
3253
3338
  }));
3254
3339
  }
3255
3340
 
@@ -3564,16 +3649,16 @@ function useRecentlyVisitableMetadata() {
3564
3649
  const ENTRY_VERSION = 3;
3565
3650
  const MAX_ENTRIES = 50;
3566
3651
  const MAX_TEXT_LENGTH = 200;
3567
- const PRODUCTS = ["accounts", "calendar", "check-ins", "giving", "groups", "home", "login", "people", "publishing", "registrations", "services"];
3652
+ const PRODUCTS$1 = ["accounts", "calendar", "check-ins", "giving", "groups", "home", "login", "people", "publishing", "registrations", "services"];
3568
3653
  // Login has no pages worth returning to.
3569
- const APPS = PRODUCTS.filter(product => product !== "login");
3654
+ const APPS = PRODUCTS$1.filter(product => product !== "login");
3570
3655
  function isId(value) {
3571
3656
  return value !== "" && Array.from(value).every(character => character >= "0" && character <= "9");
3572
3657
  }
3573
3658
  // A PCRL looks like `<product>/v2/<resource_type>/<id>`.
3574
3659
  function isPcrl(value) {
3575
3660
  const segments = value.split("/");
3576
- return segments.length === 4 && PRODUCTS.some(product => product === segments[0]) && isId(segments[3]);
3661
+ return segments.length === 4 && PRODUCTS$1.some(product => product === segments[0]) && isId(segments[3]);
3577
3662
  }
3578
3663
  function isApp(value) {
3579
3664
  return APPS.some(app => app === value);
@@ -3972,7 +4057,13 @@ function hasSelectedText(element) {
3972
4057
  return selectedInField || ((_b = (_a = window.getSelection()) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : "") !== "";
3973
4058
  }
3974
4059
 
3975
- const COPIED_FEEDBACK_MS = 1500;
4060
+ // eslint-disable-next-line sort-keys-fix/sort-keys-fix
4061
+ const COPIED_TIMING = {
4062
+ enter: 240,
4063
+ active: 1000,
4064
+ exit: 240
4065
+ };
4066
+ const COPIED_FEEDBACK_MS = COPIED_TIMING.enter + COPIED_TIMING.active + COPIED_TIMING.exit;
3976
4067
  // `copiedUrl` stays set briefly after a copy so the UI can confirm it.
3977
4068
  function useCopyLink() {
3978
4069
  const [copiedUrl, setCopiedUrl] = React__default.useState(null);
@@ -3996,22 +4087,27 @@ function useCopyLink() {
3996
4087
  // Remembering which list the index belongs to puts the highlight back on the
3997
4088
  // first item whenever a new list replaces it, without an effect to reset it.
3998
4089
  // A list that grows or fills in under the same `list` keeps its highlight.
3999
- function useResultNavigation(items, list) {
4090
+ // Disabled, nothing is highlighted and the keys and pointer leave it alone.
4091
+ function useResultNavigation(items, list, enabled = true) {
4000
4092
  const [highlight, setHighlight] = React__default.useState({
4001
4093
  index: 0,
4002
4094
  list
4003
4095
  });
4004
4096
  const highlightedIndex = highlight.list === list ? highlight.index : 0;
4005
- const highlighted = items[highlightedIndex];
4097
+ const highlighted = enabled ? items[highlightedIndex] : undefined;
4006
4098
  const {
4007
4099
  copiedUrl,
4008
4100
  copy
4009
4101
  } = useCopyLink();
4010
- const highlightIndex = React__default.useCallback(index => setHighlight(current => current.list === list && current.index === index ? current : {
4011
- index,
4012
- list
4013
- }), [list]);
4102
+ const highlightIndex = React__default.useCallback(index => {
4103
+ if (!enabled) return;
4104
+ setHighlight(current => current.list === list && current.index === index ? current : {
4105
+ index,
4106
+ list
4107
+ });
4108
+ }, [enabled, list]);
4014
4109
  const handleKeyDown = event => {
4110
+ if (!enabled) return;
4015
4111
  const step = verticalStep(event.key);
4016
4112
  if (step && items.length > 0) {
4017
4113
  event.preventDefault();
@@ -4035,41 +4131,89 @@ function useResultNavigation(items, list) {
4035
4131
  };
4036
4132
  }
4037
4133
 
4038
- function groupSections(groups = []) {
4134
+ var styles$k = {"modal":"modal-NR3TO","visuallyHidden":"visuallyHidden-C28ju","panel":"panel-HlF7S"};
4135
+
4136
+ const FALLBACK_SLUGS = ["people", "services"];
4137
+ function defaultProduct(products, appName) {
4138
+ var _a;
4139
+ const current = products.find(product => product.appName === appName);
4140
+ const fallback = FALLBACK_SLUGS.map(slug => products.find(product => product.slug === slug)).find(Boolean);
4141
+ return (_a = current !== null && current !== void 0 ? current : fallback) !== null && _a !== void 0 ? _a : products[0];
4142
+ }
4143
+
4144
+ function groupSections(groups = [], timeZone) {
4039
4145
  return groups.map(({
4040
4146
  results,
4041
4147
  type
4042
4148
  }) => ({
4043
4149
  heading: type,
4044
- items: results.map(resultItem),
4150
+ items: results.map(result => resultItem(result, timeZone)),
4045
4151
  key: type
4046
4152
  }));
4047
4153
  }
4048
4154
  function resultItem({
4049
4155
  attributes,
4050
4156
  id
4051
- }) {
4157
+ }, timeZone) {
4052
4158
  return {
4159
+ category: attributes.category,
4160
+ imageUrl: attributes.image_url,
4053
4161
  key: id,
4054
- subtitle: summarize(attributes.metadata),
4162
+ product: attributes.product,
4163
+ subtitle: summarize(attributes, timeZone),
4055
4164
  title: attributes.title,
4056
4165
  url: attributes.url
4057
4166
  };
4058
4167
  }
4059
- function visitItem(visit) {
4168
+ function visitItem(visit, timeZone) {
4060
4169
  return {
4061
4170
  key: entryKey(visit.entry),
4062
- ...describeVisit(visit)
4171
+ ...describeVisit(visit, timeZone)
4063
4172
  };
4064
4173
  }
4065
- function summarize(metadata) {
4066
- return Object.values(metadata !== null && metadata !== void 0 ? metadata : {}).filter(value => typeof value === "string" && value !== "").join(" · ");
4174
+ const joinParts = (...parts) => parts.filter(Boolean).join(" · ");
4175
+ // Matches home-mobile's search subtitles, so a result reads the same in both.
4176
+ function summarize({
4177
+ category,
4178
+ metadata
4179
+ }, timeZone) {
4180
+ const text = key => {
4181
+ const value = metadata === null || metadata === void 0 ? void 0 : metadata[key];
4182
+ return typeof value === "string" ? value : "";
4183
+ };
4184
+ if (category === "profile") {
4185
+ return joinParts(text("phone"), text("email"));
4186
+ } else if (category === "event") {
4187
+ return eventTime(text("starts_at"), text("ends_at"), {
4188
+ recurring: (metadata === null || metadata === void 0 ? void 0 : metadata.recurring) === true,
4189
+ timeZone
4190
+ });
4191
+ } else {
4192
+ return text("details");
4193
+ }
4194
+ }
4195
+ // "Oct 25, 9–10:30am", in the organization's time zone like the rest
4196
+ // of Planning Center.
4197
+ function eventTime(startsAt, endsAt, {
4198
+ recurring,
4199
+ timeZone
4200
+ }) {
4201
+ if (startsAt === "") {
4202
+ return "";
4203
+ } else {
4204
+ const time = datetimeFmt.datetime(startsAt, endsAt || null, {
4205
+ style: "abbreviated",
4206
+ ...(timeZone && {
4207
+ timeZone
4208
+ })
4209
+ });
4210
+ return recurring ? joinParts(time, "Repeating") : time;
4211
+ }
4067
4212
  }
4068
4213
  // Unlike search results, recents come from every product, so each one names
4069
- // its product and type.
4070
- function describeVisit(visit) {
4214
+ // its type. The row's product icon says which product it came from.
4215
+ function describeVisit(visit, timeZone) {
4071
4216
  var _a, _b;
4072
- const subtitle = (...parts) => parts.filter(Boolean).join(" · ");
4073
4217
  if (visit.status === "page") {
4074
4218
  const {
4075
4219
  app,
@@ -4077,65 +4221,312 @@ function describeVisit(visit) {
4077
4221
  title
4078
4222
  } = visit.entry;
4079
4223
  return {
4080
- 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 : ""),
4224
+ category: "generic",
4225
+ imageUrl: null,
4226
+ product: app,
4227
+ 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 : ""),
4081
4228
  title,
4082
4229
  url: visit.url
4083
4230
  };
4084
4231
  } else {
4085
4232
  const {
4086
- metadata,
4233
+ attributes
4234
+ } = visit.result;
4235
+ const {
4236
+ category,
4237
+ image_url,
4087
4238
  product,
4088
4239
  title,
4089
4240
  type
4090
- } = visit.result.attributes;
4241
+ } = attributes;
4242
+ // Profiles and events say what they are with a phone number or a date.
4243
+ const kind = category === "generic" ? capitalize(pluralize.singular(type)) : "";
4091
4244
  return {
4092
- subtitle: subtitle(productName(product), type, summarize(metadata)),
4245
+ category,
4246
+ imageUrl: image_url,
4247
+ product,
4248
+ subtitle: joinParts(kind, summarize(attributes, timeZone)),
4093
4249
  title,
4094
4250
  url: visit.url
4095
4251
  };
4096
4252
  }
4097
4253
  }
4098
- // check-ins → Check-Ins
4099
- function productName(slug) {
4100
- return slug.split("-").map(capitalize).join("-");
4101
- }
4102
4254
  function capitalize(word) {
4103
4255
  return word.charAt(0).toUpperCase() + word.slice(1);
4104
4256
  }
4105
4257
 
4106
- const STORAGE_KEY = "topbar.product_search.last_product";
4107
- function readLastProduct() {
4108
- try {
4109
- return localStorage.getItem(STORAGE_KEY);
4110
- } catch {
4111
- return null;
4112
- }
4113
- }
4114
- function saveLastProduct(slug) {
4115
- try {
4116
- localStorage.setItem(STORAGE_KEY, slug);
4117
- } catch {
4118
- // Storage can be full or blocked; search still works without it.
4258
+ var styles$j = {"container":"container-YDdM1","hint":"hint-017Rd","keycap":"keycap-ENJM2","labels":"labels-GHPqL","copied":"copied-DUFa1"};
4259
+
4260
+ const SYMBOLS = {
4261
+ command: {
4262
+ label: "⌘",
4263
+ 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"]
4264
+ },
4265
+ down: {
4266
+ label: "↓",
4267
+ paths: ["M12 6l0 12", "M16 14l-4 4", "M8 14l4 4"]
4268
+ },
4269
+ return: {
4270
+ label: "↵",
4271
+ paths: ["M18 6v6a3 3 0 0 1 -3 3h-10l4 -4m0 8l-4 -4"]
4272
+ },
4273
+ up: {
4274
+ label: "↑",
4275
+ paths: ["M12 6l0 12", "M16 10l-4 -4", "M8 10l4 -4"]
4119
4276
  }
4277
+ };
4278
+ function Keycap(props) {
4279
+ return /*#__PURE__*/React__default.createElement("kbd", {
4280
+ className: styles$j.keycap
4281
+ }, "symbol" in props ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("svg", {
4282
+ "aria-hidden": true,
4283
+ fill: "none",
4284
+ stroke: "currentColor",
4285
+ strokeLinecap: "round",
4286
+ strokeLinejoin: "round",
4287
+ viewBox: "0 0 24 24"
4288
+ }, SYMBOLS[props.symbol].paths.map(d => (/*#__PURE__*/React__default.createElement("path", {
4289
+ d: d,
4290
+ key: d
4291
+ })))), /*#__PURE__*/React__default.createElement("span", {
4292
+ className: styles$k.visuallyHidden
4293
+ }, SYMBOLS[props.symbol].label))) : props.label);
4294
+ }
4295
+ function CommandKey() {
4296
+ return isMac() ? /*#__PURE__*/React__default.createElement(Keycap, {
4297
+ symbol: "command"
4298
+ }) : /*#__PURE__*/React__default.createElement(Keycap, {
4299
+ label: "Ctrl"
4300
+ });
4120
4301
  }
4121
- function initialProduct(products) {
4122
- var _a, _b, _c;
4123
- const lastProduct = readLastProduct();
4124
- const bySlug = slug => products.find(product => product.slug === slug);
4125
- 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];
4302
+ function EnterKey() {
4303
+ return isMac() ? /*#__PURE__*/React__default.createElement(Keycap, {
4304
+ symbol: "return"
4305
+ }) : /*#__PURE__*/React__default.createElement(Keycap, {
4306
+ label: "Enter"
4307
+ });
4126
4308
  }
4127
-
4309
+ const {
4310
+ copyLink,
4311
+ openInNewTab,
4312
+ openSearch,
4313
+ select
4314
+ } = KEYBOARD_SHORTCUTS;
4128
4315
  function KeyboardHints({
4129
4316
  copied
4130
4317
  }) {
4131
- const command = commandKeyLabel();
4132
- return /*#__PURE__*/React__default.createElement("p", null, "\u2191\u2193 Select \u00B7 \u21B5 Open \u00B7 ", command, "\u21B5 Open in new tab \u00B7 ", command, "C", " ", /*#__PURE__*/React__default.createElement("span", {
4318
+ return /*#__PURE__*/React__default.createElement("ul", {
4319
+ "aria-label": "Keyboard shortcuts",
4320
+ className: styles$j.container
4321
+ }, /*#__PURE__*/React__default.createElement("li", {
4322
+ className: styles$j.hint
4323
+ }, /*#__PURE__*/React__default.createElement(Flex, {
4324
+ gap: 0.5
4325
+ }, select.modifierKey, /*#__PURE__*/React__default.createElement(Keycap, {
4326
+ symbol: "up"
4327
+ }), /*#__PURE__*/React__default.createElement(Keycap, {
4328
+ symbol: "down"
4329
+ })), select.label), /*#__PURE__*/React__default.createElement("li", {
4330
+ className: styles$j.hint
4331
+ }, /*#__PURE__*/React__default.createElement(Flex, {
4332
+ gap: 0.5
4333
+ }, /*#__PURE__*/React__default.createElement(CommandKey, null), /*#__PURE__*/React__default.createElement(EnterKey, null)), openInNewTab.label), /*#__PURE__*/React__default.createElement("li", {
4334
+ className: classnames(styles$j.hint, copied && styles$j.copied),
4335
+ style: {
4336
+ "--copied-active": `${COPIED_TIMING.active}ms`,
4337
+ "--copied-enter": `${COPIED_TIMING.enter}ms`,
4338
+ "--copied-exit": `${COPIED_TIMING.exit}ms`
4339
+ }
4340
+ }, /*#__PURE__*/React__default.createElement(Flex, {
4341
+ gap: 0.5
4342
+ }, /*#__PURE__*/React__default.createElement(CommandKey, null), /*#__PURE__*/React__default.createElement(Keycap, {
4343
+ label: copyLink.key.toUpperCase()
4344
+ })), /*#__PURE__*/React__default.createElement("span", {
4345
+ className: styles$j.labels
4346
+ }, /*#__PURE__*/React__default.createElement("span", {
4347
+ "aria-hidden": copied
4348
+ }, copyLink.label), /*#__PURE__*/React__default.createElement("span", {
4133
4349
  role: "status"
4134
- }, copied ? "Copied!" : "Copy link"), " \u00B7 ", command, "K Open search");
4350
+ }, copied && "Copied!"))), /*#__PURE__*/React__default.createElement("li", {
4351
+ className: styles$j.hint
4352
+ }, /*#__PURE__*/React__default.createElement(Flex, {
4353
+ gap: 0.5
4354
+ }, /*#__PURE__*/React__default.createElement(CommandKey, null), /*#__PURE__*/React__default.createElement(Keycap, {
4355
+ label: openSearch.key.toUpperCase()
4356
+ })), openSearch.label));
4357
+ }
4358
+
4359
+ var styles$i = {"icon":"icon-XKLvN","squircle":"squircle-JCHr6"};
4360
+
4361
+ const PRODUCTS = {
4362
+ accounts: {
4363
+ gradient: "--t-fill-color-product-accounts-gradient-brand",
4364
+ path: logomarks.accounts
4365
+ },
4366
+ api: {
4367
+ gradient: "--t-fill-color-product-api-gradient-brand",
4368
+ path: logomarks.api
4369
+ },
4370
+ calendar: {
4371
+ gradient: "--t-fill-color-product-calendar-gradient-brand",
4372
+ path: logomarks.calendar
4373
+ },
4374
+ "check-ins": {
4375
+ gradient: "--t-fill-color-product-checkins-gradient-brand",
4376
+ path: logomarks.checkIns
4377
+ },
4378
+ "church-center": {
4379
+ gradient: "--t-fill-color-product-cc-gradient-brand",
4380
+ path: logomarks.churchCenter
4381
+ },
4382
+ giving: {
4383
+ gradient: "--t-fill-color-product-giving-gradient-brand",
4384
+ path: logomarks.giving
4385
+ },
4386
+ groups: {
4387
+ gradient: "--t-fill-color-product-groups-gradient-brand",
4388
+ path: logomarks.groups
4389
+ },
4390
+ home: {
4391
+ gradient: "--t-fill-color-product-home-gradient-brand",
4392
+ path: logomarks.home
4393
+ },
4394
+ "music-stand": {
4395
+ gradient: "--t-fill-color-product-musicstand-gradient-brand",
4396
+ path: logomarks.musicStand
4397
+ },
4398
+ people: {
4399
+ gradient: "--t-fill-color-product-people-gradient-brand",
4400
+ path: logomarks.people
4401
+ },
4402
+ publishing: {
4403
+ gradient: "--t-fill-color-product-publishing-gradient-brand",
4404
+ path: logomarks.publishing
4405
+ },
4406
+ registrations: {
4407
+ gradient: "--t-fill-color-product-registrations-gradient-brand",
4408
+ path: logomarks.registrations
4409
+ },
4410
+ services: {
4411
+ gradient: "--t-fill-color-product-services-gradient-brand",
4412
+ path: logomarks.services
4413
+ }
4414
+ };
4415
+ const isProductIconSlug = slug => Object.prototype.hasOwnProperty.call(PRODUCTS, slug);
4416
+ 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>`)}")`;
4417
+ function ProductIcon({
4418
+ size = 16,
4419
+ slug
4420
+ }) {
4421
+ const {
4422
+ gradient,
4423
+ path
4424
+ } = PRODUCTS[slug];
4425
+ const mask = maskFor(path);
4426
+ return /*#__PURE__*/React__default.createElement("span", {
4427
+ "aria-hidden": true,
4428
+ className: styles$i.icon,
4429
+ style: {
4430
+ height: size,
4431
+ width: size
4432
+ }
4433
+ }, /*#__PURE__*/React__default.createElement("span", {
4434
+ className: styles$i.squircle,
4435
+ style: {
4436
+ WebkitMaskImage: mask,
4437
+ background: `var(${gradient})`,
4438
+ maskImage: mask
4439
+ }
4440
+ }));
4441
+ }
4442
+
4443
+ var styles$h = {"picker":"picker-iuzzj","option":"option--7LXg"};
4444
+
4445
+ // Phones have no room for a tab per product, so they pick from a dropdown.
4446
+ // Complex mode renders each option's logomark, in the list and the trigger.
4447
+ function ProductSelect({
4448
+ children,
4449
+ onSelect,
4450
+ products,
4451
+ selected
4452
+ }) {
4453
+ const options = products.map(({
4454
+ appName,
4455
+ slug
4456
+ }) => ({
4457
+ label: (/*#__PURE__*/React__default.createElement("span", {
4458
+ className: styles$h.option
4459
+ }, /*#__PURE__*/React__default.createElement(ProductIcon, {
4460
+ slug: slug
4461
+ }), appName)),
4462
+ textValue: appName,
4463
+ value: slug
4464
+ }));
4465
+ return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
4466
+ className: styles$h.picker
4467
+ }, /*#__PURE__*/React__default.createElement(Select, {
4468
+ "aria-label": "Product",
4469
+ complex: true,
4470
+ onChange: event => onSelect(event.target.value),
4471
+ options: options,
4472
+ value: selected.slug
4473
+ })), /*#__PURE__*/React__default.createElement("div", {
4474
+ className: styles$k.panel
4475
+ }, children));
4135
4476
  }
4136
4477
 
4137
- var styles$d = {"tab":"tab-dz8ki"};
4478
+ // Browsers match :focus-visible on every focused text field, keyboard or not,
4479
+ // since typing follows either way. So this remembers what last moved focus,
4480
+ // shared by every field and listened for once, in the capture phase so it's
4481
+ // known before focus moves.
4482
+ let lastInteraction = "pointer";
4483
+ let listening = false;
4484
+ function listen() {
4485
+ if (listening) return;
4486
+ listening = true;
4487
+ document.addEventListener("keydown", event => {
4488
+ // Shortcuts like ⌘C don't move focus.
4489
+ if (!event.metaKey && !event.ctrlKey && !event.altKey) {
4490
+ lastInteraction = "keyboard";
4491
+ }
4492
+ }, true);
4493
+ document.addEventListener("pointerdown", () => {
4494
+ lastInteraction = "pointer";
4495
+ }, true);
4496
+ }
4497
+ /**
4498
+ * Whether a field was focused from the keyboard, as by Tab, rather than by a
4499
+ * click or tap. Spread `focusProps` onto the field, and style it by
4500
+ * `data-focus-visible`.
4501
+ */
4502
+ function useKeyboardFocus({
4503
+ onBlur,
4504
+ onFocus
4505
+ } = {}) {
4506
+ const [focusVisible, setFocusVisible] = React__default.useState(false);
4507
+ React__default.useEffect(listen, []);
4508
+ return {
4509
+ focusProps: {
4510
+ "data-focus-visible": focusVisible || undefined,
4511
+ onBlur: event => {
4512
+ setFocusVisible(false);
4513
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
4514
+ },
4515
+ onFocus: event => {
4516
+ const keyboard = lastInteraction === "keyboard";
4517
+ setFocusVisible(keyboard);
4518
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(event, keyboard);
4519
+ }
4520
+ },
4521
+ focusVisible
4522
+ };
4523
+ }
4524
+
4525
+ var styles$g = {"tablist":"tablist-7ASvc","tab":"tab-dz8ki"};
4138
4526
 
4527
+ // With this many tabs or more, only the selected tab shows its name, so they
4528
+ // all fit. Fewer always fit with their names.
4529
+ const ICON_ONLY_TAB_COUNT = 5;
4139
4530
  function ProductTabs({
4140
4531
  children,
4141
4532
  onKeyDown,
@@ -4146,6 +4537,7 @@ function ProductTabs({
4146
4537
  const id = useInstanceId("product-tabs");
4147
4538
  const tabId = slug => `${id}-tab-${slug}`;
4148
4539
  const tabRefs = React__default.useRef(new Map());
4540
+ const showAllNames = products.length < ICON_ONLY_TAB_COUNT;
4149
4541
  const handleKeyDown = event => {
4150
4542
  var _a;
4151
4543
  const offset = horizontalStep(event.key);
@@ -4160,13 +4552,14 @@ function ProductTabs({
4160
4552
  }
4161
4553
  };
4162
4554
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
4163
- "aria-label": "Product",
4555
+ "aria-label": "Search in",
4556
+ className: styles$g.tablist,
4164
4557
  onKeyDown: handleKeyDown,
4165
4558
  role: "tablist"
4166
- }, products.map(product => (/*#__PURE__*/React__default.createElement("button", {
4559
+ }, products.map(product => (/*#__PURE__*/React__default.createElement(Tab, {
4167
4560
  "aria-controls": `${id}-panel`,
4561
+ "aria-describedby": `${tabId(product.slug)}-description`,
4168
4562
  "aria-selected": product === selected,
4169
- className: styles$d.tab,
4170
4563
  id: tabId(product.slug),
4171
4564
  key: product.slug,
4172
4565
  onClick: () => onSelect(product.slug),
@@ -4177,15 +4570,397 @@ function ProductTabs({
4177
4570
  tabRefs.current.delete(product.slug);
4178
4571
  }
4179
4572
  },
4180
- role: "tab",
4181
- tabIndex: product === selected ? 0 : -1,
4182
- type: "button"
4183
- }, product.appName)))), /*#__PURE__*/React__default.createElement("div", {
4573
+ tabIndex: product === selected ? 0 : -1
4574
+ }, /*#__PURE__*/React__default.createElement(ProductIcon, {
4575
+ slug: product.slug
4576
+ }), showAllNames || product === selected ? product.appName : (/*#__PURE__*/React__default.createElement("span", {
4577
+ className: styles$k.visuallyHidden
4578
+ }, product.appName)))))), /*#__PURE__*/React__default.createElement("div", {
4579
+ className: styles$k.visuallyHidden
4580
+ }, products.map(product => (/*#__PURE__*/React__default.createElement("span", {
4581
+ id: `${tabId(product.slug)}-description`,
4582
+ key: product.slug
4583
+ }, "Planning Center ", product.appName)))), /*#__PURE__*/React__default.createElement("div", {
4184
4584
  "aria-labelledby": tabId(selected.slug),
4585
+ className: styles$k.panel,
4185
4586
  id: `${id}-panel`,
4186
4587
  role: "tabpanel"
4187
4588
  }, children));
4188
4589
  }
4590
+ // The modal's focus scope moves focus here by script when Tab is pressed, and
4591
+ // Safari doesn't match :focus-visible on focus moved by script. So the tab
4592
+ // remembers whether the keyboard brought focus, and the ring keys off that.
4593
+ const Tab = /*#__PURE__*/React__default.forwardRef(function Tab(props, ref) {
4594
+ const {
4595
+ focusProps
4596
+ } = useKeyboardFocus();
4597
+ return /*#__PURE__*/React__default.createElement("button", {
4598
+ className: styles$g.tab,
4599
+ ref: ref,
4600
+ role: "tab",
4601
+ type: "button",
4602
+ ...props,
4603
+ ...focusProps
4604
+ });
4605
+ });
4606
+
4607
+ function BlankStateRecentlyVisited(props) {
4608
+ const id = useInstanceId("blank-state-initial");
4609
+ return /*#__PURE__*/React__default.createElement("svg", {
4610
+ viewBox: "0 0 197 174",
4611
+ fill: "none",
4612
+ "aria-hidden": "true",
4613
+ focusable: "false",
4614
+ ...props
4615
+ }, /*#__PURE__*/React__default.createElement("path", {
4616
+ 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",
4617
+ fill: "currentColor"
4618
+ }), /*#__PURE__*/React__default.createElement("g", {
4619
+ clipPath: `url(#${id}-a)`
4620
+ }, /*#__PURE__*/React__default.createElement("path", {
4621
+ 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",
4622
+ fill: "#333"
4623
+ }), /*#__PURE__*/React__default.createElement("path", {
4624
+ 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",
4625
+ fill: "#333"
4626
+ }), /*#__PURE__*/React__default.createElement("path", {
4627
+ 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",
4628
+ fill: "#4D4D4D"
4629
+ }), /*#__PURE__*/React__default.createElement("path", {
4630
+ 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",
4631
+ fill: "#F2F2F2"
4632
+ }), /*#__PURE__*/React__default.createElement("path", {
4633
+ 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",
4634
+ fill: "#E6E6E6"
4635
+ }), /*#__PURE__*/React__default.createElement("path", {
4636
+ 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",
4637
+ fill: "#333"
4638
+ }), /*#__PURE__*/React__default.createElement("path", {
4639
+ 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",
4640
+ fill: "#333"
4641
+ }), /*#__PURE__*/React__default.createElement("path", {
4642
+ 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",
4643
+ fill: "#4D4D4D"
4644
+ }), /*#__PURE__*/React__default.createElement("path", {
4645
+ 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",
4646
+ fill: "#F2F2F2"
4647
+ }), /*#__PURE__*/React__default.createElement("path", {
4648
+ 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",
4649
+ fill: "#E6E6E6"
4650
+ }), /*#__PURE__*/React__default.createElement("path", {
4651
+ 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",
4652
+ fill: "#4D4D4D"
4653
+ }), /*#__PURE__*/React__default.createElement("path", {
4654
+ 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",
4655
+ fill: "gray"
4656
+ }), /*#__PURE__*/React__default.createElement("path", {
4657
+ 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",
4658
+ fill: "#333"
4659
+ }), /*#__PURE__*/React__default.createElement("path", {
4660
+ 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",
4661
+ fill: "#F2F2F2"
4662
+ }), /*#__PURE__*/React__default.createElement("path", {
4663
+ 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",
4664
+ fill: "#4D4D4D"
4665
+ }), /*#__PURE__*/React__default.createElement("path", {
4666
+ 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",
4667
+ fill: "gray"
4668
+ }), /*#__PURE__*/React__default.createElement("path", {
4669
+ 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",
4670
+ fill: "#333"
4671
+ }), /*#__PURE__*/React__default.createElement("path", {
4672
+ 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",
4673
+ fill: "#F2F2F2"
4674
+ }), /*#__PURE__*/React__default.createElement("path", {
4675
+ 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",
4676
+ fill: "gray"
4677
+ }), /*#__PURE__*/React__default.createElement("path", {
4678
+ 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",
4679
+ fill: "#333"
4680
+ }), /*#__PURE__*/React__default.createElement("path", {
4681
+ 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",
4682
+ fill: "#333"
4683
+ }), /*#__PURE__*/React__default.createElement("path", {
4684
+ 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",
4685
+ fill: "#4D4D4D"
4686
+ }), /*#__PURE__*/React__default.createElement("path", {
4687
+ 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",
4688
+ fill: "gray"
4689
+ }), /*#__PURE__*/React__default.createElement("path", {
4690
+ 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",
4691
+ fill: "#F2F2F2"
4692
+ }), /*#__PURE__*/React__default.createElement("path", {
4693
+ 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",
4694
+ fill: "#E6E6E6"
4695
+ }), /*#__PURE__*/React__default.createElement("path", {
4696
+ 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",
4697
+ fill: "#F2F2F2"
4698
+ }), /*#__PURE__*/React__default.createElement("path", {
4699
+ 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",
4700
+ fill: "#E6E6E6"
4701
+ }), /*#__PURE__*/React__default.createElement("path", {
4702
+ 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",
4703
+ fill: "#3690EA"
4704
+ }), /*#__PURE__*/React__default.createElement("path", {
4705
+ 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",
4706
+ fill: "#4D4D4D"
4707
+ }), /*#__PURE__*/React__default.createElement("path", {
4708
+ 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",
4709
+ fill: "gray"
4710
+ }), /*#__PURE__*/React__default.createElement("path", {
4711
+ 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",
4712
+ fill: "#333"
4713
+ }), /*#__PURE__*/React__default.createElement("path", {
4714
+ 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",
4715
+ fill: "#F2F2F2"
4716
+ }), /*#__PURE__*/React__default.createElement("path", {
4717
+ 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",
4718
+ fill: "#4D4D4D"
4719
+ }), /*#__PURE__*/React__default.createElement("path", {
4720
+ 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",
4721
+ fill: "gray"
4722
+ }), /*#__PURE__*/React__default.createElement("path", {
4723
+ 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",
4724
+ fill: "#333"
4725
+ }), /*#__PURE__*/React__default.createElement("path", {
4726
+ 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",
4727
+ fill: "#F2F2F2"
4728
+ }), /*#__PURE__*/React__default.createElement("path", {
4729
+ 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",
4730
+ fill: "gray"
4731
+ }), /*#__PURE__*/React__default.createElement("path", {
4732
+ 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",
4733
+ fill: "#333"
4734
+ }), /*#__PURE__*/React__default.createElement("path", {
4735
+ 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",
4736
+ fill: "#333"
4737
+ }), /*#__PURE__*/React__default.createElement("path", {
4738
+ 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",
4739
+ fill: "#4D4D4D"
4740
+ }), /*#__PURE__*/React__default.createElement("path", {
4741
+ 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",
4742
+ fill: "gray"
4743
+ }), /*#__PURE__*/React__default.createElement("path", {
4744
+ 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",
4745
+ fill: "#F2F2F2"
4746
+ }), /*#__PURE__*/React__default.createElement("path", {
4747
+ 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",
4748
+ fill: "#E6E6E6"
4749
+ }), /*#__PURE__*/React__default.createElement("path", {
4750
+ 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",
4751
+ fill: "#F2F2F2"
4752
+ }), /*#__PURE__*/React__default.createElement("path", {
4753
+ 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",
4754
+ fill: "#E6E6E6"
4755
+ }), /*#__PURE__*/React__default.createElement("path", {
4756
+ 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",
4757
+ fill: "#999"
4758
+ }), /*#__PURE__*/React__default.createElement("path", {
4759
+ 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",
4760
+ fill: "#3690EA"
4761
+ }), /*#__PURE__*/React__default.createElement("path", {
4762
+ 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",
4763
+ fill: "#B3B3B3"
4764
+ }), /*#__PURE__*/React__default.createElement("path", {
4765
+ 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",
4766
+ fill: "#3690EA"
4767
+ }), /*#__PURE__*/React__default.createElement("path", {
4768
+ 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",
4769
+ fill: "#F2F2F2"
4770
+ }), /*#__PURE__*/React__default.createElement("path", {
4771
+ 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",
4772
+ fill: "#E6E6E6"
4773
+ }), /*#__PURE__*/React__default.createElement("path", {
4774
+ d: "M100.863 15.992h-5.81v1.293h5.81v-1.293Z",
4775
+ fill: "#F2F2F2"
4776
+ }), /*#__PURE__*/React__default.createElement("path", {
4777
+ 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",
4778
+ fill: "#1A1A1A"
4779
+ }), /*#__PURE__*/React__default.createElement("path", {
4780
+ 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",
4781
+ fill: "#fff"
4782
+ }), /*#__PURE__*/React__default.createElement("path", {
4783
+ 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",
4784
+ fill: "#1A1A1A"
4785
+ }), /*#__PURE__*/React__default.createElement("path", {
4786
+ 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",
4787
+ fill: "#fff"
4788
+ }), /*#__PURE__*/React__default.createElement("path", {
4789
+ 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",
4790
+ fill: "#999"
4791
+ }), /*#__PURE__*/React__default.createElement("path", {
4792
+ 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",
4793
+ fill: "#3690EA"
4794
+ }), /*#__PURE__*/React__default.createElement("path", {
4795
+ 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",
4796
+ fill: "#F2F2F2"
4797
+ }), /*#__PURE__*/React__default.createElement("path", {
4798
+ 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",
4799
+ fill: "#B3B3B3"
4800
+ }), /*#__PURE__*/React__default.createElement("path", {
4801
+ 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",
4802
+ fill: "#3690EA"
4803
+ }), /*#__PURE__*/React__default.createElement("path", {
4804
+ 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",
4805
+ fill: "#F2F2F2"
4806
+ }), /*#__PURE__*/React__default.createElement("path", {
4807
+ 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",
4808
+ fill: "#E6E6E6"
4809
+ }), /*#__PURE__*/React__default.createElement("path", {
4810
+ 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",
4811
+ fill: "#1A1A1A"
4812
+ }), /*#__PURE__*/React__default.createElement("path", {
4813
+ 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",
4814
+ fill: "#fff"
4815
+ }), /*#__PURE__*/React__default.createElement("path", {
4816
+ 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",
4817
+ fill: "#1A1A1A"
4818
+ }), /*#__PURE__*/React__default.createElement("path", {
4819
+ 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",
4820
+ fill: "#fff"
4821
+ }), /*#__PURE__*/React__default.createElement("path", {
4822
+ 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",
4823
+ fill: "#999"
4824
+ }), /*#__PURE__*/React__default.createElement("path", {
4825
+ 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",
4826
+ fill: "#4BAAF7"
4827
+ }), /*#__PURE__*/React__default.createElement("g", {
4828
+ clipPath: `url(#${id}-b)`
4829
+ }, /*#__PURE__*/React__default.createElement("path", {
4830
+ 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",
4831
+ fill: "#6D4932"
4832
+ }), /*#__PURE__*/React__default.createElement("path", {
4833
+ 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",
4834
+ fill: "#A87B5D"
4835
+ }), /*#__PURE__*/React__default.createElement("path", {
4836
+ 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",
4837
+ fill: "#916A50"
4838
+ }), /*#__PURE__*/React__default.createElement("path", {
4839
+ opacity: ".3",
4840
+ 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",
4841
+ fill: "#D4B097"
4842
+ })), /*#__PURE__*/React__default.createElement("g", {
4843
+ clipPath: `url(#${id}-c)`
4844
+ }, /*#__PURE__*/React__default.createElement("path", {
4845
+ 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",
4846
+ strokeWidth: "6",
4847
+ strokeMiterlimit: "10",
4848
+ stroke: `url(#${id}-d)`
4849
+ }), /*#__PURE__*/React__default.createElement("path", {
4850
+ 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",
4851
+ fill: `url(#${id}-e)`
4852
+ })), /*#__PURE__*/React__default.createElement("path", {
4853
+ 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",
4854
+ fill: `url(#${id}-f)`
4855
+ }), /*#__PURE__*/React__default.createElement("path", {
4856
+ d: "M34.1 108.015v-3.363h57.697v3.363H34.1Z",
4857
+ fill: `url(#${id}-g)`
4858
+ }), /*#__PURE__*/React__default.createElement("path", {
4859
+ d: "M79.673 108.015v-3.363h12.124v3.363H79.673Z",
4860
+ fill: `url(#${id}-h)`
4861
+ })), /*#__PURE__*/React__default.createElement("defs", null, /*#__PURE__*/React__default.createElement("linearGradient", {
4862
+ id: `${id}-d`,
4863
+ x1: "150.254",
4864
+ y1: "100.449",
4865
+ x2: "158.273",
4866
+ y2: "100.449",
4867
+ gradientUnits: "userSpaceOnUse"
4868
+ }, /*#__PURE__*/React__default.createElement("stop", {
4869
+ stopColor: "#FEFEFE"
4870
+ }), /*#__PURE__*/React__default.createElement("stop", {
4871
+ offset: "1",
4872
+ stopColor: "#fff"
4873
+ })), /*#__PURE__*/React__default.createElement("linearGradient", {
4874
+ id: `${id}-e`,
4875
+ x1: "132.629",
4876
+ y1: "100.449",
4877
+ x2: "155.32",
4878
+ y2: "100.449",
4879
+ gradientUnits: "userSpaceOnUse"
4880
+ }, /*#__PURE__*/React__default.createElement("stop", {
4881
+ stopColor: "#FEFEFE"
4882
+ }), /*#__PURE__*/React__default.createElement("stop", {
4883
+ offset: "1",
4884
+ stopColor: "#F3F3F3"
4885
+ })), /*#__PURE__*/React__default.createElement("linearGradient", {
4886
+ id: `${id}-f`,
4887
+ x1: "56.925",
4888
+ y1: "45.291",
4889
+ x2: "56.925",
4890
+ y2: "93.076",
4891
+ gradientUnits: "userSpaceOnUse"
4892
+ }, /*#__PURE__*/React__default.createElement("stop", {
4893
+ stopColor: "#FEFEFE"
4894
+ }), /*#__PURE__*/React__default.createElement("stop", {
4895
+ offset: "1",
4896
+ stopColor: "#D1D6E7"
4897
+ })), /*#__PURE__*/React__default.createElement("linearGradient", {
4898
+ id: `${id}-g`,
4899
+ x1: "62.684",
4900
+ y1: "108.015",
4901
+ x2: "62.684",
4902
+ y2: "104.85",
4903
+ gradientUnits: "userSpaceOnUse"
4904
+ }, /*#__PURE__*/React__default.createElement("stop", {
4905
+ stopColor: "#D2D6E8"
4906
+ }), /*#__PURE__*/React__default.createElement("stop", {
4907
+ offset: ".726",
4908
+ stopColor: "#D1D6E7"
4909
+ })), /*#__PURE__*/React__default.createElement("linearGradient", {
4910
+ id: `${id}-h`,
4911
+ x1: "85.68",
4912
+ y1: "108.015",
4913
+ x2: "85.68",
4914
+ y2: "104.85",
4915
+ gradientUnits: "userSpaceOnUse"
4916
+ }, /*#__PURE__*/React__default.createElement("stop", {
4917
+ stopColor: "#D8DDF1"
4918
+ }), /*#__PURE__*/React__default.createElement("stop", {
4919
+ offset: ".726",
4920
+ stopColor: "#E2E6F6"
4921
+ })), /*#__PURE__*/React__default.createElement("clipPath", {
4922
+ id: `${id}-a`
4923
+ }, /*#__PURE__*/React__default.createElement("path", {
4924
+ fill: "#fff",
4925
+ transform: "translate(12.006)",
4926
+ d: "M0 0h172v174H0z"
4927
+ })), /*#__PURE__*/React__default.createElement("clipPath", {
4928
+ id: `${id}-b`
4929
+ }, /*#__PURE__*/React__default.createElement("path", {
4930
+ fill: "#fff",
4931
+ transform: "translate(29.084 105.073)",
4932
+ d: "M0 0h138.387v68.927H0z"
4933
+ })), /*#__PURE__*/React__default.createElement("clipPath", {
4934
+ id: `${id}-c`
4935
+ }, /*#__PURE__*/React__default.createElement("path", {
4936
+ fill: "#fff",
4937
+ transform: "translate(135.278 93.304)",
4938
+ d: "M0 0h22.995v14.29H0z"
4939
+ }))));
4940
+ }
4941
+
4942
+ var styles$f = {"blank_state":"blank_state-wMOWN","image":"image-uy0Fd"};
4943
+
4944
+ function BlankState$1({
4945
+ image,
4946
+ role,
4947
+ subtitle,
4948
+ title
4949
+ }) {
4950
+ return /*#__PURE__*/React__default.createElement(Flex, {
4951
+ role: role,
4952
+ className: styles$f.blank_state,
4953
+ direction: "column",
4954
+ align: "center",
4955
+ gap: 3
4956
+ }, /*#__PURE__*/React__default.createElement(Flex, {
4957
+ className: styles$f.image
4958
+ }, image), /*#__PURE__*/React__default.createElement(Flex, {
4959
+ direction: "column",
4960
+ align: "center",
4961
+ gap: 1
4962
+ }, /*#__PURE__*/React__default.createElement("h2", null, title), /*#__PURE__*/React__default.createElement("p", null, subtitle)));
4963
+ }
4189
4964
 
4190
4965
  function EndOfResultsObserver({
4191
4966
  onVisible
@@ -4205,39 +4980,98 @@ function EndOfResultsObserver({
4205
4980
 
4206
4981
  const resultId = (listboxId, index) => `${listboxId}-result-${index}`;
4207
4982
 
4208
- var styles$c = {"result":"result-Thq2C"};
4983
+ var styles$e = {"result":"result-Thq2C","title":"title-KYUEn","subtitle":"subtitle-R2haq","image":"image-KVDor","avatar":"avatar-6Gh62","photo":"photo-FZR3Q","badge":"badge-trUKt"};
4209
4984
 
4210
4985
  function SearchResult({
4986
+ category,
4987
+ describedBy,
4211
4988
  highlighted,
4212
4989
  id,
4990
+ imageUrl,
4213
4991
  onHighlight,
4992
+ product,
4214
4993
  subtitle,
4215
4994
  title,
4216
4995
  url
4217
4996
  }) {
4218
4997
  const ref = React__default.useRef(null);
4998
+ // A hovered result is already under the pointer, and scrolling it clear of
4999
+ // the panel's scroll padding would slide the list out from under the mouse.
5000
+ const highlightedByPointer = React__default.useRef(false);
4219
5001
  React__default.useEffect(() => {
4220
5002
  var _a;
4221
- if (highlighted) (_a = ref.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({
4222
- block: "nearest"
4223
- });
5003
+ if (!highlighted) return;
5004
+ if (highlightedByPointer.current) {
5005
+ highlightedByPointer.current = false;
5006
+ } else {
5007
+ (_a = ref.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({
5008
+ block: "nearest"
5009
+ });
5010
+ }
4224
5011
  }, [highlighted]);
5012
+ const highlightFromPointer = () => {
5013
+ if (highlighted) return;
5014
+ highlightedByPointer.current = true;
5015
+ onHighlight();
5016
+ };
4225
5017
  // Focus stays in the search input, which points at the highlighted result
4226
5018
  // with aria-activedescendant, so results are kept out of the tab order.
4227
5019
  // Mouse move rather than enter: arrowing scrolls results under a resting
4228
5020
  // pointer, and that shouldn't steal the highlight.
4229
- return /*#__PURE__*/React__default.createElement("a", {
4230
- "aria-selected": highlighted,
4231
- className: styles$c.result,
4232
- href: url,
4233
- id: id,
4234
- onMouseMove: onHighlight,
4235
- ref: ref,
4236
- role: "option",
4237
- tabIndex: -1
4238
- }, /*#__PURE__*/React__default.createElement("div", null, title), /*#__PURE__*/React__default.createElement("div", null, subtitle));
5021
+ return (
5022
+ /*#__PURE__*/
5023
+ // Named by the title alone, so screen readers say "Ada Lovelace" rather
5024
+ // than the whole row. The section and subtitle are read after a pause.
5025
+ React__default.createElement("a", {
5026
+ "aria-describedby": [describedBy, subtitle && `${id}-subtitle`].filter(Boolean).join(" ") || undefined,
5027
+ "aria-labelledby": title ? `${id}-title` : undefined,
5028
+ "aria-selected": highlighted,
5029
+ className: styles$e.result,
5030
+ href: url,
5031
+ id: id,
5032
+ onMouseMove: highlightFromPointer,
5033
+ ref: ref,
5034
+ role: "option",
5035
+ tabIndex: -1
5036
+ }, /*#__PURE__*/React__default.createElement(ResultImage, {
5037
+ category: category,
5038
+ imageUrl: imageUrl,
5039
+ product: product
5040
+ }), /*#__PURE__*/React__default.createElement("span", {
5041
+ className: styles$e.title,
5042
+ id: `${id}-title`
5043
+ }, title), /*#__PURE__*/React__default.createElement("span", {
5044
+ className: styles$e.subtitle,
5045
+ id: `${id}-subtitle`
5046
+ }, subtitle))
5047
+ );
5048
+ }
5049
+ // A person's photo or the result's own image, badged with its product, or
5050
+ // just the product's logomark when there's no image.
5051
+ function ResultImage({
5052
+ category,
5053
+ imageUrl,
5054
+ product
5055
+ }) {
5056
+ const icon = size => isProductIconSlug(product) ? (/*#__PURE__*/React__default.createElement(ProductIcon, {
5057
+ size: size,
5058
+ slug: product
5059
+ })) : null;
5060
+ return /*#__PURE__*/React__default.createElement("span", {
5061
+ "aria-hidden": true,
5062
+ className: styles$e.image
5063
+ }, imageUrl ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("img", {
5064
+ alt: "",
5065
+ className: category === "profile" ? styles$e.avatar : styles$e.photo,
5066
+ loading: "lazy",
5067
+ src: imageUrl
5068
+ }), /*#__PURE__*/React__default.createElement("span", {
5069
+ className: styles$e.badge
5070
+ }, icon(16)))) : icon("100%"));
4239
5071
  }
4240
5072
 
5073
+ var styles$d = {"heading":"heading-LioUF","group":"group-cKChg"};
5074
+
4241
5075
  // Sections with a heading render as labelled groups; ones without render
4242
5076
  // their items straight into the listbox. Indexes run across every section.
4243
5077
  function ResultListbox({
@@ -4250,13 +5084,19 @@ function ResultListbox({
4250
5084
  sections
4251
5085
  }) {
4252
5086
  let index = 0;
4253
- const renderItem = item => {
5087
+ // With aria-activedescendant, screen readers don't reliably announce the
5088
+ // group a highlighted option is in, so each option names its heading too.
5089
+ const renderItem = (item, headingId) => {
4254
5090
  const itemIndex = index++;
4255
5091
  return /*#__PURE__*/React__default.createElement(SearchResult, {
5092
+ category: item.category,
5093
+ describedBy: headingId,
4256
5094
  highlighted: itemIndex === highlightedIndex,
4257
5095
  id: resultId(id, itemIndex),
5096
+ imageUrl: item.imageUrl,
4258
5097
  key: item.key,
4259
5098
  onHighlight: () => onHighlight(itemIndex),
5099
+ product: item.product,
4260
5100
  subtitle: item.subtitle,
4261
5101
  title: item.title,
4262
5102
  url: item.url
@@ -4272,16 +5112,18 @@ function ResultListbox({
4272
5112
  if (section.heading === undefined) {
4273
5113
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, {
4274
5114
  key: section.key
4275
- }, section.items.map(renderItem));
5115
+ }, section.items.map(item => renderItem(item)));
4276
5116
  }
4277
5117
  const headingId = `${id}-group-${sectionIndex}`;
4278
5118
  return /*#__PURE__*/React__default.createElement("div", {
4279
5119
  "aria-labelledby": headingId,
5120
+ className: styles$d.group,
4280
5121
  key: section.key,
4281
5122
  role: "group"
4282
5123
  }, /*#__PURE__*/React__default.createElement("div", {
5124
+ className: styles$d.heading,
4283
5125
  id: headingId
4284
- }, section.heading), section.items.map(renderItem));
5126
+ }, section.heading), section.items.map(item => renderItem(item, headingId)));
4285
5127
  }));
4286
5128
  }
4287
5129
 
@@ -4295,9 +5137,14 @@ function RecentlyVisited({
4295
5137
  }) {
4296
5138
  const headingId = `${navigation.id}-heading`;
4297
5139
  if (items.length === 0 && !hasMore && !loading) {
4298
- return /*#__PURE__*/React__default.createElement("p", null, "Pages you visit will show up here.");
5140
+ return /*#__PURE__*/React__default.createElement(BlankState$1, {
5141
+ image: /*#__PURE__*/React__default.createElement(BlankStateRecentlyVisited, null),
5142
+ subtitle: "Pages you visit will show up here.",
5143
+ title: "Recently visited"
5144
+ });
4299
5145
  } else {
4300
5146
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("div", {
5147
+ className: styles$d.heading,
4301
5148
  id: headingId
4302
5149
  }, "Recently visited"), /*#__PURE__*/React__default.createElement(ResultListbox, {
4303
5150
  labelledBy: headingId,
@@ -4313,6 +5160,8 @@ function RecentlyVisited({
4313
5160
  }
4314
5161
  }
4315
5162
 
5163
+ var styles$c = {"row":"row-5P7UQ","header":"header-sXEyG","closeButton":"closeButton-rPJJV","input":"input-YQkTC","clearButton":"clearButton-9Yh9w"};
5164
+
4316
5165
  // A combobox: focus stays here while aria-activedescendant points screen
4317
5166
  // readers at the highlighted result in the listbox it controls.
4318
5167
  function SearchInput({
@@ -4321,29 +5170,433 @@ function SearchInput({
4321
5170
  inputRef,
4322
5171
  listboxId,
4323
5172
  onChange,
5173
+ onClose,
4324
5174
  onFocus,
4325
5175
  onKeyDown,
4326
5176
  value
4327
5177
  }) {
4328
- return /*#__PURE__*/React__default.createElement("input", {
5178
+ const {
5179
+ focusProps
5180
+ } = useKeyboardFocus({
5181
+ onFocus: (event, keyboard) => {
5182
+ // Tabbing in selects the whole term, which the next keystroke would
5183
+ // replace. Put the cursor after it instead, to keep typing. The
5184
+ // browser selects after the focus event, so this waits a frame and
5185
+ // only undoes that select-all: typing on the tabs moves focus here by
5186
+ // script, which keeps the cursor, and the keystroke may already be in.
5187
+ if (keyboard) {
5188
+ const input = event.currentTarget;
5189
+ requestAnimationFrame(() => {
5190
+ const length = input.value.length;
5191
+ const selectedAll = length > 0 && input.selectionStart === 0 && input.selectionEnd === length;
5192
+ if (document.activeElement !== input || !selectedAll) return;
5193
+ input.setSelectionRange(length, length);
5194
+ });
5195
+ }
5196
+ onFocus();
5197
+ }
5198
+ });
5199
+ return /*#__PURE__*/React__default.createElement("div", {
5200
+ className: styles$c.row
5201
+ }, /*#__PURE__*/React__default.createElement("label", {
5202
+ className: styles$c.header
5203
+ }, /*#__PURE__*/React__default.createElement(Icon, {
5204
+ name: "general.search",
5205
+ size: 20,
5206
+ theme: "--t-icon-color-dim"
5207
+ }), /*#__PURE__*/React__default.createElement("input", {
4329
5208
  "aria-activedescendant": highlightedIndex === null ? undefined : resultId(listboxId, highlightedIndex),
4330
5209
  "aria-autocomplete": "list",
4331
5210
  "aria-controls": expanded ? listboxId : undefined,
4332
5211
  "aria-expanded": expanded,
4333
5212
  "aria-label": "Search",
4334
5213
  autoFocus: true,
5214
+ className: styles$c.input,
5215
+ id: "product_search",
4335
5216
  onChange: event => onChange(event.target.value),
4336
- onFocus: onFocus,
4337
5217
  onKeyDown: onKeyDown,
4338
5218
  placeholder: "Search",
4339
5219
  ref: inputRef,
4340
5220
  role: "combobox",
4341
5221
  type: "search",
4342
- value: value
4343
- });
5222
+ value: value,
5223
+ ...focusProps
5224
+ }), !onClose && value !== "" && (/*#__PURE__*/React__default.createElement("button", {
5225
+ "aria-label": "Clear search",
5226
+ className: styles$c.clearButton,
5227
+ onClick: () => {
5228
+ var _a;
5229
+ onChange("");
5230
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
5231
+ },
5232
+ tabIndex: -1,
5233
+ type: "button"
5234
+ }, /*#__PURE__*/React__default.createElement(Icon, {
5235
+ name: "general.smallX"
5236
+ })))), onClose && (/*#__PURE__*/React__default.createElement(IconButton, {
5237
+ "aria-label": "Close search",
5238
+ className: styles$c.closeButton,
5239
+ icon: /*#__PURE__*/React__default.createElement(Icon, {
5240
+ name: "general.x",
5241
+ theme: "--t-icon-color-dim"
5242
+ }),
5243
+ kind: "ghost",
5244
+ onClick: onClose,
5245
+ size: "md"
5246
+ })));
5247
+ }
5248
+
5249
+ function BlankStateError(props) {
5250
+ const id = useInstanceId("blank-state-error");
5251
+ return /*#__PURE__*/React__default.createElement("svg", {
5252
+ viewBox: "0 0 197 158",
5253
+ fill: "none",
5254
+ "aria-hidden": "true",
5255
+ focusable: "false",
5256
+ ...props
5257
+ }, /*#__PURE__*/React__default.createElement("path", {
5258
+ 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",
5259
+ fill: "currentColor"
5260
+ }), /*#__PURE__*/React__default.createElement("g", {
5261
+ clipPath: `url(#${id}-a)`
5262
+ }, /*#__PURE__*/React__default.createElement("path", {
5263
+ 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",
5264
+ fill: "#4D4D4D"
5265
+ }), /*#__PURE__*/React__default.createElement("path", {
5266
+ 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",
5267
+ fill: "gray"
5268
+ }), /*#__PURE__*/React__default.createElement("path", {
5269
+ 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",
5270
+ fill: "#4D4D4D"
5271
+ }), /*#__PURE__*/React__default.createElement("path", {
5272
+ d: "M101.658 18.962H94.68v1.533h6.978v-1.533Z",
5273
+ fill: "#F2F2F2"
5274
+ }), /*#__PURE__*/React__default.createElement("path", {
5275
+ 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",
5276
+ fill: "#999"
5277
+ }), /*#__PURE__*/React__default.createElement("path", {
5278
+ 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",
5279
+ fill: "#4D4D4D"
5280
+ }), /*#__PURE__*/React__default.createElement("path", {
5281
+ 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",
5282
+ fill: "gray"
5283
+ }), /*#__PURE__*/React__default.createElement("path", {
5284
+ 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",
5285
+ fill: "#333"
5286
+ }), /*#__PURE__*/React__default.createElement("path", {
5287
+ 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",
5288
+ fill: "#F2F2F2"
5289
+ }), /*#__PURE__*/React__default.createElement("path", {
5290
+ 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",
5291
+ fill: "#4D4D4D"
5292
+ }), /*#__PURE__*/React__default.createElement("path", {
5293
+ 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",
5294
+ fill: "gray"
5295
+ }), /*#__PURE__*/React__default.createElement("path", {
5296
+ 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",
5297
+ fill: "#333"
5298
+ }), /*#__PURE__*/React__default.createElement("path", {
5299
+ 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",
5300
+ fill: "#F2F2F2"
5301
+ }), /*#__PURE__*/React__default.createElement("path", {
5302
+ 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",
5303
+ fill: "gray"
5304
+ }), /*#__PURE__*/React__default.createElement("path", {
5305
+ 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",
5306
+ fill: "#3690EA"
5307
+ }), /*#__PURE__*/React__default.createElement("path", {
5308
+ 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",
5309
+ fill: "#F2F2F2"
5310
+ }), /*#__PURE__*/React__default.createElement("path", {
5311
+ 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",
5312
+ fill: "#B3B3B3"
5313
+ }), /*#__PURE__*/React__default.createElement("path", {
5314
+ 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",
5315
+ fill: "#3690EA"
5316
+ }), /*#__PURE__*/React__default.createElement("path", {
5317
+ 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",
5318
+ fill: "#F2F2F2"
5319
+ }), /*#__PURE__*/React__default.createElement("path", {
5320
+ 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",
5321
+ fill: "#E6E6E6"
5322
+ }), /*#__PURE__*/React__default.createElement("path", {
5323
+ 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",
5324
+ fill: "#999"
5325
+ }), /*#__PURE__*/React__default.createElement("path", {
5326
+ 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",
5327
+ fill: "#F2F2F2"
5328
+ }), /*#__PURE__*/React__default.createElement("path", {
5329
+ 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",
5330
+ fill: "#E6E6E6"
5331
+ }), /*#__PURE__*/React__default.createElement("path", {
5332
+ 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",
5333
+ fill: "#1A1A1A"
5334
+ }), /*#__PURE__*/React__default.createElement("path", {
5335
+ 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",
5336
+ fill: "#fff"
5337
+ }), /*#__PURE__*/React__default.createElement("path", {
5338
+ 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",
5339
+ fill: "#1A1A1A"
5340
+ }), /*#__PURE__*/React__default.createElement("path", {
5341
+ 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",
5342
+ fill: "#fff"
5343
+ }), /*#__PURE__*/React__default.createElement("path", {
5344
+ 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",
5345
+ fill: "#3690EA"
5346
+ }), /*#__PURE__*/React__default.createElement("path", {
5347
+ 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",
5348
+ fill: "#F2F2F2"
5349
+ }), /*#__PURE__*/React__default.createElement("path", {
5350
+ 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",
5351
+ fill: "#E6E6E6"
5352
+ }), /*#__PURE__*/React__default.createElement("path", {
5353
+ 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",
5354
+ fill: "#333"
5355
+ }), /*#__PURE__*/React__default.createElement("path", {
5356
+ 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",
5357
+ fill: "#333"
5358
+ }), /*#__PURE__*/React__default.createElement("path", {
5359
+ 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",
5360
+ fill: "#F2F2F2"
5361
+ }), /*#__PURE__*/React__default.createElement("path", {
5362
+ 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",
5363
+ fill: "#E6E6E6"
5364
+ }), /*#__PURE__*/React__default.createElement("path", {
5365
+ 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",
5366
+ fill: "#333"
5367
+ }), /*#__PURE__*/React__default.createElement("path", {
5368
+ 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",
5369
+ fill: "#333"
5370
+ }), /*#__PURE__*/React__default.createElement("path", {
5371
+ 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",
5372
+ fill: "#1A1A1A"
5373
+ }), /*#__PURE__*/React__default.createElement("path", {
5374
+ 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",
5375
+ fill: "#4BAAF7"
5376
+ })), /*#__PURE__*/React__default.createElement("mask", {
5377
+ id: `${id}-b`,
5378
+ style: {
5379
+ maskType: "alpha"
5380
+ },
5381
+ maskUnits: "userSpaceOnUse",
5382
+ x: "0",
5383
+ y: "6",
5384
+ width: "197",
5385
+ height: "151"
5386
+ }, /*#__PURE__*/React__default.createElement("path", {
5387
+ 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",
5388
+ fill: "#CEE1FF",
5389
+ fillOpacity: ".8"
5390
+ })), /*#__PURE__*/React__default.createElement("g", {
5391
+ mask: `url(#${id}-b)`
5392
+ }, /*#__PURE__*/React__default.createElement("path", {
5393
+ d: "m59.006 101 8 4m-4 1-4-5h6",
5394
+ stroke: "#FFD463"
5395
+ }), /*#__PURE__*/React__default.createElement("path", {
5396
+ d: "M60.006 100.999c-14.02-9.35-30.69-13.01-50-11S-26.916 103.01-38.276 115",
5397
+ strokeWidth: "2",
5398
+ stroke: "#fff"
5399
+ }), /*#__PURE__*/React__default.createElement("path", {
5400
+ d: "m125.304 89-8.08 3.84m1.68-3.77 6.4-.07-3.7 4.72",
5401
+ stroke: "#FFD463"
5402
+ }), /*#__PURE__*/React__default.createElement("path", {
5403
+ d: "M123.724 89.5c26.45-8.66 23 40.5 47 42.5 22.399 1.867 36.5-31.001 63 12",
5404
+ strokeWidth: "2",
5405
+ stroke: "#fff"
5406
+ })), /*#__PURE__*/React__default.createElement("defs", null, /*#__PURE__*/React__default.createElement("clipPath", {
5407
+ id: `${id}-a`
5408
+ }, /*#__PURE__*/React__default.createElement("path", {
5409
+ fill: "#fff",
5410
+ transform: "translate(38.051)",
5411
+ d: "M0 0h120v158H0z"
5412
+ }))));
4344
5413
  }
4345
5414
 
4346
- var styles$b = {"visuallyHidden":"visuallyHidden-S9VG5"};
5415
+ function BlankStateNoResults(props) {
5416
+ const id = useInstanceId("blank-state-no-results");
5417
+ return /*#__PURE__*/React__default.createElement("svg", {
5418
+ viewBox: "0 0 197 152",
5419
+ fill: "none",
5420
+ "aria-hidden": "true",
5421
+ focusable: "false",
5422
+ ...props
5423
+ }, /*#__PURE__*/React__default.createElement("path", {
5424
+ 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",
5425
+ fill: "currentColor"
5426
+ }), /*#__PURE__*/React__default.createElement("path", {
5427
+ 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",
5428
+ fill: "#3690EA"
5429
+ }), /*#__PURE__*/React__default.createElement("path", {
5430
+ 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",
5431
+ fill: "#4BAAF7"
5432
+ }), /*#__PURE__*/React__default.createElement("path", {
5433
+ d: "M97.564 26.688h-6.248v3.565h6.248v-3.565Z",
5434
+ fill: "#F2F2F2"
5435
+ }), /*#__PURE__*/React__default.createElement("path", {
5436
+ 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",
5437
+ fill: "#3690EA"
5438
+ }), /*#__PURE__*/React__default.createElement("path", {
5439
+ 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",
5440
+ fill: "#B3B3B3"
5441
+ }), /*#__PURE__*/React__default.createElement("path", {
5442
+ 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",
5443
+ fill: "#F2F2F2"
5444
+ }), /*#__PURE__*/React__default.createElement("path", {
5445
+ 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",
5446
+ fill: "#E6E6E6"
5447
+ }), /*#__PURE__*/React__default.createElement("path", {
5448
+ 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",
5449
+ fill: "#1A1A1A"
5450
+ }), /*#__PURE__*/React__default.createElement("path", {
5451
+ 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",
5452
+ fill: "#fff"
5453
+ }), /*#__PURE__*/React__default.createElement("path", {
5454
+ 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",
5455
+ fill: "#1A1A1A"
5456
+ }), /*#__PURE__*/React__default.createElement("path", {
5457
+ 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",
5458
+ fill: "#fff"
5459
+ }), /*#__PURE__*/React__default.createElement("path", {
5460
+ 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",
5461
+ fill: "#999"
5462
+ }), /*#__PURE__*/React__default.createElement("path", {
5463
+ 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",
5464
+ fill: "#4BAAF7"
5465
+ }), /*#__PURE__*/React__default.createElement("path", {
5466
+ d: "M79.596 106.857s-13.835 0-13.835-18.752",
5467
+ strokeWidth: "13.63",
5468
+ strokeMiterlimit: "10",
5469
+ strokeLinecap: "round",
5470
+ stroke: "#4D4D4D"
5471
+ }), /*#__PURE__*/React__default.createElement("path", {
5472
+ 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",
5473
+ fill: "gray"
5474
+ }), /*#__PURE__*/React__default.createElement("path", {
5475
+ d: "M109.137 104.385s3.851 3.681 10.947-1.181",
5476
+ strokeWidth: "13.63",
5477
+ strokeMiterlimit: "10",
5478
+ strokeLinecap: "round",
5479
+ stroke: "#4D4D4D"
5480
+ }), /*#__PURE__*/React__default.createElement("path", {
5481
+ 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",
5482
+ fill: "gray"
5483
+ }), /*#__PURE__*/React__default.createElement("path", {
5484
+ d: "M89.494 121.176s-4.44 8.569-3.936 13.934",
5485
+ strokeWidth: "13.63",
5486
+ strokeMiterlimit: "10",
5487
+ strokeLinecap: "round",
5488
+ stroke: "#4D4D4D"
5489
+ }), /*#__PURE__*/React__default.createElement("path", {
5490
+ 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",
5491
+ fill: "gray"
5492
+ }), /*#__PURE__*/React__default.createElement("path", {
5493
+ 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",
5494
+ fill: "#333"
5495
+ }), /*#__PURE__*/React__default.createElement("path", {
5496
+ 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",
5497
+ fill: "#F2F2F2"
5498
+ }), /*#__PURE__*/React__default.createElement("path", {
5499
+ d: "M100.159 121.176s4.463 8.569 3.937 13.934",
5500
+ strokeWidth: "13.63",
5501
+ strokeMiterlimit: "10",
5502
+ strokeLinecap: "round",
5503
+ stroke: "#4D4D4D"
5504
+ }), /*#__PURE__*/React__default.createElement("path", {
5505
+ 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",
5506
+ fill: "gray"
5507
+ }), /*#__PURE__*/React__default.createElement("path", {
5508
+ 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",
5509
+ fill: "#333"
5510
+ }), /*#__PURE__*/React__default.createElement("path", {
5511
+ 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",
5512
+ fill: "#F2F2F2"
5513
+ }), /*#__PURE__*/React__default.createElement("path", {
5514
+ 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",
5515
+ fill: "#E6E6E6"
5516
+ }), /*#__PURE__*/React__default.createElement("path", {
5517
+ 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",
5518
+ fill: "#3690EA"
5519
+ }), /*#__PURE__*/React__default.createElement("path", {
5520
+ 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",
5521
+ fill: "#F2F2F2"
5522
+ }), /*#__PURE__*/React__default.createElement("path", {
5523
+ 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",
5524
+ fill: "#E6E6E6"
5525
+ }), /*#__PURE__*/React__default.createElement("path", {
5526
+ d: "M127.405 89.78c1.87.546 3.824.751 5.766.605v0a16.153 16.153 0 0 0 9.056-3.631",
5527
+ strokeWidth: "13.63",
5528
+ strokeMiterlimit: "10",
5529
+ strokeLinecap: "round",
5530
+ stroke: "#333"
5531
+ }), /*#__PURE__*/React__default.createElement("path", {
5532
+ 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",
5533
+ fill: "#F2F2F2"
5534
+ }), /*#__PURE__*/React__default.createElement("path", {
5535
+ 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",
5536
+ fill: "#E6E6E6"
5537
+ }), /*#__PURE__*/React__default.createElement("path", {
5538
+ 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",
5539
+ strokeWidth: "13.63",
5540
+ strokeMiterlimit: "10",
5541
+ strokeLinecap: "round",
5542
+ stroke: "#333"
5543
+ }), /*#__PURE__*/React__default.createElement("path", {
5544
+ 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",
5545
+ fill: "#2278D6"
5546
+ }), /*#__PURE__*/React__default.createElement("path", {
5547
+ 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",
5548
+ fill: "#3690EA"
5549
+ }), /*#__PURE__*/React__default.createElement("path", {
5550
+ 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",
5551
+ fill: "#50B0FF"
5552
+ }), /*#__PURE__*/React__default.createElement("path", {
5553
+ 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",
5554
+ fill: "#D6DEE5"
5555
+ }), /*#__PURE__*/React__default.createElement("path", {
5556
+ 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",
5557
+ fill: "#1B64CE"
5558
+ }), /*#__PURE__*/React__default.createElement("path", {
5559
+ 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",
5560
+ fill: "#fff"
5561
+ }), /*#__PURE__*/React__default.createElement("path", {
5562
+ 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",
5563
+ fill: "#fff"
5564
+ }), /*#__PURE__*/React__default.createElement("mask", {
5565
+ id: `${id}-a`,
5566
+ style: {
5567
+ maskType: "alpha"
5568
+ },
5569
+ maskUnits: "userSpaceOnUse",
5570
+ x: "90",
5571
+ y: "96",
5572
+ width: "9",
5573
+ height: "4"
5574
+ }, /*#__PURE__*/React__default.createElement("path", {
5575
+ 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",
5576
+ fill: "#000"
5577
+ })), /*#__PURE__*/React__default.createElement("g", {
5578
+ mask: `url(#${id}-a)`
5579
+ }, /*#__PURE__*/React__default.createElement("path", {
5580
+ 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",
5581
+ fill: "#999"
5582
+ })));
5583
+ }
5584
+
5585
+ var styles$b = {"spinner":"spinner-b5tlz"};
5586
+
5587
+ function LoadingSpinner({
5588
+ size = 48,
5589
+ trackWidth = 6
5590
+ }) {
5591
+ return /*#__PURE__*/React__default.createElement("span", {
5592
+ "aria-hidden": "true",
5593
+ className: styles$b.spinner,
5594
+ style: {
5595
+ "--spinner-size": `${size}px`,
5596
+ "--spinner-track-width": `${trackWidth}px`
5597
+ }
5598
+ });
5599
+ }
4347
5600
 
4348
5601
  function SearchResults({
4349
5602
  label,
@@ -4364,18 +5617,36 @@ function SearchResults({
4364
5617
  ...navigation
4365
5618
  });
4366
5619
  }
4367
- return /*#__PURE__*/React__default.createElement("p", {
4368
- role: "status"
4369
- }, "Searching\u2026");
5620
+ return /*#__PURE__*/React__default.createElement(Flex, {
5621
+ role: "status",
5622
+ justify: "center",
5623
+ align: "center",
5624
+ gap: 2,
5625
+ direction: "column",
5626
+ style: {
5627
+ color: "var(--t-text-color-placeholder)",
5628
+ fontSize: "var(--t-font-size-md)",
5629
+ marginTop: 48
5630
+ }
5631
+ }, /*#__PURE__*/React__default.createElement(LoadingSpinner, {
5632
+ size: 40,
5633
+ trackWidth: 5
5634
+ }), "Searching\u2026");
4370
5635
  case "error":
4371
- return /*#__PURE__*/React__default.createElement("p", {
4372
- role: "alert"
4373
- }, "Search isn\u2019t working right now. Try again.");
5636
+ return /*#__PURE__*/React__default.createElement(BlankState$1, {
5637
+ image: /*#__PURE__*/React__default.createElement(BlankStateError, null),
5638
+ role: "alert",
5639
+ subtitle: "Try again in a moment.",
5640
+ title: "Search isn\u2019t working right now"
5641
+ });
4374
5642
  case "done":
4375
5643
  if (sections.length === 0) {
4376
- return /*#__PURE__*/React__default.createElement("p", {
4377
- role: "status"
4378
- }, "No results for \u201C", term.trim(), "\u201D");
5644
+ return /*#__PURE__*/React__default.createElement(BlankState$1, {
5645
+ image: /*#__PURE__*/React__default.createElement(BlankStateNoResults, null),
5646
+ role: "status",
5647
+ subtitle: "Clear search and try again.",
5648
+ title: `No results for “${term.trim()}”`
5649
+ });
4379
5650
  }
4380
5651
  return /*#__PURE__*/React__default.createElement(ResultListbox, {
4381
5652
  busy: false,
@@ -4390,27 +5661,37 @@ function SearchResults({
4390
5661
  // stays put as more recents load and as their lookups answer.
4391
5662
  const RECENTS = "recents";
4392
5663
  function SearchPanel({
5664
+ appName,
5665
+ mobile = false,
4393
5666
  env,
5667
+ onClose,
4394
5668
  products
4395
5669
  }) {
4396
5670
  var _a, _b;
4397
5671
  const listboxId = useInstanceId("product-search-results");
4398
5672
  const [term, setTerm] = React__default.useState("");
4399
- const [selectedSlug, setSelectedSlug] = React__default.useState(() => initialProduct(products).slug);
5673
+ const [selectedSlug, setSelectedSlug] = React__default.useState(() => defaultProduct(products, appName).slug);
4400
5674
  const product = (_a = products.find(({
4401
5675
  slug
4402
5676
  }) => slug === selectedSlug)) !== null && _a !== void 0 ? _a : products[0];
4403
5677
  const hasTerm = term.trim() !== "";
4404
5678
  const search = useProductSearch(product.slug, term);
4405
5679
  const groups = "groups" in search ? search.groups : undefined;
4406
- const sections = React__default.useMemo(() => groupSections(groups), [groups]);
5680
+ const {
5681
+ organizationTimeZone
5682
+ } = useStore();
5683
+ const sections = React__default.useMemo(() => groupSections(groups, organizationTimeZone), [groups, organizationTimeZone]);
4407
5684
  const {
4408
5685
  visits,
4409
5686
  ...recents
4410
5687
  } = useRecentVisits(env);
4411
- const recentItems = visits.map(visitItem);
5688
+ const recentItems = visits.map(visit => visitItem(visit, organizationTimeZone));
4412
5689
  const items = hasTerm ? sections.flatMap(section => section.items) : recentItems;
4413
- const navigation = useResultNavigation(items, hasTerm ? sections : RECENTS);
5690
+ // Phones open results by tapping them, with no highlight to arrow through.
5691
+ // A narrow window with a keyboard and mouse keeps both, as does the desktop
5692
+ // layout on a touch device, whose keyboard hints still advertise them.
5693
+ const touchOnly = useMediaQuery("(hover: none) and (pointer: coarse)");
5694
+ const navigation = useResultNavigation(items, hasTerm ? sections : RECENTS, !(mobile && touchOnly));
4414
5695
  const {
4415
5696
  highlightedIndex
4416
5697
  } = navigation;
@@ -4430,41 +5711,48 @@ function SearchPanel({
4430
5711
  navigation.handleKeyDown(event);
4431
5712
  }
4432
5713
  };
4433
- React__default.useEffect(() => {
4434
- if (hasTerm) saveLastProduct(product.slug);
4435
- }, [hasTerm, product.slug]);
5714
+ const results = hasTerm ? (/*#__PURE__*/React__default.createElement(SearchResults, {
5715
+ highlightedIndex: highlightedIndex,
5716
+ id: listboxId,
5717
+ label: `Results from Planning Center ${product.appName}`,
5718
+ onHighlight: navigation.highlightIndex,
5719
+ sections: sections,
5720
+ status: search.status,
5721
+ term: term
5722
+ })) : (/*#__PURE__*/React__default.createElement(RecentlyVisited, {
5723
+ highlightedIndex: highlightedIndex,
5724
+ id: listboxId,
5725
+ items: recentItems,
5726
+ onHighlight: navigation.highlightIndex,
5727
+ ...recents
5728
+ }));
4436
5729
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SearchInput, {
4437
5730
  expanded: items.length > 0,
4438
5731
  highlightedIndex: highlightedIndex,
4439
5732
  inputRef: inputRef,
4440
5733
  listboxId: listboxId,
4441
5734
  onChange: setTerm,
5735
+ onClose: onClose,
4442
5736
  onFocus: () => setAnnounceHighlight(false),
4443
5737
  onKeyDown: navigation.handleKeyDown,
4444
5738
  value: term
4445
- }), /*#__PURE__*/React__default.createElement(ProductTabs, {
5739
+ }), mobile ? (/*#__PURE__*/React__default.createElement(ProductSelect, {
5740
+ onSelect: setSelectedSlug,
5741
+ products: products,
5742
+ selected: product
5743
+ }, results)) : (/*#__PURE__*/React__default.createElement(ProductTabs, {
4446
5744
  onKeyDown: handleTabsKeyDown,
4447
5745
  onSelect: setSelectedSlug,
4448
5746
  products: products,
4449
5747
  selected: product
4450
- }, hasTerm ? (/*#__PURE__*/React__default.createElement(SearchResults, {
4451
- highlightedIndex: highlightedIndex,
4452
- id: listboxId,
4453
- label: `${product.appName} results`,
4454
- onHighlight: navigation.highlightIndex,
4455
- sections: sections,
4456
- status: search.status,
4457
- term: term
4458
- })) : (/*#__PURE__*/React__default.createElement(RecentlyVisited, {
4459
- highlightedIndex: highlightedIndex,
4460
- id: listboxId,
4461
- items: recentItems,
4462
- onHighlight: navigation.highlightIndex,
4463
- ...recents
4464
- }))), /*#__PURE__*/React__default.createElement("div", {
5748
+ }, results)), /*#__PURE__*/React__default.createElement("div", {
4465
5749
  "aria-live": "polite",
4466
- className: styles$b.visuallyHidden
4467
- }, announceHighlight ? (_b = navigation.highlighted) === null || _b === void 0 ? void 0 : _b.title : null), /*#__PURE__*/React__default.createElement(KeyboardHints, {
5750
+ className: styles$k.visuallyHidden
5751
+ }, announceHighlight ? (_b = navigation.highlighted) === null || _b === void 0 ? void 0 : _b.title : null), /*#__PURE__*/React__default.createElement("div", {
5752
+ "aria-live": "polite",
5753
+ className: styles$k.visuallyHidden,
5754
+ "data-testid": "result-count"
5755
+ }, 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__default.createElement(KeyboardHints, {
4468
5756
  copied: navigation.copied
4469
5757
  }));
4470
5758
  }
@@ -4535,32 +5823,6 @@ function useSearchShortcut(enabled, open, setOpen) {
4535
5823
  }, [enabled, open, setOpen]);
4536
5824
  }
4537
5825
 
4538
- const SEARCHABLE_PRODUCTS = [{
4539
- appName: "Calendar",
4540
- slug: "calendar"
4541
- }, {
4542
- appName: "Check-Ins",
4543
- slug: "check-ins"
4544
- }, {
4545
- appName: "Giving",
4546
- slug: "giving"
4547
- }, {
4548
- appName: "Groups",
4549
- slug: "groups"
4550
- }, {
4551
- appName: "People",
4552
- slug: "people"
4553
- }, {
4554
- appName: "Publishing",
4555
- slug: "publishing"
4556
- }, {
4557
- appName: "Registrations",
4558
- slug: "registrations"
4559
- }, {
4560
- appName: "Services",
4561
- slug: "services"
4562
- }];
4563
-
4564
5826
  const PERMISSION_CHECKS = {
4565
5827
  "check-ins": () => fetchMe("check-ins", "permission").then(({
4566
5828
  permission
@@ -4665,24 +5927,59 @@ function inSwitcherOrder(apps) {
4665
5927
  return groupApps(apps).restProducts.flatMap(app => SEARCHABLE_PRODUCTS.filter(product => product.appName === app.name));
4666
5928
  }
4667
5929
 
5930
+ /**
5931
+ * Writes the height of the visible part of the page to the parent of `ref`'s
5932
+ * element as `--visual-viewport-height`. It shrinks when an on-screen keyboard
5933
+ * opens; `100dvh` doesn't, since mobile Safari draws the keyboard over it.
5934
+ */
5935
+ function useVisualViewportHeight(ref, enabled) {
5936
+ React__default.useEffect(() => {
5937
+ var _a;
5938
+ const viewport = window.visualViewport;
5939
+ const parent = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.parentElement;
5940
+ if (!enabled || !viewport || !parent) return undefined;
5941
+ const update = () => parent.style.setProperty("--visual-viewport-height", `${viewport.height}px`);
5942
+ update();
5943
+ viewport.addEventListener("resize", update);
5944
+ return () => {
5945
+ viewport.removeEventListener("resize", update);
5946
+ parent.style.removeProperty("--visual-viewport-height");
5947
+ };
5948
+ }, [enabled, ref]);
5949
+ }
5950
+
4668
5951
  function ProductSearch({
5952
+ appName,
4669
5953
  apps,
5954
+ mobile = false,
4670
5955
  env
4671
5956
  }) {
4672
5957
  const searchable = useSearchableProducts(apps);
4673
5958
  const [open, setOpen] = React__default.useState(false);
5959
+ const modalRef = React__default.useRef(null);
5960
+ // Sizes Tapestry's modal frame, the dialog's parent, to fit above the keyboard.
5961
+ useVisualViewportHeight(modalRef, mobile && open);
4674
5962
  const available = searchable.status === "done" && searchable.products.length > 0;
4675
5963
  useSearchShortcut(available, open, setOpen);
4676
5964
  if (!available) return null;
4677
5965
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SearchButton, {
5966
+ mobile: mobile,
4678
5967
  onClick: () => setOpen(true)
4679
5968
  }), /*#__PURE__*/React__default.createElement(Modal, {
4680
5969
  "aria-label": "Search",
5970
+ className: styles$k.modal,
4681
5971
  dismissible: true,
5972
+ id: "product_search_modal",
4682
5973
  onClose: () => setOpen(false),
4683
- open: open
5974
+ open: open,
5975
+ ref: modalRef,
5976
+ size: "lg"
4684
5977
  }, /*#__PURE__*/React__default.createElement(SearchPanel, {
5978
+ appName: appName,
5979
+ mobile: mobile,
4685
5980
  env: env,
5981
+ // Phones have no Esc, so mobile search gets a close button.
5982
+ onClose: mobile ? () => setOpen(false) : undefined,
4686
5983
  products: searchable.products
4687
5984
  })));
4688
5985
  }
@@ -4976,6 +6273,7 @@ const NotSmallTopbar = ({
4976
6273
  margin: "auto"
4977
6274
  }
4978
6275
  }), !notificationsEnabled && notifications(), productSearchEnabled ? (/*#__PURE__*/React__default.createElement(ProductSearch, {
6276
+ appName: props.appName,
4979
6277
  apps: props.apps,
4980
6278
  env: props.env
4981
6279
  })) : search({
@@ -32890,7 +34188,7 @@ ClientStorage.defaultProps = {
32890
34188
  method: "localStorage"
32891
34189
  };
32892
34190
 
32893
- 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"};
34191
+ 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"};
32894
34192
 
32895
34193
  function AccountSettingsLink({
32896
34194
  env
@@ -33110,7 +34408,14 @@ const SmallTopbar = ({
33110
34408
  setProductSwitcherVisible(false);
33111
34409
  setRoutesMenuVisible(visible => !visible);
33112
34410
  } : null
33113
- }, /*#__PURE__*/React__default.createElement(CurrentRouteComponent, null, capitalize$1(currentRouteText)), props.routes.length > 0 && /*#__PURE__*/React__default.createElement(DisclosureChevronIcon, null)), /*#__PURE__*/React__default.createElement("button", {
34411
+ }, /*#__PURE__*/React__default.createElement(CurrentRouteComponent, null, capitalize$1(currentRouteText)), props.routes.length > 0 && /*#__PURE__*/React__default.createElement(DisclosureChevronIcon, null)), /*#__PURE__*/React__default.createElement("div", {
34412
+ className: styles$6["actions"]
34413
+ }, productSearchEnabled && (/*#__PURE__*/React__default.createElement(ProductSearch, {
34414
+ appName: props.appName,
34415
+ apps: props.apps,
34416
+ mobile: true,
34417
+ env: props.env
34418
+ })), /*#__PURE__*/React__default.createElement("button", {
33114
34419
  type: "button",
33115
34420
  className: styles$6["profile-button"],
33116
34421
  onClick: () => {
@@ -33121,7 +34426,7 @@ const SmallTopbar = ({
33121
34426
  }, /*#__PURE__*/React__default.createElement(Avatar, {
33122
34427
  env: props.env,
33123
34428
  url: props.userAvatarPath
33124
- })));
34429
+ }))));
33125
34430
  };
33126
34431
  const SmallRoute = ({
33127
34432
  active,
@@ -33611,38 +34916,6 @@ const SwitchView = ({
33611
34916
  }));
33612
34917
  };
33613
34918
 
33614
- const collections = {
33615
- general,
33616
- toolbar
33617
- };
33618
- const paths = collections;
33619
- function Icon({
33620
- name,
33621
- size = 16,
33622
- style,
33623
- theme,
33624
- title,
33625
- ...props
33626
- }) {
33627
- const [collection, symbol] = name.split(".");
33628
- return /*#__PURE__*/React__default.createElement("svg", {
33629
- "aria-hidden": title ? undefined : true,
33630
- fill: "currentColor",
33631
- height: size,
33632
- role: title ? "img" : undefined,
33633
- style: {
33634
- color: theme && `var(${theme})`,
33635
- flexShrink: 0,
33636
- ...style
33637
- },
33638
- viewBox: "0 0 16 16",
33639
- width: size,
33640
- ...props
33641
- }, title && /*#__PURE__*/React__default.createElement("title", null, title), /*#__PURE__*/React__default.createElement("path", {
33642
- d: paths[collection][symbol]
33643
- }));
33644
- }
33645
-
33646
34919
  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"};
33647
34920
 
33648
34921
  const COLOR_MODES = [{
@@ -34427,7 +35700,8 @@ function AskAIButton({
34427
35700
  onClick: () => onClick(),
34428
35701
  type: "button"
34429
35702
  }, /*#__PURE__*/React__default.createElement(SparkleIcon, {
34430
- className: styles.sparkle
35703
+ className: styles.sparkle,
35704
+ fill: "currentColor"
34431
35705
  }), /*#__PURE__*/React__default.createElement("span", {
34432
35706
  className: styles.label
34433
35707
  }, text));
@@ -34616,6 +35890,9 @@ function createPicobotIframe(picobotOrigin, {
34616
35890
  // Contact support) and picobot's own NEW_ROUTE_RENDERED reports—so it
34617
35891
  // always reflects the live conversation. See buildPicobotSrc.
34618
35892
  const [loadedPath, setLoadedPath] = React__default.useState(iframePath || "");
35893
+ // Hidden until picobot paints so its blank first frame doesn't flash
35894
+ // white against the drawer in dark mode.
35895
+ const [isReady, setIsReady] = React__default.useState(false);
34619
35896
  const hasReportedErrorRef = React__default.useRef(false);
34620
35897
  const loadTimeoutRef = React__default.useRef();
34621
35898
  const reportLoadError = React__default.useCallback(() => {
@@ -34643,7 +35920,10 @@ function createPicobotIframe(picobotOrigin, {
34643
35920
  setLoadedPath(reportedPath);
34644
35921
  onIframeChangePath(reportedPath);
34645
35922
  }
34646
- if (((_c = e.data) === null || _c === void 0 ? void 0 : _c.type) === "READY") clearTimeout(loadTimeoutRef.current);
35923
+ if (((_c = e.data) === null || _c === void 0 ? void 0 : _c.type) === "READY") {
35924
+ clearTimeout(loadTimeoutRef.current);
35925
+ setIsReady(true);
35926
+ }
34647
35927
  if (onMessage) onMessage(e.data);
34648
35928
  }
34649
35929
  window.addEventListener("message", handleGuestMessage);
@@ -34653,12 +35933,15 @@ function createPicobotIframe(picobotOrigin, {
34653
35933
  setLoadedPath(iframePath || "");
34654
35934
  }, [iframePath]);
34655
35935
  // A one-way channel for sending messages to picobot. Topbar just
34656
- // forwards the envelope to the iframe and holds no message semantics of
34657
- // its own—the consumer decides what to send and when.
35936
+ // forwards the envelope to the iframe—the consumer decides what to send
35937
+ // and when. The one exception is PANE_VISIBLE: Safari ignores focus()
35938
+ // from inside a cross-origin iframe, so the host has to focus the iframe
35939
+ // before picobot can focus its composer.
34658
35940
  React__default.useImperativeHandle(ref, () => ({
34659
35941
  postMessage(message) {
34660
- var _a, _b;
34661
- (_b = (_a = iframeRef.current) === null || _a === void 0 ? void 0 : _a.contentWindow) === null || _b === void 0 ? void 0 : _b.postMessage(message, picobotOrigin);
35942
+ var _a, _b, _c;
35943
+ if (message.type === "PANE_VISIBLE") (_a = iframeRef.current) === null || _a === void 0 ? void 0 : _a.focus();
35944
+ (_c = (_b = iframeRef.current) === null || _b === void 0 ? void 0 : _b.contentWindow) === null || _c === void 0 ? void 0 : _c.postMessage(message, picobotOrigin);
34662
35945
  }
34663
35946
  }), []);
34664
35947
  const iframeSrc = buildPicobotSrc(picobotOrigin, loadedPath, {
@@ -34672,6 +35955,7 @@ function createPicobotIframe(picobotOrigin, {
34672
35955
  border: 0,
34673
35956
  flex: 1,
34674
35957
  height: "100%",
35958
+ visibility: isReady ? undefined : "hidden",
34675
35959
  width: "100%"
34676
35960
  },
34677
35961
  title: "Picobot"
@@ -35400,6 +36684,7 @@ function PicobotComponent({
35400
36684
  closeDrawer,
35401
36685
  currentPath,
35402
36686
  env,
36687
+ isOpen,
35403
36688
  onChangePath,
35404
36689
  openTool,
35405
36690
  pending
@@ -35444,6 +36729,17 @@ function PicobotComponent({
35444
36729
  }
35445
36730
  clearPending();
35446
36731
  }, [pending, isPicobotReady, clearPending]);
36732
+ // The drawer keeps the iframe mounted while it's closed, so picobot's
36733
+ // autofocus is spent by the time the panel reopens. READY gates the signal
36734
+ // because picobot has no listener before it.
36735
+ React__default.useEffect(function tellPicobotThePanelIsVisible() {
36736
+ var _a;
36737
+ if (isOpen && isPicobotReady) {
36738
+ (_a = picobotRef.current) === null || _a === void 0 ? void 0 : _a.postMessage({
36739
+ type: "PANE_VISIBLE"
36740
+ });
36741
+ }
36742
+ }, [isOpen, isPicobotReady]);
35447
36743
  const [iframeErrored, setIframeErrored] = React__default.useState(false);
35448
36744
  const [mountKey, setMountKey] = React__default.useState(0);
35449
36745
  const handleRetry = React__default.useCallback(() => {
@@ -35960,6 +37256,11 @@ const Profile = {
35960
37256
  };
35961
37257
 
35962
37258
  const DURATION = 100;
37259
+ const TOOLBAR_DRAWER_CHANGE_EVENT = "topbar:toolbar-drawer-change";
37260
+ const CLOSED_TOOLBAR_DRAWER = {
37261
+ open: false,
37262
+ tool: null
37263
+ };
35963
37264
  // Exempt paths match regardless of query, so `email?conversationId=…` is
35964
37265
  // exempt along with `email`.
35965
37266
  function isToolPathExemptFromStorage(toolName, path) {
@@ -36073,6 +37374,27 @@ function Toolbar({
36073
37374
  delete window.openHelpdesk; /* TODO: Remove when products have migrated to window.topbar.openHelpdesk */
36074
37375
  };
36075
37376
  }, [Profile, openHelpdeskAtRoot]);
37377
+ const toolbarDrawerTool = open && currentContent ? currentContent.name.toLowerCase() : null;
37378
+ const lastToolbarDrawer = React__default.useRef(CLOSED_TOOLBAR_DRAWER);
37379
+ React__default.useEffect(() => {
37380
+ const toolbarDrawer = {
37381
+ open,
37382
+ tool: toolbarDrawerTool
37383
+ };
37384
+ window.topbar = window.topbar || {};
37385
+ window.topbar.toolbarDrawer = toolbarDrawer;
37386
+ const last = lastToolbarDrawer.current;
37387
+ if (last.open !== toolbarDrawer.open || last.tool !== toolbarDrawer.tool) {
37388
+ lastToolbarDrawer.current = toolbarDrawer;
37389
+ window.dispatchEvent(new CustomEvent(TOOLBAR_DRAWER_CHANGE_EVENT, {
37390
+ detail: toolbarDrawer
37391
+ }));
37392
+ }
37393
+ return () => {
37394
+ var _a;
37395
+ (_a = window.topbar) === null || _a === void 0 ? true : delete _a.toolbarDrawer;
37396
+ };
37397
+ }, [open, toolbarDrawerTool]);
36076
37398
  const loginSettingsUrl = getLoginProfilePath({
36077
37399
  appName: appName.replace(/[\s-]/, ""),
36078
37400
  env: env,