@knocklabs/react 0.11.0 → 0.11.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/CHANGELOG.md +10 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/modules/feed/components/NotificationIconButton/NotificationIconButton.js.map +1 -1
- package/dist/cjs/modules/feed/components/UnseenBadge/UnseenBadge.js +1 -1
- package/dist/cjs/modules/feed/components/UnseenBadge/UnseenBadge.js.map +1 -1
- package/dist/cjs/modules/guide/components/Toolbar/KnockButton.js +2 -0
- package/dist/cjs/modules/guide/components/Toolbar/KnockButton.js.map +1 -0
- package/dist/cjs/modules/guide/components/Toolbar/V1/V1.js +2 -0
- package/dist/cjs/modules/guide/components/Toolbar/V1/V1.js.map +1 -0
- package/dist/cjs/modules/guide/components/Toolbar/V2/GuideHoverCard.js +2 -0
- package/dist/cjs/modules/guide/components/Toolbar/V2/GuideHoverCard.js.map +1 -0
- package/dist/cjs/modules/guide/components/Toolbar/V2/GuideRow.js +2 -0
- package/dist/cjs/modules/guide/components/Toolbar/V2/GuideRow.js.map +1 -0
- package/dist/cjs/modules/guide/components/Toolbar/V2/GuidesListDisplaySelect.js +2 -0
- package/dist/cjs/modules/guide/components/Toolbar/V2/GuidesListDisplaySelect.js.map +1 -0
- package/dist/cjs/modules/guide/components/Toolbar/V2/V2.js +2 -0
- package/dist/cjs/modules/guide/components/Toolbar/V2/V2.js.map +1 -0
- package/dist/cjs/modules/guide/components/Toolbar/V2/helpers.js +2 -0
- package/dist/cjs/modules/guide/components/Toolbar/V2/helpers.js.map +1 -0
- package/dist/cjs/modules/guide/components/Toolbar/V2/useInspectGuideClientStore.js +2 -0
- package/dist/cjs/modules/guide/components/Toolbar/V2/useInspectGuideClientStore.js.map +1 -0
- package/dist/cjs/modules/guide/components/Toolbar/shared.js +2 -0
- package/dist/cjs/modules/guide/components/Toolbar/shared.js.map +1 -0
- package/dist/cjs/modules/guide/providers/KnockGuideProvider.js +1 -1
- package/dist/cjs/modules/guide/providers/KnockGuideProvider.js.map +1 -1
- package/dist/esm/index.mjs +112 -102
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/modules/feed/components/NotificationIconButton/NotificationIconButton.mjs.map +1 -1
- package/dist/esm/modules/feed/components/UnseenBadge/UnseenBadge.mjs +5 -5
- package/dist/esm/modules/feed/components/UnseenBadge/UnseenBadge.mjs.map +1 -1
- package/dist/esm/modules/guide/components/Toolbar/KnockButton.mjs +18 -0
- package/dist/esm/modules/guide/components/Toolbar/KnockButton.mjs.map +1 -0
- package/dist/esm/modules/guide/components/Toolbar/V1/V1.mjs +42 -0
- package/dist/esm/modules/guide/components/Toolbar/V1/V1.mjs.map +1 -0
- package/dist/esm/modules/guide/components/Toolbar/V2/GuideHoverCard.mjs +27 -0
- package/dist/esm/modules/guide/components/Toolbar/V2/GuideHoverCard.mjs.map +1 -0
- package/dist/esm/modules/guide/components/Toolbar/V2/GuideRow.mjs +34 -0
- package/dist/esm/modules/guide/components/Toolbar/V2/GuideRow.mjs.map +1 -0
- package/dist/esm/modules/guide/components/Toolbar/V2/GuidesListDisplaySelect.mjs +17 -0
- package/dist/esm/modules/guide/components/Toolbar/V2/GuidesListDisplaySelect.mjs.map +1 -0
- package/dist/esm/modules/guide/components/Toolbar/V2/V2.mjs +46 -0
- package/dist/esm/modules/guide/components/Toolbar/V2/V2.mjs.map +1 -0
- package/dist/esm/modules/guide/components/Toolbar/V2/helpers.mjs +13 -0
- package/dist/esm/modules/guide/components/Toolbar/V2/helpers.mjs.map +1 -0
- package/dist/esm/modules/guide/components/Toolbar/V2/useInspectGuideClientStore.mjs +101 -0
- package/dist/esm/modules/guide/components/Toolbar/V2/useInspectGuideClientStore.mjs.map +1 -0
- package/dist/esm/modules/guide/components/Toolbar/shared.mjs +5 -0
- package/dist/esm/modules/guide/components/Toolbar/shared.mjs.map +1 -0
- package/dist/esm/modules/guide/providers/KnockGuideProvider.mjs +16 -6
- package/dist/esm/modules/guide/providers/KnockGuideProvider.mjs.map +1 -1
- package/dist/types/index.d.ts +3 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modules/feed/components/NotificationIconButton/NotificationIconButton.d.ts +1 -1
- package/dist/types/modules/feed/components/NotificationIconButton/NotificationIconButton.d.ts.map +1 -1
- package/dist/types/modules/feed/components/UnseenBadge/UnseenBadge.d.ts +1 -1
- package/dist/types/modules/feed/components/UnseenBadge/UnseenBadge.d.ts.map +1 -1
- package/dist/types/modules/feed/components/UnseenBadge/index.d.ts +1 -1
- package/dist/types/modules/feed/components/UnseenBadge/index.d.ts.map +1 -1
- package/dist/types/modules/feed/index.d.ts +1 -1
- package/dist/types/modules/feed/index.d.ts.map +1 -1
- package/dist/types/modules/guide/components/Toolbar/KnockButton.d.ts +6 -0
- package/dist/types/modules/guide/components/Toolbar/KnockButton.d.ts.map +1 -0
- package/dist/types/modules/guide/components/Toolbar/V1/V1.d.ts +2 -0
- package/dist/types/modules/guide/components/Toolbar/V1/V1.d.ts.map +1 -0
- package/dist/types/modules/guide/components/Toolbar/V1/index.d.ts +2 -0
- package/dist/types/modules/guide/components/Toolbar/V1/index.d.ts.map +1 -0
- package/dist/types/modules/guide/components/Toolbar/V2/GuideHoverCard.d.ts +8 -0
- package/dist/types/modules/guide/components/Toolbar/V2/GuideHoverCard.d.ts.map +1 -0
- package/dist/types/modules/guide/components/Toolbar/V2/GuideRow.d.ts +8 -0
- package/dist/types/modules/guide/components/Toolbar/V2/GuideRow.d.ts.map +1 -0
- package/dist/types/modules/guide/components/Toolbar/V2/GuidesListDisplaySelect.d.ts +8 -0
- package/dist/types/modules/guide/components/Toolbar/V2/GuidesListDisplaySelect.d.ts.map +1 -0
- package/dist/types/modules/guide/components/Toolbar/V2/V2.d.ts +2 -0
- package/dist/types/modules/guide/components/Toolbar/V2/V2.d.ts.map +1 -0
- package/dist/types/modules/guide/components/Toolbar/V2/helpers.d.ts +2 -0
- package/dist/types/modules/guide/components/Toolbar/V2/helpers.d.ts.map +1 -0
- package/dist/types/modules/guide/components/Toolbar/V2/index.d.ts +2 -0
- package/dist/types/modules/guide/components/Toolbar/V2/index.d.ts.map +1 -0
- package/dist/types/modules/guide/components/Toolbar/V2/useInspectGuideClientStore.d.ts +59 -0
- package/dist/types/modules/guide/components/Toolbar/V2/useInspectGuideClientStore.d.ts.map +1 -0
- package/dist/types/modules/guide/components/Toolbar/index.d.ts +3 -0
- package/dist/types/modules/guide/components/Toolbar/index.d.ts.map +1 -0
- package/dist/types/modules/guide/components/Toolbar/shared.d.ts +2 -0
- package/dist/types/modules/guide/components/Toolbar/shared.d.ts.map +1 -0
- package/dist/types/modules/guide/components/index.d.ts +1 -1
- package/dist/types/modules/guide/components/index.d.ts.map +1 -1
- package/dist/types/modules/guide/index.d.ts +1 -1
- package/dist/types/modules/guide/index.d.ts.map +1 -1
- package/dist/types/modules/guide/providers/KnockGuideProvider.d.ts +5 -1
- package/dist/types/modules/guide/providers/KnockGuideProvider.d.ts.map +1 -1
- package/package.json +6 -4
- package/dist/cjs/modules/guide/components/GuideToolbar/GuideToolbar.js +0 -2
- package/dist/cjs/modules/guide/components/GuideToolbar/GuideToolbar.js.map +0 -1
- package/dist/esm/modules/guide/components/GuideToolbar/GuideToolbar.mjs +0 -47
- package/dist/esm/modules/guide/components/GuideToolbar/GuideToolbar.mjs.map +0 -1
- package/dist/types/modules/guide/components/GuideToolbar/GuideToolbar.d.ts +0 -2
- package/dist/types/modules/guide/components/GuideToolbar/GuideToolbar.d.ts.map +0 -1
- package/dist/types/modules/guide/components/GuideToolbar/index.d.ts +0 -2
- package/dist/types/modules/guide/components/GuideToolbar/index.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.11.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 7f8bdfe: Add accessible labels to `UnseenBadge` so screen readers announce the count with context (e.g. "3 unseen notifications") instead of just the bare number
|
|
8
|
+
- Updated dependencies [ddd7981]
|
|
9
|
+
- Updated dependencies [7f8bdfe]
|
|
10
|
+
- @knocklabs/client@0.21.1
|
|
11
|
+
- @knocklabs/react-core@0.13.1
|
|
12
|
+
|
|
3
13
|
## 0.11.0
|
|
4
14
|
|
|
5
15
|
### Minor Changes
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const o=require("./modules/core/components/Button/Button.js"),i=require("./modules/core/components/Button/ButtonGroup.js"),u=require("./modules/core/components/Icons/Bell.js"),a=require("./modules/core/components/Icons/CheckmarkCircle.js"),c=require("./modules/core/components/Icons/ChevronDown.js"),s=require("./modules/core/components/Icons/CloseCircle.js"),l=require("./modules/core/components/Spinner/Spinner.js"),d=require("./modules/core/hooks/useOnBottomScroll.js"),b=require("./modules/feed/components/EmptyFeed/EmptyFeed.js"),m=require("./modules/feed/components/NotificationCell/NotificationCell.js"),C=require("./modules/feed/components/NotificationCell/Avatar.js"),f=require("./modules/feed/components/NotificationFeed/NotificationFeed.js"),P=require("./modules/feed/components/NotificationFeed/NotificationFeedHeader.js"),k=require("./modules/feed/components/NotificationFeed/MarkAsRead.js"),p=require("./modules/feed/components/NotificationFeedContainer/NotificationFeedContainer.js"),
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});;/* empty css */const o=require("./modules/core/components/Button/Button.js"),i=require("./modules/core/components/Button/ButtonGroup.js"),u=require("./modules/core/components/Icons/Bell.js"),a=require("./modules/core/components/Icons/CheckmarkCircle.js"),c=require("./modules/core/components/Icons/ChevronDown.js"),s=require("./modules/core/components/Icons/CloseCircle.js"),l=require("./modules/core/components/Spinner/Spinner.js"),d=require("./modules/core/hooks/useOnBottomScroll.js"),b=require("./modules/feed/components/EmptyFeed/EmptyFeed.js"),m=require("./modules/feed/components/NotificationCell/NotificationCell.js"),C=require("./modules/feed/components/NotificationCell/Avatar.js"),f=require("./modules/feed/components/NotificationFeed/NotificationFeed.js"),P=require("./modules/feed/components/NotificationFeed/NotificationFeedHeader.js"),k=require("./modules/feed/components/NotificationFeed/MarkAsRead.js"),p=require("./modules/feed/components/NotificationFeedContainer/NotificationFeedContainer.js"),g=require("./modules/feed/components/NotificationFeedPopover/NotificationFeedPopover.js"),y=require("./modules/feed/components/NotificationIconButton/NotificationIconButton.js"),O=require("./modules/feed/components/UnseenBadge/UnseenBadge.js"),t=require("./modules/guide/components/Banner/Banner.js"),r=require("./modules/guide/components/Card/Card.js");require("react");const e=require("@knocklabs/react-core");require("@telegraph/button");require("@telegraph/layout");require("@telegraph/tag");require("@telegraph/typography");require("lucide-react");;/* empty css */require("@telegraph/tooltip");require("@radix-ui/react-hover-card");require("@knocklabs/client");require("@telegraph/select");const n=require("./modules/guide/components/Modal/Modal.js"),S=require("./modules/guide/providers/KnockGuideProvider.js"),j=require("./modules/ms-teams/components/MsTeamsAuthButton/MsTeamsAuthButton.js"),q=require("./modules/ms-teams/components/MsTeamsAuthContainer/MsTeamsAuthContainer.js"),h=require("./modules/ms-teams/components/MsTeamsChannelCombobox/MsTeamsChannelCombobox.js"),B=require("./modules/slack/components/SlackAuthButton/SlackAuthButton.js"),K=require("./modules/slack/components/SlackAuthContainer/SlackAuthContainer.js"),M=require("./modules/slack/components/SlackChannelCombobox/SlackChannelCombobox.js");exports.Button=o.Button;exports.ButtonGroup=i.ButtonGroup;exports.BellIcon=u.BellIcon;exports.CheckmarkCircle=a.CheckmarkCircle;exports.ChevronDown=c.ChevronDown;exports.CloseCircle=s.CloseCircle;exports.Spinner=l.Spinner;exports.useOnBottomScroll=d;exports.EmptyFeed=b.EmptyFeed;exports.NotificationCell=m.NotificationCell;exports.Avatar=C.Avatar;exports.NotificationFeed=f.NotificationFeed;exports.NotificationFeedHeader=P.NotificationFeedHeader;exports.MarkAsRead=k.MarkAsRead;exports.NotificationFeedContainer=p.NotificationFeedContainer;exports.NotificationFeedPopover=g.NotificationFeedPopover;exports.NotificationIconButton=y.NotificationIconButton;exports.UnseenBadge=O.UnseenBadge;exports.Banner=t.Banner;exports.BannerView=t.BannerView;exports.Card=r.Card;exports.CardView=r.CardView;Object.defineProperty(exports,"FilterStatus",{enumerable:!0,get:()=>e.FilterStatus});Object.defineProperty(exports,"I18nContext",{enumerable:!0,get:()=>e.I18nContext});Object.defineProperty(exports,"KnockFeedProvider",{enumerable:!0,get:()=>e.KnockFeedProvider});Object.defineProperty(exports,"KnockGuideContext",{enumerable:!0,get:()=>e.KnockGuideContext});Object.defineProperty(exports,"KnockI18nProvider",{enumerable:!0,get:()=>e.KnockI18nProvider});Object.defineProperty(exports,"KnockMsTeamsProvider",{enumerable:!0,get:()=>e.KnockMsTeamsProvider});Object.defineProperty(exports,"KnockProvider",{enumerable:!0,get:()=>e.KnockProvider});Object.defineProperty(exports,"KnockSlackProvider",{enumerable:!0,get:()=>e.KnockSlackProvider});Object.defineProperty(exports,"feedProviderKey",{enumerable:!0,get:()=>e.feedProviderKey});Object.defineProperty(exports,"formatBadgeCount",{enumerable:!0,get:()=>e.formatBadgeCount});Object.defineProperty(exports,"formatTimestamp",{enumerable:!0,get:()=>e.formatTimestamp});Object.defineProperty(exports,"getBadgeAriaLabel",{enumerable:!0,get:()=>e.getBadgeAriaLabel});Object.defineProperty(exports,"locales",{enumerable:!0,get:()=>e.locales});Object.defineProperty(exports,"msTeamsProviderKey",{enumerable:!0,get:()=>e.msTeamsProviderKey});Object.defineProperty(exports,"renderNodeOrFallback",{enumerable:!0,get:()=>e.renderNodeOrFallback});Object.defineProperty(exports,"slackProviderKey",{enumerable:!0,get:()=>e.slackProviderKey});Object.defineProperty(exports,"toSentenceCase",{enumerable:!0,get:()=>e.toSentenceCase});Object.defineProperty(exports,"useAuthenticatedKnockClient",{enumerable:!0,get:()=>e.useAuthenticatedKnockClient});Object.defineProperty(exports,"useConnectedMsTeamsChannels",{enumerable:!0,get:()=>e.useConnectedMsTeamsChannels});Object.defineProperty(exports,"useConnectedSlackChannels",{enumerable:!0,get:()=>e.useConnectedSlackChannels});Object.defineProperty(exports,"useCreateNotificationStore",{enumerable:!0,get:()=>e.useCreateNotificationStore});Object.defineProperty(exports,"useFeedSettings",{enumerable:!0,get:()=>e.useFeedSettings});Object.defineProperty(exports,"useGuide",{enumerable:!0,get:()=>e.useGuide});Object.defineProperty(exports,"useGuideContext",{enumerable:!0,get:()=>e.useGuideContext});Object.defineProperty(exports,"useGuides",{enumerable:!0,get:()=>e.useGuides});Object.defineProperty(exports,"useKnockClient",{enumerable:!0,get:()=>e.useKnockClient});Object.defineProperty(exports,"useKnockFeed",{enumerable:!0,get:()=>e.useKnockFeed});Object.defineProperty(exports,"useKnockMsTeamsClient",{enumerable:!0,get:()=>e.useKnockMsTeamsClient});Object.defineProperty(exports,"useKnockSlackClient",{enumerable:!0,get:()=>e.useKnockSlackClient});Object.defineProperty(exports,"useMsTeamsAuth",{enumerable:!0,get:()=>e.useMsTeamsAuth});Object.defineProperty(exports,"useMsTeamsChannels",{enumerable:!0,get:()=>e.useMsTeamsChannels});Object.defineProperty(exports,"useMsTeamsConnectionStatus",{enumerable:!0,get:()=>e.useMsTeamsConnectionStatus});Object.defineProperty(exports,"useMsTeamsTeams",{enumerable:!0,get:()=>e.useMsTeamsTeams});Object.defineProperty(exports,"useNotificationStore",{enumerable:!0,get:()=>e.useNotificationStore});Object.defineProperty(exports,"useNotifications",{enumerable:!0,get:()=>e.useNotifications});Object.defineProperty(exports,"usePreferences",{enumerable:!0,get:()=>e.usePreferences});Object.defineProperty(exports,"useSlackAuth",{enumerable:!0,get:()=>e.useSlackAuth});Object.defineProperty(exports,"useSlackChannels",{enumerable:!0,get:()=>e.useSlackChannels});Object.defineProperty(exports,"useSlackConnectionStatus",{enumerable:!0,get:()=>e.useSlackConnectionStatus});Object.defineProperty(exports,"useStableOptions",{enumerable:!0,get:()=>e.useStableOptions});Object.defineProperty(exports,"useTranslations",{enumerable:!0,get:()=>e.useTranslations});exports.Modal=n.Modal;exports.ModalView=n.ModalView;exports.KnockGuideProvider=S.KnockGuideProvider;exports.MsTeamsAuthButton=j.MsTeamsAuthButton;exports.MsTeamsAuthContainer=q.MsTeamsAuthContainer;exports.MsTeamsChannelCombobox=h;exports.SlackAuthButton=B.SlackAuthButton;exports.SlackAuthContainer=K.SlackAuthContainer;exports.SlackChannelCombobox=M.SlackChannelCombobox;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/modules/feed/components/NotificationIconButton/NotificationIconButton.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationIconButton.js","sources":["../../../../../../src/modules/feed/components/NotificationIconButton/NotificationIconButton.tsx"],"sourcesContent":["import { useKnockFeed } from \"@knocklabs/react-core\";\nimport React, { SyntheticEvent } from \"react\";\n\nimport { BellIcon } from \"../../../core/components/Icons\";\nimport {
|
|
1
|
+
{"version":3,"file":"NotificationIconButton.js","sources":["../../../../../../src/modules/feed/components/NotificationIconButton/NotificationIconButton.tsx"],"sourcesContent":["import { type BadgeCountType, useKnockFeed } from \"@knocklabs/react-core\";\nimport React, { SyntheticEvent } from \"react\";\n\nimport { BellIcon } from \"../../../core/components/Icons\";\nimport { UnseenBadge } from \"../UnseenBadge\";\n\nimport \"./styles.css\";\n\nexport interface NotificationIconButtonProps {\n // What value should we use to drive the badge count?\n badgeCountType?: BadgeCountType;\n onClick: (e: SyntheticEvent) => void;\n}\n\nexport const NotificationIconButton = React.forwardRef<\n HTMLButtonElement,\n NotificationIconButtonProps\n>(({ onClick, badgeCountType }, ref) => {\n const { colorMode } = useKnockFeed();\n\n return (\n <button\n className={`rnf-notification-icon-button rnf-notification-icon-button--${colorMode}`}\n aria-label=\"Open notification feed\"\n ref={ref}\n onClick={onClick}\n >\n <BellIcon aria-hidden />\n <UnseenBadge badgeCountType={badgeCountType} />\n </button>\n );\n});\n"],"names":["NotificationIconButton","React","forwardRef","onClick","badgeCountType","ref","colorMode","useKnockFeed","BellIcon","UnseenBadge"],"mappings":"2UAcaA,EAAyBC,EAAAA,QAAMC,WAG1C,CAAC,CAAEC,QAAAA,EAASC,eAAAA,CAAe,EAAGC,IAAQ,CAChC,KAAA,CAAEC,UAAAA,GAAcC,eAAa,EAEnC,+BACG,SACC,CAAA,UAAW,8DAA8DD,CAAS,GAClF,aAAW,yBACX,IAAAD,EACA,QAAAF,GAEAF,EAAAA,QAAA,cAACO,YAAS,cAAW,EAAA,CAAA,EACpBP,EAAAA,QAAA,cAAAQ,EAAAA,YAAA,CAAY,eAAAL,CAA+B,CAAA,CAC9C,CAEJ,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@knocklabs/react-core"),s=require("react");;/* empty css */const c=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},u=c(s);function o(e,t){switch(e){case"all":return t.total_count;case"unread":return t.unread_count;case"unseen":return t.unseen_count}}const l=({badgeCountType:e="unseen"})=>{const{useFeedStore:t}=a.useKnockFeed(),n=t(r=>o(e,r.metadata));return n!==0?u.default.createElement("div",{className:"rnf-unseen-badge",role:"status","aria-label":a.getBadgeAriaLabel(n,e)},u.default.createElement("span",{className:"rnf-unseen-badge__count","aria-hidden":"true"},a.formatBadgeCount(n))):null};exports.UnseenBadge=l;
|
|
2
2
|
//# sourceMappingURL=UnseenBadge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnseenBadge.js","sources":["../../../../../../src/modules/feed/components/UnseenBadge/UnseenBadge.tsx"],"sourcesContent":["import { FeedMetadata } from \"@knocklabs/client\";\nimport { formatBadgeCount
|
|
1
|
+
{"version":3,"file":"UnseenBadge.js","sources":["../../../../../../src/modules/feed/components/UnseenBadge/UnseenBadge.tsx"],"sourcesContent":["import { FeedMetadata } from \"@knocklabs/client\";\nimport {\n type BadgeCountType,\n formatBadgeCount,\n getBadgeAriaLabel,\n useKnockFeed,\n} from \"@knocklabs/react-core\";\nimport React from \"react\";\n\nimport \"./styles.css\";\n\nexport type UnseenBadgeProps = {\n badgeCountType?: BadgeCountType;\n};\n\nfunction selectBadgeCount(\n badgeCountType: BadgeCountType,\n metadata: FeedMetadata,\n): number {\n switch (badgeCountType) {\n case \"all\":\n return metadata.total_count;\n case \"unread\":\n return metadata.unread_count;\n case \"unseen\":\n return metadata.unseen_count;\n }\n}\n\nexport const UnseenBadge: React.FC<UnseenBadgeProps> = ({\n badgeCountType = \"unseen\",\n}) => {\n const { useFeedStore } = useKnockFeed();\n const badgeCountValue = useFeedStore((state) =>\n selectBadgeCount(badgeCountType, state.metadata),\n );\n\n return badgeCountValue !== 0 ? (\n <div\n className=\"rnf-unseen-badge\"\n role=\"status\"\n aria-label={getBadgeAriaLabel(badgeCountValue, badgeCountType)}\n >\n <span className=\"rnf-unseen-badge__count\" aria-hidden=\"true\">\n {formatBadgeCount(badgeCountValue)}\n </span>\n </div>\n ) : null;\n};\n"],"names":["selectBadgeCount","badgeCountType","metadata","total_count","unread_count","unseen_count","UnseenBadge","useFeedStore","useKnockFeed","badgeCountValue","state","React","getBadgeAriaLabel","formatBadgeCount"],"mappings":"4OAeA,SAASA,EACPC,EACAC,EACQ,CACR,OAAQD,EAAc,CACpB,IAAK,MACH,OAAOC,EAASC,YAClB,IAAK,SACH,OAAOD,EAASE,aAClB,IAAK,SACH,OAAOF,EAASG,YAAAA,CAEtB,CAEO,MAAMC,EAA0CA,CAAC,CACtDL,eAAAA,EAAiB,QACnB,IAAM,CACE,KAAA,CAAEM,aAAAA,GAAiBC,eAAa,EAChCC,EAAkBF,EAAcG,GACpCV,EAAiBC,EAAgBS,EAAMR,QAAQ,CACjD,EAEOO,OAAAA,IAAoB,EACxBE,UAAA,cAAA,MAAA,CACC,UAAU,mBACV,KAAK,SACL,aAAYC,EAAkBH,kBAAAA,EAAiBR,CAAc,CAE7D,EAAAU,EAAAA,QAAA,cAAC,OAAK,CAAA,UAAU,0BAA0B,cAAY,QACnDE,EAAAA,iBAAiBJ,CAAe,CACnC,CACF,EACE,IACN"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react"),o=require("@telegraph/button"),n=require("./shared.js");;/* empty css */const r=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},e=r(a),l=({onClick:t})=>e.default.createElement(o.Button,{onClick:t,position:"fixed",top:"4",right:"4",bg:"surface-2",shadow:"3",rounded:"3",w:"10",h:"10",variant:"soft","data-tgph-appearance":"dark","aria-label":"Expand guide toolbar",style:{zIndex:n.TOOLBAR_Z_INDEX}},e.default.createElement("svg",{width:"40",height:"40",viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",style:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)"}},e.default.createElement("path",{d:"M11.6001 32.4V7.59998H16.6365V21.8219H16.7774L22.3067 14.8525H27.9418L21.8138 22.0696L28.4001 32.4H22.7996L18.8555 25.572L16.6365 28.0839V32.4H11.6001Z",fill:"#EDEEEF"}),e.default.createElement("path",{d:"M28.4 10.4C28.4 11.9464 27.1467 13.2 25.6 13.2C24.0534 13.2 22.8 11.9464 22.8 10.4C22.8 8.85358 24.0534 7.59998 25.6 7.59998C27.1467 7.59998 28.4 8.85358 28.4 10.4Z",fill:"#FF573A"})));exports.KnockButton=l;
|
|
2
|
+
//# sourceMappingURL=KnockButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KnockButton.js","sources":["../../../../../../src/modules/guide/components/Toolbar/KnockButton.tsx"],"sourcesContent":["import { Button } from \"@telegraph/button\";\n\nimport { TOOLBAR_Z_INDEX } from \"./shared\";\nimport \"./styles.css\";\n\ntype Props = {\n onClick: () => void;\n};\n\nexport const KnockButton = ({ onClick }: Props) => {\n return (\n <Button\n onClick={onClick}\n position=\"fixed\"\n top=\"4\"\n right=\"4\"\n bg=\"surface-2\"\n shadow=\"3\"\n rounded=\"3\"\n w=\"10\"\n h=\"10\"\n variant=\"soft\"\n data-tgph-appearance=\"dark\"\n aria-label=\"Expand guide toolbar\"\n style={{ zIndex: TOOLBAR_Z_INDEX }}\n >\n <svg\n width=\"40\"\n height=\"40\"\n viewBox=\"0 0 40 40\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n }}\n >\n <path\n d=\"M11.6001 32.4V7.59998H16.6365V21.8219H16.7774L22.3067 14.8525H27.9418L21.8138 22.0696L28.4001 32.4H22.7996L18.8555 25.572L16.6365 28.0839V32.4H11.6001Z\"\n fill=\"#EDEEEF\"\n />\n <path\n d=\"M28.4 10.4C28.4 11.9464 27.1467 13.2 25.6 13.2C24.0534 13.2 22.8 11.9464 22.8 10.4C22.8 8.85358 24.0534 7.59998 25.6 7.59998C27.1467 7.59998 28.4 8.85358 28.4 10.4Z\"\n fill=\"#FF573A\"\n />\n </svg>\n </Button>\n );\n};\n"],"names":["KnockButton","onClick","React","Button","zIndex","TOOLBAR_Z_INDEX","position","top","left","transform"],"mappings":"iQASaA,EAAcA,CAAC,CAAEC,QAAAA,CAAe,IAEzCC,EAAA,QAAA,cAACC,SACC,CAAA,QAAAF,EACA,SAAS,QACT,IAAI,IACJ,MAAM,IACN,GAAG,YACH,OAAO,IACP,QAAQ,IACR,EAAE,KACF,EAAE,KACF,QAAQ,OACR,uBAAqB,OACrB,aAAW,uBACX,MAAO,CAAEG,OAAQC,EAAAA,eAAAA,CAEjB,EAAAH,EAAA,QAAA,cAAC,MACC,CAAA,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,6BACN,MAAO,CACLI,SAAU,WACVC,IAAK,MACLC,KAAM,MACNC,UAAW,uBAAA,GAGbP,EAAAA,QAAA,cAAC,OACC,CAAA,EAAE,0JACF,KAAK,SAAS,CAAA,EAEhBA,EAAAA,QAAA,cAAC,QACC,EAAE,uKACF,KAAK,SAAS,CAAA,CAElB,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react"),i=require("@knocklabs/react-core"),c=require("@telegraph/button"),l=require("@telegraph/layout"),g=require("@telegraph/tag"),p=require("@telegraph/typography"),n=require("lucide-react"),h=require("../KnockButton.js"),m=require("../shared.js");;/* empty css */const y=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},t=y(u),C=()=>{const[e,s]=u.useState(!1),{client:r}=i.useGuideContext(),o=i.useStore(r.store,f=>f.debug);if(!(o!=null&&o.forcedGuideKey))return null;const d=()=>{r.exitDebugMode()},a=()=>{s(!e)};return e?t.default.createElement(h.KnockButton,{onClick:a}):t.default.createElement(l.Stack,{gap:"2",align:"center",position:"fixed",top:"4",right:"4",backgroundColor:"surface-2",bg:"surface-2",shadow:"3",rounded:"3",py:"2",px:"3","data-tgph-appearance":"dark",style:{zIndex:m.TOOLBAR_Z_INDEX}},t.default.createElement(l.Stack,{gap:"2",align:"center",direction:"row"},t.default.createElement(g.Tag,{color:"green",variant:"soft",icon:{icon:n.Wrench,"aria-hidden":!0}},"Debug"),t.default.createElement(p.Text,{as:"div",size:"1",weight:"medium",w:"full",maxWidth:"40",style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},o.forcedGuideKey),t.default.createElement(c.Button,{onClick:d,size:"1",variant:"soft",trailingIcon:{icon:n.Undo2,"aria-hidden":!0}},"Exit"),t.default.createElement(c.Button,{onClick:a,size:"1",variant:"soft",leadingIcon:{icon:n.Minimize2,alt:"Collapse guide toolbar"}})))};exports.V1=C;
|
|
2
|
+
//# sourceMappingURL=V1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"V1.js","sources":["../../../../../../../src/modules/guide/components/Toolbar/V1/V1.tsx"],"sourcesContent":["import { useGuideContext, useStore } from \"@knocklabs/react-core\";\nimport { Button } from \"@telegraph/button\";\nimport { Stack } from \"@telegraph/layout\";\nimport { Tag } from \"@telegraph/tag\";\nimport { Text } from \"@telegraph/typography\";\nimport { Minimize2, Undo2, Wrench } from \"lucide-react\";\nimport { useState } from \"react\";\n\nimport { KnockButton } from \"../KnockButton\";\nimport { TOOLBAR_Z_INDEX } from \"../shared\";\nimport \"../styles.css\";\n\nexport const V1 = () => {\n const [isCollapsed, setIsCollapsed] = useState(false);\n\n const { client } = useGuideContext();\n const debugState = useStore(client.store, (state) => state.debug);\n\n if (!debugState?.forcedGuideKey) {\n return null;\n }\n\n const handleExit = () => {\n client.exitDebugMode();\n };\n\n const handleToggleCollapse = () => {\n setIsCollapsed(!isCollapsed);\n };\n\n if (isCollapsed) {\n return <KnockButton onClick={handleToggleCollapse} />;\n }\n\n return (\n <Stack\n gap=\"2\"\n align=\"center\"\n position=\"fixed\"\n top=\"4\"\n right=\"4\"\n backgroundColor=\"surface-2\"\n bg=\"surface-2\"\n shadow=\"3\"\n rounded=\"3\"\n py=\"2\"\n px=\"3\"\n data-tgph-appearance=\"dark\"\n style={{ zIndex: TOOLBAR_Z_INDEX }}\n >\n <Stack gap=\"2\" align=\"center\" direction=\"row\">\n <Tag\n color=\"green\"\n variant=\"soft\"\n icon={{ icon: Wrench, \"aria-hidden\": true }}\n >\n Debug\n </Tag>\n\n <Text\n as=\"div\"\n size=\"1\"\n weight=\"medium\"\n w=\"full\"\n maxWidth=\"40\"\n style={{\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n }}\n >\n {debugState.forcedGuideKey}\n </Text>\n\n <Button\n onClick={handleExit}\n size=\"1\"\n variant=\"soft\"\n trailingIcon={{ icon: Undo2, \"aria-hidden\": true }}\n >\n Exit\n </Button>\n\n <Button\n onClick={handleToggleCollapse}\n size=\"1\"\n variant=\"soft\"\n leadingIcon={{ icon: Minimize2, alt: \"Collapse guide toolbar\" }}\n />\n </Stack>\n </Stack>\n );\n};\n"],"names":["V1","isCollapsed","setIsCollapsed","useState","client","useGuideContext","debugState","useStore","store","state","debug","forcedGuideKey","handleExit","exitDebugMode","handleToggleCollapse","React","KnockButton","Stack","zIndex","TOOLBAR_Z_INDEX","Tag","icon","Wrench","Text","overflow","textOverflow","whiteSpace","Button","Undo2","Minimize2","alt"],"mappings":"6bAYaA,EAAKA,IAAM,CACtB,KAAM,CAACC,EAAaC,CAAc,EAAIC,EAAAA,SAAS,EAAK,EAE9C,CAAEC,OAAAA,GAAWC,kBAAgB,EAC7BC,EAAaC,EAAAA,SAASH,EAAOI,MAAQC,GAAUA,EAAMC,KAAK,EAE5D,GAAA,EAACJ,GAAAA,MAAAA,EAAYK,gBACR,OAAA,KAGT,MAAMC,EAAaA,IAAM,CACvBR,EAAOS,cAAc,CACvB,EAEMC,EAAuBA,IAAM,CACjCZ,EAAe,CAACD,CAAW,CAC7B,EAEA,OAAIA,EACKc,EAAAA,QAAA,cAACC,EAAAA,YAAY,CAAA,QAASF,CAAwB,CAAA,EAIrDC,EAAA,QAAA,cAACE,EACC,MAAA,CAAA,IAAI,IACJ,MAAM,SACN,SAAS,QACT,IAAI,IACJ,MAAM,IACN,gBAAgB,YAChB,GAAG,YACH,OAAO,IACP,QAAQ,IACR,GAAG,IACH,GAAG,IACH,uBAAqB,OACrB,MAAO,CAAEC,OAAQC,EAAAA,eAAAA,GAEjBJ,EAAAA,QAAA,cAACE,EAAM,MAAA,CAAA,IAAI,IAAI,MAAM,SAAS,UAAU,KAAA,0BACrCG,MACC,CAAA,MAAM,QACN,QAAQ,OACR,KAAM,CAAEC,KAAMC,EAAAA,OAAQ,cAAe,EAAA,CAAO,EAAA,OAG9C,EAEAP,EAAA,QAAA,cAACQ,QACC,GAAG,MACH,KAAK,IACL,OAAO,SACP,EAAE,OACF,SAAS,KACT,MAAO,CACLC,SAAU,SACVC,aAAc,WACdC,WAAY,QAGbpB,CAAAA,EAAAA,EAAWK,cACd,EAECI,EAAA,QAAA,cAAAY,EAAA,OAAA,CACC,QAASf,EACT,KAAK,IACL,QAAQ,OACR,aAAc,CAAES,KAAMO,EAAAA,MAAO,cAAe,EAAK,CAAA,EAAE,MAGrD,EAECb,UAAA,cAAAY,EAAAA,OAAA,CACC,QAASb,EACT,KAAK,IACL,QAAQ,OACR,YAAa,CAAEO,KAAMQ,EAAAA,UAAWC,IAAK,wBAAyB,CAAA,CAAE,CAEpE,CACF,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@radix-ui/react-hover-card"),c=require("@telegraph/layout"),s=require("react"),d=require("./useInspectGuideClientStore.js");function l(e){if(e&&typeof e=="object"&&"default"in e)return e;const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const a=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,a.get?a:{enumerable:!0,get:()=>e[n]})}}return r.default=e,Object.freeze(r)}const o=l(u),t=l(s),f=({children:e,guide:r})=>{if(d.isUnknownGuide(r))return t.createElement(c.Stack,{align:"center"},e);const{annotation:n,activation_location_rules:a,priority:p,...i}=r;return t.createElement(o.Root,null,t.createElement(o.Trigger,null,t.createElement(c.Stack,{align:"center"},e)),t.createElement(o.Portal,null,t.createElement(o.Content,{sideOffset:44,side:"left"},t.createElement(c.Box,{px:"2",shadow:"2",rounded:"3",border:"px",overflow:"auto",backgroundColor:"surface-2",style:{width:"450px",maxHeight:"600px"}},t.createElement("pre",{style:{fontSize:"11px"}},t.createElement("code",null,JSON.stringify(i,null,2)))),t.createElement(o.Arrow,null))))};exports.GuideHoverCard=f;
|
|
2
|
+
//# sourceMappingURL=GuideHoverCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuideHoverCard.js","sources":["../../../../../../../src/modules/guide/components/Toolbar/V2/GuideHoverCard.tsx"],"sourcesContent":["import * as HoverCard from \"@radix-ui/react-hover-card\";\nimport { Box, Stack } from \"@telegraph/layout\";\nimport * as React from \"react\";\n\nimport {\n AnnotatedGuide,\n UnknownGuide,\n isUnknownGuide,\n} from \"./useInspectGuideClientStore\";\n\ntype Props = {\n guide: AnnotatedGuide | UnknownGuide;\n};\n\nexport const GuideHoverCard = ({\n children,\n guide,\n}: React.PropsWithChildren<Props>) => {\n if (isUnknownGuide(guide)) {\n return <Stack align=\"center\">{children}</Stack>;\n }\n\n // Prune out internal or legacy fields.\n const {\n annotation: _annotation,\n activation_location_rules: _activation_location_rules,\n priority: _priority,\n ...rest\n } = guide;\n\n return (\n <HoverCard.Root>\n <HoverCard.Trigger>\n <Stack align=\"center\">{children}</Stack>\n </HoverCard.Trigger>\n <HoverCard.Portal>\n <HoverCard.Content sideOffset={44} side=\"left\">\n <Box\n px=\"2\"\n shadow=\"2\"\n rounded=\"3\"\n border=\"px\"\n overflow=\"auto\"\n backgroundColor=\"surface-2\"\n style={{\n width: \"450px\",\n maxHeight: \"600px\",\n }}\n >\n <pre\n style={{\n fontSize: \"11px\",\n }}\n >\n <code>{JSON.stringify(rest, null, 2)}</code>\n </pre>\n </Box>\n <HoverCard.Arrow />\n </HoverCard.Content>\n </HoverCard.Portal>\n </HoverCard.Root>\n );\n};\n"],"names":["GuideHoverCard","children","guide","isUnknownGuide","React","Stack","annotation","_annotation","activation_location_rules","_activation_location_rules","priority","_priority","rest","HoverCard","Box","width","maxHeight","fontSize","JSON","stringify"],"mappings":"+iBAcaA,EAAiBA,CAAC,CAC7BC,SAAAA,EACAC,MAAAA,CAC8B,IAAM,CAChCC,GAAAA,EAAAA,eAAeD,CAAK,EACtB,OAAQE,EAAA,cAAAC,EAAA,MAAA,CAAM,MAAM,QAAA,EAAUJ,CAAS,EAInC,KAAA,CACJK,WAAYC,EACZC,0BAA2BC,EAC3BC,SAAUC,EACV,GAAGC,CAAAA,EACDV,EAEJ,uBACGW,EAAU,KAAV,KACET,EAAA,cAAAS,EAAU,QAAV,KACCT,EAAA,cAACC,EAAAA,MAAM,CAAA,MAAM,UAAUJ,CAAS,CAClC,EACCG,EAAA,cAAAS,EAAU,OAAV,KACCT,EAAA,cAACS,EAAU,QAAV,CAAkB,WAAY,GAAI,KAAK,QACtCT,EAAA,cAACU,OACC,GAAG,IACH,OAAO,IACP,QAAQ,IACR,OAAO,KACP,SAAS,OACT,gBAAgB,YAChB,MAAO,CACLC,MAAO,QACPC,UAAW,OACb,CAAA,EAECZ,EAAA,cAAA,MAAA,CACC,MAAO,CACLa,SAAU,MAAA,GAGXb,EAAA,cAAA,OAAA,KAAMc,KAAKC,UAAUP,EAAM,KAAM,CAAC,CAAE,CACvC,CACF,EACCR,EAAA,cAAAS,EAAU,MAAV,IAAe,CAClB,CACF,CACF,CAEJ"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("@telegraph/button"),a=require("@telegraph/layout"),u=require("@telegraph/tag"),i=require("@telegraph/tooltip"),d=require("@telegraph/typography"),r=require("lucide-react"),m=require("react"),b=require("./GuideHoverCard.js"),l=require("./useInspectGuideClientStore.js");function p(e){if(e&&typeof e=="object"&&"default"in e)return e;const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const o in e)if(o!=="default"){const s=Object.getOwnPropertyDescriptor(e,o);Object.defineProperty(n,o,s.get?s:{enumerable:!0,get:()=>e[o]})}}return n.default=e,Object.freeze(n)}const t=p(m),g=({children:e})=>t.createElement(a.Stack,{h:"7",px:"2",borderTop:"px",justify:"space-between",align:"center"},e),v=({guide:e,orderIndex:n})=>t.createElement(g,null,t.createElement(a.Stack,{h:"6",justify:"flex-start",align:"center",gap:"2"},t.createElement(u.Tag,{size:"0",variant:"soft",color:e.bypass_global_group_limit?"blue":"default"},n+1),t.createElement(b.GuideHoverCard,{guide:e},t.createElement(d.Text,{as:"code",size:"1",color:e.active?"black":"disabled"},e.key))),t.createElement(a.Stack,{justify:"flex-end"},!l.isUnknownGuide(e)&&t.createElement(t.Fragment,null,t.createElement(a.Stack,{gap:"1"},t.createElement(i.Tooltip,{label:e.annotation.activatable.status?"This guide can be activated at the current location":"This guide cannot be activated at the current location"},t.createElement(c.Button,{px:"1",size:"1",variant:"soft",color:e.annotation.activatable.status?"green":"red",leadingIcon:{icon:r.LocateFixed,alt:"Target"}}))),t.createElement(a.Stack,{px:"2",align:"center"},t.createElement(a.Box,{h:"3",borderLeft:"px",borderColor:"gray-6"}))),t.createElement(a.Stack,{gap:"1"},!l.isUnknownGuide(e)&&t.createElement(t.Fragment,null,t.createElement(i.Tooltip,{label:e.annotation.targetable.status?"This user is being targeted":e.annotation.targetable.message},t.createElement(c.Button,{px:"1",size:"1",variant:"soft",color:e.annotation.targetable.status?"green":"red",leadingIcon:{icon:r.UserCircle2,alt:"Target"}})),t.createElement(i.Tooltip,{label:e.annotation.archived.status?"User has already dismissed this guide":"User has not dismissed this guide"},t.createElement(c.Button,{px:"1",size:"1",variant:"soft",color:e.annotation.archived.status?"red":"green",leadingIcon:{icon:r.Eye,alt:"Not archived"}}))),t.createElement(i.Tooltip,{label:l.isUnknownGuide(e)?"This guide has never been committed and published yet":e.active?"This guide is active":"This guide is not active"},t.createElement(c.Button,{px:"1",size:"1",variant:"soft",color:e.active?"green":"red",leadingIcon:e.active?{icon:r.CheckCircle2,alt:"Active"}:{icon:r.CircleDashed,alt:"Inactive"}})))));exports.GuideRow=v;
|
|
2
|
+
//# sourceMappingURL=GuideRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuideRow.js","sources":["../../../../../../../src/modules/guide/components/Toolbar/V2/GuideRow.tsx"],"sourcesContent":["import { Button } from \"@telegraph/button\";\nimport { Box, Stack } from \"@telegraph/layout\";\nimport { Tag } from \"@telegraph/tag\";\nimport { Tooltip } from \"@telegraph/tooltip\";\nimport { Text } from \"@telegraph/typography\";\nimport {\n CheckCircle2,\n CircleDashed,\n Eye,\n LocateFixed,\n UserCircle2,\n} from \"lucide-react\";\nimport * as React from \"react\";\n\nimport { GuideHoverCard } from \"./GuideHoverCard\";\nimport {\n AnnotatedGuide,\n UnknownGuide,\n isUnknownGuide,\n} from \"./useInspectGuideClientStore\";\n\nconst Row = ({ children }: React.PropsWithChildren) => (\n <Stack h=\"7\" px=\"2\" borderTop=\"px\" justify=\"space-between\" align=\"center\">\n {children}\n </Stack>\n);\n\ntype Props = {\n guide: UnknownGuide | AnnotatedGuide;\n orderIndex: number;\n};\n\nexport const GuideRow = ({ guide, orderIndex }: Props) => {\n return (\n <Row>\n <Stack h=\"6\" justify=\"flex-start\" align=\"center\" gap=\"2\">\n <Tag\n size=\"0\"\n variant=\"soft\"\n color={guide.bypass_global_group_limit ? \"blue\" : \"default\"}\n >\n {orderIndex + 1}\n </Tag>\n <GuideHoverCard guide={guide}>\n <Text as=\"code\" size=\"1\" color={guide.active ? \"black\" : \"disabled\"}>\n {guide.key}\n </Text>\n </GuideHoverCard>\n </Stack>\n\n <Stack justify=\"flex-end\">\n {!isUnknownGuide(guide) && (\n <>\n <Stack gap=\"1\">\n <Tooltip\n label={\n guide.annotation.activatable.status\n ? \"This guide can be activated at the current location\"\n : \"This guide cannot be activated at the current location\"\n }\n >\n <Button\n px=\"1\"\n size=\"1\"\n variant=\"soft\"\n color={guide.annotation.activatable.status ? \"green\" : \"red\"}\n leadingIcon={{ icon: LocateFixed, alt: \"Target\" }}\n />\n </Tooltip>\n </Stack>\n <Stack px=\"2\" align=\"center\">\n <Box h=\"3\" borderLeft=\"px\" borderColor=\"gray-6\" />\n </Stack>\n </>\n )}\n <Stack gap=\"1\">\n {!isUnknownGuide(guide) && (\n <>\n <Tooltip\n label={\n guide.annotation.targetable.status\n ? \"This user is being targeted\"\n : guide.annotation.targetable.message\n }\n >\n <Button\n px=\"1\"\n size=\"1\"\n variant=\"soft\"\n color={guide.annotation.targetable.status ? \"green\" : \"red\"}\n leadingIcon={{ icon: UserCircle2, alt: \"Target\" }}\n />\n </Tooltip>\n <Tooltip\n label={\n guide.annotation.archived.status\n ? \"User has already dismissed this guide\"\n : \"User has not dismissed this guide\"\n }\n >\n <Button\n px=\"1\"\n size=\"1\"\n variant=\"soft\"\n color={guide.annotation.archived.status ? \"red\" : \"green\"}\n leadingIcon={{ icon: Eye, alt: \"Not archived\" }}\n />\n </Tooltip>\n </>\n )}\n <Tooltip\n label={\n isUnknownGuide(guide)\n ? \"This guide has never been committed and published yet\"\n : !guide.active\n ? \"This guide is not active\"\n : \"This guide is active\"\n }\n >\n <Button\n px=\"1\"\n size=\"1\"\n variant=\"soft\"\n color={guide.active ? \"green\" : \"red\"}\n leadingIcon={\n guide.active\n ? { icon: CheckCircle2, alt: \"Active\" }\n : { icon: CircleDashed, alt: \"Inactive\" }\n }\n />\n </Tooltip>\n </Stack>\n </Stack>\n </Row>\n );\n};\n"],"names":["Row","children","React","Stack","GuideRow","guide","orderIndex","Tag","bypass_global_group_limit","GuideHoverCard","Text","active","key","isUnknownGuide","Tooltip","annotation","activatable","status","Button","icon","LocateFixed","alt","Box","targetable","message","UserCircle2","archived","Eye","CheckCircle2","CircleDashed"],"mappings":"yrBAqBMA,EAAMA,CAAC,CAAEC,SAAAA,CAAkC,IAC9CC,EAAA,cAAAC,EAAAA,MAAA,CAAM,EAAE,IAAI,GAAG,IAAI,UAAU,KAAK,QAAQ,gBAAgB,MAAM,QAAA,EAC9DF,CACH,EAQWG,EAAWA,CAAC,CAAEC,MAAAA,EAAOC,WAAAA,CAAkB,oBAE/CN,EACC,KAAAE,EAAA,cAACC,QAAM,CAAA,EAAE,IAAI,QAAQ,aAAa,MAAM,SAAS,IAAI,GACnD,EAAAD,EAAA,cAACK,OACC,KAAK,IACL,QAAQ,OACR,MAAOF,EAAMG,0BAA4B,OAAS,SAEjDF,EAAAA,EAAa,CAChB,EACAJ,EAAA,cAACO,kBAAe,MAAAJ,CACd,EAAAH,EAAA,cAACQ,OAAK,CAAA,GAAG,OAAO,KAAK,IAAI,MAAOL,EAAMM,OAAS,QAAU,UACtDN,EAAAA,EAAMO,GACT,CACF,CACF,EAEAV,EAAA,cAACC,EAAAA,MAAM,CAAA,QAAQ,YACZ,CAACU,iBAAeR,CAAK,mCAEjBH,EAAA,cAAAC,EAAAA,MAAA,CAAM,IAAI,GACT,EAAAD,EAAA,cAACY,WACC,MACET,EAAMU,WAAWC,YAAYC,OACzB,sDACA,wDAAA,kBAGLC,EACC,OAAA,CAAA,GAAG,IACH,KAAK,IACL,QAAQ,OACR,MAAOb,EAAMU,WAAWC,YAAYC,OAAS,QAAU,MACvD,YAAa,CAAEE,KAAMC,EAAAA,YAAaC,IAAK,QAAA,CAAW,CAAA,CAEtD,CACF,EACAnB,EAAA,cAACC,EAAAA,MAAM,CAAA,GAAG,IAAI,MAAM,QAClB,EAAAD,EAAA,cAACoB,EAAI,IAAA,CAAA,EAAE,IAAI,WAAW,KAAK,YAAY,QAAA,CAAQ,CACjD,CACF,EAEFpB,EAAA,cAACC,EAAAA,MAAM,CAAA,IAAI,GACR,EAAA,CAACU,EAAAA,eAAeR,CAAK,GAElBH,EAAA,cAAAA,EAAA,SAAA,KAAAA,EAAA,cAACY,EAAAA,QACC,CAAA,MACET,EAAMU,WAAWQ,WAAWN,OACxB,8BACAZ,EAAMU,WAAWQ,WAAWC,SAGlCtB,EAAA,cAACgB,EAAAA,OACC,CAAA,GAAG,IACH,KAAK,IACL,QAAQ,OACR,MAAOb,EAAMU,WAAWQ,WAAWN,OAAS,QAAU,MACtD,YAAa,CAAEE,KAAMM,EAAAA,YAAaJ,IAAK,QAAA,CAAW,CAAA,CAEtD,EACCnB,EAAA,cAAAY,EAAA,QAAA,CACC,MACET,EAAMU,WAAWW,SAAST,OACtB,wCACA,mCAGN,EAAAf,EAAA,cAACgB,EACC,OAAA,CAAA,GAAG,IACH,KAAK,IACL,QAAQ,OACR,MAAOb,EAAMU,WAAWW,SAAST,OAAS,MAAQ,QAClD,YAAa,CAAEE,KAAMQ,EAAAA,IAAKN,IAAK,cAAA,CAAiB,CAAA,CAEpD,CACF,EAEDnB,EAAA,cAAAY,EAAAA,QAAA,CACC,MACED,EAAAA,eAAeR,CAAK,EAChB,wDACCA,EAAMM,OAEL,uBADA,4BAIRT,EAAA,cAACgB,EAAAA,OACC,CAAA,GAAG,IACH,KAAK,IACL,QAAQ,OACR,MAAOb,EAAMM,OAAS,QAAU,MAChC,YACEN,EAAMM,OACF,CAAEQ,KAAMS,EAAAA,aAAcP,IAAK,QAAA,EAC3B,CAAEF,KAAMU,EAAAA,aAAcR,IAAK,UAAA,CAChC,CAAA,CAEL,CACF,CACF,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react"),t=require("@telegraph/select"),s=require("../shared.js"),r=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},l=r(n),u=({value:e,onChange:a})=>l.default.createElement(t.Select.Root,{size:"1",value:e,onValueChange:i=>{i&&a(i)},contentProps:{style:{zIndex:s.TOOLBAR_Z_INDEX}}},l.default.createElement(t.Select.Option,{size:"1",value:"current-page"},"Displayable on current page"),l.default.createElement(t.Select.Option,{size:"1",value:"all-eligible"},"All eligible guides for user"),l.default.createElement(t.Select.Option,{size:"1",value:"all-guides"},"All existing guides"));exports.GuidesListDisplaySelect=u;
|
|
2
|
+
//# sourceMappingURL=GuidesListDisplaySelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GuidesListDisplaySelect.js","sources":["../../../../../../../src/modules/guide/components/Toolbar/V2/GuidesListDisplaySelect.tsx"],"sourcesContent":["import { Select } from \"@telegraph/select\";\n\nimport { TOOLBAR_Z_INDEX } from \"../shared\";\n\nexport type DisplayOption = \"current-page\" | \"all-eligible\" | \"all-guides\";\n\ntype Props = {\n value: DisplayOption;\n onChange: (option: DisplayOption) => void;\n};\n\nexport const GuidesListDisplaySelect = ({ value, onChange }: Props) => {\n return (\n <Select.Root\n size=\"1\"\n value={value}\n onValueChange={(value) => {\n if (!value) return;\n onChange(value as DisplayOption);\n }}\n contentProps={{\n style: { zIndex: TOOLBAR_Z_INDEX },\n }}\n >\n <Select.Option size=\"1\" value=\"current-page\">\n Displayable on current page\n </Select.Option>\n <Select.Option size=\"1\" value=\"all-eligible\">\n All eligible guides for user\n </Select.Option>\n <Select.Option size=\"1\" value=\"all-guides\">\n All existing guides\n </Select.Option>\n </Select.Root>\n );\n};\n"],"names":["GuidesListDisplaySelect","value","onChange","React","Select","style","zIndex","TOOLBAR_Z_INDEX"],"mappings":"iOAWaA,EAA0BA,CAAC,CAAEC,MAAAA,EAAOC,SAAAA,CAAgB,IAE7DC,UAAA,cAACC,SAAO,KAAP,CACC,KAAK,IACL,MAAAH,EACA,cAAgBA,GAAU,CACnBA,GACLC,EAASD,CAAsB,GAEjC,aAAc,CACZI,MAAO,CAAEC,OAAQC,EAAAA,eAAAA,CAAgB,CAGnC,EAAAJ,EAAA,QAAA,cAACC,EAAO,OAAA,OAAP,CAAc,KAAK,IAAI,MAAM,cAAc,EAAA,6BAE5C,EACAD,EAAA,QAAA,cAACC,SAAO,OAAP,CAAc,KAAK,IAAI,MAAM,cAAA,EAAc,8BAE5C,EACCD,EAAA,QAAA,cAAAC,EAAAA,OAAO,OAAP,CAAc,KAAK,IAAI,MAAM,YAAA,EAAY,qBAE1C,CACF"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("@knocklabs/react-core"),u=require("@telegraph/button"),r=require("@telegraph/layout"),s=require("lucide-react"),b=require("react"),m=require("../KnockButton.js"),E=require("../shared.js");;/* empty css */const g=require("./GuideRow.js"),y=require("./GuidesListDisplaySelect.js"),x=require("./helpers.js"),C=require("./useInspectGuideClientStore.js"),S=t=>t&&typeof t=="object"&&"default"in t?t:{default:t},e=S(b),q=({guides:t,displayOption:i})=>t.map((n,l)=>i==="current-page"&&(!n.annotation.isEligible||!n.annotation.isQualified)||i==="all-eligible"&&!n.annotation.isEligible?null:e.default.createElement(g.GuideRow,{key:n.key,guide:n,orderIndex:l})),k=()=>{const{client:t}=p.useGuideContext(),[i,n]=e.default.useState("current-page"),[l,c]=e.default.useState(x.detectToolbarParam()),[d,a]=e.default.useState(!0);e.default.useEffect(()=>{if(l)return t.setDebug(),()=>{t.unsetDebug()}},[l,t]);const o=C.useInspectGuideClientStore();return o?e.default.createElement(r.Box,{position:"fixed",top:"4",right:"4",style:{zIndex:E.TOOLBAR_Z_INDEX}},d?e.default.createElement(m.KnockButton,{onClick:()=>a(!1)}):e.default.createElement(r.Stack,{direction:"column",backgroundColor:"surface-2",shadow:"2",rounded:"3",border:"px",overflow:"hidden",style:{width:"400px"}},e.default.createElement(r.Stack,{w:"full",p:"2",justify:"space-between",direction:"row",style:{boxSizing:"border-box"}},e.default.createElement(r.Box,{style:{width:"220px"}},e.default.createElement(y.GuidesListDisplaySelect,{value:i,onChange:f=>n(f)})),e.default.createElement(r.Stack,{gap:"2"},e.default.createElement(u.Button,{onClick:()=>c(!1),size:"1",variant:"soft",trailingIcon:{icon:s.Undo2,"aria-hidden":!0}},"Exit"),e.default.createElement(u.Button,{onClick:()=>a(!0),size:"1",variant:"soft",leadingIcon:{icon:s.Minimize2,alt:"Collapse guide toolbar"}}))),e.default.createElement(r.Box,{w:"full"},o.error&&e.default.createElement(r.Box,null,o.error),e.default.createElement(q,{guides:o.guides,displayOption:i})))):null};exports.V2=k;
|
|
2
|
+
//# sourceMappingURL=V2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"V2.js","sources":["../../../../../../../src/modules/guide/components/Toolbar/V2/V2.tsx"],"sourcesContent":["import { useGuideContext } from \"@knocklabs/react-core\";\nimport { Button } from \"@telegraph/button\";\nimport { Box, Stack } from \"@telegraph/layout\";\nimport { Minimize2, Undo2 } from \"lucide-react\";\nimport React from \"react\";\n\nimport { KnockButton } from \"../KnockButton\";\nimport { TOOLBAR_Z_INDEX } from \"../shared\";\nimport \"../styles.css\";\n\nimport { GuideRow } from \"./GuideRow\";\nimport {\n DisplayOption,\n GuidesListDisplaySelect,\n} from \"./GuidesListDisplaySelect\";\nimport { detectToolbarParam } from \"./helpers\";\nimport {\n InspectionResult,\n useInspectGuideClientStore,\n} from \"./useInspectGuideClientStore\";\n\nconst GuidesList = ({\n guides,\n displayOption,\n}: {\n guides: InspectionResult[\"guides\"];\n displayOption: DisplayOption;\n}) => {\n return guides.map((guide, idx) => {\n if (\n displayOption === \"current-page\" &&\n (!guide.annotation.isEligible || !guide.annotation.isQualified)\n ) {\n return null;\n }\n if (displayOption === \"all-eligible\" && !guide.annotation.isEligible) {\n return null;\n }\n\n return <GuideRow key={guide.key} guide={guide} orderIndex={idx} />;\n });\n};\n\nexport const V2 = () => {\n const { client } = useGuideContext();\n\n const [guidesListDisplayOption, setGuidesListDisplayOption] =\n React.useState<DisplayOption>(\"current-page\");\n\n const [isVisible, setIsVisible] = React.useState(detectToolbarParam());\n const [isCollapsed, setIsCollapsed] = React.useState(true);\n\n React.useEffect(() => {\n if (!isVisible) {\n return;\n }\n\n client.setDebug();\n\n return () => {\n client.unsetDebug();\n };\n }, [isVisible, client]);\n\n const result = useInspectGuideClientStore();\n if (!result) {\n return null;\n }\n\n return (\n <Box position=\"fixed\" top=\"4\" right=\"4\" style={{ zIndex: TOOLBAR_Z_INDEX }}>\n {isCollapsed ? (\n <KnockButton onClick={() => setIsCollapsed(false)} />\n ) : (\n <Stack\n direction=\"column\"\n backgroundColor=\"surface-2\"\n shadow=\"2\"\n rounded=\"3\"\n border=\"px\"\n overflow=\"hidden\"\n style={{ width: \"400px\" }}\n >\n <Stack\n w=\"full\"\n p=\"2\"\n justify=\"space-between\"\n direction=\"row\"\n style={{ boxSizing: \"border-box\" }}\n >\n <Box style={{ width: \"220px\" }}>\n <GuidesListDisplaySelect\n value={guidesListDisplayOption}\n onChange={(opt) => setGuidesListDisplayOption(opt)}\n />\n </Box>\n\n <Stack gap=\"2\">\n <Button\n onClick={() => setIsVisible(false)}\n size=\"1\"\n variant=\"soft\"\n trailingIcon={{ icon: Undo2, \"aria-hidden\": true }}\n >\n Exit\n </Button>\n <Button\n onClick={() => setIsCollapsed(true)}\n size=\"1\"\n variant=\"soft\"\n leadingIcon={{ icon: Minimize2, alt: \"Collapse guide toolbar\" }}\n />\n </Stack>\n </Stack>\n\n <Box w=\"full\">\n {result.error && <Box>{result.error}</Box>}\n <GuidesList\n guides={result.guides}\n displayOption={guidesListDisplayOption}\n />\n </Box>\n </Stack>\n )}\n </Box>\n );\n};\n"],"names":["GuidesList","guides","displayOption","map","guide","idx","annotation","isEligible","isQualified","GuideRow","key","V2","client","useGuideContext","guidesListDisplayOption","setGuidesListDisplayOption","React","useState","isVisible","setIsVisible","detectToolbarParam","isCollapsed","setIsCollapsed","useEffect","setDebug","unsetDebug","result","useInspectGuideClientStore","Box","zIndex","TOOLBAR_Z_INDEX","KnockButton","Stack","width","boxSizing","GuidesListDisplaySelect","opt","Button","icon","Undo2","Minimize2","alt","error"],"mappings":"0gBAqBMA,EAAaA,CAAC,CAClBC,OAAAA,EACAC,cAAAA,CAIF,IACSD,EAAOE,IAAI,CAACC,EAAOC,IAEtBH,IAAkB,iBACjB,CAACE,EAAME,WAAWC,YAAc,CAACH,EAAME,WAAWE,cAIjDN,IAAkB,gBAAkB,CAACE,EAAME,WAAWC,WACjD,6BAGDE,EAAS,SAAA,CAAA,IAAKL,EAAMM,IAAK,MAAAN,EAAc,WAAYC,EAAO,CACnE,EAGUM,EAAKA,IAAM,CAChB,KAAA,CAAEC,OAAAA,GAAWC,kBAAgB,EAE7B,CAACC,EAAyBC,CAA0B,EACxDC,EAAAA,QAAMC,SAAwB,cAAc,EAExC,CAACC,EAAWC,CAAY,EAAIH,EAAAA,QAAMC,SAASG,EAAAA,oBAAoB,EAC/D,CAACC,EAAaC,CAAc,EAAIN,EAAAA,QAAMC,SAAS,EAAI,EAEzDD,EAAAA,QAAMO,UAAU,IAAM,CACpB,GAAKL,EAILN,OAAAA,EAAOY,SAAS,EAET,IAAM,CACXZ,EAAOa,WAAW,CACpB,CAAA,EACC,CAACP,EAAWN,CAAM,CAAC,EAEtB,MAAMc,EAASC,EAAAA,2BAA2B,EAC1C,OAAKD,EAKHV,UAAA,cAACY,OAAI,SAAS,QAAQ,IAAI,IAAI,MAAM,IAAI,MAAO,CAAEC,OAAQC,EAAAA,eAAgB,CAAA,EACtET,EACCL,EAAAA,QAAA,cAACe,EAAY,YAAA,CAAA,QAAS,IAAMT,EAAe,EAAK,CAAE,CAAA,EAEjDN,EAAAA,QAAA,cAAAgB,EAAAA,MAAA,CACC,UAAU,SACV,gBAAgB,YAChB,OAAO,IACP,QAAQ,IACR,OAAO,KACP,SAAS,SACT,MAAO,CAAEC,MAAO,OAAQ,CAAA,EAEvBjB,EAAAA,QAAA,cAAAgB,EAAAA,MAAA,CACC,EAAE,OACF,EAAE,IACF,QAAQ,gBACR,UAAU,MACV,MAAO,CAAEE,UAAW,YAAa,CAAA,EAEhClB,EAAAA,QAAA,cAAAY,EAAA,IAAA,CAAI,MAAO,CAAEK,MAAO,OAAA,CAAQ,EAC1BjB,EAAA,QAAA,cAAAmB,EAAA,wBAAA,CACC,MAAOrB,EACP,SAAWsB,GAAQrB,EAA2BqB,CAAG,CAAE,CAAA,CAEvD,EAEApB,EAAA,QAAA,cAACgB,EAAAA,MAAM,CAAA,IAAI,GACT,EAAAhB,EAAAA,QAAA,cAACqB,EAAAA,OACC,CAAA,QAAS,IAAMlB,EAAa,EAAK,EACjC,KAAK,IACL,QAAQ,OACR,aAAc,CAAEmB,KAAMC,EAAAA,MAAO,cAAe,EAAA,CAAO,EAAA,MAGrD,EACAvB,EAAAA,QAAA,cAACqB,EAAAA,QACC,QAAS,IAAMf,EAAe,EAAI,EAClC,KAAK,IACL,QAAQ,OACR,YAAa,CAAEgB,KAAME,EAAAA,UAAWC,IAAK,wBAAyB,CAAA,CAAE,CAEpE,CACF,EAEAzB,UAAA,cAACY,EAAAA,KAAI,EAAE,MAAA,EACJF,EAAOgB,OAAU1B,EAAA,QAAA,cAAAY,EAAA,IAAA,KAAKF,EAAOgB,KAAM,EACnC1B,UAAA,cAAAhB,EAAA,CACC,OAAQ0B,EAAOzB,OACf,cAAea,CAAwB,CAAA,CAE3C,CACF,CAEJ,EA1DO,IA4DX"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("@knocklabs/react-core");require("react");;/* empty css */require("lodash.debounce");const e=require("../../../../core/utils.js"),a="knock_guide_toolbar",o=()=>{const r=e.checkForWindow();return!r||!r.location?!1:new URLSearchParams(r.location.search).get(a)==="true"};exports.detectToolbarParam=o;
|
|
2
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sources":["../../../../../../../src/modules/guide/components/Toolbar/V2/helpers.ts"],"sourcesContent":["import { checkForWindow } from \"../../../../../modules/core\";\n\n// Use this param to start Toolbar and enter into a debugging session when\n// it is present and set to true.\nconst TOOLBAR_QUERY_PARAM = \"knock_guide_toolbar\";\n\nexport const detectToolbarParam = () => {\n const win = checkForWindow();\n if (!win || !win.location) {\n return false;\n }\n\n const urlSearchParams = new URLSearchParams(win.location.search);\n const hasToolbarParam = urlSearchParams.get(TOOLBAR_QUERY_PARAM) === \"true\";\n\n return hasToolbarParam;\n};\n"],"names":["TOOLBAR_QUERY_PARAM","detectToolbarParam","win","checkForWindow","location","URLSearchParams","search","get"],"mappings":"sQAIMA,EAAsB,sBAEfC,EAAqBA,IAAM,CACtC,MAAMC,EAAMC,EAAAA,eAAe,EAC3B,MAAI,CAACD,GAAO,CAACA,EAAIE,SACR,GAGe,IAAIC,gBAAgBH,EAAIE,SAASE,MAAM,EACvBC,IAAIP,CAAmB,IAAM,MAGvE"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@knocklabs/client"),i=require("@knocklabs/react-core"),l=e=>{switch(e.reason){case"not_in_target_audience":case"target_conditions_not_met":return{targetable:{status:!1,reason:e.reason,message:e.message}};case"marked_as_archived":return{archived:{status:!0}};case"guide_not_active":return{active:{status:!1}};default:return}},g=({active:e,targetable:s,archived:n})=>!(!e.status||!s.status||n.status),o=({activatable:e})=>!!e.status,f=(e,s)=>{const{ineligibleGuides:n,location:a}=s,r=n[e.key],t=r?l(r):void 0,u={active:(t==null?void 0:t.active)||{status:!0},targetable:(t==null?void 0:t.targetable)||{status:!0},archived:(t==null?void 0:t.archived)||{status:!1},activatable:{status:d.checkActivatable(e,a)}},c={...u,isEligible:g(u),isQualified:o(u)};return{...e,annotation:c}},_=e=>({__typename:"UnknownGuide",key:e,active:!1,bypass_global_group_limit:!1,annotation:{isEligible:!1,isQualified:!1}}),v=()=>{var r;const{client:e}=i.useGuideContext(),s=i.useStore(e.store,t=>({location:t.location,guides:t.guides,guideGroups:t.guideGroups,ineligibleGuides:t.ineligibleGuides,debug:t.debug}));if(!((r=s.debug)!=null&&r.debugging))return;const n=s.guideGroups[0];return n?{guides:n.display_sequence.map(t=>{const u=s.guides[t];return u?f(u,s):_(t)})}:{error:"no_guide_group",guides:[]}},G=e=>typeof e=="object"&&e!==null&&"__typename"in e&&e.__typename==="UnknownGuide";exports.isUnknownGuide=G;exports.resolveIsQualified=o;exports.useInspectGuideClientStore=v;
|
|
2
|
+
//# sourceMappingURL=useInspectGuideClientStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInspectGuideClientStore.js","sources":["../../../../../../../src/modules/guide/components/Toolbar/V2/useInspectGuideClientStore.ts"],"sourcesContent":["import {\n KnockGuide,\n KnockGuideClientStoreState,\n KnockGuideIneligibilityMarker,\n checkActivatable,\n} from \"@knocklabs/client\";\nimport { useGuideContext, useStore } from \"@knocklabs/react-core\";\n\n/**\n * This is the main module that will house core logic for the toolbar. It hooks\n * into the guide client state store, extracts relevant data for debugging, and\n * transforms it into easily consumable data for the toolbar - namely\n * \"annotating\" guides for its various statuses to display.\n */\n\n// Active: `true` status = good\ntype ActiveStatus = {\n status: boolean;\n};\n\n// Targetable: `true` status = good\ntype TargetableStatusTrue = {\n status: true;\n};\ntype TargetableStatusFalse = {\n status: false;\n reason: string;\n message: string;\n};\ntype TargetableStatus = TargetableStatusTrue | TargetableStatusFalse;\n\ntype ActivatableStatus = {\n status: boolean;\n};\n\n// Archived: `false` status = good\ntype ArchivedStatus = {\n status: boolean;\n};\n\ntype AnnotatedStatuses = {\n // Individual eligibility statuses:\n active: ActiveStatus;\n targetable: TargetableStatus;\n archived: ArchivedStatus;\n // Individual qualified statuses:\n activatable: ActivatableStatus;\n};\n\ntype GuideAnnotation = AnnotatedStatuses & {\n // Resolved eligibility based on active, targetable and archived statuses,\n // which are backend driven evaluation results that are exposed for debugging.\n isEligible: boolean;\n\n // Resolved display qualification based on an activatable status, which\n // informs \"when\" and \"where\" an eligible guide can be displayed to user.\n isQualified: boolean;\n};\n\nexport type AnnotatedGuide = KnockGuide & {\n annotation: GuideAnnotation;\n\n // Legacy fields, typed only to make tsc happy when we prune these out.\n activation_location_rules?: KnockGuide[\"activation_url_patterns\"];\n priority?: number;\n};\n\n// Exists and ordered in control but absent in switchboard (therefore not\n// included in the api response), which implies a newly created guide that has\n// never been published to switchboard.\nexport type UnknownGuide = {\n __typename: \"UnknownGuide\";\n key: KnockGuide[\"key\"];\n active: false;\n bypass_global_group_limit: false;\n annotation: {\n isEligible: false;\n isQualified: false;\n };\n};\n\nexport type InspectionResult = {\n guides: (AnnotatedGuide | UnknownGuide)[];\n error?: \"no_guide_group\";\n};\n\nconst toIneligibilityStatus = (\n marker: KnockGuideIneligibilityMarker,\n): Partial<AnnotatedStatuses> | undefined => {\n switch (marker.reason) {\n case \"not_in_target_audience\":\n case \"target_conditions_not_met\":\n return {\n targetable: {\n status: false,\n reason: marker.reason,\n message: marker.message,\n },\n };\n\n case \"marked_as_archived\":\n return {\n archived: {\n status: true,\n },\n };\n\n case \"guide_not_active\":\n return {\n active: {\n status: false,\n },\n };\n\n default:\n return undefined;\n }\n};\n\nconst resolveIsEligible = ({\n active,\n targetable,\n archived,\n}: AnnotatedStatuses) => {\n if (!active.status) return false;\n if (!targetable.status) return false;\n if (archived.status) return false;\n return true;\n};\n\nexport const resolveIsQualified = ({ activatable }: AnnotatedStatuses) => {\n if (!activatable.status) return false;\n return true;\n};\n\ntype StoreStateSnapshot = Pick<\n KnockGuideClientStoreState,\n \"location\" | \"guides\" | \"guideGroups\" | \"ineligibleGuides\" | \"debug\"\n>;\n\nconst annotateGuide = (\n guide: KnockGuide,\n snapshot: StoreStateSnapshot,\n): AnnotatedGuide => {\n const { ineligibleGuides, location } = snapshot;\n const marker = ineligibleGuides[guide.key];\n const ineligiblity = marker ? toIneligibilityStatus(marker) : undefined;\n\n const statuses: AnnotatedStatuses = {\n // isEligible:\n active: ineligiblity?.active || { status: true },\n targetable: ineligiblity?.targetable || { status: true },\n archived: ineligiblity?.archived || { status: false },\n // isQualified:\n activatable: { status: checkActivatable(guide, location) },\n };\n\n const annotation: GuideAnnotation = {\n ...statuses,\n isEligible: resolveIsEligible(statuses),\n isQualified: resolveIsQualified(statuses),\n };\n\n return {\n ...guide,\n annotation,\n };\n};\n\nconst newUnknownGuide = (key: KnockGuide[\"key\"]) =>\n ({\n __typename: \"UnknownGuide\",\n key,\n active: false,\n bypass_global_group_limit: false,\n annotation: {\n isEligible: false,\n isQualified: false,\n },\n }) as UnknownGuide;\n\nexport const useInspectGuideClientStore = (): InspectionResult | undefined => {\n const { client } = useGuideContext();\n\n // Extract a snapshot of the client store state for debugging.\n const snapshot: StoreStateSnapshot = useStore(client.store, (state) => {\n return {\n location: state.location,\n guides: state.guides,\n guideGroups: state.guideGroups,\n ineligibleGuides: state.ineligibleGuides,\n debug: state.debug,\n };\n });\n\n // Not in debugging session, so noop.\n if (!snapshot.debug?.debugging) {\n return undefined;\n }\n\n // Only for completeness, as there should always be a default group so this\n // should never happen.\n const defaultGroup = snapshot.guideGroups[0];\n if (!defaultGroup) {\n return {\n error: \"no_guide_group\",\n guides: [],\n };\n }\n\n // Annotate guides for various eligibility, activation and query statuses\n // that are useful for debugging purposes.\n const orderedGuides = defaultGroup.display_sequence.map((guideKey) => {\n const guide = snapshot.guides[guideKey];\n if (!guide) {\n return newUnknownGuide(guideKey);\n }\n\n return annotateGuide(guide, snapshot);\n });\n\n return {\n guides: orderedGuides,\n };\n};\n\nexport const isUnknownGuide = (input: unknown): input is UnknownGuide =>\n typeof input === \"object\" &&\n input !== null &&\n \"__typename\" in input &&\n (input as UnknownGuide).__typename === \"UnknownGuide\";\n"],"names":["toIneligibilityStatus","marker","reason","targetable","status","message","archived","active","undefined","resolveIsEligible","resolveIsQualified","activatable","annotateGuide","guide","snapshot","ineligibleGuides","location","key","ineligiblity","statuses","checkActivatable","annotation","isEligible","isQualified","newUnknownGuide","__typename","bypass_global_group_limit","useInspectGuideClientStore","client","useGuideContext","useStore","store","state","guides","guideGroups","debug","debugging","defaultGroup","display_sequence","map","guideKey","error","isUnknownGuide","input"],"mappings":"wJAsFMA,EACJC,GAC2C,CAC3C,OAAQA,EAAOC,OAAM,CACnB,IAAK,yBACL,IAAK,4BACI,MAAA,CACLC,WAAY,CACVC,OAAQ,GACRF,OAAQD,EAAOC,OACfG,QAASJ,EAAOI,OAAAA,CAEpB,EAEF,IAAK,qBACI,MAAA,CACLC,SAAU,CACRF,OAAQ,EAAA,CAEZ,EAEF,IAAK,mBACI,MAAA,CACLG,OAAQ,CACNH,OAAQ,EAAA,CAEZ,EAEF,QACSI,MAAAA,CAEb,EAEMC,EAAoBA,CAAC,CACzBF,OAAAA,EACAJ,WAAAA,EACAG,SAAAA,CACiB,IACb,GAACC,EAAOH,QACR,CAACD,EAAWC,QACZE,EAASF,QAIFM,EAAqBA,CAAC,CAAEC,YAAAA,CAA+B,IAC7DA,EAAAA,EAAYP,OASbQ,EAAgBA,CACpBC,EACAC,IACmB,CACb,KAAA,CAAEC,iBAAAA,EAAkBC,SAAAA,CAAAA,EAAaF,EACjCb,EAASc,EAAiBF,EAAMI,GAAG,EACnCC,EAAejB,EAASD,EAAsBC,CAAM,EAAIO,OAExDW,EAA8B,CAElCZ,QAAQW,GAAAA,YAAAA,EAAcX,SAAU,CAAEH,OAAQ,EAAK,EAC/CD,YAAYe,GAAAA,YAAAA,EAAcf,aAAc,CAAEC,OAAQ,EAAK,EACvDE,UAAUY,GAAAA,YAAAA,EAAcZ,WAAY,CAAEF,OAAQ,EAAM,EAEpDO,YAAa,CAAEP,OAAQgB,EAAAA,iBAAiBP,EAAOG,CAAQ,CAAA,CACzD,EAEMK,EAA8B,CAClC,GAAGF,EACHG,WAAYb,EAAkBU,CAAQ,EACtCI,YAAab,EAAmBS,CAAQ,CAC1C,EAEO,MAAA,CACL,GAAGN,EACHQ,WAAAA,CACF,CACF,EAEMG,EAAmBP,IACtB,CACCQ,WAAY,eACZR,IAAAA,EACAV,OAAQ,GACRmB,0BAA2B,GAC3BL,WAAY,CACVC,WAAY,GACZC,YAAa,EAAA,CAEjB,GAEWI,EAA6BA,IAAoC,OACtE,KAAA,CAAEC,OAAAA,GAAWC,kBAAgB,EAG7Bf,EAA+BgB,EAAAA,SAASF,EAAOG,MAAkBC,IAC9D,CACLhB,SAAUgB,EAAMhB,SAChBiB,OAAQD,EAAMC,OACdC,YAAaF,EAAME,YACnBnB,iBAAkBiB,EAAMjB,iBACxBoB,MAAOH,EAAMG,KACf,EACD,EAGG,GAAA,GAACrB,EAAAA,EAASqB,QAATrB,MAAAA,EAAgBsB,WACZ5B,OAKH6B,MAAAA,EAAevB,EAASoB,YAAY,CAAC,EAC3C,OAAKG,EAkBE,CACLJ,OAVoBI,EAAaC,iBAAiBC,IAAkBC,GAAA,CAC9D3B,MAAAA,EAAQC,EAASmB,OAAOO,CAAQ,EACtC,OAAK3B,EAIED,EAAcC,EAAOC,CAAQ,EAH3BU,EAAgBgB,CAAQ,CAGG,CACrC,CAID,EAnBS,CACLC,MAAO,iBACPR,OAAQ,CAAA,CACV,CAiBJ,EAEaS,EAAkBC,GAC7B,OAAOA,GAAU,UACjBA,IAAU,MACV,eAAgBA,GACfA,EAAuBlB,aAAe"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sources":["../../../../../../src/modules/guide/components/Toolbar/shared.ts"],"sourcesContent":["// Match the hardcoded z-index value in the telegraph tooltip package for now\n// to ensure everything within a toolbar is visible.\nexport const TOOLBAR_Z_INDEX = \"var(--tgph-zIndex-tooltip)\";\n"],"names":["TOOLBAR_Z_INDEX"],"mappings":"gFAEO,MAAMA,EAAkB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("@knocklabs/react-core"),n=require("react");require("../components/Banner/Banner.js");require("../components/Card/Card.js");const o=require("../components/Toolbar/V1/V1.js"),a=require("../components/Toolbar/V2/V2.js");require("../components/Modal/Modal.js");const i=e=>e&&typeof e=="object"&&"default"in e?e:{default:e},t=i(n),l=({children:e,toolbar:r="v1",...u})=>t.default.createElement(c.KnockGuideProvider,{...u,trackDebugParams:r==="v1"},e,r==="v2"?t.default.createElement(a.V2,null):t.default.createElement(o.V1,null));exports.KnockGuideProvider=l;
|
|
2
2
|
//# sourceMappingURL=KnockGuideProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KnockGuideProvider.js","sources":["../../../../../src/modules/guide/providers/KnockGuideProvider.tsx"],"sourcesContent":["import {\n KnockGuideProvider as KnockGuideProviderCore,\n type KnockGuideProviderProps,\n} from \"@knocklabs/react-core\";\nimport React from \"react\";\n\nimport {
|
|
1
|
+
{"version":3,"file":"KnockGuideProvider.js","sources":["../../../../../src/modules/guide/providers/KnockGuideProvider.tsx"],"sourcesContent":["import {\n KnockGuideProvider as KnockGuideProviderCore,\n type KnockGuideProviderProps,\n} from \"@knocklabs/react-core\";\nimport React from \"react\";\n\nimport { ToolbarV1, ToolbarV2 } from \"../components\";\n\ntype Props = KnockGuideProviderProps & {\n toolbar?: \"v1\" | \"v2\";\n};\n\n// Re-export the core KnockGuideProvider, so we can add React specific\n// functionality like the Toolbar component which shouldn't be included in other\n// contexts (e.g. React Native).\nexport const KnockGuideProvider: React.FC<React.PropsWithChildren<Props>> = ({\n children,\n toolbar = \"v1\",\n ...props\n}) => {\n return (\n <KnockGuideProviderCore\n {...props}\n // For backward compatibility with toolbar v1. Remove once v2 ships.\n trackDebugParams={toolbar === \"v1\"}\n >\n {children}\n {toolbar === \"v2\" ? <ToolbarV2 /> : <ToolbarV1 />}\n </KnockGuideProviderCore>\n );\n};\n"],"names":["KnockGuideProvider","children","toolbar","props","React","KnockGuideProviderCore","ToolbarV2","ToolbarV1"],"mappings":"uaAeaA,EAA+DA,CAAC,CAC3EC,SAAAA,EACAC,QAAAA,EAAU,KACV,GAAGC,CACL,IAEIC,EAAA,QAAA,cAACC,EAAA,mBAAA,CACC,GAAIF,EAEJ,iBAAkBD,IAAY,IAAA,EAE7BD,EACAC,IAAY,KAAOE,EAAA,QAAA,cAACE,EAAAA,GAAY,IAAA,0BAAIC,EAAAA,GAAY,IAAA,CACnD"}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1,107 +1,117 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
/* empty css */
|
|
3
|
-
import { Button as
|
|
4
|
-
import { ButtonGroup as
|
|
5
|
-
import { BellIcon as
|
|
6
|
-
import { CheckmarkCircle as
|
|
7
|
-
import { ChevronDown as
|
|
8
|
-
import { CloseCircle as
|
|
9
|
-
import { Spinner as
|
|
10
|
-
import { default as
|
|
11
|
-
import { EmptyFeed as
|
|
12
|
-
import { NotificationCell as
|
|
13
|
-
import { Avatar as
|
|
14
|
-
import { NotificationFeed as
|
|
15
|
-
import { NotificationFeedHeader as
|
|
16
|
-
import { MarkAsRead as
|
|
17
|
-
import { NotificationFeedContainer as
|
|
18
|
-
import { NotificationFeedPopover as
|
|
19
|
-
import { NotificationIconButton as
|
|
20
|
-
import { UnseenBadge as
|
|
21
|
-
import { Banner as
|
|
22
|
-
import { Card as
|
|
23
|
-
import
|
|
24
|
-
import {
|
|
25
|
-
import
|
|
26
|
-
import
|
|
27
|
-
import
|
|
28
|
-
import
|
|
29
|
-
import
|
|
30
|
-
|
|
31
|
-
import
|
|
32
|
-
import
|
|
3
|
+
import { Button as d } from "./modules/core/components/Button/Button.mjs";
|
|
4
|
+
import { ButtonGroup as C } from "./modules/core/components/Button/ButtonGroup.mjs";
|
|
5
|
+
import { BellIcon as S } from "./modules/core/components/Icons/Bell.mjs";
|
|
6
|
+
import { CheckmarkCircle as K } from "./modules/core/components/Icons/CheckmarkCircle.mjs";
|
|
7
|
+
import { ChevronDown as M } from "./modules/core/components/Icons/ChevronDown.mjs";
|
|
8
|
+
import { CloseCircle as B } from "./modules/core/components/Icons/CloseCircle.mjs";
|
|
9
|
+
import { Spinner as A } from "./modules/core/components/Spinner/Spinner.mjs";
|
|
10
|
+
import { default as N } from "./modules/core/hooks/useOnBottomScroll.mjs";
|
|
11
|
+
import { EmptyFeed as G } from "./modules/feed/components/EmptyFeed/EmptyFeed.mjs";
|
|
12
|
+
import { NotificationCell as w } from "./modules/feed/components/NotificationCell/NotificationCell.mjs";
|
|
13
|
+
import { Avatar as I } from "./modules/feed/components/NotificationCell/Avatar.mjs";
|
|
14
|
+
import { NotificationFeed as V } from "./modules/feed/components/NotificationFeed/NotificationFeed.mjs";
|
|
15
|
+
import { NotificationFeedHeader as E } from "./modules/feed/components/NotificationFeed/NotificationFeedHeader.mjs";
|
|
16
|
+
import { MarkAsRead as L } from "./modules/feed/components/NotificationFeed/MarkAsRead.mjs";
|
|
17
|
+
import { NotificationFeedContainer as U } from "./modules/feed/components/NotificationFeedContainer/NotificationFeedContainer.mjs";
|
|
18
|
+
import { NotificationFeedPopover as q } from "./modules/feed/components/NotificationFeedPopover/NotificationFeedPopover.mjs";
|
|
19
|
+
import { NotificationIconButton as J } from "./modules/feed/components/NotificationIconButton/NotificationIconButton.mjs";
|
|
20
|
+
import { UnseenBadge as W } from "./modules/feed/components/UnseenBadge/UnseenBadge.mjs";
|
|
21
|
+
import { Banner as Y, BannerView as Z } from "./modules/guide/components/Banner/Banner.mjs";
|
|
22
|
+
import { Card as $, CardView as ee } from "./modules/guide/components/Card/Card.mjs";
|
|
23
|
+
import "react";
|
|
24
|
+
import { FilterStatus as te, I18nContext as re, KnockFeedProvider as ne, KnockGuideContext as ae, KnockI18nProvider as ie, KnockMsTeamsProvider as se, KnockProvider as me, KnockSlackProvider as ue, feedProviderKey as ce, formatBadgeCount as pe, formatTimestamp as fe, getBadgeAriaLabel as le, locales as de, msTeamsProviderKey as xe, renderNodeOrFallback as Ce, slackProviderKey as ke, toSentenceCase as Se, useAuthenticatedKnockClient as he, useConnectedMsTeamsChannels as Ke, useConnectedSlackChannels as Te, useCreateNotificationStore as Me, useFeedSettings as ve, useGuide as Be, useGuideContext as Pe, useGuides as Ae, useKnockClient as Fe, useKnockFeed as Ne, useKnockMsTeamsClient as be, useKnockSlackClient as Ge, useMsTeamsAuth as ge, useMsTeamsChannels as we, useMsTeamsConnectionStatus as ye, useMsTeamsTeams as Ie, useNotificationStore as Oe, useNotifications as Ve, usePreferences as De, useSlackAuth as Ee, useSlackChannels as He, useSlackConnectionStatus as Le, useStableOptions as Re, useTranslations as Ue } from "@knocklabs/react-core";
|
|
25
|
+
import "@telegraph/button";
|
|
26
|
+
import "@telegraph/layout";
|
|
27
|
+
import "@telegraph/tag";
|
|
28
|
+
import "@telegraph/typography";
|
|
29
|
+
import "lucide-react";
|
|
30
|
+
/* empty css */
|
|
31
|
+
import "@telegraph/tooltip";
|
|
32
|
+
import "@radix-ui/react-hover-card";
|
|
33
|
+
import "@knocklabs/client";
|
|
34
|
+
import "@telegraph/select";
|
|
35
|
+
import { Modal as qe, ModalView as ze } from "./modules/guide/components/Modal/Modal.mjs";
|
|
36
|
+
import { KnockGuideProvider as Qe } from "./modules/guide/providers/KnockGuideProvider.mjs";
|
|
37
|
+
import { MsTeamsAuthButton as Xe } from "./modules/ms-teams/components/MsTeamsAuthButton/MsTeamsAuthButton.mjs";
|
|
38
|
+
import { MsTeamsAuthContainer as Ze } from "./modules/ms-teams/components/MsTeamsAuthContainer/MsTeamsAuthContainer.mjs";
|
|
39
|
+
import { default as $e } from "./modules/ms-teams/components/MsTeamsChannelCombobox/MsTeamsChannelCombobox.mjs";
|
|
40
|
+
import { SlackAuthButton as oo } from "./modules/slack/components/SlackAuthButton/SlackAuthButton.mjs";
|
|
41
|
+
import { SlackAuthContainer as ro } from "./modules/slack/components/SlackAuthContainer/SlackAuthContainer.mjs";
|
|
42
|
+
import { SlackChannelCombobox as ao } from "./modules/slack/components/SlackChannelCombobox/SlackChannelCombobox.mjs";
|
|
33
43
|
export {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
44
|
+
I as Avatar,
|
|
45
|
+
Y as Banner,
|
|
46
|
+
Z as BannerView,
|
|
47
|
+
S as BellIcon,
|
|
48
|
+
d as Button,
|
|
49
|
+
C as ButtonGroup,
|
|
50
|
+
$ as Card,
|
|
51
|
+
ee as CardView,
|
|
52
|
+
K as CheckmarkCircle,
|
|
53
|
+
M as ChevronDown,
|
|
54
|
+
B as CloseCircle,
|
|
55
|
+
G as EmptyFeed,
|
|
56
|
+
te as FilterStatus,
|
|
57
|
+
re as I18nContext,
|
|
58
|
+
ne as KnockFeedProvider,
|
|
59
|
+
ae as KnockGuideContext,
|
|
60
|
+
Qe as KnockGuideProvider,
|
|
61
|
+
ie as KnockI18nProvider,
|
|
62
|
+
se as KnockMsTeamsProvider,
|
|
63
|
+
me as KnockProvider,
|
|
64
|
+
ue as KnockSlackProvider,
|
|
65
|
+
L as MarkAsRead,
|
|
66
|
+
qe as Modal,
|
|
67
|
+
ze as ModalView,
|
|
68
|
+
Xe as MsTeamsAuthButton,
|
|
69
|
+
Ze as MsTeamsAuthContainer,
|
|
70
|
+
$e as MsTeamsChannelCombobox,
|
|
71
|
+
w as NotificationCell,
|
|
72
|
+
V as NotificationFeed,
|
|
73
|
+
U as NotificationFeedContainer,
|
|
74
|
+
E as NotificationFeedHeader,
|
|
75
|
+
q as NotificationFeedPopover,
|
|
76
|
+
J as NotificationIconButton,
|
|
77
|
+
oo as SlackAuthButton,
|
|
78
|
+
ro as SlackAuthContainer,
|
|
79
|
+
ao as SlackChannelCombobox,
|
|
80
|
+
A as Spinner,
|
|
81
|
+
W as UnseenBadge,
|
|
82
|
+
ce as feedProviderKey,
|
|
83
|
+
pe as formatBadgeCount,
|
|
84
|
+
fe as formatTimestamp,
|
|
85
|
+
le as getBadgeAriaLabel,
|
|
86
|
+
de as locales,
|
|
87
|
+
xe as msTeamsProviderKey,
|
|
88
|
+
Ce as renderNodeOrFallback,
|
|
89
|
+
ke as slackProviderKey,
|
|
90
|
+
Se as toSentenceCase,
|
|
91
|
+
he as useAuthenticatedKnockClient,
|
|
92
|
+
Ke as useConnectedMsTeamsChannels,
|
|
93
|
+
Te as useConnectedSlackChannels,
|
|
94
|
+
Me as useCreateNotificationStore,
|
|
95
|
+
ve as useFeedSettings,
|
|
96
|
+
Be as useGuide,
|
|
97
|
+
Pe as useGuideContext,
|
|
98
|
+
Ae as useGuides,
|
|
99
|
+
Fe as useKnockClient,
|
|
100
|
+
Ne as useKnockFeed,
|
|
101
|
+
be as useKnockMsTeamsClient,
|
|
102
|
+
Ge as useKnockSlackClient,
|
|
103
|
+
ge as useMsTeamsAuth,
|
|
104
|
+
we as useMsTeamsChannels,
|
|
105
|
+
ye as useMsTeamsConnectionStatus,
|
|
106
|
+
Ie as useMsTeamsTeams,
|
|
107
|
+
Oe as useNotificationStore,
|
|
108
|
+
Ve as useNotifications,
|
|
109
|
+
N as useOnBottomScroll,
|
|
110
|
+
De as usePreferences,
|
|
111
|
+
Ee as useSlackAuth,
|
|
112
|
+
He as useSlackChannels,
|
|
113
|
+
Le as useSlackConnectionStatus,
|
|
114
|
+
Re as useStableOptions,
|
|
115
|
+
Ue as useTranslations
|
|
106
116
|
};
|
|
107
117
|
//# sourceMappingURL=index.mjs.map
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/esm/modules/feed/components/NotificationIconButton/NotificationIconButton.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationIconButton.mjs","sources":["../../../../../../src/modules/feed/components/NotificationIconButton/NotificationIconButton.tsx"],"sourcesContent":["import { useKnockFeed } from \"@knocklabs/react-core\";\nimport React, { SyntheticEvent } from \"react\";\n\nimport { BellIcon } from \"../../../core/components/Icons\";\nimport {
|
|
1
|
+
{"version":3,"file":"NotificationIconButton.mjs","sources":["../../../../../../src/modules/feed/components/NotificationIconButton/NotificationIconButton.tsx"],"sourcesContent":["import { type BadgeCountType, useKnockFeed } from \"@knocklabs/react-core\";\nimport React, { SyntheticEvent } from \"react\";\n\nimport { BellIcon } from \"../../../core/components/Icons\";\nimport { UnseenBadge } from \"../UnseenBadge\";\n\nimport \"./styles.css\";\n\nexport interface NotificationIconButtonProps {\n // What value should we use to drive the badge count?\n badgeCountType?: BadgeCountType;\n onClick: (e: SyntheticEvent) => void;\n}\n\nexport const NotificationIconButton = React.forwardRef<\n HTMLButtonElement,\n NotificationIconButtonProps\n>(({ onClick, badgeCountType }, ref) => {\n const { colorMode } = useKnockFeed();\n\n return (\n <button\n className={`rnf-notification-icon-button rnf-notification-icon-button--${colorMode}`}\n aria-label=\"Open notification feed\"\n ref={ref}\n onClick={onClick}\n >\n <BellIcon aria-hidden />\n <UnseenBadge badgeCountType={badgeCountType} />\n </button>\n );\n});\n"],"names":["NotificationIconButton","React","forwardRef","onClick","badgeCountType","ref","colorMode","useKnockFeed","BellIcon","UnseenBadge"],"mappings":";;;;;AAcaA,MAAAA,IAAyBC,EAAMC,WAG1C,CAAC;AAAA,EAAEC,SAAAA;AAAAA,EAASC,gBAAAA;AAAe,GAAGC,MAAQ;AAChC,QAAA;AAAA,IAAEC,WAAAA;AAAAA,MAAcC,EAAa;AAEnC,yCACG,UACC,EAAA,WAAW,8DAA8DD,CAAS,IAClF,cAAW,0BACX,KAAAD,GACA,SAAAF,KAEAF,gBAAAA,EAAA,cAACO,KAAS,eAAW,GAAA,CAAA,GACpBP,gBAAAA,EAAA,cAAAQ,GAAA,EAAY,gBAAAL,EAA+B,CAAA,CAC9C;AAEJ,CAAC;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { useKnockFeed as
|
|
2
|
-
import
|
|
1
|
+
import { useKnockFeed as u, getBadgeAriaLabel as s, formatBadgeCount as o } from "@knocklabs/react-core";
|
|
2
|
+
import a from "react";
|
|
3
3
|
/* empty css */
|
|
4
|
-
function
|
|
4
|
+
function c(n, e) {
|
|
5
5
|
switch (n) {
|
|
6
6
|
case "all":
|
|
7
7
|
return e.total_count;
|
|
@@ -16,8 +16,8 @@ const m = ({
|
|
|
16
16
|
}) => {
|
|
17
17
|
const {
|
|
18
18
|
useFeedStore: e
|
|
19
|
-
} =
|
|
20
|
-
return t !== 0 ? /* @__PURE__ */
|
|
19
|
+
} = u(), t = e((r) => c(n, r.metadata));
|
|
20
|
+
return t !== 0 ? /* @__PURE__ */ a.createElement("div", { className: "rnf-unseen-badge", role: "status", "aria-label": s(t, n) }, /* @__PURE__ */ a.createElement("span", { className: "rnf-unseen-badge__count", "aria-hidden": "true" }, o(t))) : null;
|
|
21
21
|
};
|
|
22
22
|
export {
|
|
23
23
|
m as UnseenBadge
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UnseenBadge.mjs","sources":["../../../../../../src/modules/feed/components/UnseenBadge/UnseenBadge.tsx"],"sourcesContent":["import { FeedMetadata } from \"@knocklabs/client\";\nimport { formatBadgeCount
|
|
1
|
+
{"version":3,"file":"UnseenBadge.mjs","sources":["../../../../../../src/modules/feed/components/UnseenBadge/UnseenBadge.tsx"],"sourcesContent":["import { FeedMetadata } from \"@knocklabs/client\";\nimport {\n type BadgeCountType,\n formatBadgeCount,\n getBadgeAriaLabel,\n useKnockFeed,\n} from \"@knocklabs/react-core\";\nimport React from \"react\";\n\nimport \"./styles.css\";\n\nexport type UnseenBadgeProps = {\n badgeCountType?: BadgeCountType;\n};\n\nfunction selectBadgeCount(\n badgeCountType: BadgeCountType,\n metadata: FeedMetadata,\n): number {\n switch (badgeCountType) {\n case \"all\":\n return metadata.total_count;\n case \"unread\":\n return metadata.unread_count;\n case \"unseen\":\n return metadata.unseen_count;\n }\n}\n\nexport const UnseenBadge: React.FC<UnseenBadgeProps> = ({\n badgeCountType = \"unseen\",\n}) => {\n const { useFeedStore } = useKnockFeed();\n const badgeCountValue = useFeedStore((state) =>\n selectBadgeCount(badgeCountType, state.metadata),\n );\n\n return badgeCountValue !== 0 ? (\n <div\n className=\"rnf-unseen-badge\"\n role=\"status\"\n aria-label={getBadgeAriaLabel(badgeCountValue, badgeCountType)}\n >\n <span className=\"rnf-unseen-badge__count\" aria-hidden=\"true\">\n {formatBadgeCount(badgeCountValue)}\n </span>\n </div>\n ) : null;\n};\n"],"names":["selectBadgeCount","badgeCountType","metadata","total_count","unread_count","unseen_count","UnseenBadge","useFeedStore","useKnockFeed","badgeCountValue","state","React","getBadgeAriaLabel","formatBadgeCount"],"mappings":";;;AAeA,SAASA,EACPC,GACAC,GACQ;AACR,UAAQD,GAAc;AAAA,IACpB,KAAK;AACH,aAAOC,EAASC;AAAAA,IAClB,KAAK;AACH,aAAOD,EAASE;AAAAA,IAClB,KAAK;AACH,aAAOF,EAASG;AAAAA,EAAAA;AAEtB;AAEO,MAAMC,IAA0CA,CAAC;AAAA,EACtDL,gBAAAA,IAAiB;AACnB,MAAM;AACE,QAAA;AAAA,IAAEM,cAAAA;AAAAA,MAAiBC,EAAa,GAChCC,IAAkBF,EAAcG,CAAAA,MACpCV,EAAiBC,GAAgBS,EAAMR,QAAQ,CACjD;AAEOO,SAAAA,MAAoB,IACxBE,gBAAAA,EAAA,cAAA,OAAA,EACC,WAAU,oBACV,MAAK,UACL,cAAYC,EAAkBH,GAAiBR,CAAc,EAE7D,GAAAU,gBAAAA,EAAA,cAAC,QAAK,EAAA,WAAU,2BAA0B,eAAY,UACnDE,EAAiBJ,CAAe,CACnC,CACF,IACE;AACN;"}
|