@box/activity-feed 2.3.28 → 2.4.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.
@@ -1 +1 @@
1
- import{t as EmptyState}from"./empty-state.js";import{useListScrollState}from"../esm/lib/components/activity-feed-list/use-list-scroll-state.js";import{Children,isValidElement}from"react";import clsx from"clsx";import{jsx}from"react/jsx-runtime";import '../styles/activity-feed-list.css';var activity_feed_list_module_default={emptyStateWrapper:`_emptyStateWrapper_1yzxf_1`,list:`_list_1yzxf_8`,fadeTop:`_fadeTop_1yzxf_19`,fadeBottom:`_fadeBottom_1yzxf_19`},ActivityFeedList=({children})=>{let{isAtBottom,isAtTop,setContainer}=useListScrollState();return Children.toArray(children).length===0?jsx(`div`,{className:activity_feed_list_module_default.emptyStateWrapper,children:jsx(EmptyState,{})}):jsx(`ul`,{ref:setContainer,className:clsx(activity_feed_list_module_default.list,{[activity_feed_list_module_default.fadeBottom]:!isAtBottom,[activity_feed_list_module_default.fadeTop]:!isAtTop}),"data-testid":`activity-feed-list`,children:Children.map(children,(child,index)=>{if(!isValidElement(child))return jsx(`li`,{children:child},`activity-feed-row-${index}`);let activityId=child.key==null?void 0:String(child.key),liKey=activityId??`activity-feed-row-${index}`;return jsx(`li`,{"data-activity-id":activityId,children:child},liKey)})})};export{ActivityFeedList as t};
1
+ import{useActivityFeedContext}from"../esm/lib/activity-feed-context.js";import{t as EmptyState}from"./empty-state.js";import{useListScrollState}from"../esm/lib/components/activity-feed-list/use-list-scroll-state.js";import{Children,isValidElement}from"react";import clsx from"clsx";import{jsx}from"react/jsx-runtime";import '../styles/activity-feed-list.css';var activity_feed_list_module_default={emptyStateWrapper:`_emptyStateWrapper_1phex_1`,commentsDisabled:`_commentsDisabled_1phex_7`,list:`_list_1phex_11`,fadeTop:`_fadeTop_1phex_25`,fadeBottom:`_fadeBottom_1phex_25`},ActivityFeedList=({children})=>{let{areCommentsDisabled}=useActivityFeedContext(),{isAtBottom,isAtTop,setContainer}=useListScrollState();return Children.toArray(children).length===0?jsx(`div`,{className:clsx(activity_feed_list_module_default.emptyStateWrapper,{[activity_feed_list_module_default.commentsDisabled]:areCommentsDisabled}),children:jsx(EmptyState,{})}):jsx(`ul`,{ref:setContainer,className:clsx(activity_feed_list_module_default.list,{[activity_feed_list_module_default.commentsDisabled]:areCommentsDisabled,[activity_feed_list_module_default.fadeBottom]:!areCommentsDisabled&&!isAtBottom,[activity_feed_list_module_default.fadeTop]:!isAtTop}),"data-testid":`activity-feed-list`,children:Children.map(children,(child,index)=>{if(!isValidElement(child))return jsx(`li`,{children:child},`activity-feed-row-${index}`);let activityId=child.key==null?void 0:String(child.key),liKey=activityId??`activity-feed-row-${index}`;return jsx(`li`,{"data-activity-id":activityId,children:child},liKey)})})};export{ActivityFeedList as t};
@@ -1 +1 @@
1
- import{t as ActivityFeedList}from"./activity-feed-list.js";import{t as AppActivityItem}from"./app-activity-item.js";import{t as Editor}from"./editor.js";import{t as Header}from"./header.js";import{TaskItem}from"../esm/lib/components/task-item/TaskItem.js";import{VersionItem}from"../esm/lib/components/version-item/version-item.js";import{createActivityFeedScroll}from"../esm/lib/scroll/create-activity-feed-scroll.js";import{t as isAttachableActivityFeedScrollHandle}from"./scroll.js";import{useActivityFeedScroll}from"../esm/lib/scroll/use-activity-feed-scroll.js";import{useCallback,useLayoutEffect,useRef}from"react";import{MentionContextProvider,ThreadedAnnotationsV2}from"@box/threaded-annotations";import{jsx}from"react/jsx-runtime";import '../styles/activity-feed.css';var activity_feed_module_default={container:`_container_40rcc_1`},ActivityFeedRoot=({children,scrollTo:scrollToProp,mentionContext})=>{let fallbackScrollRef=useRef(null);fallbackScrollRef.current||=createActivityFeedScroll();let fallbackScroll=fallbackScrollRef.current,resolvedScroll=scrollToProp!=null&&isAttachableActivityFeedScrollHandle(scrollToProp)?scrollToProp:fallbackScroll;typeof process<`u`&&process.env.NODE_ENV!==`production`&&scrollToProp!=null&&!isAttachableActivityFeedScrollHandle(scrollToProp)&&console.warn("ActivityFeed.Root: `scrollTo` must be the return value of `useActivityFeedScroll()`. Using an internal handle for container attachment instead.");let resolvedScrollRef=useRef(resolvedScroll);resolvedScrollRef.current=resolvedScroll;let containerRef=useRef(null),setContainerRef=useCallback(node=>{containerRef.current=node,resolvedScrollRef.current.attachContainer(node)},[]);return useLayoutEffect(()=>{resolvedScrollRef.current.attachContainer(containerRef.current)},[resolvedScroll]),jsx(MentionContextProvider,{value:mentionContext,children:jsx(`div`,{className:activity_feed_module_default.container,ref:setContainerRef,children})})};function ActivityFeedListRoot(props){return jsx(ActivityFeedList,{...props})}var List=ActivityFeedListRoot;List.AppActivity=AppActivityItem,List.Task=TaskItem,List.ThreadedAnnotation=ThreadedAnnotationsV2,List.Version=VersionItem;var ActivityFeed={Editor,Header,List,Root:ActivityFeedRoot,useActivityFeedScroll};export{ActivityFeed as t};
1
+ import{ActivityFeedContext}from"../esm/lib/activity-feed-context.js";import{t as ActivityFeedList}from"./activity-feed-list.js";import{t as AppActivityItem}from"./app-activity-item.js";import{t as CommentsDisabled}from"./comments-disabled.js";import{t as Editor}from"./editor.js";import{t as Header}from"./header.js";import{TaskItem}from"../esm/lib/components/task-item/TaskItem.js";import{VersionItem}from"../esm/lib/components/version-item/version-item.js";import{createActivityFeedScroll}from"../esm/lib/scroll/create-activity-feed-scroll.js";import{t as isAttachableActivityFeedScrollHandle}from"./scroll.js";import{useActivityFeedScroll}from"../esm/lib/scroll/use-activity-feed-scroll.js";import{useCallback,useLayoutEffect,useMemo,useRef}from"react";import{MentionContextProvider,ThreadedAnnotationsV2}from"@box/threaded-annotations";import{jsx,jsxs}from"react/jsx-runtime";import '../styles/activity-feed.css';var activity_feed_module_default={container:`_container_40rcc_1`},ActivityFeedRoot=({areCommentsDisabled=!1,children,scrollTo:scrollToProp,mentionContext})=>{let fallbackScrollRef=useRef(null);fallbackScrollRef.current||=createActivityFeedScroll();let fallbackScroll=fallbackScrollRef.current,resolvedScroll=scrollToProp!=null&&isAttachableActivityFeedScrollHandle(scrollToProp)?scrollToProp:fallbackScroll;typeof process<`u`&&process.env.NODE_ENV!==`production`&&scrollToProp!=null&&!isAttachableActivityFeedScrollHandle(scrollToProp)&&console.warn("ActivityFeed.Root: `scrollTo` must be the return value of `useActivityFeedScroll()`. Using an internal handle for container attachment instead.");let resolvedScrollRef=useRef(resolvedScroll);resolvedScrollRef.current=resolvedScroll;let containerRef=useRef(null),setContainerRef=useCallback(node=>{containerRef.current=node,resolvedScrollRef.current.attachContainer(node)},[]);useLayoutEffect(()=>{resolvedScrollRef.current.attachContainer(containerRef.current)},[resolvedScroll]);let activityFeedContextValue=useMemo(()=>({areCommentsDisabled}),[areCommentsDisabled]);return jsx(MentionContextProvider,{value:mentionContext,children:jsx(ActivityFeedContext.Provider,{value:activityFeedContextValue,children:jsxs(`div`,{className:activity_feed_module_default.container,ref:setContainerRef,children:[children,areCommentsDisabled?jsx(CommentsDisabled,{}):null]})})})};function ActivityFeedListRoot(props){return jsx(ActivityFeedList,{...props})}var List=ActivityFeedListRoot;List.AppActivity=AppActivityItem,List.Task=TaskItem,List.ThreadedAnnotation=ThreadedAnnotationsV2,List.Version=VersionItem;var ActivityFeed={Editor,Header,List,Root:ActivityFeedRoot,useActivityFeedScroll};export{ActivityFeed as t};
@@ -0,0 +1 @@
1
+ import{messages}from"../esm/lib/components/comments-disabled/messages.js";import{Text}from"@box/blueprint-web";import{useIntl}from"react-intl";import{jsx}from"react/jsx-runtime";import '../styles/comments-disabled.css';var comments_disabled_module_default={container:`_container_1ji20_1`},CommentsDisabled=()=>{let{formatMessage}=useIntl();return jsx(`div`,{className:comments_disabled_module_default.container,"data-testid":`activity-feed-comments-disabled`,children:jsx(Text,{as:`p`,color:`textOnLightSecondary`,variant:`bodySmall`,children:formatMessage(messages.message)})})};export{CommentsDisabled as t};
@@ -1 +1 @@
1
- import{MessageEditorV2}from"@box/threaded-annotations";import{jsx}from"react/jsx-runtime";import '../styles/editor.css';var editor_module_default={editorWrapper:`_editorWrapper_1ye9q_1`},Editor=({disableComponent,maxCharacterCount,onPost,onPostError,onPostSuccess,userSelectorProps,videoTimestamp})=>jsx(`div`,{className:editor_module_default.editorWrapper,children:jsx(MessageEditorV2,{disableComponent,isFirstAnnotation:!1,maxCharacterCount,onPost,onPostError,onPostSuccess,userSelectorProps,videoTimestamp})});export{Editor as t};
1
+ import{useActivityFeedContext}from"../esm/lib/activity-feed-context.js";import{MessageEditorV2}from"@box/threaded-annotations";import{jsx}from"react/jsx-runtime";import '../styles/editor.css';var editor_module_default={editorWrapper:`_editorWrapper_1ye9q_1`},Editor=({disableComponent,maxCharacterCount,onPost,onPostError,onPostSuccess,userSelectorProps,videoTimestamp})=>{let{areCommentsDisabled}=useActivityFeedContext();return areCommentsDisabled?null:jsx(`div`,{className:editor_module_default.editorWrapper,children:jsx(MessageEditorV2,{disableComponent,isFirstAnnotation:!1,maxCharacterCount,onPost,onPostError,onPostSuccess,userSelectorProps,videoTimestamp})})};export{Editor as t};
@@ -1 +1 @@
1
- import{messages}from"../esm/lib/components/empty-state/messages.js";import{Text}from"@box/blueprint-web";import{CommentBubbles}from"@box/blueprint-web-assets/illustrations/Medium";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import '../styles/empty-state.css';var empty_state_module_default={container:`_container_1pvci_1`},EmptyState=()=>{let{formatMessage}=useIntl();return jsxs(`div`,{className:empty_state_module_default.container,children:[jsx(CommentBubbles,{height:140,width:140}),jsx(Text,{as:`p`,color:`textOnLightSecondary`,variant:`titleSmall`,children:formatMessage(messages.title)}),jsx(Text,{as:`p`,color:`textOnLightSecondary`,variant:`bodyDefault`,children:formatMessage(messages.body)})]})};export{EmptyState as t};
1
+ import{useActivityFeedContext}from"../esm/lib/activity-feed-context.js";import{messages}from"../esm/lib/components/empty-state/messages.js";import{Text}from"@box/blueprint-web";import{CommentBubbles}from"@box/blueprint-web-assets/illustrations/Medium";import{useIntl}from"react-intl";import{jsx,jsxs}from"react/jsx-runtime";import '../styles/empty-state.css';var empty_state_module_default={container:`_container_1pvci_1`},EmptyState=()=>{let{areCommentsDisabled}=useActivityFeedContext(),{formatMessage}=useIntl();return areCommentsDisabled?jsxs(`div`,{className:empty_state_module_default.container,"data-testid":`activity-feed-empty-state`,children:[jsx(CommentBubbles,{height:140,width:140}),jsx(Text,{as:`p`,color:`textOnLightSecondary`,variant:`bodyDefault`,children:formatMessage(messages.commentsDisabledBody)})]}):jsxs(`div`,{className:empty_state_module_default.container,"data-testid":`activity-feed-empty-state`,children:[jsx(CommentBubbles,{height:140,width:140}),jsx(Text,{as:`p`,color:`textOnLightSecondary`,variant:`titleSmall`,children:formatMessage(messages.title)}),jsx(Text,{as:`p`,color:`textOnLightSecondary`,variant:`bodyDefault`,children:formatMessage(messages.body)})]})};export{EmptyState as t};
package/dist/esm/index.js CHANGED
@@ -1 +1 @@
1
- import{t as ActivityFeed}from"../chunks/activity-feed.js";import{t as AppActivityItem}from"../chunks/app-activity-item.js";import"./lib/components/app-activity-item/index.js";import{n as TaskStatus,r as TaskType,t as TaskCompletionRule}from"../chunks/types.js";import{TaskItem}from"./lib/components/task-item/TaskItem.js";import"./lib/components/task-item/index.js";import{VersionItem}from"./lib/components/version-item/version-item.js";import"./lib/components/version-item/index.js";import{useActivityFeedScroll}from"./lib/scroll/use-activity-feed-scroll.js";export{ActivityFeed,AppActivityItem,TaskCompletionRule,TaskItem,TaskStatus as TaskItemStatus,TaskType,VersionItem,useActivityFeedScroll};
1
+ import{t as AppActivityItem}from"../chunks/app-activity-item.js";import"./lib/components/app-activity-item/index.js";import{n as TaskStatus,r as TaskType,t as TaskCompletionRule}from"../chunks/types.js";import{TaskItem}from"./lib/components/task-item/TaskItem.js";import"./lib/components/task-item/index.js";import{VersionItem}from"./lib/components/version-item/version-item.js";import"./lib/components/version-item/index.js";import{useActivityFeedScroll}from"./lib/scroll/use-activity-feed-scroll.js";import{t as ActivityFeed}from"../chunks/activity-feed.js";export{ActivityFeed,AppActivityItem,TaskCompletionRule,TaskItem,TaskStatus as TaskItemStatus,TaskType,VersionItem,useActivityFeedScroll};
@@ -0,0 +1 @@
1
+ import{createContext,useContext}from"react";var ActivityFeedContext=createContext({areCommentsDisabled:!1}),useActivityFeedContext=()=>useContext(ActivityFeedContext);export{ActivityFeedContext,useActivityFeedContext};
@@ -1 +1 @@
1
- import{t as ActivityFeed}from"../../chunks/activity-feed.js";import"./components/app-activity-item/index.js";import"./components/task-item/index.js";import"./components/version-item/index.js";import{useActivityFeedScroll}from"./scroll/use-activity-feed-scroll.js";export{ActivityFeed,useActivityFeedScroll};
1
+ import"./components/app-activity-item/index.js";import"./components/task-item/index.js";import"./components/version-item/index.js";import{useActivityFeedScroll}from"./scroll/use-activity-feed-scroll.js";import{t as ActivityFeed}from"../../chunks/activity-feed.js";export{ActivityFeed,useActivityFeedScroll};
@@ -0,0 +1 @@
1
+ import{t as CommentsDisabled}from"../../../../chunks/comments-disabled.js";export{CommentsDisabled};
@@ -0,0 +1 @@
1
+ import{t as CommentsDisabled}from"../../../../chunks/comments-disabled.js";export{CommentsDisabled};
@@ -0,0 +1 @@
1
+ import{defineMessages}from"react-intl";var messages=defineMessages({message:{id:`groupSharedFeatures.activityFeed.commentsDisabled.message`,defaultMessage:`Comments are disabled for this file.`}});export{messages};
@@ -1 +1 @@
1
- import{defineMessages}from"react-intl";var messages=defineMessages({body:{id:`groupSharedFeatures.activityFeed.emptyState.body`,defaultMessage:`Comment, annotate, or @mention a collaborator to share your thoughts.`},title:{id:`groupSharedFeatures.activityFeed.emptyState.title`,defaultMessage:`Start the conversation`}});export{messages};
1
+ import{defineMessages}from"react-intl";var messages=defineMessages({body:{id:`groupSharedFeatures.activityFeed.emptyState.body`,defaultMessage:`Comment, annotate, or @mention a collaborator to share your thoughts.`},commentsDisabledBody:{id:`groupSharedFeatures.activityFeed.emptyState.commentsDisabledBody`,defaultMessage:`No activity yet`},title:{id:`groupSharedFeatures.activityFeed.emptyState.title`,defaultMessage:`Start the conversation`}});export{messages};
@@ -1 +1 @@
1
- ._emptyStateWrapper_1yzxf_1{flex:auto;justify-content:center;align-items:center;display:flex}._list_1yzxf_8._list_1yzxf_8{gap:var(--space-4);min-height:0;padding:var(--space-4);flex-direction:column;flex:auto;margin:0;list-style:none;display:flex;overflow-y:auto}._list_1yzxf_8._fadeTop_1yzxf_19._fadeBottom_1yzxf_19{-webkit-mask-image:linear-gradient(to bottom, transparent 0, black var(--space-4), black calc(100% - var(--space-4)), transparent 100%);mask-image:linear-gradient(to bottom, transparent 0, black var(--space-4), black calc(100% - var(--space-4)), transparent 100%)}._list_1yzxf_8._fadeTop_1yzxf_19:not(._fadeBottom_1yzxf_19){-webkit-mask-image:linear-gradient(to bottom, transparent 0, black var(--space-4), black 100%);mask-image:linear-gradient(to bottom, transparent 0, black var(--space-4), black 100%)}._list_1yzxf_8._fadeBottom_1yzxf_19:not(._fadeTop_1yzxf_19){-webkit-mask-image:linear-gradient(to bottom, black 0, black calc(100% - var(--space-4)), transparent 100%);mask-image:linear-gradient(to bottom, black 0, black calc(100% - var(--space-4)), transparent 100%)}
1
+ ._emptyStateWrapper_1phex_1{flex:auto;justify-content:center;align-items:center;display:flex}._emptyStateWrapper_1phex_1._commentsDisabled_1phex_7{padding-bottom:calc(2 * var(--bp-space-040) + var(--bp-font-line-height-04))}._list_1phex_11._list_1phex_11{gap:var(--space-4);min-height:0;padding:var(--space-4);flex-direction:column;flex:auto;margin:0;list-style:none;display:flex;overflow-y:auto}._list_1phex_11._list_1phex_11._commentsDisabled_1phex_7{padding-bottom:calc(2 * var(--bp-space-040) + var(--bp-font-line-height-04))}._list_1phex_11._fadeTop_1phex_25._fadeBottom_1phex_25{-webkit-mask-image:linear-gradient(to bottom, transparent 0, black var(--space-4), black calc(100% - var(--space-4)), transparent 100%);mask-image:linear-gradient(to bottom, transparent 0, black var(--space-4), black calc(100% - var(--space-4)), transparent 100%)}._list_1phex_11._fadeTop_1phex_25:not(._fadeBottom_1phex_25){-webkit-mask-image:linear-gradient(to bottom, transparent 0, black var(--space-4), black 100%);mask-image:linear-gradient(to bottom, transparent 0, black var(--space-4), black 100%)}._list_1phex_11._fadeBottom_1phex_25:not(._fadeTop_1phex_25){-webkit-mask-image:linear-gradient(to bottom, black 0, black calc(100% - var(--space-4)), transparent 100%);mask-image:linear-gradient(to bottom, black 0, black calc(100% - var(--space-4)), transparent 100%)}
@@ -0,0 +1 @@
1
+ ._container_1ji20_1{background:linear-gradient(to bottom, color-mix(in srgb, var(--bp-surface-surface) 0%, transparent) 0%, color-mix(in srgb, var(--bp-surface-surface) 3%, transparent) 8%, color-mix(in srgb, var(--bp-surface-surface) 35%, transparent) 18%, color-mix(in srgb, var(--bp-surface-surface) 75%, transparent) 30%, color-mix(in srgb, var(--bp-surface-surface) 97%, transparent) 50%, var(--bp-surface-surface) 100%);margin-inline:var(--bp-space-040);margin-top:calc(-1 * calc(2 * var(--bp-space-040) + var(--bp-font-line-height-04)));padding:var(--bp-space-040) var(--bp-space-050);pointer-events:none;text-align:center;z-index:1;flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}
@@ -0,0 +1,10 @@
1
+ export interface ActivityFeedContextValue {
2
+ /**
3
+ * When true, List adjusts empty copy / bottom fade / overlap padding, and Root
4
+ * renders `CommentsDisabled` as the footer. Hosts set this from file-level
5
+ * comment permission (e.g. `can_comment === false`).
6
+ */
7
+ areCommentsDisabled: boolean;
8
+ }
9
+ export declare const ActivityFeedContext: import('react').Context<ActivityFeedContextValue>;
10
+ export declare const useActivityFeedContext: () => ActivityFeedContextValue;
@@ -9,6 +9,11 @@ export { useActivityFeedScroll } from './scroll';
9
9
  export type { ActivityFeedScrollHandle } from './scroll';
