@planningcenter/topbar 11.2.0 → 11.2.1-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/topbar.css CHANGED
@@ -81,6 +81,10 @@ Caused by products overriding .topbar-wrap’s z-index.
81
81
  padding-bottom: var(--app-content-inset-bottom, unset);
82
82
  }
83
83
 
84
+ :root[data-app-context=native] .content-scroll footer[role=contentinfo] {
85
+ display: none;
86
+ }
87
+
84
88
  @media screen and (min-width: 600px) {
85
89
  :root[data-app-context=native] {
86
90
  --toolbar-width: 0px;
@@ -1 +1 @@
1
- {"version":3,"sources":["topbar.scss","styles.module.css","unbutton.module.css","apps_button.module.scss","apps_menu.module.css","popup.module.css","user_menu.module.css","avatar.module.css","drawer.module.css","indicator_dot.module.css","color_mode_switcher.module.scss"],"names":[],"mappings":"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","file":"topbar.css","sourcesContent":["@charset \"UTF-8\";\n:root {\n --topbar-height: 56px;\n --topbar-slight-transition: 120ms ease-in;\n --topbar-slight-transition-background: background-color var(--topbar-slight-transition);\n --topbar-scrollbar-color: var(--t-fill-color-transparency-dark-030) transparent;\n --topbar-scrollbar-width: thin;\n --topbar-nav-link-font-size: var(--t-font-size-sm);\n --topbar-nav-link-font-color: var(--t-text-color-headline);\n --topbar-nav-link-height: var(--t-container-size-md);\n --topbar-nav-link-background-color: transparent;\n --topbar-nav-link-padding-x: 12px;\n --topbar-nav-link-border-color: transparent;\n --topbar-nav-link-border-radius: 999px;\n --topbar-nav-link-transition: var(--topbar-slight-transition-background);\n --topbar-nav-link-background-color-hover: var(--t-fill-color-transparency-light-040);\n --topbar-nav-link-background-color-active: var(--t-fill-color-transparency-light-060);\n --topbar-nav-link-border-color-active: var(--t-fill-color-transparency-light-030);\n --toolbar-width: 64px;\n --toolbar-inner-width: 48px;\n --toolbar-drawer-width: 360px;\n --toolbar-navbar-height: 56px;\n --content-wrap-border-color: hsla(0, 0%, 0%, 0.08);\n --content-wrap-shadow-dimensions: 0 -1px 0 0;\n}\n\n@media (min-width: 600px) {\n :root {\n --topbar-height: 64px;\n --content-wrap-shadow-dimensions: 0 0 0 1px;\n }\n}\n:root[data-color-mode=dark] {\n --topbar-nav-link-background-color-hover: var(--t-fill-color-transparency-light-020);\n --topbar-nav-link-background-color-active: var(--t-fill-color-transparency-light-030);\n --topbar-nav-link-border-color-active: var(--t-fill-color-transparency-light-010);\n --content-wrap-border-color: hsla(0, 0%, 100%, 0.04);\n}\n\n@media (prefers-color-scheme: dark) {\n :root[data-color-mode=system] {\n --topbar-nav-link-background-color-hover: var(--t-fill-color-transparency-light-020);\n --topbar-nav-link-background-color-active: var(--t-fill-color-transparency-light-030);\n --topbar-nav-link-border-color-active: var(--t-fill-color-transparency-light-010);\n --content-wrap-border-color: hsla(0, 0%, 100%, 0.04);\n }\n}\n/*\nFix for Safari bug:\nOn mobile breakpoints, when the app switcher or user profile menu are open,\nprevent .top-wrap from covering them.\n\nCaused by products overriding .topbar-wrap’s z-index.\n*/\n.page-wrap:has(div[class^=appmenu-layer][style*=\"display: block\"]) .topbar-wrap {\n z-index: initial !important;\n}\n\n.hide-scrollbar {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n}\n\n.hide-scrollbar::-webkit-scrollbar {\n display: none; /* Chrome, Safari, and Opera */\n}\n\n:root[data-app-context=native] {\n --toolbar-navbar-height: 0;\n}\n\n:root[data-app-context=native] .topbar-wrap {\n display: none;\n}\n\n:root[data-app-context=native] .toolbar-wrap {\n overflow: hidden;\n}\n\n:root[data-app-context=native] .content-wrap {\n padding-bottom: var(--app-content-inset-bottom, unset);\n}\n\n@media screen and (min-width: 600px) {\n :root[data-app-context=native] {\n --toolbar-width: 0px;\n --topbar-height: 0px;\n --toolbar-drawer-width: 48vw;\n }\n :root[data-app-context=native] .content-wrap {\n margin: 0 !important;\n border-radius: 0;\n }\n :root[data-app-context=native] .toolbar-wrap {\n overflow: visible;\n }\n}",".toolbar {\n display: flex;\n width: 100vw;\n height: var(--toolbar-navbar-height);\n padding: var(--t-spacing-1);\n padding-top: calc(var(--t-spacing-1) - 1px);\n gap: var(--t-spacing-1);\n}\n\n.toolbar-button {\n font: inherit;\n color: var(--t-fill-color-transparency-dark-060);\n background-color: transparent;\n border: var(--t-border-width) solid transparent;\n border-radius: var(--t-border-radius-lg);\n flex-grow: 1;\n transition: var(--topbar-slight-transition-background);\n cursor: pointer;\n appearance: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.toolbar-button:hover {\n background-color: var(--t-fill-color-button-interaction-ghost-hover);\n}\n.toolbar-button:active,\n.toolbar-button.is-current {\n color: var(--t-fill-color-transparency-dark-080);\n background-color: var(--t-fill-color-button-interaction-ghost-active);\n}\n\n.toolbar-button--avatar {\n display: none;\n}\n.toolbar-button--avatar > div {\n margin-left: 0;\n width: var(--t-container-size-md);\n height: auto;\n aspect-ratio: 1 / 1;\n}\n\n.toolbar-button--home {\n color: hsl(221, 93%, 55%);\n}\n\n@media (min-width: 600px) {\n .toolbar {\n width: var(--toolbar-width);\n height: auto;\n padding-top: var(--t-spacing-1);\n flex-direction: column;\n }\n\n .toolbar-button {\n aspect-ratio: 1 / 1;\n }\n .toolbar-button:hover {\n background-color: var(--t-fill-color-transparency-light-040);\n }\n .toolbar-button:active,\n .toolbar-button.is-current {\n color: var(--t-fill-color-transparency-dark-080);\n background-color: var(--t-fill-color-transparency-light-060);\n border-color: var(--t-fill-color-transparency-light-030);\n }\n\n .toolbar-button--avatar {\n display: inline-flex;\n }\n\n .toolbar-button--home {\n display: none;\n }\n}\n",".unbutton {\n font-family: inherit;\n appearance: none;\n background-color: transparent;\n border: none;\n cursor: pointer;\n display: inline-block;\n outline: 0;\n padding: 0;\n}\n",".button {\n color: var(--t-text-color);\n padding-left: var(--t-spacing-1);\n padding-right: var(--t-spacing-1);\n height: 100%;\n white-space: nowrap;\n display: flex;\n align-items: center;\n gap: var(--t-spacing-1);\n transition: var(--topbar-slight-transition-background);\n --_svg-display: none;\n}\n.button svg[data-logo=mono-app-text],\n.button svg[class^=chevron] {\n display: var(--_svg-display);\n}\n@media (min-width: 720px) {\n .button {\n --_svg-display: block;\n padding-left: var(--t-spacing-2);\n padding-right: var(--t-spacing-2);\n }\n .button svg[data-logo=color-app-icon] {\n width: 24px;\n height: 24px;\n }\n}\n\n.button-accounts {\n color: var(--t-text-color);\n font-size: var(--t-font-size-sm);\n font-weight: var(--t-font-weight-medium);\n margin-left: var(--t-spacing-fourth);\n}\n\n.chevron {\n border-radius: 100%;\n padding: var(--t-spacing-fourth);\n display: block;\n transition: var(--topbar-slight-transition-background);\n transition-property: background-color, transform;\n}\n\n.chevron polygon {\n transform: translateY(0.5px);\n}\n\n.button:hover .chevron,\n.button.is-expanded .chevron {\n background-color: var(--t-fill-color-transparency-light-050);\n}\n\n.button.is-expanded .chevron {\n transform: rotate(180deg);\n}",".popup {\n top: calc(var(--topbar-height) - var(--t-spacing-1));\n left: var(--t-spacing-2);\n min-width: 180px;\n max-height: calc(100% - var(--topbar-height) - var(--t-spacing-3));\n}\n",".popup-root {\n display: flex;\n align-self: flex-end;\n}\n\n.popup {\n background: var(--t-surface-color-card);\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05), 0 4px 12px 2px rgba(0, 0, 0, 0.16);\n border-radius: var(--t-border-radius-lg);\n position: absolute;\n overflow: auto;\n scrollbar-color: var(--topbar-scrollbar-color);\n scrollbar-width: var(--topbar-scrollbar-width);\n opacity: 0;\n visibility: hidden;\n transition: all 120ms ease-in;\n}\n\n.popup.is-visible {\n opacity: 1;\n transition: none;\n visibility: visible;\n}\n",".popup {\n color: var(--t-text-color);\n min-width: 242px;\n max-width: 320px;\n margin-top: calc(var(--t-spacing-1) * -1);\n right: calc(var(--t-spacing-1) + 1px); /* 1px is to account for .product-wrap { padding-right: 1px } */\n max-height: calc(100% - var(--topbar-height) - var(--t-spacing-3));\n}\n\n.trigger-wrap {\n margin-left: var(--t-spacing-1);\n position: relative;\n white-space: nowrap;\n cursor: pointer;\n}\n\n.trigger {\n font-size: var(--topbar-nav-link-font-size);\n color: var(--topbar-nav-link-font-color);\n height: var(--topbar-nav-link-height);\n background-color: var(--topbar-nav-link-background-color-active);\n padding: 0 var(--topbar-nav-link-padding-x);\n border: var(--t-border-width) solid var(--topbar-nav-link-border-color-active);\n border-radius: var(--topbar-nav-link-border-radius);\n min-width: var(--t-container-size-md);\n transition: var(--topbar-nav-link-transition);\n display: flex;\n align-items: center;\n justify-content: center;\n outline: 0;\n appearance: none;\n cursor: pointer;\n}\n\n.trigger svg {\n transition: transform var(--topbar-slight-transition);\n /* Negative margin ensures button is a circle when orgname isn’t visible */\n margin-left: calc(var(--t-spacing-1) * -1);\n margin-right: calc(var(--t-spacing-1) * -1);\n}\n\n.trigger.is-visible svg {\n transform: rotate(180deg);\n}\n\n.trigger-orgname {\n max-width: 240px;\n margin-right: var(--t-spacing-fourth);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.trigger-orgname + svg {\n color: var(--t-fill-color-transparency-dark-050);\n /* Correct margin for when orgname is visible */\n margin-left: 0;\n margin-right: calc(var(--t-spacing-fourth) * -1);\n}\n",".avatar {\n background-color: var(--t-fill-color-transparency-light-020);\n background-position: center;\n background-size: cover;\n border-radius: 50%;\n height: var(--t-element-size-2xl);\n width: var(--t-element-size-2xl);\n margin-left: var(--t-spacing-half);\n}\n",".drawer-wrap {\n width: 100%;\n background-color: var(--t-surface-color-card);\n\n display: none;\n position: fixed;\n top: 0;\n bottom: var(--toolbar-navbar-height);\n\n overflow: hidden;\n}\n.drawer-wrap.is-visible {\n display: block;\n}\n\n.drawer {\n display: flex;\n flex-direction: column;\n height: 100%;\n\n overflow: auto;\n scrollbar-color: var(--t-fill-color-transparency-dark-030);\n scrollbar-width: var(--topbar-scrollbar-width);\n}\n\n@media (min-width: 600px) {\n .drawer-wrap {\n width: var(--toolbar-drawer-width);\n border-radius: 6px; /* TODO: Once a token exists, replace with 6px equivalent \n or inset associated with to --t-border-radius-lg */\n box-shadow: 0 0 0 1px var(--content-wrap-border-color), 0 4px 12px 2px rgba(0, 0, 0, 0.16);\n\n display: block;\n position: absolute;\n bottom: var(--t-spacing-2);\n right: calc(var(--toolbar-drawer-width) * -1);\n top: calc(var(--topbar-height) + var(--t-spacing-1));\n\n opacity: 0;\n transform: translateX(var(--t-spacing-1));\n transition-property: opacity, transform, right;\n transition-duration: 100ms;\n transition-delay: 0s, 0s, 100ms;\n transition-timing-function: ease-in-out;\n }\n .drawer-wrap.is-visible {\n right: calc(var(--toolbar-width) + var(--t-spacing-1) + 1px);\n opacity: 1;\n transform: translateX(0);\n\n transition-property: opacity, transform;\n transition-delay: 0s;\n }\n}\n",".indicator-dot {\n width: 12px;\n height: 12px;\n background: radial-gradient(#33adff 50%, transparent 50%);\n background-color: #33adff;\n box-shadow: inset 0 0 0 2px #b1bfda;\n border-radius: 50%;\n position: absolute;\n z-index: 6;\n pointer-events: none;\n}\n\n.indicator-dot.is-active {\n width: 10px;\n height: 10px;\n box-shadow: inset 0 0 0 2px var(--t-fill-color-neutral-100);\n transform: translateX(-1.5px) translateY(1.5px);\n}\n",".color-mode-switcher {\n color: var(--t-text-color); /* Needed to override .tapestry-react-reset. This is the dumbest thing to have to do */\n border: 0;\n padding: 0;\n}\n\n.color-mode-switcher-label {\n font-weight: var(--t-font-weight-semibold);\n display: inline-block;\n margin-bottom: var(--t-spacing-1);\n}\n\n.color-mode-switcher-label-beta {\n font-size: var(--t-font-size-xs);\n font-weight: var(--t-font-weight-semibold);\n color: var(--t-text-color-status-neutral);\n background-color: var(--t-fill-color-status-neutral-ghost);\n border-radius: var(--t-border-radius-sm);\n padding: 0 var(--t-spacing-1);\n line-height: var(--t-element-size-sm);\n vertical-align: middle;\n text-transform: uppercase;\n}\n\n.color-mode-switcher-modes {\n padding: var(--t-spacing-half);\n border: var(--t-border-width) solid var(--t-border-color);\n border-radius: var(--t-border-radius-md);\n display: flex;\n gap: var(--t-spacing-half);\n container-type: inline-size;\n}\n.color-mode-switcher-modes input[type=radio] {\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n.color-mode-switcher-modes label {\n border-radius: var(--t-border-radius-sm);\n min-height: var(--t-element-size-xl);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n user-select: none;\n margin: 0;\n position: relative;\n}\n.color-mode-switcher-modes label:hover {\n background: var(--t-fill-color-button-neutral-ghost-hover);\n}\n.color-mode-switcher-modes label:has(input:focus-visible) {\n outline: auto;\n}\n.color-mode-switcher-modes svg {\n display: none;\n margin-right: var(--t-spacing-half);\n}\n@container (width >= 256px) {\n .color-mode-switcher-modes svg {\n display: block;\n }\n}\n.color-mode-switcher-modes svg path {\n stroke: var(--t-icon-color-dim);\n}\n.color-mode-switcher-modes label,\n.color-mode-switcher-modes svg path {\n transition-property: color, background-color, stroke;\n transition-duration: 0.1s;\n transition-timing-function: linear;\n}\n.color-mode-switcher-modes label:has(input:checked) {\n color: var(--t-text-color-status-info);\n background-color: var(--t-fill-color-status-info-ghost);\n}\n.color-mode-switcher-modes label:has(input:checked) svg path {\n stroke: var(--t-icon-color-status-info);\n}"]}
1
+ {"version":3,"sources":["topbar.scss","styles.module.css","unbutton.module.css","apps_button.module.scss","apps_menu.module.css","popup.module.css","user_menu.module.css","avatar.module.css","drawer.module.css","indicator_dot.module.css","color_mode_switcher.module.scss"],"names":[],"mappings":"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","file":"topbar.css","sourcesContent":["@charset \"UTF-8\";\n:root {\n --topbar-height: 56px;\n --topbar-slight-transition: 120ms ease-in;\n --topbar-slight-transition-background: background-color var(--topbar-slight-transition);\n --topbar-scrollbar-color: var(--t-fill-color-transparency-dark-030) transparent;\n --topbar-scrollbar-width: thin;\n --topbar-nav-link-font-size: var(--t-font-size-sm);\n --topbar-nav-link-font-color: var(--t-text-color-headline);\n --topbar-nav-link-height: var(--t-container-size-md);\n --topbar-nav-link-background-color: transparent;\n --topbar-nav-link-padding-x: 12px;\n --topbar-nav-link-border-color: transparent;\n --topbar-nav-link-border-radius: 999px;\n --topbar-nav-link-transition: var(--topbar-slight-transition-background);\n --topbar-nav-link-background-color-hover: var(--t-fill-color-transparency-light-040);\n --topbar-nav-link-background-color-active: var(--t-fill-color-transparency-light-060);\n --topbar-nav-link-border-color-active: var(--t-fill-color-transparency-light-030);\n --toolbar-width: 64px;\n --toolbar-inner-width: 48px;\n --toolbar-drawer-width: 360px;\n --toolbar-navbar-height: 56px;\n --content-wrap-border-color: hsla(0, 0%, 0%, 0.08);\n --content-wrap-shadow-dimensions: 0 -1px 0 0;\n}\n\n@media (min-width: 600px) {\n :root {\n --topbar-height: 64px;\n --content-wrap-shadow-dimensions: 0 0 0 1px;\n }\n}\n:root[data-color-mode=dark] {\n --topbar-nav-link-background-color-hover: var(--t-fill-color-transparency-light-020);\n --topbar-nav-link-background-color-active: var(--t-fill-color-transparency-light-030);\n --topbar-nav-link-border-color-active: var(--t-fill-color-transparency-light-010);\n --content-wrap-border-color: hsla(0, 0%, 100%, 0.04);\n}\n\n@media (prefers-color-scheme: dark) {\n :root[data-color-mode=system] {\n --topbar-nav-link-background-color-hover: var(--t-fill-color-transparency-light-020);\n --topbar-nav-link-background-color-active: var(--t-fill-color-transparency-light-030);\n --topbar-nav-link-border-color-active: var(--t-fill-color-transparency-light-010);\n --content-wrap-border-color: hsla(0, 0%, 100%, 0.04);\n }\n}\n/*\nFix for Safari bug:\nOn mobile breakpoints, when the app switcher or user profile menu are open,\nprevent .top-wrap from covering them.\n\nCaused by products overriding .topbar-wrap’s z-index.\n*/\n.page-wrap:has(div[class^=appmenu-layer][style*=\"display: block\"]) .topbar-wrap {\n z-index: initial !important;\n}\n\n.hide-scrollbar {\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n}\n\n.hide-scrollbar::-webkit-scrollbar {\n display: none; /* Chrome, Safari, and Opera */\n}\n\n:root[data-app-context=native] {\n --toolbar-navbar-height: 0;\n}\n\n:root[data-app-context=native] .topbar-wrap {\n display: none;\n}\n\n:root[data-app-context=native] .toolbar-wrap {\n overflow: hidden;\n}\n\n:root[data-app-context=native] .content-wrap {\n padding-bottom: var(--app-content-inset-bottom, unset);\n}\n\n:root[data-app-context=native] .content-scroll footer[role=contentinfo] {\n display: none;\n}\n\n@media screen and (min-width: 600px) {\n :root[data-app-context=native] {\n --toolbar-width: 0px;\n --topbar-height: 0px;\n --toolbar-drawer-width: 48vw;\n }\n :root[data-app-context=native] .content-wrap {\n margin: 0 !important;\n border-radius: 0;\n }\n :root[data-app-context=native] .toolbar-wrap {\n overflow: visible;\n }\n}",".toolbar {\n display: flex;\n width: 100vw;\n height: var(--toolbar-navbar-height);\n padding: var(--t-spacing-1);\n padding-top: calc(var(--t-spacing-1) - 1px);\n gap: var(--t-spacing-1);\n}\n\n.toolbar-button {\n font: inherit;\n color: var(--t-fill-color-transparency-dark-060);\n background-color: transparent;\n border: var(--t-border-width) solid transparent;\n border-radius: var(--t-border-radius-lg);\n flex-grow: 1;\n transition: var(--topbar-slight-transition-background);\n cursor: pointer;\n appearance: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.toolbar-button:hover {\n background-color: var(--t-fill-color-button-interaction-ghost-hover);\n}\n.toolbar-button:active,\n.toolbar-button.is-current {\n color: var(--t-fill-color-transparency-dark-080);\n background-color: var(--t-fill-color-button-interaction-ghost-active);\n}\n\n.toolbar-button--avatar {\n display: none;\n}\n.toolbar-button--avatar > div {\n margin-left: 0;\n width: var(--t-container-size-md);\n height: auto;\n aspect-ratio: 1 / 1;\n}\n\n.toolbar-button--home {\n color: hsl(221, 93%, 55%);\n}\n\n@media (min-width: 600px) {\n .toolbar {\n width: var(--toolbar-width);\n height: auto;\n padding-top: var(--t-spacing-1);\n flex-direction: column;\n }\n\n .toolbar-button {\n aspect-ratio: 1 / 1;\n }\n .toolbar-button:hover {\n background-color: var(--t-fill-color-transparency-light-040);\n }\n .toolbar-button:active,\n .toolbar-button.is-current {\n color: var(--t-fill-color-transparency-dark-080);\n background-color: var(--t-fill-color-transparency-light-060);\n border-color: var(--t-fill-color-transparency-light-030);\n }\n\n .toolbar-button--avatar {\n display: inline-flex;\n }\n\n .toolbar-button--home {\n display: none;\n }\n}\n",".unbutton {\n font-family: inherit;\n appearance: none;\n background-color: transparent;\n border: none;\n cursor: pointer;\n display: inline-block;\n outline: 0;\n padding: 0;\n}\n",".button {\n color: var(--t-text-color);\n padding-left: var(--t-spacing-1);\n padding-right: var(--t-spacing-1);\n height: 100%;\n white-space: nowrap;\n display: flex;\n align-items: center;\n gap: var(--t-spacing-1);\n transition: var(--topbar-slight-transition-background);\n --_svg-display: none;\n}\n.button svg[data-logo=mono-app-text],\n.button svg[class^=chevron] {\n display: var(--_svg-display);\n}\n@media (min-width: 720px) {\n .button {\n --_svg-display: block;\n padding-left: var(--t-spacing-2);\n padding-right: var(--t-spacing-2);\n }\n .button svg[data-logo=color-app-icon] {\n width: 24px;\n height: 24px;\n }\n}\n\n.button-accounts {\n color: var(--t-text-color);\n font-size: var(--t-font-size-sm);\n font-weight: var(--t-font-weight-medium);\n margin-left: var(--t-spacing-fourth);\n}\n\n.chevron {\n border-radius: 100%;\n padding: var(--t-spacing-fourth);\n display: block;\n transition: var(--topbar-slight-transition-background);\n transition-property: background-color, transform;\n}\n\n.chevron polygon {\n transform: translateY(0.5px);\n}\n\n.button:hover .chevron,\n.button.is-expanded .chevron {\n background-color: var(--t-fill-color-transparency-light-050);\n}\n\n.button.is-expanded .chevron {\n transform: rotate(180deg);\n}",".popup {\n top: calc(var(--topbar-height) - var(--t-spacing-1));\n left: var(--t-spacing-2);\n min-width: 180px;\n max-height: calc(100% - var(--topbar-height) - var(--t-spacing-3));\n}\n",".popup-root {\n display: flex;\n align-self: flex-end;\n}\n\n.popup {\n background: var(--t-surface-color-card);\n box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05), 0 4px 12px 2px rgba(0, 0, 0, 0.16);\n border-radius: var(--t-border-radius-lg);\n position: absolute;\n overflow: auto;\n scrollbar-color: var(--topbar-scrollbar-color);\n scrollbar-width: var(--topbar-scrollbar-width);\n opacity: 0;\n visibility: hidden;\n transition: all 120ms ease-in;\n}\n\n.popup.is-visible {\n opacity: 1;\n transition: none;\n visibility: visible;\n}\n",".popup {\n color: var(--t-text-color);\n min-width: 242px;\n max-width: 320px;\n margin-top: calc(var(--t-spacing-1) * -1);\n right: calc(var(--t-spacing-1) + 1px); /* 1px is to account for .product-wrap { padding-right: 1px } */\n max-height: calc(100% - var(--topbar-height) - var(--t-spacing-3));\n}\n\n.trigger-wrap {\n margin-left: var(--t-spacing-1);\n position: relative;\n white-space: nowrap;\n cursor: pointer;\n}\n\n.trigger {\n font-size: var(--topbar-nav-link-font-size);\n color: var(--topbar-nav-link-font-color);\n height: var(--topbar-nav-link-height);\n background-color: var(--topbar-nav-link-background-color-active);\n padding: 0 var(--topbar-nav-link-padding-x);\n border: var(--t-border-width) solid var(--topbar-nav-link-border-color-active);\n border-radius: var(--topbar-nav-link-border-radius);\n min-width: var(--t-container-size-md);\n transition: var(--topbar-nav-link-transition);\n display: flex;\n align-items: center;\n justify-content: center;\n outline: 0;\n appearance: none;\n cursor: pointer;\n}\n\n.trigger svg {\n transition: transform var(--topbar-slight-transition);\n /* Negative margin ensures button is a circle when orgname isn’t visible */\n margin-left: calc(var(--t-spacing-1) * -1);\n margin-right: calc(var(--t-spacing-1) * -1);\n}\n\n.trigger.is-visible svg {\n transform: rotate(180deg);\n}\n\n.trigger-orgname {\n max-width: 240px;\n margin-right: var(--t-spacing-fourth);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.trigger-orgname + svg {\n color: var(--t-fill-color-transparency-dark-050);\n /* Correct margin for when orgname is visible */\n margin-left: 0;\n margin-right: calc(var(--t-spacing-fourth) * -1);\n}\n",".avatar {\n background-color: var(--t-fill-color-transparency-light-020);\n background-position: center;\n background-size: cover;\n border-radius: 50%;\n height: var(--t-element-size-2xl);\n width: var(--t-element-size-2xl);\n margin-left: var(--t-spacing-half);\n}\n",".drawer-wrap {\n width: 100%;\n background-color: var(--t-surface-color-card);\n\n display: none;\n position: fixed;\n top: 0;\n bottom: var(--toolbar-navbar-height);\n\n overflow: hidden;\n}\n.drawer-wrap.is-visible {\n display: block;\n}\n\n.drawer {\n display: flex;\n flex-direction: column;\n height: 100%;\n\n overflow: auto;\n scrollbar-color: var(--t-fill-color-transparency-dark-030);\n scrollbar-width: var(--topbar-scrollbar-width);\n}\n\n@media (min-width: 600px) {\n .drawer-wrap {\n width: var(--toolbar-drawer-width);\n border-radius: 6px; /* TODO: Once a token exists, replace with 6px equivalent \n or inset associated with to --t-border-radius-lg */\n box-shadow: 0 0 0 1px var(--content-wrap-border-color), 0 4px 12px 2px rgba(0, 0, 0, 0.16);\n\n display: block;\n position: absolute;\n bottom: var(--t-spacing-2);\n right: calc(var(--toolbar-drawer-width) * -1);\n top: calc(var(--topbar-height) + var(--t-spacing-1));\n\n opacity: 0;\n transform: translateX(var(--t-spacing-1));\n transition-property: opacity, transform, right;\n transition-duration: 100ms;\n transition-delay: 0s, 0s, 100ms;\n transition-timing-function: ease-in-out;\n }\n .drawer-wrap.is-visible {\n right: calc(var(--toolbar-width) + var(--t-spacing-1) + 1px);\n opacity: 1;\n transform: translateX(0);\n\n transition-property: opacity, transform;\n transition-delay: 0s;\n }\n}\n",".indicator-dot {\n width: 12px;\n height: 12px;\n background: radial-gradient(#33adff 50%, transparent 50%);\n background-color: #33adff;\n box-shadow: inset 0 0 0 2px #b1bfda;\n border-radius: 50%;\n position: absolute;\n z-index: 6;\n pointer-events: none;\n}\n\n.indicator-dot.is-active {\n width: 10px;\n height: 10px;\n box-shadow: inset 0 0 0 2px var(--t-fill-color-neutral-100);\n transform: translateX(-1.5px) translateY(1.5px);\n}\n",".color-mode-switcher {\n color: var(--t-text-color); /* Needed to override .tapestry-react-reset. This is the dumbest thing to have to do */\n border: 0;\n padding: 0;\n}\n\n.color-mode-switcher-label {\n font-weight: var(--t-font-weight-semibold);\n display: inline-block;\n margin-bottom: var(--t-spacing-1);\n}\n\n.color-mode-switcher-label-beta {\n font-size: var(--t-font-size-xs);\n font-weight: var(--t-font-weight-semibold);\n color: var(--t-text-color-status-neutral);\n background-color: var(--t-fill-color-status-neutral-ghost);\n border-radius: var(--t-border-radius-sm);\n padding: 0 var(--t-spacing-1);\n line-height: var(--t-element-size-sm);\n vertical-align: middle;\n text-transform: uppercase;\n}\n\n.color-mode-switcher-modes {\n padding: var(--t-spacing-half);\n border: var(--t-border-width) solid var(--t-border-color);\n border-radius: var(--t-border-radius-md);\n display: flex;\n gap: var(--t-spacing-half);\n container-type: inline-size;\n}\n.color-mode-switcher-modes input[type=radio] {\n opacity: 0;\n position: absolute;\n pointer-events: none;\n}\n.color-mode-switcher-modes label {\n border-radius: var(--t-border-radius-sm);\n min-height: var(--t-element-size-xl);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-grow: 1;\n user-select: none;\n margin: 0;\n position: relative;\n}\n.color-mode-switcher-modes label:hover {\n background: var(--t-fill-color-button-neutral-ghost-hover);\n}\n.color-mode-switcher-modes label:has(input:focus-visible) {\n outline: auto;\n}\n.color-mode-switcher-modes svg {\n display: none;\n margin-right: var(--t-spacing-half);\n}\n@container (width >= 256px) {\n .color-mode-switcher-modes svg {\n display: block;\n }\n}\n.color-mode-switcher-modes svg path {\n stroke: var(--t-icon-color-dim);\n}\n.color-mode-switcher-modes label,\n.color-mode-switcher-modes svg path {\n transition-property: color, background-color, stroke;\n transition-duration: 0.1s;\n transition-timing-function: linear;\n}\n.color-mode-switcher-modes label:has(input:checked) {\n color: var(--t-text-color-status-info);\n background-color: var(--t-fill-color-status-info-ghost);\n}\n.color-mode-switcher-modes label:has(input:checked) svg path {\n stroke: var(--t-icon-color-status-info);\n}"]}
package/dist/topbar.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  var tapestry = require('@planningcenter/tapestry');
4
4
  var React = require('react');
5
- var pcoUrl = require('@planningcenter/url');
5
+ var pcoUrl$1 = require('@planningcenter/url');
6
6
  var general = require('@planningcenter/icons/paths/general');
7
7
  var Jolt = require('@planningcenter/jolt-client');
8
8
  var shim = require('use-sync-external-store/shim');
@@ -474,7 +474,7 @@ class Provider extends React.Component {
474
474
  announcements: newAnnouncements
475
475
  };
476
476
  });
