@planningcenter/topbar 12.1.2 → 12.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/topbar.css +127 -0
- package/dist/topbar.css.map +1 -1
- package/dist/topbar.js +199 -119
- package/dist/topbar.js.map +1 -1
- package/dist/topbar.modern.js +199 -119
- package/dist/topbar.modern.js.map +1 -1
- package/dist/topbar.module.js +199 -119
- package/dist/topbar.module.js.map +1 -1
- package/dist/topbar.umd.js +199 -119
- package/dist/topbar.umd.js.map +1 -1
- package/package.json +2 -2
package/dist/topbar.umd.js
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
var people__namespace = /*#__PURE__*/_interopNamespaceDefault(people);
|
|
28
28
|
var toolbar__namespace = /*#__PURE__*/_interopNamespaceDefault(toolbar);
|
|
29
29
|
|
|
30
|
-
var styles$
|
|
30
|
+
var styles$d = {"accessibility-toolbar":"accessibility-toolbar-jgjUG"};
|
|
31
31
|
|
|
32
32
|
const AccessibilityToolbar = ({
|
|
33
33
|
children
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
(_a = document.getElementById("main-content")) === null || _a === void 0 ? void 0 : _a.focus();
|
|
40
40
|
};
|
|
41
41
|
return /*#__PURE__*/React.createElement("div", {
|
|
42
|
-
className: styles$
|
|
42
|
+
className: styles$d["accessibility-toolbar"]
|
|
43
43
|
}, /*#__PURE__*/React.createElement(tapestry.Link, {
|
|
44
44
|
href: "#main-content",
|
|
45
45
|
kind: "primary",
|
|
@@ -356,11 +356,11 @@
|
|
|
356
356
|
fill: fill
|
|
357
357
|
})));
|
|
358
358
|
|
|
359
|
-
var styles$
|
|
359
|
+
var styles$c = {"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"};
|
|
360
360
|
|
|
361
361
|
function AnnouncementIcon() {
|
|
362
362
|
return /*#__PURE__*/React.createElement("svg", {
|
|
363
|
-
className: styles$
|
|
363
|
+
className: styles$c["announcement-icon"],
|
|
364
364
|
width: "16",
|
|
365
365
|
height: "16",
|
|
366
366
|
viewBox: "0 0 16 16",
|
|
@@ -485,7 +485,7 @@
|
|
|
485
485
|
} = this.props;
|
|
486
486
|
const isPromo = variant === "promo";
|
|
487
487
|
return /*#__PURE__*/React.createElement("div", {
|
|
488
|
-
className: classnames(styles$
|
|
488
|
+
className: classnames(styles$c["announcement"], styles$c[`announcement--${variant !== null && variant !== void 0 ? variant : "platform"}`]),
|
|
489
489
|
"data-announcement-variant": variant !== null && variant !== void 0 ? variant : "platform",
|
|
490
490
|
style: isPromo ? {
|
|
491
491
|
backgroundImage: promoBackgroundUrl,
|
|
@@ -494,7 +494,7 @@
|
|
|
494
494
|
backgroundSize: "cover"
|
|
495
495
|
} : undefined
|
|
496
496
|
}, !isPromo && /*#__PURE__*/React.createElement(AnnouncementIcon, null), /*#__PURE__*/React.createElement("div", {
|
|
497
|
-
className: styles$
|
|
497
|
+
className: styles$c["announcement-content"],
|
|
498
498
|
style: style,
|
|
499
499
|
...platformProps
|
|
500
500
|
}));
|
|
@@ -543,7 +543,7 @@
|
|
|
543
543
|
const isPromo = variant === "promo";
|
|
544
544
|
return /*#__PURE__*/React.createElement("button", {
|
|
545
545
|
type: "button",
|
|
546
|
-
className: classnames(styles$
|
|
546
|
+
className: classnames(styles$c.dismiss, isPromo && styles$c["dismiss--promo"]),
|
|
547
547
|
...props
|
|
548
548
|
}, /*#__PURE__*/React.createElement(X, {
|
|
549
549
|
fill: isPromo ? "currentColor" : "white",
|
|
@@ -623,9 +623,9 @@
|
|
|
623
623
|
...platformProps
|
|
624
624
|
} = this.props;
|
|
625
625
|
return /*#__PURE__*/React.createElement("div", {
|
|
626
|
-
className: styles$
|
|
626
|
+
className: styles$c["announcement"]
|
|
627
627
|
}, /*#__PURE__*/React.createElement(AnnouncementIcon, null), /*#__PURE__*/React.createElement("div", {
|
|
628
|
-
className: styles$
|
|
628
|
+
className: styles$c["announcement-content"],
|
|
629
629
|
style: style,
|
|
630
630
|
...platformProps
|
|
631
631
|
}));
|
|
@@ -636,7 +636,7 @@
|
|
|
636
636
|
}) {
|
|
637
637
|
return /*#__PURE__*/React.createElement("button", {
|
|
638
638
|
type: "button",
|
|
639
|
-
className: styles$
|
|
639
|
+
className: styles$c.dismiss,
|
|
640
640
|
...props
|
|
641
641
|
}, /*#__PURE__*/React.createElement(X, {
|
|
642
642
|
fill: "white",
|
|
@@ -1883,7 +1883,7 @@
|
|
|
1883
1883
|
})) : (/*#__PURE__*/React.createElement("div", null, "appName not supported"));
|
|
1884
1884
|
}
|
|
1885
1885
|
|
|
1886
|
-
var styles$
|
|
1886
|
+
var styles$b = {"unbutton":"unbutton-lEbTR"};
|
|
1887
1887
|
|
|
1888
1888
|
function Unbutton({
|
|
1889
1889
|
className,
|
|
@@ -1892,7 +1892,7 @@
|
|
|
1892
1892
|
...nativeProps
|
|
1893
1893
|
}) {
|
|
1894
1894
|
return /*#__PURE__*/React.createElement("button", {
|
|
1895
|
-
className: classnames(styles$
|
|
1895
|
+
className: classnames(styles$b.unbutton, className),
|
|
1896
1896
|
style: {
|
|
1897
1897
|
...style
|
|
1898
1898
|
},
|
|
@@ -1901,7 +1901,7 @@
|
|
|
1901
1901
|
});
|
|
1902
1902
|
}
|
|
1903
1903
|
|
|
1904
|
-
var styles$
|
|
1904
|
+
var styles$a = {"button":"button-XMbeQ","button-accounts":"button-accounts-nNh-z","chevron":"chevron-RRg9k","is-expanded":"is-expanded-zD0A0"};
|
|
1905
1905
|
|
|
1906
1906
|
const AppsButton = ({
|
|
1907
1907
|
appName,
|
|
@@ -1916,8 +1916,8 @@
|
|
|
1916
1916
|
"aria-haspopup": "true",
|
|
1917
1917
|
"aria-label": `App switcher: ${appName}`,
|
|
1918
1918
|
onClick: onClick,
|
|
1919
|
-
className: classnames(styles$
|
|
1920
|
-
[styles$
|
|
1919
|
+
className: classnames(styles$a.button, {
|
|
1920
|
+
[styles$a["is-expanded"]]: expanded
|
|
1921
1921
|
}),
|
|
1922
1922
|
type: "button",
|
|
1923
1923
|
style: style,
|
|
@@ -1926,7 +1926,7 @@
|
|
|
1926
1926
|
appName: "Accounts",
|
|
1927
1927
|
colors: colors
|
|
1928
1928
|
}), /*#__PURE__*/React.createElement("div", {
|
|
1929
|
-
className: styles$
|
|
1929
|
+
className: styles$a["button-accounts"]
|
|
1930
1930
|
}, "Account settings"))) : (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ColorAppIcon, {
|
|
1931
1931
|
appName: appName.replace(/[\s-]/, "")
|
|
1932
1932
|
}), /*#__PURE__*/React.createElement(MonoAppName, {
|
|
@@ -1934,7 +1934,7 @@
|
|
|
1934
1934
|
key: "mono-app-name",
|
|
1935
1935
|
size: 24
|
|
1936
1936
|
}))), /*#__PURE__*/React.createElement(DisclosureChevronIcon, {
|
|
1937
|
-
className: styles$
|
|
1937
|
+
className: styles$a.chevron,
|
|
1938
1938
|
key: "disclosure-chevron-icon"
|
|
1939
1939
|
}));
|
|
1940
1940
|
};
|
|
@@ -2022,7 +2022,7 @@
|
|
|
2022
2022
|
flex: "1 1 auto"
|
|
2023
2023
|
};
|
|
2024
2024
|
|
|
2025
|
-
var styles$
|
|
2025
|
+
var styles$9 = {"popup":"popup-sJ-Nv"};
|
|
2026
2026
|
|
|
2027
2027
|
const HoverableListItem = ({
|
|
2028
2028
|
active = false,
|
|
@@ -2079,7 +2079,7 @@
|
|
|
2079
2079
|
}
|
|
2080
2080
|
}
|
|
2081
2081
|
|
|
2082
|
-
var styles$
|
|
2082
|
+
var styles$8 = {"popup-root":"popup-root-SeL5u","popup":"popup-nQXYW","is-visible":"is-visible-3DAUP"};
|
|
2083
2083
|
|
|
2084
2084
|
const Popup = ({
|
|
2085
2085
|
className,
|
|
@@ -2087,8 +2087,8 @@
|
|
|
2087
2087
|
isVisible,
|
|
2088
2088
|
...nativeProps
|
|
2089
2089
|
}) => (/*#__PURE__*/React.createElement(C, {
|
|
2090
|
-
className: classnames(styles$
|
|
2091
|
-
[styles$
|
|
2090
|
+
className: classnames(styles$8.popup, {
|
|
2091
|
+
[styles$8["is-visible"]]: isVisible
|
|
2092
2092
|
}, className),
|
|
2093
2093
|
...nativeProps
|
|
2094
2094
|
}));
|
|
@@ -2096,7 +2096,7 @@
|
|
|
2096
2096
|
const PopupRoot = ({
|
|
2097
2097
|
...nativeProps
|
|
2098
2098
|
}) => (/*#__PURE__*/React.createElement("div", {
|
|
2099
|
-
className: styles$
|
|
2099
|
+
className: styles$8["popup-root"],
|
|
2100
2100
|
...nativeProps
|
|
2101
2101
|
}));
|
|
2102
2102
|
|
|
@@ -2136,7 +2136,7 @@
|
|
|
2136
2136
|
cleanup: !visible,
|
|
2137
2137
|
component: Outsider,
|
|
2138
2138
|
onOutsideClick: toggle,
|
|
2139
|
-
className: styles$
|
|
2139
|
+
className: styles$9.popup,
|
|
2140
2140
|
isVisible: visible
|
|
2141
2141
|
}, /*#__PURE__*/React.createElement("menu", {
|
|
2142
2142
|
ref: menuRef,
|
|
@@ -3032,9 +3032,9 @@ true;
|
|
|
3032
3032
|
`), children);
|
|
3033
3033
|
}
|
|
3034
3034
|
|
|
3035
|
-
var styles$
|
|
3035
|
+
var styles$7 = {"route":"route--8BWe","is-active":"is-active-FsU9Y","apps-routes-separator":"apps-routes-separator-Nlm-N"};
|
|
3036
3036
|
|
|
3037
|
-
var styles$
|
|
3037
|
+
var styles$6 = {"popup":"popup-mDNKn","trigger-wrap":"trigger-wrap-Jd-KR","trigger":"trigger-WgRT5","is-visible":"is-visible-GZC0-","trigger-orgname":"trigger-orgname-TDHCc"};
|
|
3038
3038
|
|
|
3039
3039
|
const UserMenu = ({
|
|
3040
3040
|
appName,
|
|
@@ -3053,7 +3053,7 @@ true;
|
|
|
3053
3053
|
component: Outsider,
|
|
3054
3054
|
onOutsideClick: () => setUserMenuVisible(false),
|
|
3055
3055
|
cleanup: !userMenuVisible,
|
|
3056
|
-
className: styles$
|
|
3056
|
+
className: styles$6.popup,
|
|
3057
3057
|
isVisible: userMenuVisible
|
|
3058
3058
|
}, /*#__PURE__*/React.createElement("div", null, hasConnectedPeople ? (/*#__PURE__*/React.createElement("div", {
|
|
3059
3059
|
style: {
|
|
@@ -3197,11 +3197,11 @@ true;
|
|
|
3197
3197
|
userMenuVisible
|
|
3198
3198
|
}) => {
|
|
3199
3199
|
return /*#__PURE__*/React.createElement("div", {
|
|
3200
|
-
className: styles$
|
|
3200
|
+
className: styles$6["trigger-wrap"],
|
|
3201
3201
|
"data-pendo": "topbar-org-switcher"
|
|
3202
3202
|
}, /*#__PURE__*/React.createElement(Hoverable, {
|
|
3203
|
-
className: classnames(styles$
|
|
3204
|
-
[styles$
|
|
3203
|
+
className: classnames(styles$6["trigger"], {
|
|
3204
|
+
[styles$6["is-visible"]]: userMenuVisible
|
|
3205
3205
|
}),
|
|
3206
3206
|
component: "button",
|
|
3207
3207
|
type: "button",
|
|
@@ -3213,7 +3213,7 @@ true;
|
|
|
3213
3213
|
requestConnectedPeopleFetch();
|
|
3214
3214
|
}
|
|
3215
3215
|
}, showOrgName && (/*#__PURE__*/React.createElement("span", {
|
|
3216
|
-
className: styles$
|
|
3216
|
+
className: styles$6["trigger-orgname"]
|
|
3217
3217
|
}, orgName)), /*#__PURE__*/React.createElement(DisclosureChevronIcon, null)));
|
|
3218
3218
|
};
|
|
3219
3219
|
|
|
@@ -3270,7 +3270,7 @@ true;
|
|
|
3270
3270
|
},
|
|
3271
3271
|
appName: props.appName
|
|
3272
3272
|
}), /*#__PURE__*/React.createElement("div", {
|
|
3273
|
-
className: styles$
|
|
3273
|
+
className: styles$7["apps-routes-separator"]
|
|
3274
3274
|
}), routesVisible && props.routes, /*#__PURE__*/React.createElement("div", {
|
|
3275
3275
|
style: {
|
|
3276
3276
|
margin: "auto"
|
|
@@ -3308,12 +3308,12 @@ true;
|
|
|
3308
3308
|
...nativeProps
|
|
3309
3309
|
}) => {
|
|
3310
3310
|
return /*#__PURE__*/React.createElement("a", {
|
|
3311
|
-
className: classnames(styles$
|
|
3311
|
+
className: classnames(styles$7["route"], className, active && styles$7["is-active"]),
|
|
3312
3312
|
...nativeProps
|
|
3313
3313
|
});
|
|
3314
3314
|
};
|
|
3315
3315
|
|
|
3316
|
-
var styles$
|
|
3316
|
+
var styles$5 = {"avatar":"avatar-tW-wn"};
|
|
3317
3317
|
|
|
3318
3318
|
function Avatar({
|
|
3319
3319
|
env,
|
|
@@ -3323,7 +3323,7 @@ true;
|
|
|
3323
3323
|
}) {
|
|
3324
3324
|
const url = incomingUrl || `${pcoUrl$1(env)("people")}/static/no_photo_thumbnail_gray.svg`;
|
|
3325
3325
|
return /*#__PURE__*/React.createElement("div", {
|
|
3326
|
-
className: styles$
|
|
3326
|
+
className: styles$5.avatar,
|
|
3327
3327
|
style: {
|
|
3328
3328
|
backgroundImage: `url(${url})`,
|
|
3329
3329
|
...style
|
|
@@ -3345,14 +3345,14 @@ true;
|
|
|
3345
3345
|
method: "localStorage"
|
|
3346
3346
|
};
|
|
3347
3347
|
|
|
3348
|
-
var styles$
|
|
3348
|
+
var styles$4 = {"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"};
|
|
3349
3349
|
|
|
3350
3350
|
function AccountSettingsLink({
|
|
3351
3351
|
env
|
|
3352
3352
|
}) {
|
|
3353
3353
|
const accountsName = "accounts";
|
|
3354
3354
|
return /*#__PURE__*/React.createElement("a", {
|
|
3355
|
-
className: classnames(styles$
|
|
3355
|
+
className: classnames(styles$4["appmenu-list-a"], styles$4["appmenu-list-a--bottom"]),
|
|
3356
3356
|
"data-pendo": `app-switcher--change-app--${accountsName}`,
|
|
3357
3357
|
"data-turbolinks": false,
|
|
3358
3358
|
href: pcoUrl$1(env)(accountsName) + getAppsSwitchProductPath(accountsName)
|
|
@@ -3375,7 +3375,7 @@ true;
|
|
|
3375
3375
|
}) => (/*#__PURE__*/React.createElement("button", {
|
|
3376
3376
|
"aria-label": "Close menu",
|
|
3377
3377
|
type: "button",
|
|
3378
|
-
className: styles$
|
|
3378
|
+
className: styles$4["appmenu-close-button"],
|
|
3379
3379
|
style: style
|
|
3380
3380
|
}, /*#__PURE__*/React.createElement(X, {
|
|
3381
3381
|
fill: color,
|
|
@@ -3456,7 +3456,7 @@ true;
|
|
|
3456
3456
|
"aria-haspopup": "true",
|
|
3457
3457
|
"aria-label": `App switcher: ${props.appName}`,
|
|
3458
3458
|
type: "button",
|
|
3459
|
-
className: styles$
|
|
3459
|
+
className: styles$4["appmenu-button"],
|
|
3460
3460
|
onClick: () => {
|
|
3461
3461
|
props.requestAppsFetch();
|
|
3462
3462
|
props.requestConnectedPeopleFetch();
|
|
@@ -3466,12 +3466,12 @@ true;
|
|
|
3466
3466
|
}, /*#__PURE__*/React.createElement(ColorAppIcon, {
|
|
3467
3467
|
appName: props.appName.replace(/[\s-]/, "")
|
|
3468
3468
|
})), routesMenuVisible && (/*#__PURE__*/React.createElement("div", {
|
|
3469
|
-
className: styles$
|
|
3469
|
+
className: styles$4["routes"]
|
|
3470
3470
|
}, props.routes)), /*#__PURE__*/React.createElement(ClientStorage, {
|
|
3471
3471
|
item: "Topbar:Small:Menus:Products:visibility",
|
|
3472
3472
|
render: () => (/*#__PURE__*/React.createElement("div", {
|
|
3473
3473
|
ref: appMenuRef,
|
|
3474
|
-
className: styles$
|
|
3474
|
+
className: styles$4["appmenu-layer"],
|
|
3475
3475
|
style: {
|
|
3476
3476
|
...(productSwitcherVisible && {
|
|
3477
3477
|
display: "block"
|
|
@@ -3490,44 +3490,44 @@ true;
|
|
|
3490
3490
|
e.stopPropagation();
|
|
3491
3491
|
}
|
|
3492
3492
|
},
|
|
3493
|
-
className: styles$
|
|
3493
|
+
className: styles$4["appmenu-container"]
|
|
3494
3494
|
}, /*#__PURE__*/React.createElement("a", {
|
|
3495
3495
|
"aria-current": props.appName === (homeProduct === null || homeProduct === void 0 ? void 0 : homeProduct.name) ? "page" : undefined,
|
|
3496
3496
|
"aria-label": homeProduct ? homeProduct.name : props.appName,
|
|
3497
3497
|
"data-pendo": `app-switcher--change-app--${homeProduct === null || homeProduct === void 0 ? void 0 : homeProduct.name}`,
|
|
3498
3498
|
"data-turbolinks": false,
|
|
3499
|
-
className: classnames(styles$
|
|
3499
|
+
className: classnames(styles$4["appmenu-list-a"], styles$4["appmenu-list-a--top"]),
|
|
3500
3500
|
href: homeProduct ? pcoUrl$1(props.env)("accounts") + getAppsSwitchProductPath(homeProduct === null || homeProduct === void 0 ? void 0 : homeProduct.name) : undefined
|
|
3501
3501
|
}, /*#__PURE__*/React.createElement(UserMenuAppLockup, {
|
|
3502
3502
|
appName: homeProduct ? homeProduct.name : props.appName
|
|
3503
3503
|
})), /*#__PURE__*/React.createElement("div", {
|
|
3504
|
-
className: styles$
|
|
3504
|
+
className: styles$4["appmenu-scroll"]
|
|
3505
3505
|
}, /*#__PURE__*/React.createElement("ul", {
|
|
3506
3506
|
"data-pendo": "app-switcher",
|
|
3507
|
-
className: styles$
|
|
3507
|
+
className: styles$4["appmenu-list"]
|
|
3508
3508
|
}, appsMenuFormatter(restProducts).map(({
|
|
3509
3509
|
name
|
|
3510
3510
|
}) => (/*#__PURE__*/React.createElement("li", {
|
|
3511
3511
|
key: name,
|
|
3512
|
-
className: styles$
|
|
3512
|
+
className: styles$4["appmenu-list-li"]
|
|
3513
3513
|
}, /*#__PURE__*/React.createElement("a", {
|
|
3514
3514
|
"aria-current": name === props.appName ? "page" : undefined,
|
|
3515
3515
|
"aria-label": name,
|
|
3516
3516
|
"data-pendo": `app-switcher--change-app--${name}`,
|
|
3517
3517
|
"data-turbolinks": false,
|
|
3518
|
-
className: styles$
|
|
3518
|
+
className: styles$4["appmenu-list-a"],
|
|
3519
3519
|
href: pcoUrl$1(props.env)("accounts") + getAppsSwitchProductPath(name)
|
|
3520
3520
|
}, /*#__PURE__*/React.createElement(UserMenuAppLockup, {
|
|
3521
3521
|
appName: name
|
|
3522
3522
|
}))))), accountsProduct && (/*#__PURE__*/React.createElement("li", {
|
|
3523
|
-
className: styles$
|
|
3523
|
+
className: styles$4["appmenu-list-li"]
|
|
3524
3524
|
}, /*#__PURE__*/React.createElement(AccountSettingsLink, {
|
|
3525
3525
|
env: props.env
|
|
3526
3526
|
}))))))))
|
|
3527
3527
|
}), /*#__PURE__*/React.createElement("button", {
|
|
3528
3528
|
type: "button",
|
|
3529
|
-
className: classnames(styles$
|
|
3530
|
-
[styles$
|
|
3529
|
+
className: classnames(styles$4["current-route"], {
|
|
3530
|
+
[styles$4["is-active"]]: routesMenuVisible
|
|
3531
3531
|
}),
|
|
3532
3532
|
onClick: props.routes.length > 0 ? () => {
|
|
3533
3533
|
setProductSwitcherVisible(false);
|
|
@@ -3535,7 +3535,7 @@ true;
|
|
|
3535
3535
|
} : null
|
|
3536
3536
|
}, /*#__PURE__*/React.createElement(CurrentRouteComponent, null, capitalize(currentRouteText)), props.routes.length > 0 && /*#__PURE__*/React.createElement(DisclosureChevronIcon, null)), /*#__PURE__*/React.createElement("button", {
|
|
3537
3537
|
type: "button",
|
|
3538
|
-
className: styles$
|
|
3538
|
+
className: styles$4["profile-button"],
|
|
3539
3539
|
onClick: () => {
|
|
3540
3540
|
var _a, _b;
|
|
3541
3541
|
props.requestConnectedPeopleFetch();
|
|
@@ -3551,7 +3551,7 @@ true;
|
|
|
3551
3551
|
className,
|
|
3552
3552
|
...props
|
|
3553
3553
|
}) => (/*#__PURE__*/React.createElement("a", {
|
|
3554
|
-
className: classnames(styles$
|
|
3554
|
+
className: classnames(styles$4["route"], className, active && styles$4["is-active"]),
|
|
3555
3555
|
...props
|
|
3556
3556
|
}));
|
|
3557
3557
|
|
|
@@ -3690,7 +3690,7 @@ true;
|
|
|
3690
3690
|
id: "topbar"
|
|
3691
3691
|
};
|
|
3692
3692
|
|
|
3693
|
-
var styles$
|
|
3693
|
+
var styles$3 = {"drawer-wrap":"drawer-wrap-J0rSL","is-visible":"is-visible-KTME8","drawer":"drawer-j7f4l"};
|
|
3694
3694
|
|
|
3695
3695
|
function Drawer({
|
|
3696
3696
|
children,
|
|
@@ -3698,7 +3698,7 @@ true;
|
|
|
3698
3698
|
}) {
|
|
3699
3699
|
return /*#__PURE__*/React.createElement("div", {
|
|
3700
3700
|
id: id,
|
|
3701
|
-
className: styles$
|
|
3701
|
+
className: styles$3["drawer"]
|
|
3702
3702
|
}, children);
|
|
3703
3703
|
}
|
|
3704
3704
|
function DrawerWrap({
|
|
@@ -3708,7 +3708,7 @@ true;
|
|
|
3708
3708
|
...props
|
|
3709
3709
|
}) {
|
|
3710
3710
|
return /*#__PURE__*/React.createElement("div", {
|
|
3711
|
-
className: classnames(styles$
|
|
3711
|
+
className: classnames(styles$3["drawer-wrap"], className, isVisible && styles$3["is-visible"]),
|
|
3712
3712
|
...props
|
|
3713
3713
|
}, children);
|
|
3714
3714
|
}
|
|
@@ -3892,7 +3892,7 @@ true;
|
|
|
3892
3892
|
}));
|
|
3893
3893
|
};
|
|
3894
3894
|
|
|
3895
|
-
var styles$
|
|
3895
|
+
var styles$2 = {"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"};
|
|
3896
3896
|
|
|
3897
3897
|
const COLOR_MODES = [{
|
|
3898
3898
|
label: "Light",
|
|
@@ -3912,11 +3912,11 @@ true;
|
|
|
3912
3912
|
const updateStore = useUpdateStore();
|
|
3913
3913
|
const [counter] = React.useState(() => COLOR_MODE_INSTANCE_COUNTER++);
|
|
3914
3914
|
return /*#__PURE__*/React.createElement("fieldset", {
|
|
3915
|
-
className: styles$
|
|
3915
|
+
className: styles$2["color-mode-switcher"]
|
|
3916
3916
|
}, /*#__PURE__*/React.createElement("legend", {
|
|
3917
|
-
className: styles$
|
|
3917
|
+
className: styles$2["color-mode-switcher-label"]
|
|
3918
3918
|
}, "Appearance", " "), /*#__PURE__*/React.createElement("div", {
|
|
3919
|
-
className: styles$
|
|
3919
|
+
className: styles$2["color-mode-switcher-modes"]
|
|
3920
3920
|
}, COLOR_MODES.map(({
|
|
3921
3921
|
value,
|
|
3922
3922
|
label
|
|
@@ -4187,20 +4187,67 @@ true;
|
|
|
4187
4187
|
...overrides
|
|
4188
4188
|
});
|
|
4189
4189
|
|
|
4190
|
-
var styles = {"toolbar":"toolbar-KHJR5","toolbar-button":"toolbar-button-Ye4h5","is-current":"is-current-DZK47","toolbar-button--avatar":"toolbar-button--avatar-5FUik","toolbar-button--home":"toolbar-button--home-Pthd0"};
|
|
4190
|
+
var styles$1 = {"toolbar":"toolbar-KHJR5","toolbar-button":"toolbar-button-Ye4h5","is-current":"is-current-DZK47","toolbar-button--avatar":"toolbar-button--avatar-5FUik","toolbar-button--home":"toolbar-button--home-Pthd0"};
|
|
4191
4191
|
|
|
4192
4192
|
const pcoUrl = pcoUrl$1;
|
|
4193
4193
|
|
|
4194
|
-
|
|
4195
|
-
|
|
4196
|
-
|
|
4197
|
-
|
|
4198
|
-
|
|
4199
|
-
|
|
4200
|
-
|
|
4201
|
-
|
|
4202
|
-
|
|
4203
|
-
|
|
4194
|
+
var styles = {"banner":"banner-YfQ37","content":"content-lNjWf","icon":"icon-abz7q","iconShape":"iconShape-6uyot","iconWand":"iconWand-yEhh4","text":"text--Vlhl","title":"title-zOEOR","subtitle":"subtitle-ufLnk","chevron":"chevron-oOUA-"};
|
|
4195
|
+
|
|
4196
|
+
function AskAIBanner({
|
|
4197
|
+
onClick
|
|
4198
|
+
}) {
|
|
4199
|
+
return /*#__PURE__*/React.createElement("button", {
|
|
4200
|
+
className: styles.banner,
|
|
4201
|
+
onClick: () => onClick(),
|
|
4202
|
+
type: "button"
|
|
4203
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
4204
|
+
className: styles.content
|
|
4205
|
+
}, /*#__PURE__*/React.createElement(AskAIIcon, null), /*#__PURE__*/React.createElement("span", {
|
|
4206
|
+
className: styles.text
|
|
4207
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
4208
|
+
className: styles.title
|
|
4209
|
+
}, "Ask AI"), /*#__PURE__*/React.createElement("span", {
|
|
4210
|
+
className: styles.subtitle
|
|
4211
|
+
}, "Support answers tailored to you"))), /*#__PURE__*/React.createElement(tapestryReact.Icon, {
|
|
4212
|
+
className: styles.chevron,
|
|
4213
|
+
name: "general.rightChevron",
|
|
4214
|
+
size: "16px"
|
|
4215
|
+
}));
|
|
4216
|
+
}
|
|
4217
|
+
const GRADIENT_ID = "ask-ai-banner-icon-gradient";
|
|
4218
|
+
function AskAIIcon() {
|
|
4219
|
+
return /*#__PURE__*/React.createElement("span", {
|
|
4220
|
+
className: styles.icon
|
|
4221
|
+
}, /*#__PURE__*/React.createElement("svg", {
|
|
4222
|
+
className: styles.iconShape,
|
|
4223
|
+
viewBox: "0 0 32 32",
|
|
4224
|
+
"aria-hidden": "true"
|
|
4225
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
4226
|
+
d: "M15.9994 0C3.19766 0 0 3.20025 0 16C0 28.7998 3.19766 32 15.9994 32C28.8011 32 32 28.8022 32 16C32 3.19779 28.7999 0 15.9994 0Z",
|
|
4227
|
+
fill: `url(#${GRADIENT_ID})`
|
|
4228
|
+
}), /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("linearGradient", {
|
|
4229
|
+
id: GRADIENT_ID,
|
|
4230
|
+
x1: "0",
|
|
4231
|
+
y1: "0",
|
|
4232
|
+
x2: "38.0356",
|
|
4233
|
+
y2: "21.1413",
|
|
4234
|
+
gradientUnits: "userSpaceOnUse"
|
|
4235
|
+
}, /*#__PURE__*/React.createElement("stop", {
|
|
4236
|
+
stopColor: "#49D4BB"
|
|
4237
|
+
}), /*#__PURE__*/React.createElement("stop", {
|
|
4238
|
+
offset: "0.352694",
|
|
4239
|
+
stopColor: "#7CA8FE"
|
|
4240
|
+
}), /*#__PURE__*/React.createElement("stop", {
|
|
4241
|
+
offset: "0.656242",
|
|
4242
|
+
stopColor: "#B883E2"
|
|
4243
|
+
}), /*#__PURE__*/React.createElement("stop", {
|
|
4244
|
+
offset: "1",
|
|
4245
|
+
stopColor: "#F28B54"
|
|
4246
|
+
})))), /*#__PURE__*/React.createElement(tapestryReact.Icon, {
|
|
4247
|
+
className: styles.iconWand,
|
|
4248
|
+
name: "general.magicWand",
|
|
4249
|
+
size: "18px"
|
|
4250
|
+
}));
|
|
4204
4251
|
}
|
|
4205
4252
|
|
|
4206
4253
|
// The article heading lives in the deepest populated hierarchy level (lvl0 is
|
|
@@ -4354,6 +4401,74 @@ true;
|
|
|
4354
4401
|
}));
|
|
4355
4402
|
};
|
|
4356
4403
|
|
|
4404
|
+
// The route rides in the iframe URL fragment (`…/topbar#conversations/abc`),
|
|
4405
|
+
// not the path, so updating it is a same-document navigation that doesn't
|
|
4406
|
+
// reload the iframe, but also lets the route survive a forced reload (e.g.
|
|
4407
|
+
// Turbo re-parenting the topbar).
|
|
4408
|
+
function buildPicobotSrc(origin, path) {
|
|
4409
|
+
const [rawPath, queryPart] = path.replace(/^\/+/, "").split("?", 2);
|
|
4410
|
+
const safePath = rawPath.split("/").filter(segment => segment && segment !== "." && segment !== "..").join("/");
|
|
4411
|
+
const fragment = queryPart !== undefined ? `${safePath}?${queryPart}` : safePath;
|
|
4412
|
+
const base = new URL("topbar", origin).toString();
|
|
4413
|
+
return fragment ? `${base}#${fragment}` : base;
|
|
4414
|
+
}
|
|
4415
|
+
|
|
4416
|
+
function createPicobotIframe(picobotOrigin) {
|
|
4417
|
+
return /*#__PURE__*/React.forwardRef(function PicobotIframe({
|
|
4418
|
+
currentPath: iframePath,
|
|
4419
|
+
onChangePath: onIframeChangePath,
|
|
4420
|
+
onMessage
|
|
4421
|
+
}, ref) {
|
|
4422
|
+
const iframeRef = React.useRef(null);
|
|
4423
|
+
// Keep the fragment in sync in both directions—external opens (deeplink /
|
|
4424
|
+
// Contact support) and picobot's own NEW_ROUTE_RENDERED reports—so it
|
|
4425
|
+
// always reflects the live conversation. See buildPicobotSrc.
|
|
4426
|
+
const [loadedPath, setLoadedPath] = React.useState(iframePath || "");
|
|
4427
|
+
React.useEffect(function subscribeToGuestMessages() {
|
|
4428
|
+
if (!onIframeChangePath && !onMessage) return undefined;
|
|
4429
|
+
function handleGuestMessage(e) {
|
|
4430
|
+
var _a, _b;
|
|
4431
|
+
if (e.origin !== picobotOrigin) return;
|
|
4432
|
+
if (!e.source || !iframeRef.current) return;
|
|
4433
|
+
if (e.source !== iframeRef.current.contentWindow) return;
|
|
4434
|
+
if (((_a = e.data) === null || _a === void 0 ? void 0 : _a.type) === "NEW_ROUTE_RENDERED" && onIframeChangePath) {
|
|
4435
|
+
const reportedPath = String((_b = e.data.payload) !== null && _b !== void 0 ? _b : "");
|
|
4436
|
+
setLoadedPath(reportedPath);
|
|
4437
|
+
onIframeChangePath(reportedPath);
|
|
4438
|
+
}
|
|
4439
|
+
if (onMessage) onMessage(e.data);
|
|
4440
|
+
}
|
|
4441
|
+
window.addEventListener("message", handleGuestMessage);
|
|
4442
|
+
return () => window.removeEventListener("message", handleGuestMessage);
|
|
4443
|
+
}, [onIframeChangePath, onMessage]);
|
|
4444
|
+
React.useEffect(function syncLoadedPathFromProp() {
|
|
4445
|
+
setLoadedPath(iframePath || "");
|
|
4446
|
+
}, [iframePath]);
|
|
4447
|
+
// A one-way channel for sending messages to picobot. Topbar just
|
|
4448
|
+
// forwards the envelope to the iframe and holds no message semantics of
|
|
4449
|
+
// its own—the consumer decides what to send and when.
|
|
4450
|
+
React.useImperativeHandle(ref, () => ({
|
|
4451
|
+
postMessage(message) {
|
|
4452
|
+
var _a, _b;
|
|
4453
|
+
(_b = (_a = iframeRef.current) === null || _a === void 0 ? void 0 : _a.contentWindow) === null || _b === void 0 ? void 0 : _b.postMessage(message, picobotOrigin);
|
|
4454
|
+
}
|
|
4455
|
+
}), []);
|
|
4456
|
+
const iframeSrc = buildPicobotSrc(picobotOrigin, loadedPath);
|
|
4457
|
+
return /*#__PURE__*/React.createElement("iframe", {
|
|
4458
|
+
ref: iframeRef,
|
|
4459
|
+
src: iframeSrc,
|
|
4460
|
+
allow: "clipboard-write",
|
|
4461
|
+
style: {
|
|
4462
|
+
border: 0,
|
|
4463
|
+
flex: 1,
|
|
4464
|
+
height: "100%",
|
|
4465
|
+
width: "100%"
|
|
4466
|
+
},
|
|
4467
|
+
title: "Picobot"
|
|
4468
|
+
});
|
|
4469
|
+
});
|
|
4470
|
+
}
|
|
4471
|
+
|
|
4357
4472
|
const {
|
|
4358
4473
|
LoadingIndicator: LoadingIndicator$1,
|
|
4359
4474
|
StackView: StackView$1
|
|
@@ -4379,52 +4494,7 @@ true;
|
|
|
4379
4494
|
helpdeskConfig,
|
|
4380
4495
|
onChangePath
|
|
4381
4496
|
}) {
|
|
4382
|
-
const PicobotIframe = React.useMemo(() =>
|
|
4383
|
-
const picobotOrigin = pcoUrl(env)("picobot");
|
|
4384
|
-
return function PicobotIframe({
|
|
4385
|
-
currentPath: iframePath,
|
|
4386
|
-
onChangePath: onIframeChangePath,
|
|
4387
|
-
onMessage
|
|
4388
|
-
}) {
|
|
4389
|
-
const ref = React.useRef(null);
|
|
4390
|
-
// Keep the fragment in sync in both directions—external opens (deeplink /
|
|
4391
|
-
// Contact support) and picobot's own NEW_ROUTE_RENDERED reports—so it
|
|
4392
|
-
// always reflects the live conversation. See buildPicobotSrc.
|
|
4393
|
-
const [loadedPath, setLoadedPath] = React.useState(iframePath || "");
|
|
4394
|
-
React.useEffect(() => {
|
|
4395
|
-
if (!onIframeChangePath && !onMessage) return undefined;
|
|
4396
|
-
const handler = e => {
|
|
4397
|
-
var _a, _b;
|
|
4398
|
-
if (e.origin !== picobotOrigin) return;
|
|
4399
|
-
if (!e.source || !ref.current) return;
|
|
4400
|
-
if (e.source !== ref.current.contentWindow) return;
|
|
4401
|
-
if (((_a = e.data) === null || _a === void 0 ? void 0 : _a.type) === "NEW_ROUTE_RENDERED" && onIframeChangePath) {
|
|
4402
|
-
const reportedPath = String((_b = e.data.payload) !== null && _b !== void 0 ? _b : "");
|
|
4403
|
-
setLoadedPath(reportedPath);
|
|
4404
|
-
onIframeChangePath(reportedPath);
|
|
4405
|
-
}
|
|
4406
|
-
if (onMessage) onMessage(e.data);
|
|
4407
|
-
};
|
|
4408
|
-
window.addEventListener("message", handler);
|
|
4409
|
-
return () => window.removeEventListener("message", handler);
|
|
4410
|
-
}, [onIframeChangePath, onMessage]);
|
|
4411
|
-
React.useEffect(() => {
|
|
4412
|
-
setLoadedPath(iframePath || "");
|
|
4413
|
-
}, [iframePath]);
|
|
4414
|
-
const iframeSrc = buildPicobotSrc(picobotOrigin, loadedPath);
|
|
4415
|
-
return /*#__PURE__*/React.createElement("iframe", {
|
|
4416
|
-
ref: ref,
|
|
4417
|
-
src: iframeSrc,
|
|
4418
|
-
style: {
|
|
4419
|
-
border: 0,
|
|
4420
|
-
flex: 1,
|
|
4421
|
-
height: "100%",
|
|
4422
|
-
width: "100%"
|
|
4423
|
-
},
|
|
4424
|
-
title: "Picobot"
|
|
4425
|
-
});
|
|
4426
|
-
};
|
|
4427
|
-
}, [env]);
|
|
4497
|
+
const PicobotIframe = React.useMemo(() => createPicobotIframe(pcoUrl(env)("picobot")), [env]);
|
|
4428
4498
|
return /*#__PURE__*/React.createElement(addOns.UiExtensionFirstPartyComponent, {
|
|
4429
4499
|
grow: 1,
|
|
4430
4500
|
display: "flex",
|
|
@@ -4439,6 +4509,15 @@ true;
|
|
|
4439
4509
|
spacing: 1
|
|
4440
4510
|
}, /*#__PURE__*/React.createElement(DrawerHeading, null, "Help and support"), /*#__PURE__*/React.createElement(LoadingIndicator$1, null)))),
|
|
4441
4511
|
additionalComponents: {
|
|
4512
|
+
AskAIBanner: {
|
|
4513
|
+
component: AskAIBanner,
|
|
4514
|
+
properties: {
|
|
4515
|
+
onClick: {
|
|
4516
|
+
event: false,
|
|
4517
|
+
type: Function
|
|
4518
|
+
}
|
|
4519
|
+
}
|
|
4520
|
+
},
|
|
4442
4521
|
CalendlyWidget: {
|
|
4443
4522
|
component: CalendlyWidget,
|
|
4444
4523
|
properties: {
|
|
@@ -4475,6 +4554,7 @@ true;
|
|
|
4475
4554
|
DrawerHeading,
|
|
4476
4555
|
PicobotIframe: {
|
|
4477
4556
|
component: PicobotIframe,
|
|
4557
|
+
methods: ["postMessage"],
|
|
4478
4558
|
properties: {
|
|
4479
4559
|
currentPath: {
|
|
4480
4560
|
attribute: false
|
|
@@ -5719,18 +5799,18 @@ true;
|
|
|
5719
5799
|
return /*#__PURE__*/React.createElement(tapestryReact.ThemeProvider, {
|
|
5720
5800
|
theme: topbarTheme
|
|
5721
5801
|
}, /*#__PURE__*/React.createElement(addOns.UiExtensionDataContext, null, /*#__PURE__*/React.createElement("div", {
|
|
5722
|
-
className: styles["toolbar"],
|
|
5802
|
+
className: styles$1["toolbar"],
|
|
5723
5803
|
"data-pendo": "toolbar-profile-support-wrapper"
|
|
5724
5804
|
}, /*#__PURE__*/React.createElement(ToolbarButton, {
|
|
5725
5805
|
"aria-label": `Open ${userName}’s profile drawer`,
|
|
5726
5806
|
onClick: () => toggleDrawer(Profile),
|
|
5727
5807
|
"data-pendo": "toolbar-profile",
|
|
5728
|
-
className: styles["toolbar-button--avatar"]
|
|
5808
|
+
className: styles$1["toolbar-button--avatar"]
|
|
5729
5809
|
}, /*#__PURE__*/React.createElement(Avatar, {
|
|
5730
5810
|
env: env,
|
|
5731
5811
|
url: userAvatarPath
|
|
5732
5812
|
})), /*#__PURE__*/React.createElement(ToolbarButton, {
|
|
5733
|
-
className: styles["toolbar-button--home"],
|
|
5813
|
+
className: styles$1["toolbar-button--home"],
|
|
5734
5814
|
onClick: () => closeDrawer()
|
|
5735
5815
|
}, /*#__PURE__*/React.createElement(tapestryReact.Icon, {
|
|
5736
5816
|
name: "toolbar.planningCenter",
|
|
@@ -5768,7 +5848,7 @@ true;
|
|
|
5768
5848
|
}) => {
|
|
5769
5849
|
return /*#__PURE__*/React.createElement("button", {
|
|
5770
5850
|
type: "button",
|
|
5771
|
-
className: classnames(styles["toolbar-button"], className, current && styles["is-current"]),
|
|
5851
|
+
className: classnames(styles$1["toolbar-button"], className, current && styles$1["is-current"]),
|
|
5772
5852
|
onClick: onClick,
|
|
5773
5853
|
"data-toolbar-link": "true",
|
|
5774
5854
|
...restProps
|