10
10
  /** Props for `ActivityFeed.Root`. */
11
11
  interface ActivityFeedRootProps {
12
+ /**
13
+ * When true, List uses comments-disabled empty copy / layout, and Root renders
14
+ * `CommentsDisabled` as the footer. Omit `Editor` when this is true.
15
+ */
16
+ areCommentsDisabled?: boolean;
12
17
  /** Feed children. */
13
18
  children: ReactNode;
14
19
  /**
@@ -39,6 +44,8 @@ type ActivityFeedListCompound = ((props: ActivityFeedListProps) => ReactElement)
39
44
  *
40
45
  * Top-level slots: `Root`, `Header`, `List`, `Editor`. Row components live
41
46
  * under `List` and must be rendered inside `ActivityFeed.List`.
47
+ * When `Root` has `areCommentsDisabled`, Root renders the comments-disabled footer and
48
+ * `Editor` is a no-op.
42
49
  */
43
50
  export declare const ActivityFeed: {
44
51
  Editor: ({ disableComponent, maxCharacterCount, onPost, onPostError, onPostSuccess, userSelectorProps, videoTimestamp, }: import('./components/editor').EditorProps) => import("react/jsx-runtime").JSX.Element;
@@ -55,6 +62,6 @@ export declare const ActivityFeed: {
55
62
  TaskButton: ({ disabled, onMenuItemClick }: import('./components/header/task-button').TaskButtonProps) => import("react/jsx-runtime").JSX.Element;
56
63
  };
57
64
  List: ActivityFeedListCompound;
58
- Root: ({ children, scrollTo: scrollToProp, mentionContext }: ActivityFeedRootProps) => import("react/jsx-runtime").JSX.Element;
65
+ Root: ({ areCommentsDisabled, children, scrollTo: scrollToProp, mentionContext, }: ActivityFeedRootProps) => import("react/jsx-runtime").JSX.Element;
59
66
  useActivityFeedScroll: typeof useActivityFeedScroll;
60
67
  };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Footer shown instead of `ActivityFeed.Editor` when the host cannot comment
3
+ * (e.g. `file.permissions.can_comment` is false). Does not render the editor.
4
+ */
5
+ export declare const CommentsDisabled: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export { CommentsDisabled } from './comments-disabled';
@@ -0,0 +1,7 @@
1
+ export declare const messages: {
2
+ message: {
3
+ defaultMessage: string;
4
+ description: string;
5
+ id: string;
6
+ };
7
+ };
@@ -1,3 +1,6 @@
1
1
  import { CreateMessageEditorPropsV2 as CreateMessageEditorProps } from '@box/threaded-annotations';
2
2
  export type EditorProps = Omit<CreateMessageEditorProps, 'variant' | 'isFirstAnnotation' | 'initialContent'>;
3
+ /**
4
+ * Create-comment composer. Renders nothing when `Root` has `areCommentsDisabled`
5
+ */
3
6
  export declare const Editor: ({ disableComponent, maxCharacterCount, onPost, onPostError, onPostSuccess, userSelectorProps, videoTimestamp, }: EditorProps) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1,2 @@
1
+ /** Empty feed placeholder. Copy depends on Root `areCommentsDisabled`. */
1
2
  export declare const EmptyState: () => import("react/jsx-runtime").JSX.Element;
@@ -4,6 +4,11 @@ export declare const messages: {
4
4
  description: string;
5
5
  id: string;
6
6
  };
7
+ commentsDisabledBody: {
8
+ defaultMessage: string;
9
+ description: string;
10
+ id: string;
11
+ };
7
12
  title: {
8
13
  defaultMessage: string;
9
14
  description: string;
@@ -1,5 +1,11 @@
1
1
  import { ActivityFeedItem } from '../types';
2
2
  export interface InteractiveActivityFeedProps {
3
+ /**
4
+ * When true, shows comments-disabled empty copy and Root renders the
5
+ * comments-disabled footer. Editor is still mounted here so coverage hits
6
+ * the package no-op path.
7
+ */
8
+ areCommentsDisabled?: boolean;
3
9
  /** Optional item override. */
4
10
  items?: ActivityFeedItem[];
5
11
  /** Initial mention-me value. */
@@ -14,4 +20,4 @@ export interface InteractiveActivityFeedProps {
14
20
  onClose: () => void;
15
21
  }
16
22
  /** Full Storybook harness for ActivityFeed. */
17
- export declare const InteractiveActivityFeed: ({ initialMentionMe, initialScrollPosition, initialShowResolvedComments, items, scrollToItemId, onClose, }: InteractiveActivityFeedProps) => import("react/jsx-runtime").JSX.Element;
23
+ export declare const InteractiveActivityFeed: ({ areCommentsDisabled, initialMentionMe, initialScrollPosition, initialShowResolvedComments, items, scrollToItemId, onClose, }: InteractiveActivityFeedProps) => import("react/jsx-runtime").JSX.Element;
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@box/activity-feed",
3
- "version": "2.3.28",
3
+ "version": "2.4.0",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "peerDependencies": {
6
- "@box/blueprint-web": "^16.20.4",
7
- "@box/blueprint-web-assets": "^5.7.11",
8
- "@box/collaboration-popover": "^2.2.20",
9
- "@box/readable-time": "^2.2.20",
10
- "@box/threaded-annotations": "^4.8.3",
11
- "@box/user-selector": "^2.2.21",
6
+ "@box/blueprint-web": "^16.20.5",
7
+ "@box/blueprint-web-assets": "^5.7.12",
8
+ "@box/collaboration-popover": "^2.2.21",
9
+ "@box/readable-time": "^2.2.21",
10
+ "@box/threaded-annotations": "^4.8.4",
11
+ "@box/user-selector": "^2.2.22",
12
12
  "clsx": "^1.2.1",
13
13
  "react": "^18.0.0",
14
14
  "react-dom": "^18.0.0",
@@ -18,14 +18,14 @@
18
18
  "access": "public"
19
19
  },
20
20
  "devDependencies": {
21
- "@box/blueprint-web": "^16.20.4",
22
- "@box/blueprint-web-assets": "^5.7.11",
23
- "@box/collaboration-popover": "^2.2.20",
24
- "@box/eslint-plugin-blueprint": "2.2.7",
25
- "@box/readable-time": "^2.2.20",
26
- "@box/storybook-utils": "1.2.20",
27
- "@box/threaded-annotations": "^4.8.3",
28
- "@box/user-selector": "^2.2.21",
21
+ "@box/blueprint-web": "^16.20.5",
22
+ "@box/blueprint-web-assets": "^5.7.12",
23
+ "@box/collaboration-popover": "^2.2.21",
24
+ "@box/eslint-plugin-blueprint": "2.2.8",
25
+ "@box/readable-time": "^2.2.21",
26
+ "@box/storybook-utils": "1.2.21",
27
+ "@box/threaded-annotations": "^4.8.4",
28
+ "@box/user-selector": "^2.2.22",
29
29
  "react-intl": "^6.4.2"
30
30
  },
31
31
  "files": [