@hiver/connector-agent 4.14.0-slack2-beta.3 → 4.14.0-slack3-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/features/connector-cards/hooks/useUserAuthFlow.d.ts.map +1 -1
  2. package/features/connector-cards/store/userAuth.d.ts.map +1 -1
  3. package/features/slack/api/conversations.d.ts +1 -1
  4. package/features/slack/api/conversations.d.ts.map +1 -1
  5. package/features/slack/api/linked-conv.d.ts +2 -2
  6. package/features/slack/api/members.d.ts +1 -1
  7. package/features/slack/api/members.d.ts.map +1 -1
  8. package/features/slack/components/LinkedConversationPanel/ChannelStateView.d.ts +21 -0
  9. package/features/slack/components/LinkedConversationPanel/ChannelStateView.d.ts.map +1 -0
  10. package/features/slack/components/LinkedConversationPanel/Composer.d.ts +5 -0
  11. package/features/slack/components/LinkedConversationPanel/Composer.d.ts.map +1 -1
  12. package/features/slack/components/LinkedConversationPanel/MentionPicker.d.ts +8 -4
  13. package/features/slack/components/LinkedConversationPanel/MentionPicker.d.ts.map +1 -1
  14. package/features/slack/components/LinkedConversationPanel/MessageItem.d.ts.map +1 -1
  15. package/features/slack/components/LinkedConversationPanel/NotMemberTooltip.d.ts +5 -0
  16. package/features/slack/components/LinkedConversationPanel/NotMemberTooltip.d.ts.map +1 -0
  17. package/features/slack/components/LinkedConversationPanel/ThreadDetailView.d.ts +0 -1
  18. package/features/slack/components/LinkedConversationPanel/ThreadDetailView.d.ts.map +1 -1
  19. package/features/slack/components/LinkedConversationPanel/index.d.ts.map +1 -1
  20. package/features/slack/components/StartModal/MentionTextarea.d.ts +28 -0
  21. package/features/slack/components/StartModal/MentionTextarea.d.ts.map +1 -0
  22. package/features/slack/components/StartModal/SlackChannelTab.d.ts.map +1 -1
  23. package/features/slack/components/StartModal/SlackThreadTab.d.ts +2 -1
  24. package/features/slack/components/StartModal/SlackThreadTab.d.ts.map +1 -1
  25. package/features/slack/components/StartModal/index.d.ts.map +1 -1
  26. package/features/slack/components/StartModal/style.d.ts +1 -0
  27. package/features/slack/components/StartModal/style.d.ts.map +1 -1
  28. package/features/slack/components/figma-tokens.d.ts +3 -1
  29. package/features/slack/components/figma-tokens.d.ts.map +1 -1
  30. package/features/slack/context.d.ts +14 -0
  31. package/features/slack/context.d.ts.map +1 -1
  32. package/features/slack/hooks/useNow.d.ts +3 -0
  33. package/features/slack/hooks/useNow.d.ts.map +1 -0
  34. package/features/slack/hooks/useSlackTabLabel.d.ts.map +1 -1
  35. package/features/slack/types/wire.d.ts +7 -2
  36. package/features/slack/types/wire.d.ts.map +1 -1
  37. package/features/slack/utils/emoji.d.ts +7 -0
  38. package/features/slack/utils/emoji.d.ts.map +1 -0
  39. package/features/slack/utils/mentions.d.ts +18 -0
  40. package/features/slack/utils/mentions.d.ts.map +1 -0
  41. package/features/slack/utils/text.d.ts +7 -0
  42. package/features/slack/utils/text.d.ts.map +1 -0
  43. package/index.es.js +17259 -14258
  44. package/index.umd.js +619 -613
  45. package/package.json +1 -1
  46. package/features/slack/components/LinkedConversationPanel/LeftChannelBanner.d.ts +0 -26
  47. package/features/slack/components/LinkedConversationPanel/LeftChannelBanner.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useUserAuthFlow.d.ts","sourceRoot":"","sources":["../../../../src/features/connector-cards/hooks/useUserAuthFlow.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAkB9F,UAAU,sBAAsB;IAC9B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,UAAU,qBAAqB;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B,GAAG,qBAAqB,CAuKhH;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,QAqB3E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,kBAGd,MAAM,UAKvB"}