477
- return apiRequest(this.props.configuredFetch || defaultFetch, `${pcoUrl(this.props.env)("api")}/people/v2/me/platform_notifications/${id}/dismiss`, {
477
+ return apiRequest(this.props.configuredFetch || defaultFetch, `${pcoUrl$1(this.props.env)("api")}/people/v2/me/platform_notifications/${id}/dismiss`, {
478
478
  method: "POST"
479
479
  });
480
480
  }
@@ -719,7 +719,7 @@ const useJoltChannelSubscription = ({
719
719
  const channel = joltIsV2(jolt) ? buildJoltChannel(jolt, channelName, fetchSubscribeTokenFn) : buildLegacyJoltChannel(jolt, channelName, fetchSubscribeTokenFn);
720
720
  setJoltChannel(channel);
721
721
  setJoltInstance(jolt);
722
- }, [apiRequest, channelName, env, pcoUrl, railsCsrfFetch]);
722
+ }, [apiRequest, channelName, env, pcoUrl$1, railsCsrfFetch]);
723
723
  React.useEffect(() => {
724
724
  if (enabled) {
725
725
  subscribeToJoltChannel();
@@ -924,7 +924,7 @@ const useTopbarAPI = ({
924
924
  fetch();
925
925
  }, []);
926
926
  const fetch = () => {
927
- apiRequest(configuredFetch, `${pcoUrl(env)("api")}/people/v2/me/topbar`).then(({
927
+ apiRequest(configuredFetch, `${pcoUrl$1(env)("api")}/people/v2/me/topbar`).then(({
928
928
  json,
929
929
  ok
930
930
  }) => {
@@ -1071,7 +1071,7 @@ function setConnectedPeopleInStore(connectedPeople) {
1071
1071
  });
1072
1072
  }
1073
1073
  function switchConnectedPerson(env, toId, returnPath) {
1074
- apiRequest(railsCsrfFetch, `${pcoUrl(env)("api")}/login/v2/me/switch_connected_person`, {
1074
+ apiRequest(railsCsrfFetch, `${pcoUrl$1(env)("api")}/login/v2/me/switch_connected_person`, {
1075
1075
  data: {
1076
1076
  data: {
1077
1077
  attributes: {
@@ -1089,7 +1089,7 @@ function switchConnectedPerson(env, toId, returnPath) {
1089
1089
  });
1090
1090
  }
1091
1091
  function unlinkConnectedPeople(env) {
1092
- apiRequest(railsCsrfFetch, `${pcoUrl(env)("api")}/login/v2/me/unlink`, {
1092
+ apiRequest(railsCsrfFetch, `${pcoUrl$1(env)("api")}/login/v2/me/unlink`, {
1093
1093
  method: "POST"
1094
1094
  }).then(({
1095
1095
  json
@@ -1106,7 +1106,7 @@ class ConnectedPeopleProvider extends React.Component {
1106
1106
  };
1107
1107
  }
1108
1108
  fetch() {
1109
- apiRequest(this.props.configuredFetch, `${pcoUrl(this.props.env)("api")}/login/v2/me/connected_people`).then(({
1109
+ apiRequest(this.props.configuredFetch, `${pcoUrl$1(this.props.env)("api")}/login/v2/me/connected_people`).then(({
1110
1110
  json,
1111
1111
  ok
1112
1112
  }) => {
@@ -2165,7 +2165,7 @@ const AppsMenu = ({
2165
2165
  component: "a",
2166
2166
  "data-pendo": `app-switcher--change-app--${homeProduct.name}`,
2167
2167
  "data-turbolinks": false,
2168
- href: appName === homeProduct.name ? `${pcoUrl(env)("accounts")}/apps/${appName}` : pcoUrl(env)("accounts") + getAppsSwitchProductPath(homeProduct.name),
2168
+ href: appName === homeProduct.name ? `${pcoUrl$1(env)("accounts")}/apps/${appName}` : pcoUrl$1(env)("accounts") + getAppsSwitchProductPath(homeProduct.name),
2169
2169
  style: {
2170
2170
  ...listItemProps,
2171
2171
  borderBottom: "1px solid var(--t-border-color)"
@@ -2191,7 +2191,7 @@ const AppsMenu = ({
2191
2191
  component: "a",
2192
2192
  "data-pendo": `app-switcher--change-app--${name}`,
2193
2193
  "data-turbolinks": false,
2194
- href: name === appName ? `${pcoUrl(env)("accounts")}/apps/${name.toLowerCase()}` : pcoUrl(env)("accounts") + getAppsSwitchProductPath(name),
2194
+ href: name === appName ? `${pcoUrl$1(env)("accounts")}/apps/${name.toLowerCase()}` : pcoUrl$1(env)("accounts") + getAppsSwitchProductPath(name),
2195
2195
  key: name,
2196
2196
  style: {
2197
2197
  ...listItemProps,
@@ -2216,7 +2216,7 @@ const AppsMenu = ({
2216
2216
  component: "a",
2217
2217
  "data-pendo": `app-switcher--change-app--${accountsProduct.name}`,
2218
2218
  "data-turbolinks": false,
2219
- href: pcoUrl(env)("accounts") + getAppsSwitchProductPath(accountsProduct.name),
2219
+ href: pcoUrl$1(env)("accounts") + getAppsSwitchProductPath(accountsProduct.name),
2220
2220
  style: {
2221
2221
  ...listItemProps,
2222
2222
  borderTop: "1px solid var(--t-border-color)",
@@ -2323,7 +2323,7 @@ const UserMenu = ({
2323
2323
  setUserMenuVisible,
2324
2324
  userMenuVisible
2325
2325
  }) => {
2326
- const logoutUrl = `${pcoUrl(env)("login")}/logout`;
2326
+ const logoutUrl = `${pcoUrl$1(env)("login")}/logout`;
2327
2327
  return /*#__PURE__*/React.createElement(PopupRoot, null, /*#__PURE__*/React.createElement(Popup, {
2328
2328
  component: Outsider,
2329
2329
  onOutsideClick: () => setUserMenuVisible(false),
@@ -2596,7 +2596,7 @@ function Avatar({
2596
2596
  style,
2597
2597
  ...nativeProps
2598
2598
  }) {
2599
- const url = incomingUrl || `${pcoUrl(env)("people")}/static/no_photo_thumbnail_gray.svg`;
2599
+ const url = incomingUrl || `${pcoUrl$1(env)("people")}/static/no_photo_thumbnail_gray.svg`;
2600
2600
  return /*#__PURE__*/React.createElement("div", {
2601
2601
  className: styles$4.avatar,
2602
2602
  style: {
@@ -2630,7 +2630,7 @@ function AccountSettingsLink({
2630
2630
  className: classnames(styles$3["appmenu-list-a"], styles$3["appmenu-list-a--bottom"]),
2631
2631
  "data-pendo": `app-switcher--change-app--${accountsName}`,
2632
2632
  "data-turbolinks": false,
2633
- href: pcoUrl(env)(accountsName) + getAppsSwitchProductPath(accountsName)
2633
+ href: pcoUrl$1(env)(accountsName) + getAppsSwitchProductPath(accountsName)
2634
2634
  }, /*#__PURE__*/React.createElement("svg", {
2635
2635
  "aria-hidden": "true",
2636
2636
  height: 24,
@@ -2772,7 +2772,7 @@ const SmallTopbar = ({
2772
2772
  "data-pendo": `app-switcher--change-app--${homeProduct === null || homeProduct === void 0 ? void 0 : homeProduct.name}`,
2773
2773
  "data-turbolinks": false,
2774
2774
  className: classnames(styles$3["appmenu-list-a"], styles$3["appmenu-list-a--top"]),
2775
- href: homeProduct ? pcoUrl(props.env)("accounts") + getAppsSwitchProductPath(homeProduct === null || homeProduct === void 0 ? void 0 : homeProduct.name) : undefined
2775
+ href: homeProduct ? pcoUrl$1(props.env)("accounts") + getAppsSwitchProductPath(homeProduct === null || homeProduct === void 0 ? void 0 : homeProduct.name) : undefined
2776
2776
  }, /*#__PURE__*/React.createElement(UserMenuAppLockup, {
2777
2777
  appName: homeProduct ? homeProduct.name : props.appName
2778
2778
  })), /*#__PURE__*/React.createElement("div", {
@@ -2791,7 +2791,7 @@ const SmallTopbar = ({
2791
2791
  "data-pendo": `app-switcher--change-app--${name}`,
2792
2792
  "data-turbolinks": false,
2793
2793
  className: styles$3["appmenu-list-a"],
2794
- href: pcoUrl(props.env)("accounts") + getAppsSwitchProductPath(name)
2794
+ href: pcoUrl$1(props.env)("accounts") + getAppsSwitchProductPath(name)
2795
2795
  }, /*#__PURE__*/React.createElement(UserMenuAppLockup, {
2796
2796
  appName: name
2797
2797
  }))))), accountsProduct && (/*#__PURE__*/React.createElement("li", {
@@ -2836,7 +2836,7 @@ function getLoginProfilePath({
2836
2836
  userId
2837
2837
  }) {
2838
2838
  var _a, _b;
2839
- const basePath = pcoUrl(env)("login") + `/people/AC${userId}`;
2839
+ const basePath = pcoUrl$1(env)("login") + `/people/AC${userId}`;
2840
2840
  const pathname = (_b = (_a = window === null || window === void 0 ? void 0 : window.location) === null || _a === void 0 ? void 0 : _a.pathname) === null || _b === void 0 ? void 0 : _b.toString();
2841
2841
  if (!pathname) return basePath;
2842
2842
  const params = new URLSearchParams();
@@ -2911,7 +2911,7 @@ function useFragmentRouting() {
2911
2911
  const key = "toolbar";
2912
2912
  const [toolbarFragment, updateFragment] = useFragmentKey(key);
2913
2913
  const onChangeRoute = React.useCallback((tool, path = "") => {
2914
- const nextHash = `#${key}=${tool}/${path}`;
2914
+ const nextHash = `#${key}=${tool}/${encodeQueryString(path)}`;
2915
2915
  history.replaceState(undefined, "", nextHash);
2916
2916
  updateFragment(nextHash);
2917
2917
  }, [updateFragment]);
@@ -2919,7 +2919,7 @@ function useFragmentRouting() {
2919
2919
  if (toolbarFragment) {
2920
2920
  const [tool, ...rest] = toolbarFragment.split("/");
2921
2921
  return {
2922
- path: rest.join("/"),
2922
+ path: decodeQueryString(rest.join("/")),
2923
2923
  tool
2924
2924
  };
2925
2925
  } else {
@@ -2932,6 +2932,18 @@ function useFragmentRouting() {
2932
2932
  }, []);
2933
2933
  return [route, onChangeRoute, clearRoute];
2934
2934
  }
2935
+ // The fragment value is parsed with /toolbar=([^&]+)/, so any "&" in a
2936
+ // tool-reported path would silently truncate the route. We encode just the
2937
+ // query portion on the way into the hash and decode on the way out, so
2938
+ // callers can pass and receive raw paths.
2939
+ function encodeQueryString(path) {
2940
+ const [pathPart, queryPart] = path.split("?", 2);
2941
+ return queryPart ? `${pathPart}?${encodeURIComponent(queryPart)}` : pathPart;
2942
+ }
2943
+ function decodeQueryString(path) {
2944
+ const [pathPart, queryPart] = path.split("?", 2);
2945
+ return queryPart ? `${pathPart}?${decodeURIComponent(queryPart)}` : pathPart;
2946
+ }
2935
2947
 
2936
2948
  const {
2937
2949
  generateColorScale
@@ -3452,6 +3464,16 @@ const useToolbarReducer = overrides => React__namespace.useReducer(reducer, {
3452
3464
 
3453
3465
  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"};
3454
3466
 
3467
+ const pcoUrl = pcoUrl$1;
3468
+
3469
+ function buildPicobotSrc(origin, path) {
3470
+ const [rawPath, queryPart] = path.replace(/^\/+/, "").split("?", 2);
3471
+ const safePath = rawPath.split("/").filter(segment => segment && segment !== "." && segment !== "..").join("/");
3472
+ const pathWithPrefix = ["topbar", safePath].filter(Boolean).join("/");
3473
+ const relativePath = queryPart !== undefined ? `${pathWithPrefix}?${queryPart}` : pathWithPrefix;
3474
+ return new URL(relativePath, origin).toString();
3475
+ }
3476
+
3455
3477
  const handleSearchSelect = (hit, indexName) => {
3456
3478
  const appName = indexName.split("_")[1];
3457
3479
  const zendeskUrl = `https://${appName}.zendesk.com/hc/${hit.locale.locale}/articles/${hit.id}`;
@@ -3604,9 +3626,62 @@ const {
3604
3626
  function HelpdeskComponent({
3605
3627
  appName,
3606
3628
  closeDrawer,
3629
+ currentPath,
3607
3630
  env,
3608
- helpdeskConfig
3631
+ helpdeskConfig,
3632
+ onChangePath
3609
3633
  }) {
3634
+ const PicobotIframe = React.useMemo(() => {
3635
+ const picobotOrigin = pcoUrl(env)("picobot");
3636
+ return function PicobotIframe({
3637
+ currentPath: iframePath,
3638
+ onChangePath: onIframeChangePath,
3639
+ onMessage
3640
+ }) {
3641
+ const ref = React.useRef(null);
3642
+ const initialPath = iframePath || "";
3643
+ // Tracks the path picobot last reported via postMessage so an
3644
+ // incoming currentPath that matches it doesn't trigger a reload.
3645
+ // Picobot sends a bare relative path (e.g. "conversations/abc") with
3646
+ // no leading slash or /topbar prefix—buildPicobotSrc adds those.
3647
+ const lastReportedPathRef = React.useRef(initialPath);
3648
+ const [loadedPath, setLoadedPath] = React.useState(initialPath);
3649
+ React.useEffect(() => {
3650
+ if (!onIframeChangePath && !onMessage) return undefined;
3651
+ const handler = e => {
3652
+ var _a, _b;
3653
+ if (e.origin !== picobotOrigin) return;
3654
+ if (!e.source || !ref.current) return;
3655
+ if (e.source !== ref.current.contentWindow) return;
3656
+ if (((_a = e.data) === null || _a === void 0 ? void 0 : _a.type) === "NEW_ROUTE_RENDERED" && onIframeChangePath) {
3657
+ const reportedPath = String((_b = e.data.payload) !== null && _b !== void 0 ? _b : "");
3658
+ lastReportedPathRef.current = reportedPath;
3659
+ onIframeChangePath(reportedPath);
3660
+ }
3661
+ if (onMessage) onMessage(e.data);
3662
+ };
3663
+ window.addEventListener("message", handler);
3664
+ return () => window.removeEventListener("message", handler);
3665
+ }, [onIframeChangePath, onMessage]);
3666
+ React.useEffect(() => {
3667
+ const incomingPath = iframePath || "";
3668
+ if (lastReportedPathRef.current === incomingPath) return;
3669
+ setLoadedPath(incomingPath);
3670
+ }, [iframePath]);
3671
+ const iframeSrc = buildPicobotSrc(picobotOrigin, loadedPath);
3672
+ return /*#__PURE__*/React.createElement("iframe", {
3673
+ ref: ref,
3674
+ src: iframeSrc,
3675
+ style: {
3676
+ border: 0,
3677
+ flex: 1,
3678
+ height: "100%",
3679
+ width: "100%"
3680
+ },
3681
+ title: "Picobot"
3682
+ });
3683
+ };
3684
+ }, [env]);
3610
3685
  return /*#__PURE__*/React.createElement(addOns.UiExtensionFirstPartyComponent, {
3611
3686
  grow: 1,
3612
3687
  display: "flex",
@@ -3626,6 +3701,7 @@ function HelpdeskComponent({
3626
3701
  DocumentationSearch,
3627
3702
  DrawerHeader,
3628
3703
  DrawerHeading,
3704
+ PicobotIframe,
3629
3705
  ScrollContainer,
3630
3706
  SwitchView
3631
3707
  },
@@ -3633,7 +3709,9 @@ function HelpdeskComponent({
3633
3709
  appName,
3634
3710
  closeDrawer,
3635
3711
  currentPageParams: location.search,
3636
- helpdeskConfig
3712
+ currentPath,
3713
+ helpdeskConfig,
3714
+ onChangePath
3637
3715
  }
3638
3716
  });
3639
3717
  }
@@ -3942,7 +4020,7 @@ const useNotifications = ({
3942
4020
  id,
3943
4021
  type: "graph_notification"
3944
4022
  }], []);
3945
- return apiRequest(railsCsrfFetch, `${pcoUrl(env)("api")}/notifications/v2/me/bulk_update`, {
4023
+ return apiRequest(railsCsrfFetch, `${pcoUrl$1(env)("api")}/notifications/v2/me/bulk_update`, {
3946
4024
  data: {
3947
4025
  data: {
3948
4026
  attributes: {},
@@ -3972,7 +4050,7 @@ const useNotifications = ({
3972
4050
  });
3973
4051
  };
3974
4052
  const handleCreateTask = React.useCallback(async notification => {
3975
- return apiRequest(railsCsrfFetch, `${pcoUrl(env)("api")}/home/v2/me/task_lists/inbox/tasks`, {
4053
+ return apiRequest(railsCsrfFetch, `${pcoUrl$1(env)("api")}/home/v2/me/task_lists/inbox/tasks`, {
3976
4054
  data: {
3977
4055
  data: {
3978
4056
  attributes: {
@@ -4428,38 +4506,29 @@ function useStableIframeSrcAttributeAndSyncFragmentRoute({
4428
4506
  setFragmentRoute,
4429
4507
  env
4430
4508
  }) {
4431
- const unencodedCurrentPath = decodeQueryString(currentPath || "");
4432
- const [iframeSrcPath, setIframeSrcPath] = React.useState(unencodedCurrentPath);
4433
- const internalPathOfChatRef = React.useRef(unencodedCurrentPath);
4434
- const chatBaseURL = pcoUrl(env)("chat");
4509
+ const initialPath = currentPath || "";
4510
+ const [iframeSrcPath, setIframeSrcPath] = React.useState(initialPath);
4511
+ const internalPathOfChatRef = React.useRef(initialPath);
4512
+ const chatBaseURL = pcoUrl$1(env)("chat");
4435
4513
  const updateFragmentRouteAndInternalPath = React.useCallback(event => {
4436
- const unencodedPath = event.data.payload.replace(/^\/?topbar/, "") // Maybe this should happen on the child side of things?
4514
+ const reportedPath = event.data.payload.replace(/^\/?topbar/, "") // Maybe this should happen on the child side of things?
4437
4515
  .replace(/^\/+/, "");
4438
- internalPathOfChatRef.current = unencodedPath;
4439
- // URL encode the payload's query string for the fragment route
4440
- // so possible query params don't get dropped by the fragment router
4441
- setFragmentRoute(encodeQueryString(unencodedPath));
4516
+ internalPathOfChatRef.current = reportedPath;
4517
+ setFragmentRoute(reportedPath);
4442
4518
  }, [setFragmentRoute]);
4443
4519
  useHandleMessageFromChildFrame(updateFragmentRouteAndInternalPath, {
4444
4520
  allowedOrigin: chatBaseURL,
4445
4521
  messageType: "NEW_ROUTE_RENDERED"
4446
4522
  });
4447
4523
  React.useEffect(() => {
4448
- if (internalPathOfChatRef.current !== unencodedCurrentPath) {
4449
- setIframeSrcPath(unencodedCurrentPath);
4524
+ const incomingPath = currentPath || "";
4525
+ if (internalPathOfChatRef.current !== incomingPath) {
4526
+ setIframeSrcPath(incomingPath);
4450
4527
  }
4451
4528
  }, [currentPath]);
4452
4529
  const iframeSrc = [chatBaseURL, "topbar", iframeSrcPath].filter(Boolean).join("/");
4453
4530
  return iframeSrc;
4454
4531
  }
4455
- function encodeQueryString(path) {
4456
- const [pathPart, queryPart] = path.split("?", 2);
4457
- return queryPart ? `${pathPart}?${encodeURIComponent(queryPart)}` : pathPart;
4458
- }
4459
- function decodeQueryString(path) {
4460
- const [pathPart, queryPart] = path.split("?", 2);
4461
- return queryPart ? `${pathPart}?${decodeURIComponent(queryPart)}` : pathPart;
4462
- }
4463
4532
 
4464
4533
  function ChatTool({
4465
4534
  env,
@@ -4474,7 +4543,7 @@ function ChatTool({
4474
4543
  setFragmentRoute: onChangePath
4475
4544
  });
4476
4545
  useHandleMessageFromChildFrame(closeDrawer, {
4477
- allowedOrigin: pcoUrl(env)("chat"),
4546
+ allowedOrigin: pcoUrl$1(env)("chat"),
4478
4547
  messageType: "CLOSE_DRAWER"
4479
4548
  });
4480
4549
  if (currentPath === "blankstate") {
@@ -4585,6 +4654,7 @@ function isToolPathExemptFromStorage(toolName, path) {
4585
4654
  }
4586
4655
  const TOOLS_MAP = {
4587
4656
  Chat,
4657
+ Helpdesk,
4588
4658
  Notifications,
4589
4659
  Profile,
4590
4660
  Tasks
@@ -4667,7 +4737,7 @@ function Toolbar({
4667
4737
  env: env,
4668
4738
  userId: userId
4669
4739
  });
4670
- const logoutUrl = `${pcoUrl(env)("login")}/logout`;
4740
+ const logoutUrl = `${pcoUrl$1(env)("login")}/logout`;
4671
4741
  const profileUrl = `/people/AC${userId}`;
4672
4742
  const HelpDeskTool = Helpdesk;
4673
4743
  const setToolAndOpenDrawer = React.useCallback(content => {