1
+ {"version":3,"file":"useUserAuthFlow.d.ts","sourceRoot":"","sources":["../../../../src/features/connector-cards/hooks/useUserAuthFlow.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAkB9F,UAAU,sBAAsB;IAC9B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAED,UAAU,qBAAqB;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B,GAAG,qBAAqB,CAgNhH;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,QAqB3E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,kBAGd,MAAM,UAKvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"userAuth.d.ts","sourceRoot":"","sources":["../../../../src/features/connector-cards/store/userAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;;;;;GASG;AAEH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,cAAc,GACd,aAAa,GACb,WAAW,GACX,iBAAiB,GACjB,oBAAoB,CAAC;AAEzB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAC;CACzD;AAMD,UAAU,qBAAqB;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,mBAAmB;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,iBAAiB;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAYD,UAAU,YAAY;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,aAAa;IAItB;;;;;OAKG;wFACmC,aAAa,CAAC,qBAAqB,CAAC;IAsB1E;;;;;;OAMG;kFAC6B,aAAa,CAAC,mBAAmB,CAAC;oFAiBhC,aAAa,CAAC,iBAAiB,CAAC;mFAUjC,aAAa,CAAC,gBAAgB,CAAC;gFASlC,aAAa,CAAC,aAAa,CAAC;+EAW7B,aAAa,CAAC,YAAY,CAAC;oFAI1D,CAAC;AAEH,eAAO,MACL,sBAAsB,iHACtB,gBAAgB,yGAChB,kBAAkB,yGAClB,iBAAiB,uGACjB,cAAc,iGACd,aAAa,6FACU,CAAC;;AAE1B,wBAAqC;AAMrC,eAAO,MAAM,mBAAmB,UAAW,SAAS,eAAe,MAAM,KAAG,aACxB,CAAC;AAErD,eAAO,MAAM,mBAAmB,UAAW,SAAS,eAAe,MAAM,KAAG,aAC7B,CAAC;AAEhD,eAAO,MAAM,qBAAqB,UAAW,SAAS,eAAe,MAAM,KAAG,OACf,CAAC;AAEhE,eAAO,MAAM,gBAAgB,UAAW,SAAS,eAAe,MAAM,KAAG,MAAM,GAAG,SAC9B,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,UAAW,SAAS,KAAG,MAAM,GAAG,SAK1E,CAAC"}
1
+ {"version":3,"file":"userAuth.d.ts","sourceRoot":"","sources":["../../../../src/features/connector-cards/store/userAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC;;;;;;;;;GASG;AAEH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,cAAc,GACd,aAAa,GACb,WAAW,GACX,iBAAiB,GACjB,oBAAoB,CAAC;AAEzB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE;QAAE,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAAA;KAAE,CAAC;CACzD;AAMD,UAAU,qBAAqB;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,mBAAmB;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,iBAAiB;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAmBD,UAAU,YAAY;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,aAAa;IAItB;;;;;OAKG;wFACmC,aAAa,CAAC,qBAAqB,CAAC;IAsB1E;;;;;;OAMG;kFAC6B,aAAa,CAAC,mBAAmB,CAAC;oFAiBhC,aAAa,CAAC,iBAAiB,CAAC;mFAUjC,aAAa,CAAC,gBAAgB,CAAC;gFASlC,aAAa,CAAC,aAAa,CAAC;+EAW7B,aAAa,CAAC,YAAY,CAAC;oFAI1D,CAAC;AAEH,eAAO,MACL,sBAAsB,iHACtB,gBAAgB,yGAChB,kBAAkB,yGAClB,iBAAiB,uGACjB,cAAc,iGACd,aAAa,6FACU,CAAC;;AAE1B,wBAAqC;AAMrC,eAAO,MAAM,mBAAmB,UAAW,SAAS,eAAe,MAAM,KAAG,aACxB,CAAC;AAErD,eAAO,MAAM,mBAAmB,UAAW,SAAS,eAAe,MAAM,KAAG,aAC7B,CAAC;AAEhD,eAAO,MAAM,qBAAqB,UAAW,SAAS,eAAe,MAAM,KAAG,OACf,CAAC;AAEhE,eAAO,MAAM,gBAAgB,UAAW,SAAS,eAAe,MAAM,KAAG,MAAM,GAAG,SAC9B,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,UAAW,SAAS,KAAG,MAAM,GAAG,SAK1E,CAAC"}
@@ -11,7 +11,7 @@ export interface SlackPageParams {
11
11
  }
12
12
  export declare const startExistingChannel: (payload: StartExistingChannelRequest) => Promise<StartResponse>;
13
13
  export declare const startNewChannel: (payload: StartNewChannelRequest) => Promise<StartResponse>;
14
- export declare const getExternalConversation: (hiverConvId: string, page?: SlackPageParams) => Promise<ExternalConversation>;
14
+ export declare const getExternalConversation: (hiverConvId: string, page?: SlackPageParams) => Promise<ExternalConversation | null>;
15
15
  /**
16
16
  * Imperative older-page fetch for the message list. Bypasses the polled
17
17
  * page-0 query: pass the previous page's nextCursor as `beforeTs` to walk
@@ -1 +1 @@
1
- {"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/api/conversations.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,oBAAoB,EAEpB,cAAc,EAGd,gBAAgB,EAChB,2BAA2B,EAC3B,sBAAsB,EACtB,aAAa,EACd,MAAM,6BAA6B,CAAC;AAErC;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA0DD,eAAO,MAAM,oBAAoB,YAAmB,2BAA2B,KAAG,OAAO,CAAC,aAAa,CAQtG,CAAC;AAEF,eAAO,MAAM,eAAe,YAAmB,sBAAsB,KAAG,OAAO,CAAC,aAAa,CAQ5F,CAAC;AAeF,eAAO,MAAM,uBAAuB,gBACrB,MAAM,SACZ,eAAe,KACrB,OAAO,CAAC,oBAAoB,CAmB9B,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,gBACzB,MAAM,YACT,MAAM,aACL,MAAM,KAChB,OAAO,CAAC,cAAc,CASxB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,gBACP,MAAM,YACT,MAAM,SACT,eAAe,KACrB,OAAO,CAAC,gBAAgB,CAQ1B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,gBACX,MAAM,YACT,MAAM,YACN,MAAM,aACL,MAAM,KAChB,OAAO,CAAC,cAAc,CAQxB,CAAC;AAEF,eAAO,MAAM,gCAAgC,WAAkB;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,KAAG,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAUrC,CAAC"}
1
+ {"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/api/conversations.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACV,oBAAoB,EAEpB,cAAc,EAGd,gBAAgB,EAChB,2BAA2B,EAC3B,sBAAsB,EACtB,aAAa,EACd,MAAM,6BAA6B,CAAC;AAErC;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA6DD,eAAO,MAAM,oBAAoB,YAAmB,2BAA2B,KAAG,OAAO,CAAC,aAAa,CAQtG,CAAC;AAEF,eAAO,MAAM,eAAe,YAAmB,sBAAsB,KAAG,OAAO,CAAC,aAAa,CAQ5F,CAAC;AAeF,eAAO,MAAM,uBAAuB,gBACrB,MAAM,SACZ,eAAe,KACrB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAsBrC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,gBACzB,MAAM,YACT,MAAM,aACL,MAAM,KAChB,OAAO,CAAC,cAAc,CASxB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,SAAS,gBACP,MAAM,YACT,MAAM,SACT,eAAe,KACrB,OAAO,CAAC,gBAAgB,CAQ1B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,gBACX,MAAM,YACT,MAAM,YACN,MAAM,aACL,MAAM,KAChB,OAAO,CAAC,cAAc,CAQxB,CAAC;AAEF,eAAO,MAAM,gCAAgC,WAAkB;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,KAAG,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAUrC,CAAC"}
@@ -4,12 +4,12 @@ import { ExternalConversation, SlackThreadGroup } from '../types/wire';
4
4
  * stopgap until VS's websocket setup lands ([[plan-slack-m1-phase-X]]
5
5
  * — Cross-repo dependency #10) — events don't push into the UI yet,
6
6
  * so we pull on a timer to keep inbound Slack messages visible. The
7
- * 5s default is chosen to be perceptually "live" without hammering
7
+ * 2s default is chosen to be perceptually "live" without hammering
8
8
  * the backend; set this constant (or override via `refetchIntervalMs`
9
9
  * arg to `useLinkedConversation`) when ws ships and we want to drop
10
10
  * the timer.
11
11
  */
12
- export declare const LINKED_CONV_POLL_INTERVAL_MS = 5000;
12
+ export declare const LINKED_CONV_POLL_INTERVAL_MS = 2000;
13
13
  /**
14
14
  * Reads the linked Slack thread for a Hiver conversation, if any.
15
15
  * Returns `null` on 404 (no link yet) and surfaces other errors
@@ -1,5 +1,5 @@
1
1
  import { ChannelMember } from '../types/wire';
2
- export declare const getChannelMembers: (hiverConvId: string) => Promise<ChannelMember[]>;
2
+ export declare const getChannelMembers: (hiverConvId?: string, channelId?: string) => Promise<ChannelMember[]>;
3
3
  /**
4
4
  * Cached channel-members query. Used by the linked-conv panel to
5
5
  * resolve `<@USER_ID>` mention tokens to display names, and by the
@@ -1 +1 @@
1
- {"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/api/members.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,eAAO,MAAM,iBAAiB,gBAAuB,MAAM,KAAG,OAAO,CAAC,aAAa,EAAE,CASpF,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,UAAO,0EAQpE"}
1
+ {"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/api/members.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,eAAO,MAAM,iBAAiB,iBAAwB,MAAM,cAAc,MAAM,KAAG,OAAO,CAAC,aAAa,EAAE,CAgBzG,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,UAAO,0EAQpE"}
@@ -0,0 +1,21 @@
1
+ import { FC } from 'react';
2
+ /**
3
+ * Centered empty-state shown in the message area (replacing history) when the
4
+ * linked Slack channel can't be read by this viewer. Two variants, per Figma
5
+ * frames 1046:18769 (delink badge) and 1052:174648 (lock badge):
6
+ *
7
+ * - 'channel_unavailable' → channel archived/deleted; "no longer available"
8
+ * - 'no_access' → private channel the viewer isn't in
9
+ *
10
+ * The "channel card" illustration mirrors the Figma node structure 1:1 — exact
11
+ * gradients/shadows/positions from the design — and the red status badge is the
12
+ * EXACT vector exported from Figma (Frame 2147240252), not a re-draw. The
13
+ * composer still renders below (disabled), so this fills only the scrollable
14
+ * message region.
15
+ */
16
+ type ChannelStateVariant = 'channel_unavailable' | 'no_access';
17
+ export declare const ChannelStateView: FC<{
18
+ variant: ChannelStateVariant;
19
+ }>;
20
+ export {};
21
+ //# sourceMappingURL=ChannelStateView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChannelStateView.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkedConversationPanel/ChannelStateView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAK3B;;;;;;;;;;;;;GAaG;AAEH,KAAK,mBAAmB,GAAG,qBAAqB,GAAG,WAAW,CAAC;AAmI/D,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC;IAAE,OAAO,EAAE,mBAAmB,CAAA;CAAE,CAyBjE,CAAC"}
@@ -17,6 +17,11 @@ interface ComposerProps {
17
17
  * event's `link_type` metadata. Derived from the conversation's
18
18
  * `targetKind` by the parent panel. */
19
19
  linkType?: 'thread' | 'channel';
20
+ /** Read-only/blocked presentation: textarea + emoji + Send are inert.
21
+ * Used by the panel when the viewer can't post (public-left, no-access,
22
+ * archived) — the composer stays visible but does nothing. The "why" is
23
+ * surfaced by the parent (NotMemberTooltip / ChannelStateView). */
24
+ disabled?: boolean;
20
25
  }
21
26
  /**
22
27
  * Composer per Figma 683:667012. Plain textarea + emoji /
@@ -1 +1 @@
1
- {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkedConversationPanel/Composer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAyD,MAAM,OAAO,CAAC;AA2BlF,UAAU,aAAa;IACrB;oEACgE;IAChE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAChD;wEACoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;oDACgD;IAChD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;4CAEwC;IACxC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAoctC,CAAC"}
1
+ {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkedConversationPanel/Composer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAoE,MAAM,OAAO,CAAC;AAuB7F,UAAU,aAAa;IACrB;oEACgE;IAChE,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAChD;wEACoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;oDACgD;IAChD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;4CAEwC;IACxC,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC;;;wEAGoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAwetC,CAAC"}
@@ -4,7 +4,11 @@ interface MentionPickerProps {
4
4
  anchor: HTMLElement | null;
5
5
  query: string;
6
6
  members: ChannelMember[];
7
+ /** Index of the row the keyboard has highlighted (drives Enter-select). */
8
+ highlightIdx: number;
7
9
  onPick: (member: ChannelMember) => void;
10
+ /** Keep highlight in sync with mouse hover so click + keyboard agree. */
11
+ onHighlightChange: (idx: number) => void;
8
12
  onClose: () => void;
9
13
  }
10
14
  /**
@@ -13,10 +17,10 @@ interface MentionPickerProps {
13
17
  * 24px avatar + display name (Inter Medium 13/19 slate-body).
14
18
  * Filtered by the `query` substring after the `@` keystroke.
15
19
  *
16
- * Keyboard handling lives in the parent Composer (so the textarea
17
- * keeps focus while the popover navigates); this component only
18
- * renders the list + handles row clicks. ArrowUp/Down + Enter are
19
- * translated by the parent into onPick calls.
20
+ * Keyboard handling lives in the parent composer (so the textarea keeps
21
+ * focus while the popover navigates); `highlightIdx` is owned there and
22
+ * passed down. This component renders the list + handles row clicks/hover.
23
+ * ArrowUp/Down + Enter are translated by the parent into onPick calls.
20
24
  */
21
25
  export declare const MentionPicker: FC<MentionPickerProps>;
22
26
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"MentionPicker.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkedConversationPanel/MentionPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAuB,MAAM,OAAO,CAAC;AAKhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,UAAU,kBAAkB;IAC1B,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAoEhD,CAAC"}
1
+ {"version":3,"file":"MentionPicker.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkedConversationPanel/MentionPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAa,MAAM,OAAO,CAAC;AAMtC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,UAAU,kBAAkB;IAC1B,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IACxC,yEAAyE;IACzE,iBAAiB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CAiFhD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageItem.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkedConversationPanel/MessageItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAgC,MAAM,OAAO,CAAC;AAQzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAYhE,UAAU,gBAAgB;IACxB,OAAO,EAAE,YAAY,CAAC;IACtB;wEACoE;IACpE,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC;;kCAE8B;IAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;2EACuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AA+ID;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CA2I5C,CAAC"}
1
+ {"version":3,"file":"MessageItem.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkedConversationPanel/MessageItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAgC,MAAM,OAAO,CAAC;AAUzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAYhE,UAAU,gBAAgB;IACxB,OAAO,EAAE,YAAY,CAAC;IACtB;wEACoE;IACpE,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC;;kCAE8B;IAC9B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;2EACuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAgJD;;;;;;;;GAQG;AACH,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,gBAAgB,CAqJ5C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { FC, ReactElement } from 'react';
2
+ export declare const NotMemberTooltip: FC<{
3
+ children: ReactElement;
4
+ }>;
5
+ //# sourceMappingURL=NotMemberTooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotMemberTooltip.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkedConversationPanel/NotMemberTooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AA0CzC,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC;IAAE,QAAQ,EAAE,YAAY,CAAA;CAAE,CAI3D,CAAC"}
@@ -2,7 +2,6 @@ import { FC } from 'react';
2
2
  interface ThreadDetailViewProps {
3
3
  /** Root ts of the thread being viewed. */
4
4
  threadTs: string;
5
- channelId: string;
6
5
  memberNames?: Map<string, string>;
7
6
  hasLeftChannel: boolean;
8
7
  guard?: <T>(fn: () => Promise<T>) => Promise<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadDetailView.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkedConversationPanel/ThreadDetailView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAyC,MAAM,OAAO,CAAC;AA8ElE,UAAU,qBAAqB;IAC7B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAwHtD,CAAC"}
1
+ {"version":3,"file":"ThreadDetailView.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkedConversationPanel/ThreadDetailView.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAyC,MAAM,OAAO,CAAC;AA8ElE,UAAU,qBAAqB;IAC7B,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CA6HtD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkedConversationPanel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA8D,MAAM,OAAO,CAAC;AAsBvF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,uBAAuB,EAAE,EAiRrC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/LinkedConversationPanel/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA8D,MAAM,OAAO,CAAC;AAuBvF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,uBAAuB,EAAE,EAuTrC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { FC } from 'react';
2
+ interface MentionTextareaProps {
3
+ /** Human-readable draft (with "@DisplayName" literals). */
4
+ value: string;
5
+ /** Reports both the display text and the Slack-mention form (picked
6
+ * mentions rewritten to `<@user_id>`) so the parent can show one and
7
+ * post the other. */
8
+ onChange: (displayText: string, slackText: string) => void;
9
+ /** Slack channel the agent picked in the Start flow. Members are fetched
10
+ * for this channel (no link exists yet, so we can't resolve via the conv).
11
+ * Mentions are disabled until a channel is selected. */
12
+ channelId: string | null;
13
+ placeholder?: string;
14
+ autoFocus?: boolean;
15
+ }
16
+ /**
17
+ * Bug 1 — message field for the Start flow that resolves @-mentions to real
18
+ * Slack mentions, mirroring the thread-reply Composer. Without this the Start
19
+ * compose posted "@name" as literal text and nobody was notified.
20
+ *
21
+ * Controlled: the parent owns the draft string (so Cancel can reset it — see
22
+ * Bug 8). This component owns only the transient mention map + picker state,
23
+ * and reuses the shared MentionPicker + mention helpers so keyboard nav
24
+ * (Bug 4) and `<@id>` conversion behave identically in both composers.
25
+ */
26
+ export declare const MentionTextarea: FC<MentionTextareaProps>;
27
+ export {};
28
+ //# sourceMappingURL=MentionTextarea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MentionTextarea.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/StartModal/MentionTextarea.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAoE,MAAM,OAAO,CAAC;AAgB7F,UAAU,oBAAoB;IAC5B,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd;;0BAEsB;IACtB,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D;;6DAEyD;IACzD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAwJpD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SlackChannelTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/StartModal/SlackChannelTab.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA2B,MAAM,OAAO,CAAC;AAQpD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,QAAQ,GAAG,SAAS,CAAC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,oBAAoB;IAC5B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC7C;AA6BD,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAuFpD,CAAC"}
1
+ {"version":3,"file":"SlackChannelTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/StartModal/SlackChannelTab.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA2B,MAAM,OAAO,CAAC;AAQpD;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,QAAQ,GAAG,SAAS,CAAC;IAClC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,oBAAoB;IAC5B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC7C;AA6BD,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CAgGpD,CAAC"}
@@ -3,7 +3,8 @@ interface SlackThreadTabProps {
3
3
  channelId: string | null;
4
4
  message: string;
5
5
  onChannelChange: (channelId: string | null) => void;
6
- onMessageChange: (message: string) => void;
6
+ /** Reports both the human-readable draft and the Slack-mention form. */
7
+ onMessageChange: (message: string, slackText: string) => void;
7
8
  }
8
9
  /**
9
10
  * UI-3 — Slack thread tab body. Pick an existing channel and write
@@ -1 +1 @@
1
- {"version":3,"file":"SlackThreadTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/StartModal/SlackThreadTab.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAkB,MAAM,OAAO,CAAC;AAS3C,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAgElD,CAAC"}
1
+ {"version":3,"file":"SlackThreadTab.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/StartModal/SlackThreadTab.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAkB,MAAM,OAAO,CAAC;AAU3C,UAAU,mBAAmB;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD,wEAAwE;IACxE,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/D;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAiElD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/StartModal/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AA6BrC,UAAU,eAAe;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;6DACyD;IACzD,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAID;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAqH1C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/StartModal/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAyB,MAAM,OAAO,CAAC;AA+BlD,UAAU,eAAe;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;6DACyD;IACzD,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAID;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAkM1C,CAAC"}
@@ -33,6 +33,7 @@ export declare const SelectValue: StyledComponent<BoxProps>;
33
33
  export declare const MemberChip: StyledComponent<BoxProps>;
34
34
  export declare const ChipRemove: StyledComponent<IconButtonProps>;
35
35
  export declare const MessageTextarea: StyledComponent<React.TextareaHTMLAttributes<HTMLTextAreaElement>>;
36
+ export declare const FormError: StyledComponent<BoxProps>;
36
37
  export declare const CancelButton: StyledComponent<ButtonProps>;
37
38
  export declare const PrimaryButton: StyledComponent<ButtonProps>;
38
39
  //# sourceMappingURL=style.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/StartModal/style.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD;;;;;;;;;;;GAWG;AAIH,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,QAAQ,CAOhD,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,eAAe,CAAC,UAAU,CAOnD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,eAAe,CAAC,QAAQ,CAMjD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,eAAe,CAY1D,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,QAAQ,CAKlD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,QAAQ,CAIhD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,eAAe,CAAC,UAAU,CAKnD,CAAC;AAIF,eAAO,MAAM,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAO9C,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,eAAe,CAAC,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CA8BzE,CAAC;AAIF,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,QAAQ,CAOhD,CAAC;AAIF,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,QAAQ,CAehD,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAelF,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,WAAW,GAAG;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CA4BlF,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,eAAe,CAAC,QAAQ,CAMjD,CAAC;AAIF,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,QAAQ,CAchD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,eAAe,CAUvD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CA6B9F,CAAC;AAOF,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,WAAW,CA0BrD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,WAAW,CAuBtD,CAAC"}
1
+ {"version":3,"file":"style.d.ts","sourceRoot":"","sources":["../../../../../src/features/slack/components/StartModal/style.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC9F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIvD;;;;;;;;;;;GAWG;AAIH,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,QAAQ,CAOhD,CAAC;AAGF,eAAO,MAAM,WAAW,EAAE,eAAe,CAAC,UAAU,CAOnD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,eAAe,CAAC,QAAQ,CAMjD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,eAAe,CAY1D,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,QAAQ,CAKlD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,QAAQ,CAIhD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,eAAe,CAAC,UAAU,CAKnD,CAAC;AAIF,eAAO,MAAM,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAO9C,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,eAAe,CAAC,WAAW,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CA8BzE,CAAC;AAIF,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,QAAQ,CAOhD,CAAC;AAIF,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,QAAQ,CAehD,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,eAAe,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAelF,CAAC;AAGF,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,WAAW,GAAG;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,CA4BlF,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,eAAe,CAAC,QAAQ,CAMjD,CAAC;AAIF,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,QAAQ,CAchD,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,eAAe,CAAC,eAAe,CAUvD,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,KAAK,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CA6B9F,CAAC;AAIF,eAAO,MAAM,SAAS,EAAE,eAAe,CAAC,QAAQ,CAK/C,CAAC;AAOF,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,WAAW,CA0BrD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,eAAe,CAAC,WAAW,CAuBtD,CAAC"}
@@ -31,6 +31,8 @@ export declare const slackTokens: {
31
31
  readonly slateSurfaceSubtle100: "#f1f5f9";
32
32
  readonly slateSurface150: "#edf1f6";
33
33
  readonly slateSurfaceDisabled: "#e2e8f0";
34
+ readonly slateSurfaceDark600: "#475569";
35
+ readonly errorTextSubtle: "#b81717";
34
36
  readonly primarySurfaceDefault: "#276cf0";
35
37
  readonly primaryBorderDefault: "#276cf0";
36
38
  readonly primarySurfaceSubtle: "#e6effd";
@@ -58,7 +60,7 @@ export declare const slackTokens: {
58
60
  readonly full: 9999;
59
61
  };
60
62
  readonly font: {
61
- readonly family: "Inter, system-ui, sans-serif";
63
+ readonly family: "'Hanken Grotesk', system-ui, sans-serif";
62
64
  readonly weightRegular: 400;
63
65
  readonly weightMedium: 500;
64
66
  };
@@ -1 +1 @@
1
- {"version":3,"file":"figma-tokens.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/components/figma-tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEd,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC"}
1
+ {"version":3,"file":"figma-tokens.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/components/figma-tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0Ed,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC"}
@@ -31,6 +31,20 @@ export interface SlackContextData {
31
31
  * at the call site (`sendTrackingEvent?.(...)`).
32
32
  */
33
33
  sendTrackingEvent?: (event: string, data?: ITrackingData) => void;
34
+ /**
35
+ * Host-injected emoji picker. The composer renders only the trigger button;
36
+ * when the agent clicks it we hand the host the button's DOM node plus a
37
+ * sink for the chosen emoji, and the host renders its own picker anchored
38
+ * there. This lets outlook-ui reuse its exact Vue emoji picker (pixel-
39
+ * identical to the rest of the app) without embedding Vue in this React
40
+ * library. When absent (dev mounts / hosts that don't inject one), the
41
+ * composer falls back to a small built-in emoji grid.
42
+ */
43
+ openEmojiPicker?: (args: {
44
+ anchorEl: HTMLElement;
45
+ onSelect: (emoji: string) => void;
46
+ onClose?: () => void;
47
+ }) => void;
34
48
  }
35
49
  export declare const SlackContextProvider: FC<{
36
50
  value: SlackContextData;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/features/slack/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,EAAE,EAAE,SAAS,EAAc,MAAM,OAAO,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;CACnE;AAID,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,CAErF,CAAC;AAKF,eAAO,MAAM,eAAe,QAAO,gBAMlC,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/features/slack/context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,EAAE,EAAE,SAAS,EAAc,MAAM,OAAO,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;IAClE;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,WAAW,CAAC;QAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;CACtH;AAID,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,CAErF,CAAC;AAKF,eAAO,MAAM,eAAe,QAAO,gBAMlC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Current time in ms, re-rendering the caller every 30s. */
2
+ export declare const useNow: () => number;
3
+ //# sourceMappingURL=useNow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useNow.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/hooks/useNow.ts"],"names":[],"mappings":"AAsCA,6DAA6D;AAC7D,eAAO,MAAM,MAAM,QAAO,MAAmE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSlackTabLabel.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/hooks/useSlackTabLabel.ts"],"names":[],"mappings":"AAEA,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd;;uDAEmD;IACnD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAUnE"}
1
+ {"version":3,"file":"useSlackTabLabel.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/hooks/useSlackTabLabel.ts"],"names":[],"mappings":"AAEA,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd;;uDAEmD;IACnD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAiBnE"}
@@ -61,10 +61,15 @@ export interface SlackThreadGroup {
61
61
  }
62
62
  /** Why the current viewer can't post into the linked channel. Backend
63
63
  * computes this per-request against the viewer's OWN Slack token:
64
- * - 'not_in_channel' → connected but not a member (or has left)
64
+ * - 'not_in_channel' → public channel the viewer left; history is
65
+ * still readable, so we keep it visible and show
66
+ * a "not a member" banner over a disabled composer
67
+ * - 'no_access' → private channel the viewer isn't in (or can no
68
+ * longer resolve) → "You don't have access"
69
+ * - 'channel_unavailable' → channel archived/deleted → "no longer available"
65
70
  * - 'slack_not_connected' → no active Slack auth for this viewer
66
71
  * Null/undefined when the viewer can post. */
67
- export type SlackPostBlockReason = 'not_in_channel' | 'slack_not_connected';
72
+ export type SlackPostBlockReason = 'not_in_channel' | 'no_access' | 'channel_unavailable' | 'slack_not_connected';
68
73
  export interface ExternalConversation {
69
74
  hiverConvId: string;
70
75
  channelId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/types/wire.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wire.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/types/wire.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Replace Slack `:shortcode:` tokens in a message with their unicode glyphs.
3
+ * Unknown / custom shortcodes are left untouched (no regression). Display-only:
4
+ * the stored/edited text keeps the original colon form for re-send.
5
+ */
6
+ export declare const renderSlackEmoji: (text: string) => string;
7
+ //# sourceMappingURL=emoji.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emoji.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/utils/emoji.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,SAAU,MAAM,KAAG,MAAwC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { ChannelMember } from '../types/wire';
2
+ export interface MentionRef {
3
+ /** "@DisplayName" literal as it appears in the textarea. */
4
+ displayText: string;
5
+ externalUserId: string;
6
+ }
7
+ /** Substring (case-insensitive) filter for the @-mention dropdown. Shared by
8
+ * the picker (what it renders) and the composers (what Enter selects) so the
9
+ * two never drift. */
10
+ export declare const filterMembers: (members: ChannelMember[], query: string) => ChannelMember[];
11
+ /**
12
+ * Rewrite each tracked "@DisplayName" to Slack's `<@external_user_id>` mention
13
+ * syntax before sending, so the mentioned user is actually notified. Only
14
+ * mentions picked from the dropdown are converted — a hand-typed "@Sarah" is
15
+ * sent literally (no fake-mention guessing).
16
+ */
17
+ export declare const toSlackMentions: (text: string, mentions: MentionRef[]) => string;
18
+ //# sourceMappingURL=mentions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mentions.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/utils/mentions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,UAAU;IACzB,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;uBAEuB;AACvB,eAAO,MAAM,aAAa,YAAa,aAAa,EAAE,SAAS,MAAM,KAAG,aAAa,EACV,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SAAU,MAAM,YAAY,UAAU,EAAE,KAAG,MAItE,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * True when `value` contains at least one visible glyph once invisible /
3
+ * zero-width characters and surrounding whitespace are stripped. Use this for
4
+ * "is the field empty?" / Send-enabled checks instead of `value.trim()`.
5
+ */
6
+ export declare const hasVisibleContent: (value: string) => boolean;
7
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/features/slack/utils/text.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,UAAW,MAAM,KAAG,OAAkE,CAAC"}