@atlaskit/ads-mcp 1.10.2 → 1.10.3

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 (24) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/tools/get-all-components/components.codegen.js +2 -2
  3. package/dist/cjs/tools/get-atlaskit-components/atlaskit-components.codegen.js +2 -2
  4. package/dist/cjs/tools/get-atlaskit-hooks/atlaskit-hooks.codegen.js +1369 -97
  5. package/dist/cjs/tools/get-atlaskit-utilities/atlaskit-utilities.codegen.js +6089 -116
  6. package/dist/cjs/tools/i18n-conversion/guide.js +8 -8
  7. package/dist/cjs/tools/i18n-conversion/list-i18n-conversion-tool.js +1 -1
  8. package/dist/es2019/tools/get-all-components/components.codegen.js +2 -2
  9. package/dist/es2019/tools/get-atlaskit-components/atlaskit-components.codegen.js +2 -2
  10. package/dist/es2019/tools/get-atlaskit-hooks/atlaskit-hooks.codegen.js +1369 -97
  11. package/dist/es2019/tools/get-atlaskit-utilities/atlaskit-utilities.codegen.js +6089 -116
  12. package/dist/es2019/tools/i18n-conversion/guide.js +8 -8
  13. package/dist/es2019/tools/i18n-conversion/list-i18n-conversion-tool.js +1 -1
  14. package/dist/esm/tools/get-all-components/components.codegen.js +2 -2
  15. package/dist/esm/tools/get-atlaskit-components/atlaskit-components.codegen.js +2 -2
  16. package/dist/esm/tools/get-atlaskit-hooks/atlaskit-hooks.codegen.js +1369 -97
  17. package/dist/esm/tools/get-atlaskit-utilities/atlaskit-utilities.codegen.js +6089 -116
  18. package/dist/esm/tools/i18n-conversion/guide.js +8 -8
  19. package/dist/esm/tools/i18n-conversion/list-i18n-conversion-tool.js +1 -1
  20. package/dist/types/tools/get-all-components/components.codegen.d.ts +1 -1
  21. package/dist/types/tools/get-atlaskit-components/atlaskit-components.codegen.d.ts +1 -1
  22. package/dist/types/tools/get-atlaskit-hooks/atlaskit-hooks.codegen.d.ts +1 -1
  23. package/dist/types/tools/get-atlaskit-utilities/atlaskit-utilities.codegen.d.ts +1 -1
  24. package/package.json +4 -4
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Structured content hooks from design-system *.docs.tsx files
5
5
  *
6
- * @codegen <<SignedSource::eff635a23ccace1d4e4c6ef6efc21551>>
6
+ * @codegen <<SignedSource::8622cd207ede8e8e02275cd9e0dfc3cc>>
7
7
  * @codegenCommand yarn workspace @af/ads-ai-tooling codegen
8
8
  */
9
9
  /* eslint-disable @repo/internal/react/boolean-prop-naming-convention -- not our types */
@@ -21,7 +21,7 @@ export var atlaskitHooks = [{
21
21
  description: '`createAnalyticsEvent` is referentially stable per nearest `AnalyticsContext`, so it is safe to put in dependency arrays.'
22
22
  },
23
23
  package: '@atlaskit/analytics-next',
24
- examples: ["import React, { type FC, type MouseEvent, useCallback } from 'react';\nimport {\n\tAnalyticsListener,\n\ttype UIAnalyticsEvent,\n\tuseAnalyticsEvents,\n\tuseCallbackWithAnalytics,\n\tusePlatformLeafEventHandler,\n\twithAnalyticsEvents,\n\ttype WithAnalyticsEventsProps,\n} from '../src';\ninterface Props extends WithAnalyticsEventsProps {\n\tchildren: React.ReactNode;\n\tonClick: (e: MouseEvent<HTMLButtonElement>) => void;\n}\nconst ButtonBase = ({ createAnalyticsEvent, onClick, ...rest }: Props) => {\n\tconst handleClick = useCallback(\n\t\t(e: MouseEvent<HTMLButtonElement>) => {\n\t\t\t// Create our analytics event\n\t\t\tconst analyticsEvent = createAnalyticsEvent!({\n\t\t\t\taction: 'click',\n\t\t\t});\n\t\t\t// Fire our analytics event on the 'atlaskit' channel\n\t\t\tanalyticsEvent.fire('atlaskit');\n\t\t\tif (onClick) {\n\t\t\t\tonClick(e);\n\t\t\t}\n\t\t},\n\t\t[onClick, createAnalyticsEvent],\n\t);\n\treturn <button {...rest} onClick={handleClick} />;\n};\nconst Button = withAnalyticsEvents()(ButtonBase);\nconst ButtonUsingHook: FC<Props> = ({ onClick, ...props }) => {\n\t// Decompose function from the hook\n\tconst { createAnalyticsEvent } = useAnalyticsEvents();\n\tconst handleClick = useCallback(\n\t\t(e: MouseEvent<HTMLButtonElement>) => {\n\t\t\t// Create our analytics event\n\t\t\tconst analyticsEvent = createAnalyticsEvent({ action: 'click' });\n\t\t\t// Fire our analytics event\n\t\t\tanalyticsEvent.fire('atlaskit');\n\t\t\tif (onClick) {\n\t\t\t\tonClick(e);\n\t\t\t}\n\t\t},\n\t\t[onClick, createAnalyticsEvent],\n\t);\n\treturn <button {...props} onClick={handleClick} />;\n};\nconst ButtonUsingCallback: FC<Props> = ({ onClick, ...props }) => {\n\tconst handleClick = useCallbackWithAnalytics(onClick, { action: 'click' }, 'atlaskit');\n\treturn <button {...props} onClick={handleClick} />;\n};\nconst ButtonUsingEventHandlerHook = ({\n\tonClick,\n\tchildren,\n}: {\n\tchildren: React.ReactNode;\n\tonClick: (\n\t\tmouseEvent: React.MouseEvent<HTMLButtonElement>,\n\t\tanalyticsEvent: UIAnalyticsEvent,\n\t) => void;\n}) => {\n\tconst handleClick = usePlatformLeafEventHandler({\n\t\tfn: onClick,\n\t\taction: 'clicked',\n\t\tcomponentName: 'fancy-button',\n\t\tpackageName: '@atlaskit/fancy-button',\n\t\tpackageVersion: '0.1.0',\n\t});\n\treturn <button onClick={handleClick}>{children}</button>;\n};\nconst App: FC = () => {\n\tconst handleEvent = (analyticsEvent: UIAnalyticsEvent) => {\n\t\tconst { payload, context } = analyticsEvent;\n\t\tconsole.log('Received event:', { payload, context });\n\t};\n\tconst onClickHandler = () => console.log('onClickCallback');\n\treturn (\n\t\t<AnalyticsListener channel=\"atlaskit\" onEvent={handleEvent}>\n\t\t\t<Button onClick={onClickHandler}>Click me (withAnalyticsEvents)</Button>\n\t\t\t<br />\n\t\t\t<ButtonUsingHook onClick={onClickHandler}>Click me (useAnalyticsEvents)</ButtonUsingHook>\n\t\t\t<br />\n\t\t\t<ButtonUsingCallback onClick={onClickHandler}>\n\t\t\t\tClick me (useCallbackWithAnalytics)\n\t\t\t</ButtonUsingCallback>\n\t\t\t<br />\n\t\t\t<ButtonUsingEventHandlerHook onClick={onClickHandler}>\n\t\t\t\tClick me (usePlatformLeafEventHandler)\n\t\t\t</ButtonUsingEventHandlerHook>\n\t\t</AnalyticsListener>\n\t);\n};\nexport default App;"]
24
+ examples: ["import React, { type FC, type MouseEvent, useCallback } from 'react';\nimport AnalyticsListener from '../src/components/AnalyticsListener';\nimport type UIAnalyticsEvent from '../src/events/UIAnalyticsEvent';\nimport { useAnalyticsEvents } from '../src/hooks/useAnalyticsEvents';\nimport { useCallbackWithAnalytics } from '../src/hooks/useCallbackWithAnalytics';\nimport { usePlatformLeafEventHandler } from '../src/hooks/usePlatformLeafEventHandler';\nimport withAnalyticsEvents, {\n\ttype WithAnalyticsEventsProps,\n} from '../src/hocs/withAnalyticsEvents';\ninterface Props extends WithAnalyticsEventsProps {\n\tchildren: React.ReactNode;\n\tonClick: (e: MouseEvent<HTMLButtonElement>) => void;\n}\nconst ButtonBase = ({ createAnalyticsEvent, onClick, ...rest }: Props) => {\n\tconst handleClick = useCallback(\n\t\t(e: MouseEvent<HTMLButtonElement>) => {\n\t\t\t// Create our analytics event\n\t\t\tconst analyticsEvent = createAnalyticsEvent!({\n\t\t\t\taction: 'click',\n\t\t\t});\n\t\t\t// Fire our analytics event on the 'atlaskit' channel\n\t\t\tanalyticsEvent.fire('atlaskit');\n\t\t\tif (onClick) {\n\t\t\t\tonClick(e);\n\t\t\t}\n\t\t},\n\t\t[onClick, createAnalyticsEvent],\n\t);\n\treturn <button {...rest} onClick={handleClick} />;\n};\nconst Button = withAnalyticsEvents()(ButtonBase);\nconst ButtonUsingHook: FC<Props> = ({ onClick, ...props }) => {\n\t// Decompose function from the hook\n\tconst { createAnalyticsEvent } = useAnalyticsEvents();\n\tconst handleClick = useCallback(\n\t\t(e: MouseEvent<HTMLButtonElement>) => {\n\t\t\t// Create our analytics event\n\t\t\tconst analyticsEvent = createAnalyticsEvent({ action: 'click' });\n\t\t\t// Fire our analytics event\n\t\t\tanalyticsEvent.fire('atlaskit');\n\t\t\tif (onClick) {\n\t\t\t\tonClick(e);\n\t\t\t}\n\t\t},\n\t\t[onClick, createAnalyticsEvent],\n\t);\n\treturn <button {...props} onClick={handleClick} />;\n};\nconst ButtonUsingCallback: FC<Props> = ({ onClick, ...props }) => {\n\tconst handleClick = useCallbackWithAnalytics(onClick, { action: 'click' }, 'atlaskit');\n\treturn <button {...props} onClick={handleClick} />;\n};\nconst ButtonUsingEventHandlerHook = ({\n\tonClick,\n\tchildren,\n}: {\n\tchildren: React.ReactNode;\n\tonClick: (\n\t\tmouseEvent: React.MouseEvent<HTMLButtonElement>,\n\t\tanalyticsEvent: UIAnalyticsEvent,\n\t) => void;\n}) => {\n\tconst handleClick = usePlatformLeafEventHandler({\n\t\tfn: onClick,\n\t\taction: 'clicked',\n\t\tcomponentName: 'fancy-button',\n\t\tpackageName: '@atlaskit/fancy-button',\n\t\tpackageVersion: '0.1.0',\n\t});\n\treturn <button onClick={handleClick}>{children}</button>;\n};\nconst App: FC = () => {\n\tconst handleEvent = (analyticsEvent: UIAnalyticsEvent) => {\n\t\tconst { payload, context } = analyticsEvent;\n\t\tconsole.log('Received event:', { payload, context });\n\t};\n\tconst onClickHandler = () => console.log('onClickCallback');\n\treturn (\n\t\t<AnalyticsListener channel=\"atlaskit\" onEvent={handleEvent}>\n\t\t\t<Button onClick={onClickHandler}>Click me (withAnalyticsEvents)</Button>\n\t\t\t<br />\n\t\t\t<ButtonUsingHook onClick={onClickHandler}>Click me (useAnalyticsEvents)</ButtonUsingHook>\n\t\t\t<br />\n\t\t\t<ButtonUsingCallback onClick={onClickHandler}>\n\t\t\t\tClick me (useCallbackWithAnalytics)\n\t\t\t</ButtonUsingCallback>\n\t\t\t<br />\n\t\t\t<ButtonUsingEventHandlerHook onClick={onClickHandler}>\n\t\t\t\tClick me (usePlatformLeafEventHandler)\n\t\t\t</ButtonUsingEventHandlerHook>\n\t\t</AnalyticsListener>\n\t);\n};\nexport default App;"]
25
25
  }, {
26
26
  name: 'useInterval',
27
27
  description: 'Declarative wrapper around `setInterval`. Re-runs the latest `callback` every `delay` milliseconds and clears the timer on unmount or when `delay` changes. Passing `null` for `delay` pauses the timer without unmounting the hook.',
@@ -245,6 +245,72 @@ export var atlaskitHooks = [{
245
245
  category: 'linking',
246
246
  package: '@atlaskit/link-provider',
247
247
  examples: []
248
+ }, {
249
+ name: 'useRovoAgentActionAnalytics',
250
+ description: 'Creates a typed Rovo Agent event tracker enriched with analytics context and common attributes.',
251
+ status: 'general-availability',
252
+ usageGuidelines: ['Use the actions entry point in interactive surfaces; the package root exposes a no-op compatibility implementation.', 'Keep commonAttributes stable for the lifetime of the hook instance.'],
253
+ keywords: ['rovo', 'agents', 'analytics', 'tracking hook'],
254
+ category: 'rovo',
255
+ package: '@atlaskit/rovo-agent-analytics',
256
+ examples: []
257
+ }, {
258
+ name: 'useRovoAgentCreateAnalytics',
259
+ description: 'Tracks a correlated Rovo Agent creation session and manages its create-session identifier.',
260
+ status: 'general-availability',
261
+ usageGuidelines: ['Call trackCreateSessionStart at intent time, then reuse the returned session methods for the remaining funnel.'],
262
+ keywords: ['rovo', 'agents', 'analytics', 'creation session'],
263
+ category: 'rovo',
264
+ package: '@atlaskit/rovo-agent-analytics',
265
+ examples: []
266
+ }, {
267
+ name: 'usePublish',
268
+ description: 'Returns a stable publisher for one Rovo trigger topic.',
269
+ status: 'general-availability',
270
+ usageGuidelines: ['Use when a React component publishes multiple payloads to the same topic.'],
271
+ keywords: ['rovo', 'trigger', 'publish', 'hook'],
272
+ category: 'rovo',
273
+ returns: {
274
+ type: '(payload: Payload) => void'
275
+ },
276
+ package: '@atlaskit/rovo-triggers',
277
+ examples: []
278
+ }, {
279
+ name: 'useRovoPostMessageToPubsub',
280
+ description: 'Returns acknowledged cross-window publishing state for Rovo trigger payloads.',
281
+ status: 'general-availability',
282
+ usageGuidelines: ['Use when a Rovo payload must cross a window boundary and report acknowledgement timeout.'],
283
+ keywords: ['rovo', 'postmessage', 'pubsub', 'hook'],
284
+ category: 'rovo',
285
+ returns: {
286
+ type: 'ReturnType<typeof useRovoPostMessageToPubsub>'
287
+ },
288
+ package: '@atlaskit/rovo-triggers',
289
+ examples: []
290
+ }, {
291
+ name: 'useSubscribe',
292
+ description: 'Subscribes a React component to one Rovo trigger topic.',
293
+ status: 'general-availability',
294
+ usageGuidelines: ['Use for topic-specific Rovo event handling with optional latest-event behavior.'],
295
+ keywords: ['rovo', 'trigger', 'subscribe', 'hook'],
296
+ category: 'rovo',
297
+ returns: {
298
+ type: 'void'
299
+ },
300
+ package: '@atlaskit/rovo-triggers',
301
+ examples: []
302
+ }, {
303
+ name: 'useSubscribeAll',
304
+ description: 'Subscribes a React component to every Rovo trigger payload.',
305
+ status: 'general-availability',
306
+ usageGuidelines: ['Use only at bridge or instrumentation boundaries that intentionally observe all topics.'],
307
+ keywords: ['rovo', 'trigger', 'subscribe all', 'hook'],
308
+ category: 'rovo',
309
+ returns: {
310
+ type: 'void'
311
+ },
312
+ package: '@atlaskit/rovo-triggers',
313
+ examples: []
248
314
  }, {
249
315
  name: 'useSmartLinkActions',
250
316
  description: 'Hook that extracts and returns actions for a given URL. Relies on Smart Link context; usages must be wrapped in SmartCardProvider or equivalent.',
@@ -254,7 +320,7 @@ export var atlaskitHooks = [{
254
320
  keywords: ['smart-card', 'hooks', 'useSmartLinkActions', 'actions'],
255
321
  category: 'linking',
256
322
  package: '@atlaskit/smart-card',
257
- examples: ["import React, { useCallback } from 'react';\nimport Button from '@atlaskit/button/default/button';\nimport { SmartCardProvider } from '@atlaskit/link-provider';\nimport { ResolvedClient, ResolvedClientUrl } from '@atlaskit/link-test-helpers';\nimport { Box } from '@atlaskit/primitives/compiled';\nimport { Card } from '../../src';\nimport { CardAction } from '../../src/constants';\nimport { useSmartLinkActions } from '../../src/hooks';\nimport ExampleContainer from './example-container';\nconst PreviewButton = ({ url }: { url: string }) => {\n\tconst actions = useSmartLinkActions({ url, appearance: 'block' });\n\t// actions are returned in an array, find the preview action\n\tconst previewAction = actions.find((action) => action.id === 'preview-content');\n\tconst handleClick = useCallback(() => {\n\t\tif (previewAction) {\n\t\t\tpreviewAction.invoke();\n\t\t}\n\t}, [previewAction]);\n\tif (!previewAction) {\n\t\treturn null;\n\t}\n\treturn <Button onClick={handleClick}>{previewAction.text}</Button>;\n};\nconst UseSmartLinkActionsExample = (): React.JSX.Element => (\n\t<ExampleContainer>\n\t\t<SmartCardProvider client={new ResolvedClient()}>\n\t\t\t<Card\n\t\t\t\tappearance=\"block\"\n\t\t\t\turl={ResolvedClientUrl}\n\t\t\t\tactionOptions={{ hide: false, exclude: [CardAction.PreviewAction] }}\n\t\t\t/>\n\t\t\t<Box paddingBlockStart=\"space.200\">\n\t\t\t\t<PreviewButton url={ResolvedClientUrl} />\n\t\t\t</Box>\n\t\t</SmartCardProvider>\n\t</ExampleContainer>\n);\nexport default UseSmartLinkActionsExample;"]
323
+ examples: ["import React, { useCallback } from 'react';\nimport Button from '@atlaskit/button/default/button';\nimport { SmartCardProvider } from '@atlaskit/link-provider/smart-card-provider';\nimport { ResolvedClient, ResolvedClientUrl } from '@atlaskit/link-test-helpers';\nimport { Box } from '@atlaskit/primitives/compiled';\nimport { Card } from '../../src';\nimport { CardAction } from '../../src/constants';\nimport { useSmartLinkActions } from '../../src/hooks';\nimport ExampleContainer from './example-container';\nconst PreviewButton = ({ url }: { url: string }) => {\n\tconst actions = useSmartLinkActions({ url, appearance: 'block' });\n\t// actions are returned in an array, find the preview action\n\tconst previewAction = actions.find((action) => action.id === 'preview-content');\n\tconst handleClick = useCallback(() => {\n\t\tif (previewAction) {\n\t\t\tpreviewAction.invoke();\n\t\t}\n\t}, [previewAction]);\n\tif (!previewAction) {\n\t\treturn null;\n\t}\n\treturn <Button onClick={handleClick}>{previewAction.text}</Button>;\n};\nconst UseSmartLinkActionsExample = (): React.JSX.Element => (\n\t<ExampleContainer>\n\t\t<SmartCardProvider client={new ResolvedClient()}>\n\t\t\t<Card\n\t\t\t\tappearance=\"block\"\n\t\t\t\turl={ResolvedClientUrl}\n\t\t\t\tactionOptions={{ hide: false, exclude: [CardAction.PreviewAction] }}\n\t\t\t/>\n\t\t\t<Box paddingBlockStart=\"space.200\">\n\t\t\t\t<PreviewButton url={ResolvedClientUrl} />\n\t\t\t</Box>\n\t\t</SmartCardProvider>\n\t</ExampleContainer>\n);\nexport default UseSmartLinkActionsExample;"]
258
324
  }, {
259
325
  name: 'useSmartLinkEvents',
260
326
  description: 'Hook that returns a SmartLinkEvents object for dispatching analytics events for a given URL. Currently supports insertSmartLink.',
@@ -264,125 +330,1331 @@ export var atlaskitHooks = [{
264
330
  keywords: ['smart-card', 'hooks', 'analytics', 'useSmartLinkEvents', 'events'],
265
331
  category: 'linking',
266
332
  package: '@atlaskit/smart-card',
267
- examples: ["import AnalyticsContext from '@atlaskit/analytics-next/AnalyticsContext';\nimport AnalyticsListener from '@atlaskit/analytics-next/AnalyticsListener';\nimport type UIAnalyticsEvent from '@atlaskit/analytics-next/UIAnalyticsEvent';\nimport Heading from '@atlaskit/heading/heading';\nimport { SmartCardProvider } from '@atlaskit/link-provider';\nimport { ResolvedClient, ResolvedClientUrl } from '@atlaskit/link-test-helpers';\nimport { Box, Text, xcss } from '@atlaskit/primitives';\nimport { Card } from '../../src';\nconst headingBoxStyles = xcss({\n\tmarginBottom: 'space.100',\n});\nconst stackBoxStyles = xcss({\n\tmarginTop: 'space.100',\n});\ntype ExampleComponentProps = {\n\tsetRecentEvents: React.Dispatch<React.SetStateAction<UIAnalyticsEvent[]>>;\n};\nconst ExampleComponent = ({ setRecentEvents }: ExampleComponentProps): JSX.Element => {\n\tconst handleOnClick = React.useCallback(\n\t\t(e: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t},\n\t\t[],\n\t);\n\treturn (\n\t\t<AnalyticsListener\n\t\t\tonEvent={(event) => {\n\t\t\t\tsetRecentEvents((prevEvents) => [...prevEvents, event]);\n\t\t\t}}\n\t\t\tchannel=\"*\"\n\t\t>\n\t\t\t<AnalyticsContext\n\t\t\t\tdata={{\n\t\t\t\t\tsource: 'content',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tdisplayCategory: 'link',\n\t\t\t\t\t\tdisplay: 'url',\n\t\t\t\t\t\tid: '123',\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<SmartCardProvider client={new ResolvedClient('dev')}>\n\t\t\t\t\t<Card\n\t\t\t\t\t\turl={ResolvedClientUrl}\n\t\t\t\t\t\tappearance=\"inline\"\n\t\t\t\t\t\tplatform=\"web\"\n\t\t\t\t\t\tshowHoverPreview={true}\n\t\t\t\t\t\tonClick={handleOnClick}\n\t\t\t\t\t/>\n\t\t\t\t</SmartCardProvider>\n\t\t\t</AnalyticsContext>\n\t\t</AnalyticsListener>\n\t);\n};\nexport default (): React.JSX.Element => {\n\tconst [recentEvents, setRecentEvents] = React.useState<UIAnalyticsEvent[]>([]);\n\tconst mostRecent10Events = React.useMemo(() => {\n\t\treturn Array.from({ length: 10 }, (_, i) => {\n\t\t\treturn recentEvents.at(recentEvents.length - i - 1);\n\t\t});\n\t}, [recentEvents]);\n\treturn (\n\t\t<Box>\n\t\t\t<Box xcss={headingBoxStyles}>\n\t\t\t\t<Heading size=\"medium\">Interact with the link below and see events being fired</Heading>\n\t\t\t</Box>\n\t\t\t<ExampleComponent setRecentEvents={setRecentEvents} />\n\t\t\t<Box xcss={stackBoxStyles}>\n\t\t\t\t<Heading size=\"small\">The 10 Most Recent Events Fired</Heading>\n\t\t\t\t<ol>\n\t\t\t\t\t{mostRecent10Events.map((event, index) => {\n\t\t\t\t\t\tif (event === undefined) {\n\t\t\t\t\t\t\treturn <li key={index}></li>;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst { action, actionSubject, eventType } = event.payload;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={index}>\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t>{`actionSubject: ${actionSubject}, action: ${action}, eventType: ${eventType}`}</Text>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ol>\n\t\t\t</Box>\n\t\t</Box>\n\t);\n};"]
333
+ examples: ["import AnalyticsContext from '@atlaskit/analytics-next/AnalyticsContext';\nimport AnalyticsListener from '@atlaskit/analytics-next/AnalyticsListener';\nimport type UIAnalyticsEvent from '@atlaskit/analytics-next/UIAnalyticsEvent';\nimport Heading from '@atlaskit/heading/heading';\nimport { SmartCardProvider } from '@atlaskit/link-provider/smart-card-provider';\nimport { ResolvedClient, ResolvedClientUrl } from '@atlaskit/link-test-helpers';\nimport { Box, Text, xcss } from '@atlaskit/primitives';\nimport { Card } from '../../src';\nconst headingBoxStyles = xcss({\n\tmarginBottom: 'space.100',\n});\nconst stackBoxStyles = xcss({\n\tmarginTop: 'space.100',\n});\ntype ExampleComponentProps = {\n\tsetRecentEvents: React.Dispatch<React.SetStateAction<UIAnalyticsEvent[]>>;\n};\nconst ExampleComponent = ({ setRecentEvents }: ExampleComponentProps): JSX.Element => {\n\tconst handleOnClick = React.useCallback(\n\t\t(e: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => {\n\t\t\te.preventDefault();\n\t\t\treturn;\n\t\t},\n\t\t[],\n\t);\n\treturn (\n\t\t<AnalyticsListener\n\t\t\tonEvent={(event) => {\n\t\t\t\tsetRecentEvents((prevEvents) => [...prevEvents, event]);\n\t\t\t}}\n\t\t\tchannel=\"*\"\n\t\t>\n\t\t\t<AnalyticsContext\n\t\t\t\tdata={{\n\t\t\t\t\tsource: 'content',\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tdisplayCategory: 'link',\n\t\t\t\t\t\tdisplay: 'url',\n\t\t\t\t\t\tid: '123',\n\t\t\t\t\t},\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t<SmartCardProvider client={new ResolvedClient('dev')}>\n\t\t\t\t\t<Card\n\t\t\t\t\t\turl={ResolvedClientUrl}\n\t\t\t\t\t\tappearance=\"inline\"\n\t\t\t\t\t\tplatform=\"web\"\n\t\t\t\t\t\tshowHoverPreview={true}\n\t\t\t\t\t\tonClick={handleOnClick}\n\t\t\t\t\t/>\n\t\t\t\t</SmartCardProvider>\n\t\t\t</AnalyticsContext>\n\t\t</AnalyticsListener>\n\t);\n};\nexport default (): React.JSX.Element => {\n\tconst [recentEvents, setRecentEvents] = React.useState<UIAnalyticsEvent[]>([]);\n\tconst mostRecent10Events = React.useMemo(() => {\n\t\treturn Array.from({ length: 10 }, (_, i) => {\n\t\t\treturn recentEvents.at(recentEvents.length - i - 1);\n\t\t});\n\t}, [recentEvents]);\n\treturn (\n\t\t<Box>\n\t\t\t<Box xcss={headingBoxStyles}>\n\t\t\t\t<Heading size=\"medium\">Interact with the link below and see events being fired</Heading>\n\t\t\t</Box>\n\t\t\t<ExampleComponent setRecentEvents={setRecentEvents} />\n\t\t\t<Box xcss={stackBoxStyles}>\n\t\t\t\t<Heading size=\"small\">The 10 Most Recent Events Fired</Heading>\n\t\t\t\t<ol>\n\t\t\t\t\t{mostRecent10Events.map((event, index) => {\n\t\t\t\t\t\tif (event === undefined) {\n\t\t\t\t\t\t\treturn <li key={index}></li>;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst { action, actionSubject, eventType } = event.payload;\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<li key={index}>\n\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t>{`actionSubject: ${actionSubject}, action: ${action}, eventType: ${eventType}`}</Text>\n\t\t\t\t\t\t\t</li>\n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t</ol>\n\t\t\t</Box>\n\t\t</Box>\n\t);\n};"]
268
334
  }, {
269
- name: 'useAllMessages',
270
- description: 'Returns every non-dismissed message in a placement with a placement-bound wrapper. Use it when one surface renders messages from multiple templates.',
335
+ name: 'useChooseObjectExample',
336
+ description: 'Returns object-example selection state for smart-creation prompts.',
271
337
  status: 'general-availability',
272
- usageGuidelines: ['Use when a placement intentionally renders messages from more than one template.', 'Use `useMessageInstances` or `useMessageData` when the surface is scoped to one template.', 'Iterate `messageInstanceIds` and read each message inside the `PostOfficeAllMessages` render prop; rendering message data directly bypasses Post Office orchestration, analytics, and lifecycle behavior.', 'The wrapper only needs `messageInstanceId`; `messageTemplateId` and `messageCategory` are inferred from the fetched message, so you do not need to pass them.', 'Prefer the render prop; `messageInstanceIds` is always available for iteration. Use `dataOutsideWrapper: true` only if you absolutely need the `messages` array (message data) outside the wrapper.'],
273
- keywords: ['post office', 'headless messages', 'all messages', 'multiple templates', 'choreographer', 'message lifecycle'],
274
- category: 'messaging',
275
- parameters: [{
276
- name: 'placementId',
277
- type: 'string',
278
- description: 'Placement to fetch.',
279
- defaultValue: "'headless'",
280
- isOptional: true
281
- }, {
282
- name: 'options',
283
- type: 'UseAllMessagesOptions<TMessage, TExtension>',
284
- description: 'Optional matching, validation, and data-source configuration.',
285
- isOptional: true
286
- }],
338
+ usageGuidelines: ['Use within object-aware smart-creation example selection.'],
339
+ keywords: ['rovo', 'smart creation', 'object example', 'hook'],
340
+ category: 'rovo',
287
341
  returns: {
288
- type: 'UseAllMessagesResult<TMessage>',
289
- description: 'Message instance IDs to iterate, loading and error state, dismissal controls, and PostOfficeAllMessages whose render prop receives each message. The `messages` array (message data) is only present when `dataOutsideWrapper: true`.'
342
+ type: '(choice: string, examples: ObjectExamplesConfig) => void'
290
343
  },
291
- package: '@atlassian/post-office-headless-api',
292
- examples: ["import { useAllMessages } from '@atlassian/post-office-headless-api/hooks/useAllMessages';\ntype ProductHomeMessage = {\n\tmessageTemplateId: string;\n\tcontext: {\n\t\ttitle: string;\n\t\tbody: string;\n\t};\n};\nconst ProductHomeMessages = (): JSX.Element => {\n\tconst { messageInstanceIds, PostOfficeAllMessages } =\n\t\tuseAllMessages<ProductHomeMessage>('product-home');\n\treturn (\n\t\t<>\n\t\t\t{messageInstanceIds.map((messageInstanceId) => (\n\t\t\t\t<PostOfficeAllMessages key={messageInstanceId} messageInstanceId={messageInstanceId}>\n\t\t\t\t\t{(message) => (\n\t\t\t\t\t\t<section aria-label={message.context.title}>\n\t\t\t\t\t\t\t<h2>{message.context.title}</h2>\n\t\t\t\t\t\t\t<p>{message.context.body}</p>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t)}\n\t\t\t\t</PostOfficeAllMessages>\n\t\t\t))}\n\t\t</>\n\t);\n};\nexport default ProductHomeMessages;"]
344
+ package: '@atlassian/conversation-assistant',
345
+ examples: []
293
346
  }, {
294
- name: 'useMessageData',
295
- description: 'Returns the single non-dismissed instance of one message template with a fully bound wrapper. Use it when the template can produce at most one active instance.',
347
+ name: 'useInputHatSelectedAgent',
348
+ description: 'Resolves the selected agent displayed by the refreshed chat input hat.',
296
349
  status: 'general-availability',
297
- usageGuidelines: ['Use when one template can produce at most one active message instance.', 'Use `useMessageInstances` when multiple instances are valid rather than treating them as an error.', 'Render the message through the returned `PostOfficeMessage` and read it inside the render prop; rendering message data directly bypasses Post Office orchestration, analytics, and lifecycle behavior.', 'Prefer the render prop; `messageInstanceId` is always available. Use `dataOutsideWrapper: true` only if you absolutely need `message` (message data) outside the wrapper.'],
298
- keywords: ['post office', 'headless messages', 'single message', 'message template', 'choreographer', 'message lifecycle'],
299
- category: 'messaging',
300
- parameters: [{
301
- name: 'selector',
302
- type: 'UseMessageDataSelector',
303
- description: 'Placement and template to select.'
304
- }, {
305
- name: 'options',
306
- type: 'UseMessageDataOptions<TMessage, TExtension>',
307
- description: 'Optional matching, validation, and data-source configuration.',
308
- isOptional: true
309
- }],
350
+ usageGuidelines: ['Use when composing the package refreshed input-hat experience.'],
351
+ keywords: ['rovo', 'chat', 'agent', 'input hat'],
352
+ category: 'rovo',
310
353
  returns: {
311
- type: 'UseMessageDataResult<TMessage>',
312
- description: 'The resolved messageInstanceId, loading and error state, dismissal controls, and an optional PostOfficeMessage wrapper whose render prop receives the message. The `message` value (message data) is only present when `dataOutsideWrapper: true`.'
354
+ type: 'SelectedAgentForInputHat | undefined'
313
355
  },
314
- package: '@atlassian/post-office-headless-api',
315
- examples: ["import { useMessageData } from '@atlassian/post-office-headless-api/hooks/useMessageData';\ntype TrialReminderMessage = {\n\tmessageTemplateId: 'trial-reminder';\n\tcontext: {\n\t\ttitle: string;\n\t\tbody: string;\n\t};\n};\nconst TrialReminder = (): JSX.Element | null => {\n\tconst { PostOfficeMessage } = useMessageData<TrialReminderMessage>({\n\t\tplacementId: 'product-home',\n\t\tmessageTemplateId: 'trial-reminder',\n\t});\n\tif (!PostOfficeMessage) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<PostOfficeMessage>\n\t\t\t{(message) => (\n\t\t\t\t<section aria-label={message.context.title}>\n\t\t\t\t\t<h2>{message.context.title}</h2>\n\t\t\t\t\t<p>{message.context.body}</p>\n\t\t\t\t</section>\n\t\t\t)}\n\t\t</PostOfficeMessage>\n\t);\n};\nexport default TrialReminder;"]
356
+ package: '@atlassian/conversation-assistant',
357
+ examples: []
316
358
  }, {
317
- name: 'useMessageInstances',
318
- description: 'Returns every non-dismissed instance of one message template with a template-bound wrapper. Use it when an implicit message creator can produce multiple simultaneous instances.',
359
+ name: 'usePromptLibraryFilters',
360
+ description: 'Manages prompt-library category, search, and visible prompt filtering.',
319
361
  status: 'general-availability',
320
- usageGuidelines: ['Use for one template only when more than one message instance can be active at the same time.', 'Prefer `useMessageData` when the template can produce at most one active instance.', 'Iterate `messageInstanceIds` and read each message inside the `PostOfficeMessageInstance` render prop; rendering message data directly bypasses Post Office orchestration, analytics, and lifecycle behavior.', 'Prefer the render prop; `messageInstanceIds` is always available for iteration. Use `dataOutsideWrapper: true` only if you absolutely need the `messages` array (message data) outside the wrapper.'],
321
- keywords: ['post office', 'headless messages', 'message instances', 'implicit messages', 'choreographer', 'message lifecycle'],
322
- category: 'messaging',
323
- parameters: [{
324
- name: 'selector',
325
- type: "{ placementId?: string; messageTemplateId: TMessage['messageTemplateId'] }",
326
- description: 'Placement and template to select.'
327
- }, {
328
- name: 'options',
329
- type: 'UseMessageInstancesOptions<TMessage, TExtension>',
330
- description: 'Optional matching, validation, and data-source configuration.',
331
- isOptional: true
332
- }],
362
+ usageGuidelines: ['Use when building a custom prompt-library presentation.'],
363
+ keywords: ['rovo', 'prompt library', 'filter', 'hook'],
364
+ category: 'rovo',
333
365
  returns: {
334
- type: 'UseMessageInstancesResult<TMessage>',
335
- description: 'Message instance IDs to iterate, loading and error state, dismissal controls, and PostOfficeMessageInstance whose render prop receives each message. The `messages` array (message data) is only present when `dataOutsideWrapper: true`.'
366
+ type: 'UsePromptLibraryFiltersResult'
336
367
  },
337
- package: '@atlassian/post-office-headless-api',
338
- examples: ["import { useMessageInstances } from '@atlassian/post-office-headless-api/hooks/useMessageInstances';\ntype AssignedIssueMessage = {\n\tmessageTemplateId: 'assigned-issue';\n\tcontext: {\n\t\tissueKey: string;\n\t\tsummary: string;\n\t};\n};\nconst AssignedIssueMessages = (): JSX.Element => {\n\tconst { messageInstanceIds, PostOfficeMessageInstance } =\n\t\tuseMessageInstances<AssignedIssueMessage>({\n\t\t\tplacementId: 'jira-navigation',\n\t\t\tmessageTemplateId: 'assigned-issue',\n\t\t});\n\treturn (\n\t\t<>\n\t\t\t{messageInstanceIds.map((messageInstanceId) => (\n\t\t\t\t<PostOfficeMessageInstance key={messageInstanceId} messageInstanceId={messageInstanceId}>\n\t\t\t\t\t{(message) => (\n\t\t\t\t\t\t<section aria-label={`Assigned issue ${message.context.issueKey}`}>\n\t\t\t\t\t\t\t<h2>{message.context.issueKey}</h2>\n\t\t\t\t\t\t\t<p>{message.context.summary}</p>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t)}\n\t\t\t\t</PostOfficeMessageInstance>\n\t\t\t))}\n\t\t</>\n\t);\n};\nexport default AssignedIssueMessages;"]
368
+ package: '@atlassian/conversation-assistant',
369
+ examples: []
339
370
  }, {
340
- name: 'usePlacementData',
341
- description: 'Fetches raw headless data for a placement and returns a placement-bound message wrapper. Use it when the higher-level selection hooks do not fit the response shape or filtering needs.',
371
+ name: 'useAllAttachmentsStore',
372
+ description: 'Selects all file and external-context attachments for one prompt-input key and exposes attachment actions.',
342
373
  status: 'general-availability',
343
- usageGuidelines: ['This is the low-level escape hatch: it exposes raw `data` and does not offer render-prop access to message content. Prefer `useAllMessages`, `useMessageInstances`, or `useMessageData` — which deliver each message through a wrapper render prop — and only reach for `usePlacementData` when the response shape or filtering does not fit those.', 'Render every visible message through `PostOfficePlacementMessage`; rendering message data directly bypasses Post Office orchestration, analytics, and lifecycle behavior.'],
344
- keywords: ['post office', 'headless messages', 'placement data', 'choreographer', 'message lifecycle', 'analytics'],
345
- category: 'messaging',
346
- parameters: [{
347
- name: 'placementId',
348
- type: 'string',
349
- description: 'Placement to fetch.',
350
- defaultValue: "'headless'",
351
- isOptional: true
352
- }, {
353
- name: 'options',
354
- type: 'UsePlacementDataOptions',
355
- description: 'Optional data source and additive query-string configuration.',
356
- isOptional: true
357
- }],
374
+ usageGuidelines: ['Use when rendering a unified ordered attachment surface for one prompt input.'],
375
+ keywords: ['rovo', 'chat', 'attachments', 'selector'],
376
+ category: 'rovo',
377
+ package: '@atlassian/conversation-assistant-chat-prompt-input',
378
+ examples: []
379
+ }, {
380
+ name: 'useAttachmentsStore',
381
+ description: 'Low-level shared attachment store exposing keyed file and external-context state with mutation actions.',
382
+ status: 'general-availability',
383
+ usageGuidelines: ['Prefer a keyed selector hook when a consumer only needs one attachment view.'],
384
+ keywords: ['rovo', 'chat', 'attachments', 'store'],
385
+ category: 'rovo',
386
+ package: '@atlassian/conversation-assistant-chat-prompt-input',
387
+ examples: []
388
+ }, {
389
+ name: 'useChatModeState',
390
+ description: 'Selects the fully derived ChatMode for one prompt draft and mode key.',
391
+ status: 'general-availability',
392
+ usageGuidelines: ['Use when only state is required; select useChatModeStore when mutation actions are also needed.'],
393
+ keywords: ['rovo', 'chat', 'chat mode', 'state hook'],
394
+ category: 'rovo',
395
+ package: '@atlassian/conversation-assistant-chat-prompt-input',
396
+ examples: []
397
+ }, {
398
+ name: 'useChatModeStore',
399
+ description: 'Selects derived mode state for one key and exposes the complete chat-mode mutation action collection.',
400
+ status: 'general-availability',
401
+ usageGuidelines: ['Use one stable key per prompt draft to avoid leaking mode choices between independent inputs.'],
402
+ keywords: ['rovo', 'chat', 'chat mode', 'store hook'],
403
+ category: 'rovo',
404
+ package: '@atlassian/conversation-assistant-chat-prompt-input',
405
+ examples: []
406
+ }, {
407
+ name: 'useChatModeStoreActions',
408
+ description: 'Returns chat-mode mutation and lookup actions without subscribing to mode state.',
409
+ status: 'general-availability',
410
+ usageGuidelines: ['Use for event handlers and orchestration that do not need to rerender when mode state changes.'],
411
+ keywords: ['rovo', 'chat', 'chat mode', 'actions hook'],
412
+ category: 'rovo',
413
+ package: '@atlassian/conversation-assistant-chat-prompt-input',
414
+ examples: []
415
+ }, {
416
+ name: 'useCurrentPageAsContext',
417
+ description: 'Manages whether the current product page is attached as prompt context.',
418
+ status: 'general-availability',
419
+ usageGuidelines: ['Use when the composer offers a current-page context toggle.'],
420
+ keywords: ['rovo', 'chat', 'page context', 'hook'],
421
+ category: 'rovo',
358
422
  returns: {
359
- type: 'UsePlacementDataResult<PlacementDataEndpointData<TMessage, TExtension>>',
360
- description: 'Raw placement data, loading and error state, dismissal controls, and PostOfficePlacementMessage for rendering each message.'
423
+ type: 'ReturnType<typeof useCurrentPageAsContext>'
361
424
  },
362
- package: '@atlassian/post-office-headless-api',
363
- examples: ["import { usePlacementData } from '@atlassian/post-office-headless-api/hooks/usePlacementData';\ntype ReleaseAnnouncementMessage = {\n\tmessageTemplateId: 'release-announcement';\n\tcontext: {\n\t\ttitle: string;\n\t\tbody: string;\n\t};\n};\nconst ReleaseAnnouncementPlacement = (): JSX.Element => {\n\tconst { data, dismissedIds, PostOfficePlacementMessage } =\n\t\tusePlacementData<ReleaseAnnouncementMessage>('product-home');\n\tconst visibleMessages =\n\t\tdata?.messages.filter((message) => !dismissedIds.has(message.messageInstanceId)) ?? [];\n\treturn (\n\t\t<>\n\t\t\t{visibleMessages.map((message) => (\n\t\t\t\t<PostOfficePlacementMessage\n\t\t\t\t\tkey={message.messageInstanceId}\n\t\t\t\t\tmessageInstanceId={message.messageInstanceId}\n\t\t\t\t\tmessageTemplateId={message.messageTemplateId}\n\t\t\t\t\tmessageCategory={message.messageCategory}\n\t\t\t\t>\n\t\t\t\t\t{() => (\n\t\t\t\t\t\t<section aria-label={message.context.title}>\n\t\t\t\t\t\t\t<h2>{message.context.title}</h2>\n\t\t\t\t\t\t\t<p>{message.context.body}</p>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t)}\n\t\t\t\t</PostOfficePlacementMessage>\n\t\t\t))}\n\t\t</>\n\t);\n};\nexport default ReleaseAnnouncementPlacement;"]
425
+ package: '@atlassian/conversation-assistant-chat-prompt-input',
426
+ examples: []
364
427
  }, {
365
- name: 'useInfiniteScroll',
366
- description: 'Coordinates loading more inline-browse results when a scroll sentinel enters view.',
428
+ name: 'useExternalContextsStore',
429
+ description: 'Selects external prompt contexts for one prompt-input key and exposes attachment actions.',
367
430
  status: 'general-availability',
368
- usageGuidelines: ['Call useInfiniteScroll only from a React component or another custom hook.', 'Keep the hook inputs stable where the returned behavior depends on identity or lifecycle.'],
369
- keywords: ['rovo', 'infinite-scroll', 'pagination'],
370
- category: 'navigation',
431
+ usageGuidelines: ['Use for non-file context chips while preserving the shared keyed attachment lifecycle.'],
432
+ keywords: ['rovo', 'chat', 'external context', 'selector'],
433
+ category: 'rovo',
434
+ package: '@atlassian/conversation-assistant-chat-prompt-input',
435
+ examples: []
436
+ }, {
437
+ name: 'useFileAttachmentsStore',
438
+ description: 'Selects uploaded file attachments for one prompt-input key and exposes attachment actions.',
439
+ status: 'general-availability',
440
+ usageGuidelines: ['Use for file-only previews, validation, upload progress, and removal controls.'],
441
+ keywords: ['rovo', 'chat', 'file attachments', 'selector'],
442
+ category: 'rovo',
443
+ package: '@atlassian/conversation-assistant-chat-prompt-input',
444
+ examples: []
445
+ }, {
446
+ name: 'useFileUploadTrigger',
447
+ description: 'Returns the controller used to open the prompt file-upload dialog.',
448
+ status: 'general-availability',
449
+ usageGuidelines: ['Use when a React action needs to invoke prompt attachment selection.'],
450
+ keywords: ['rovo', 'chat', 'file upload', 'hook'],
451
+ category: 'rovo',
371
452
  returns: {
372
- type: 'UseInfiniteScrollResult'
453
+ type: 'ReturnType<typeof useFileUploadTrigger>'
373
454
  },
374
- package: '@atlassian/rovo-platform-ui-components',
455
+ package: '@atlassian/conversation-assistant-chat-prompt-input',
375
456
  examples: []
376
457
  }, {
377
- name: 'useProfileTrigger',
378
- description: 'Returns the profile-trigger renderer provided by the nearest ProfileTriggerProvider.',
458
+ name: 'usePageContextType',
459
+ description: 'Resolves the supported Rovo page-context type for the current location.',
379
460
  status: 'general-availability',
380
- usageGuidelines: ['Call useProfileTrigger only from a React component or another custom hook.', 'Keep the hook inputs stable where the returned behavior depends on identity or lifecycle.'],
381
- keywords: ['rovo', 'profile', 'trigger'],
461
+ usageGuidelines: ['Use when prompt behavior depends on the current product page type.'],
462
+ keywords: ['rovo', 'chat', 'page context', 'type'],
382
463
  category: 'rovo',
383
464
  returns: {
384
- type: 'ProfileTriggerRenderer | undefined'
465
+ type: 'ReturnType<typeof usePageContextType>'
385
466
  },
386
- package: '@atlassian/rovo-platform-ui-components',
467
+ package: '@atlassian/conversation-assistant-chat-prompt-input',
468
+ examples: []
469
+ }, {
470
+ name: 'useSelectedAgentDraftController',
471
+ description: 'Coordinates prompt drafts associated with the currently selected agent.',
472
+ status: 'general-availability',
473
+ usageGuidelines: ['Use where changing agents must preserve or restore agent-specific drafts.'],
474
+ keywords: ['rovo', 'chat', 'agent', 'draft'],
475
+ category: 'rovo',
476
+ returns: {
477
+ type: 'ReturnType<typeof useSelectedAgentDraftController>'
478
+ },
479
+ package: '@atlassian/conversation-assistant-chat-prompt-input',
480
+ examples: []
481
+ }, {
482
+ name: 'useWebSearchConfiguration',
483
+ description: 'Reads and updates the prompt web-search configuration.',
484
+ status: 'general-availability',
485
+ usageGuidelines: ['Use when a prompt surface exposes web-search configuration controls.'],
486
+ keywords: ['rovo', 'chat', 'web search', 'configuration'],
487
+ category: 'rovo',
488
+ returns: {
489
+ type: 'ReturnType<typeof useWebSearchConfiguration>'
490
+ },
491
+ package: '@atlassian/conversation-assistant-chat-prompt-input',
492
+ examples: []
493
+ }, {
494
+ name: 'useWindowLocation',
495
+ description: 'Returns the window location supplied to current-page context controllers.',
496
+ status: 'general-availability',
497
+ usageGuidelines: ['Use within a WindowLocationContext-backed prompt surface.'],
498
+ keywords: ['rovo', 'chat', 'window', 'location'],
499
+ category: 'rovo',
500
+ returns: {
501
+ type: 'ReturnType<typeof useWindowLocation>'
502
+ },
503
+ package: '@atlassian/conversation-assistant-chat-prompt-input',
504
+ examples: []
505
+ }, {
506
+ name: 'useEditorPreset',
507
+ description: 'Builds the editor preset and plugin API used by the Rovo Chat prompt editor.',
508
+ status: 'general-availability',
509
+ usageGuidelines: ['Use to configure standard Rovo prompt editor behavior and connector sources.'],
510
+ keywords: ['rovo', 'chat', 'editor', 'preset', 'hook'],
511
+ category: 'rovo',
512
+ returns: {
513
+ type: '{ preset: EditorPreset; editorApi?: PublicPluginAPI }'
514
+ },
515
+ package: '@atlassian/conversation-assistant-content-renderer',
516
+ examples: []
517
+ }, {
518
+ name: 'useRovoMentionProvider',
519
+ description: 'Reads the optional mention provider supplied to the current Rovo content tree.',
520
+ status: 'general-availability',
521
+ usageGuidelines: ['Use in nested editor or renderer integrations that need host mention data.'],
522
+ keywords: ['rovo', 'mentions', 'provider', 'hook', 'editor'],
523
+ category: 'rovo',
524
+ returns: {
525
+ type: '{ value?: MentionProvider }'
526
+ },
527
+ package: '@atlassian/conversation-assistant-content-renderer',
528
+ examples: []
529
+ }, {
530
+ name: 'useRovoProfilecardProvider',
531
+ description: 'Reads the optional profile-card provider supplied to the current Rovo content tree.',
532
+ status: 'general-availability',
533
+ usageGuidelines: ['Use in nested content that needs host profile-card resolution.'],
534
+ keywords: ['rovo', 'profile card', 'provider', 'hook', 'people'],
535
+ category: 'rovo',
536
+ returns: {
537
+ type: '{ value?: ProfilecardProvider }'
538
+ },
539
+ package: '@atlassian/conversation-assistant-content-renderer',
540
+ examples: []
541
+ }, {
542
+ name: 'useRovoEntitlement',
543
+ description: 'Reads the current Rovo enabled state and optional reason from the entitlement store.',
544
+ status: 'general-availability',
545
+ usageGuidelines: ['Use to gate Rovo Chat behavior without duplicating host entitlement state.'],
546
+ keywords: ['rovo', 'chat', 'entitlement', 'state', 'hook'],
547
+ category: 'rovo',
548
+ returns: {
549
+ type: '{ isRovoEnabled: boolean; reason?: string }'
550
+ },
551
+ package: '@atlassian/conversation-assistant-entitlement',
552
+ examples: []
553
+ }, {
554
+ name: 'useRovoEntitlementActions',
555
+ description: 'Returns the action used to update the shared Rovo entitlement state.',
556
+ status: 'general-availability',
557
+ usageGuidelines: ['Use when a hook-based host integration needs to update entitlement directly.'],
558
+ keywords: ['rovo', 'chat', 'entitlement', 'actions', 'hook'],
559
+ category: 'rovo',
560
+ returns: {
561
+ type: '{ setIsRovoEnabled(isRovoEnabled: boolean, reason?: string): void }'
562
+ },
563
+ package: '@atlassian/conversation-assistant-entitlement',
564
+ examples: []
565
+ }, {
566
+ name: 'useExternalContextBrowser',
567
+ description: 'Coordinates external context menu items, browser content, and selected prompt contexts.',
568
+ status: 'general-availability',
569
+ usageGuidelines: ['Use in a Rovo prompt integration that accepts context from one or more product providers.'],
570
+ keywords: ['rovo', 'chat', 'context', 'browser', 'hook'],
571
+ category: 'rovo',
572
+ returns: {
573
+ type: 'ExternalContextBrowserState'
574
+ },
575
+ package: '@atlassian/conversation-assistant-external-context',
576
+ examples: []
577
+ }, {
578
+ name: 'useAIMateExperienceTracker',
579
+ description: 'Returns the Rovo Chat experience tracker API with analytics and UI-mode integration.',
580
+ status: 'general-availability',
581
+ usageGuidelines: ['Use to start, succeed, fail, or abort named Rovo Chat experiences.'],
582
+ keywords: ['rovo', 'experience', 'ufo', 'hook'],
583
+ category: 'analytics',
584
+ returns: {
585
+ type: 'ExperienceTrackerAPI'
586
+ },
587
+ package: '@atlassian/conversation-assistant-instrumentation',
588
+ examples: []
589
+ }, {
590
+ name: 'useAnalytics',
591
+ description: 'Returns the Rovo Chat analytics API with contextual properties applied to events.',
592
+ status: 'general-availability',
593
+ usageGuidelines: ['Use from components that emit Rovo Chat analytics events.'],
594
+ keywords: ['rovo', 'analytics', 'events', 'hook'],
595
+ category: 'analytics',
596
+ returns: {
597
+ type: 'UseAnalyticsAPI'
598
+ },
599
+ package: '@atlassian/conversation-assistant-instrumentation',
600
+ examples: []
601
+ }, {
602
+ name: 'useAnalyticsPropertiesContext',
603
+ description: 'Reads the current Rovo Chat analytics properties context.',
604
+ status: 'general-availability',
605
+ usageGuidelines: ['Use within an analytics properties provider to access its current mode and property ref.'],
606
+ keywords: ['rovo', 'analytics', 'context', 'hook'],
607
+ category: 'analytics',
608
+ returns: {
609
+ type: 'AnalyticsPropertiesContextProps'
610
+ },
611
+ package: '@atlassian/conversation-assistant-instrumentation',
612
+ examples: []
613
+ }, {
614
+ name: 'useUFOLabelStackSetter',
615
+ description: 'Returns a setter for the component label stack attached to Rovo Chat UFO events.',
616
+ status: 'general-availability',
617
+ usageGuidelines: ['Use when a surface must propagate its UFO component labels to experience tracking.'],
618
+ keywords: ['rovo', 'experience', 'ufo', 'labels'],
619
+ category: 'analytics',
620
+ returns: {
621
+ type: '(componentLabelStack: LabelStack) => void'
622
+ },
623
+ package: '@atlassian/conversation-assistant-instrumentation',
624
+ examples: []
625
+ }, {
626
+ name: 'useActionRenderer',
627
+ description: 'Selects the interactive or read-only renderer for a Rovo message action.',
628
+ status: 'general-availability',
629
+ usageGuidelines: ['Use when rendering one action with the package action registry.'],
630
+ keywords: ['rovo', 'chat', 'actions', 'renderer', 'hook'],
631
+ category: 'rovo',
632
+ returns: {
633
+ type: 'ActionRenderer | undefined'
634
+ },
635
+ package: '@atlassian/conversation-assistant-message-actions',
636
+ examples: []
637
+ }, {
638
+ name: 'useCustomMessageActionBroker',
639
+ description: 'Returns the broker used to resolve custom Rovo message action renderers.',
640
+ status: 'general-availability',
641
+ usageGuidelines: ['Use in the message action host to find product-specific action renderers.'],
642
+ keywords: ['rovo', 'chat', 'actions', 'broker', 'hook'],
643
+ category: 'rovo',
644
+ returns: {
645
+ type: 'CustomMessageActionBroker'
646
+ },
647
+ package: '@atlassian/conversation-assistant-message-actions',
648
+ examples: []
649
+ }, {
650
+ name: 'useConversationModal',
651
+ description: 'Shared open state and selected conversation for edit and delete conversation modals.',
652
+ status: 'general-availability',
653
+ usageGuidelines: ['Open with the target conversation and explicit edit or delete mode before rendering the corresponding modal.'],
654
+ keywords: ['rovo', 'chat', 'conversation', 'modal hook'],
655
+ category: 'rovo',
656
+ package: '@atlassian/conversation-assistant-ui-components',
657
+ examples: []
658
+ }, {
659
+ name: 'useEditorPlaceholder',
660
+ description: 'Controls prompt placeholders, ADF placeholder content, inline cards, focus intent, and clearing.',
661
+ status: 'general-availability',
662
+ usageGuidelines: ['Use the ADF-specific insertion path when the caller already owns a parsed document.'],
663
+ keywords: ['rovo', 'chat', 'editor', 'placeholder hook'],
664
+ category: 'rovo',
665
+ package: '@atlassian/conversation-assistant-ui-components',
666
+ examples: []
667
+ }, {
668
+ name: 'useHighlightActionsEditorPlaceholder',
669
+ description: 'Seeds and clears ADF editor content created from highlight actions or URL parameters.',
670
+ status: 'general-availability',
671
+ usageGuidelines: ['Set skipPlaceholderPrompt when pre-filling an editable draft that must not receive highlight-action trailer copy.'],
672
+ keywords: ['rovo', 'chat', 'highlight actions', 'editor hook'],
673
+ category: 'rovo',
674
+ package: '@atlassian/conversation-assistant-ui-components',
675
+ examples: []
676
+ }, {
677
+ name: 'useHighlightActionsEditorPlaceholderStore',
678
+ description: 'Low-level shared store hook for highlight-action editor placeholder state and source metadata.',
679
+ status: 'general-availability',
680
+ usageGuidelines: ['Prefer useHighlightActionsEditorPlaceholder for normal insertion and clearing behavior.'],
681
+ keywords: ['rovo', 'chat', 'highlight actions', 'store'],
682
+ category: 'rovo',
683
+ package: '@atlassian/conversation-assistant-ui-components',
684
+ examples: []
685
+ }, {
686
+ name: 'usePlaceholderStore',
687
+ description: 'Low-level shared store hook for reading and replacing editor placeholder state.',
688
+ status: 'general-availability',
689
+ usageGuidelines: ['Prefer useEditorPlaceholder unless direct store access is required for integration or testing.'],
690
+ keywords: ['rovo', 'chat', 'editor placeholder', 'store'],
691
+ category: 'rovo',
692
+ package: '@atlassian/conversation-assistant-ui-components',
693
+ examples: []
694
+ }, {
695
+ name: 'useScopePopupSizing',
696
+ description: 'Tracks a scope popup trigger and keeps popup width and placement inside its live panel boundary.',
697
+ status: 'general-availability',
698
+ usageGuidelines: ['Pass the popup trigger through setTrigger so resize and boundary observations remain current while open.'],
699
+ keywords: ['rovo', 'chat', 'scope popup', 'sizing'],
700
+ category: 'rovo',
701
+ package: '@atlassian/conversation-assistant-ui-components',
702
+ examples: []
703
+ }, {
704
+ name: 'useSideNavModal',
705
+ description: 'Accesses provider-backed open, close, open-state, and disabled controls for the side-navigation modal.',
706
+ status: 'general-availability',
707
+ usageGuidelines: ['Call within SideNavModalProvider; disabled providers intentionally return inert open and close controls.'],
708
+ keywords: ['rovo', 'chat', 'settings modal', 'control hook'],
709
+ category: 'rovo',
710
+ package: '@atlassian/conversation-assistant-ui-components',
711
+ examples: []
712
+ }, {
713
+ name: 'useSideNavModalHighlightTarget',
714
+ description: 'Returns the content target requested for visual highlighting while the modal is open.',
715
+ status: 'general-availability',
716
+ usageGuidelines: ['Apply highlighting only to the matching target and clear it naturally when the modal closes.'],
717
+ keywords: ['rovo', 'chat', 'settings modal', 'highlight hook'],
718
+ category: 'rovo',
719
+ package: '@atlassian/conversation-assistant-ui-components',
720
+ examples: []
721
+ }, {
722
+ name: 'useSideNavModalScrollToAvailableApps',
723
+ description: 'Reports whether the active modal request should scroll connected-app content to available apps.',
724
+ status: 'general-availability',
725
+ usageGuidelines: ['Consume inside provider-backed connected-app content and react only while the modal is open.'],
726
+ keywords: ['rovo', 'chat', 'connected apps', 'scroll hook'],
727
+ category: 'rovo',
728
+ package: '@atlassian/conversation-assistant-ui-components',
729
+ examples: []
730
+ }, {
731
+ name: 'useSmoothScrollAnchor',
732
+ description: 'Controls smooth chat scrolling while preserving room to align the latest assistant message.',
733
+ status: 'general-availability',
734
+ usageGuidelines: ['Attach data-scroll-anchor="assistant-message" to assistant messages used by scrollToLatestMessage.'],
735
+ keywords: ['rovo', 'chat', 'scroll', 'anchor'],
736
+ category: 'rovo',
737
+ package: '@atlassian/conversation-assistant-ui-components',
738
+ examples: []
739
+ }, {
740
+ name: 'useUpdateTime',
741
+ description: 'Formats a conversation timestamp and refreshes it at the appropriate interval.',
742
+ status: 'general-availability',
743
+ usageGuidelines: ['Use for relative timestamps in conversation-history items.'],
744
+ keywords: ['rovo', 'chat', 'time', 'hook'],
745
+ category: 'rovo',
746
+ returns: {
747
+ type: 'string'
748
+ },
749
+ package: '@atlassian/conversation-assistant-ui-components',
750
+ examples: []
751
+ }, {
752
+ name: 'useAutoApplyAvailability',
753
+ description: 'Determines whether auto-apply is available for the current product and conversation context.',
754
+ status: 'general-availability',
755
+ usageGuidelines: ['Use before rendering auto-apply controls so agentic and unsupported page contexts stay hidden.'],
756
+ keywords: ['rovo', 'creation', 'auto apply', 'availability'],
757
+ category: 'rovo',
758
+ package: '@atlassian/creation-settings',
759
+ examples: []
760
+ }, {
761
+ name: 'useAutoApplyState',
762
+ description: 'Reads and updates the auto-apply preference with backend persistence and a local-storage fallback.',
763
+ status: 'general-availability',
764
+ usageGuidelines: ['Use the package root import; the auto-apply subpath exposes the same hook.', 'Handle rejected setEnabled calls when the host needs to surface persistence failures.'],
765
+ keywords: ['rovo', 'creation', 'auto apply', 'state'],
766
+ category: 'rovo',
767
+ package: '@atlassian/creation-settings',
768
+ examples: []
769
+ }, {
770
+ name: 'useAiCreateProjectContext',
771
+ description: 'Resolves Jira project context for an AI-assisted creation flow.',
772
+ status: 'general-availability',
773
+ usageGuidelines: ['Use when draft creation needs hydrated Jira project context.'],
774
+ keywords: ['rovo', 'jira', 'project', 'context'],
775
+ category: 'rovo',
776
+ returns: {
777
+ type: 'ReturnType<typeof useAiCreateProjectContext>'
778
+ },
779
+ package: '@atlassian/jira-create-work-items',
780
+ examples: []
781
+ }, {
782
+ name: 'useAifcAnalytics',
783
+ description: 'Returns analytics helpers for AI-assisted Jira work-item creation.',
784
+ status: 'general-availability',
785
+ usageGuidelines: ['Use within package-integrated creation UI that emits AIFC analytics.'],
786
+ keywords: ['rovo', 'jira', 'creation', 'analytics'],
787
+ category: 'rovo',
788
+ returns: {
789
+ type: 'ReturnType<typeof useAifcAnalytics>'
790
+ },
791
+ package: '@atlassian/jira-create-work-items',
792
+ examples: []
793
+ }, {
794
+ name: 'useAreAllCreated',
795
+ description: 'Reports whether every draft work item for a message has been created.',
796
+ status: 'general-availability',
797
+ usageGuidelines: ['Use to derive completion state for a message-scoped creation flow.'],
798
+ keywords: ['rovo', 'jira', 'draft work item', 'created'],
799
+ category: 'rovo',
800
+ returns: {
801
+ type: 'ReturnType<typeof useAreAllCreated>'
802
+ },
803
+ package: '@atlassian/jira-create-work-items',
804
+ examples: []
805
+ }, {
806
+ name: 'useAreAllDismissed',
807
+ description: 'Reports whether every draft work item for a message has been dismissed.',
808
+ status: 'general-availability',
809
+ usageGuidelines: ['Use to derive dismissed state for a message-scoped creation flow.'],
810
+ keywords: ['rovo', 'jira', 'draft work item', 'dismissed'],
811
+ category: 'rovo',
812
+ returns: {
813
+ type: 'ReturnType<typeof useAreAllDismissed>'
814
+ },
815
+ package: '@atlassian/jira-create-work-items',
816
+ examples: []
817
+ }, {
818
+ name: 'useCreateDraftWorkItems',
819
+ description: 'Creates eligible Jira draft work items and exposes action callbacks.',
820
+ status: 'general-availability',
821
+ usageGuidelines: ['Use to connect creation UI to the draft-work-item submission flow.'],
822
+ keywords: ['rovo', 'jira', 'draft work item', 'create'],
823
+ category: 'rovo',
824
+ returns: {
825
+ type: 'ReturnType<typeof useCreateDraftWorkItems>'
826
+ },
827
+ package: '@atlassian/jira-create-work-items',
828
+ examples: []
829
+ }, {
830
+ name: 'useCreateIssuesSuccessFlags',
831
+ description: 'Returns the success-flag action used after Jira work items are created.',
832
+ status: 'general-availability',
833
+ usageGuidelines: ['Use to show package-standard success feedback after creation.'],
834
+ keywords: ['rovo', 'jira', 'create', 'flag'],
835
+ category: 'rovo',
836
+ returns: {
837
+ type: 'ReturnType<typeof useCreateIssuesSuccessFlags>'
838
+ },
839
+ package: '@atlassian/jira-create-work-items',
840
+ examples: []
841
+ }, {
842
+ name: 'useDraftWorkItems',
843
+ description: 'Returns the current draft work items and their controller state.',
844
+ status: 'general-availability',
845
+ usageGuidelines: ['Use as the main draft-work-item data source for creation UI.'],
846
+ keywords: ['rovo', 'jira', 'draft work item', 'hook'],
847
+ category: 'rovo',
848
+ returns: {
849
+ type: 'ReturnType<typeof useDraftWorkItems>'
850
+ },
851
+ package: '@atlassian/jira-create-work-items',
852
+ examples: []
853
+ }, {
854
+ name: 'useGetActiveOrFinishedDraftWorkItemsCount',
855
+ description: 'Returns the number of active or completed draft work items for a message.',
856
+ status: 'general-availability',
857
+ usageGuidelines: ['Use for progress and summary counts in creation UI.'],
858
+ keywords: ['rovo', 'jira', 'draft work item', 'count'],
859
+ category: 'rovo',
860
+ returns: {
861
+ type: 'ReturnType<typeof useGetActiveOrFinishedDraftWorkItemsCount>'
862
+ },
863
+ package: '@atlassian/jira-create-work-items',
864
+ examples: []
865
+ }, {
866
+ name: 'useGetActivePlannedChildInvocationIdsByParent',
867
+ description: 'Groups active planned child invocation identifiers by parent work item.',
868
+ status: 'general-availability',
869
+ usageGuidelines: ['Use when parent work-item state depends on active planned children.'],
870
+ keywords: ['rovo', 'jira', 'draft work item', 'invocation'],
871
+ category: 'rovo',
872
+ returns: {
873
+ type: 'ReturnType<typeof useGetActivePlannedChildInvocationIdsByParent>'
874
+ },
875
+ package: '@atlassian/jira-create-work-items',
876
+ examples: []
877
+ }, {
878
+ name: 'useGetDraftWorkItemsToCreate',
879
+ description: 'Returns the draft work items currently eligible for creation.',
880
+ status: 'general-availability',
881
+ usageGuidelines: ['Use to build the payload submitted by a draft-work-item creation action.'],
882
+ keywords: ['rovo', 'jira', 'draft work item', 'create'],
883
+ category: 'rovo',
884
+ returns: {
885
+ type: 'ReturnType<typeof useGetDraftWorkItemsToCreate>'
886
+ },
887
+ package: '@atlassian/jira-create-work-items',
888
+ examples: []
889
+ }, {
890
+ name: 'useGetDraftWorkItemsWithHierarchy',
891
+ description: 'Returns draft work items with their calculated parent-child hierarchy.',
892
+ status: 'general-availability',
893
+ usageGuidelines: ['Use when rendering or validating hierarchical draft work items.'],
894
+ keywords: ['rovo', 'jira', 'draft work item', 'hierarchy'],
895
+ category: 'rovo',
896
+ returns: {
897
+ type: 'ReturnType<typeof useGetDraftWorkItemsWithHierarchy>'
898
+ },
899
+ package: '@atlassian/jira-create-work-items',
900
+ examples: []
901
+ }, {
902
+ name: 'useHasAppliedDraftEdits',
903
+ description: 'Reports whether edits have been applied to message-scoped draft work items.',
904
+ status: 'general-availability',
905
+ usageGuidelines: ['Use to distinguish original drafts from user-edited drafts.'],
906
+ keywords: ['rovo', 'jira', 'draft work item', 'edits'],
907
+ category: 'rovo',
908
+ returns: {
909
+ type: 'ReturnType<typeof useHasAppliedDraftEdits>'
910
+ },
911
+ package: '@atlassian/jira-create-work-items',
912
+ examples: []
913
+ }, {
914
+ name: 'useRovoBridgeAPI',
915
+ description: 'Connects Jira draft-work-item creation to the Rovo bridge API.',
916
+ status: 'general-availability',
917
+ usageGuidelines: ['Use where the creation flow exchanges state with a Rovo host.'],
918
+ keywords: ['rovo', 'jira', 'bridge', 'api'],
919
+ category: 'rovo',
920
+ returns: {
921
+ type: 'ReturnType<typeof useRovoBridgeAPI>'
922
+ },
923
+ package: '@atlassian/jira-create-work-items',
924
+ examples: []
925
+ }, {
926
+ name: 'useValidateIssuesToCreate',
927
+ description: 'Validates Jira draft work items before they are submitted for creation.',
928
+ status: 'general-availability',
929
+ usageGuidelines: ['Use before enabling or invoking the create-work-items action.'],
930
+ keywords: ['rovo', 'jira', 'draft work item', 'validation'],
931
+ category: 'rovo',
932
+ returns: {
933
+ type: 'ReturnType<typeof useValidateIssuesToCreate>'
934
+ },
935
+ package: '@atlassian/jira-create-work-items',
936
+ examples: []
937
+ }, {
938
+ name: 'useAllMessages',
939
+ description: 'Returns every non-dismissed message in a placement with a placement-bound wrapper. Use it when one surface renders messages from multiple templates.',
940
+ status: 'general-availability',
941
+ usageGuidelines: ['Use when a placement intentionally renders messages from more than one template.', 'Use `useMessageInstances` or `useMessageData` when the surface is scoped to one template.', 'Iterate `messageInstanceIds` and read each message inside the `PostOfficeAllMessages` render prop; rendering message data directly bypasses Post Office orchestration, analytics, and lifecycle behavior.', 'The wrapper only needs `messageInstanceId`; `messageTemplateId` and `messageCategory` are inferred from the fetched message, so you do not need to pass them.', 'Prefer the render prop; `messageInstanceIds` is always available for iteration. Use `dataOutsideWrapper: true` only if you absolutely need the `messages` array (message data) outside the wrapper.'],
942
+ keywords: ['post office', 'headless messages', 'all messages', 'multiple templates', 'choreographer', 'message lifecycle'],
943
+ category: 'messaging',
944
+ parameters: [{
945
+ name: 'placementId',
946
+ type: 'string',
947
+ description: 'Placement to fetch.',
948
+ defaultValue: "'headless'",
949
+ isOptional: true
950
+ }, {
951
+ name: 'options',
952
+ type: 'UseAllMessagesOptions<TMessage, TExtension>',
953
+ description: 'Optional matching, validation, and data-source configuration.',
954
+ isOptional: true
955
+ }],
956
+ returns: {
957
+ type: 'UseAllMessagesResult<TMessage>',
958
+ description: 'Message instance IDs to iterate, loading and error state, dismissal controls, and PostOfficeAllMessages whose render prop receives each message. The `messages` array (message data) is only present when `dataOutsideWrapper: true`.'
959
+ },
960
+ package: '@atlassian/post-office-headless-api',
961
+ examples: ["import { useAllMessages } from '@atlassian/post-office-headless-api/hooks/useAllMessages';\ntype ProductHomeMessage = {\n\tmessageTemplateId: string;\n\tcontext: {\n\t\ttitle: string;\n\t\tbody: string;\n\t};\n};\nconst ProductHomeMessages = (): JSX.Element => {\n\tconst { messageInstanceIds, PostOfficeAllMessages } =\n\t\tuseAllMessages<ProductHomeMessage>('product-home');\n\treturn (\n\t\t<>\n\t\t\t{messageInstanceIds.map((messageInstanceId) => (\n\t\t\t\t<PostOfficeAllMessages key={messageInstanceId} messageInstanceId={messageInstanceId}>\n\t\t\t\t\t{(message) => (\n\t\t\t\t\t\t<section aria-label={message.context.title}>\n\t\t\t\t\t\t\t<h2>{message.context.title}</h2>\n\t\t\t\t\t\t\t<p>{message.context.body}</p>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t)}\n\t\t\t\t</PostOfficeAllMessages>\n\t\t\t))}\n\t\t</>\n\t);\n};\nexport default ProductHomeMessages;"]
962
+ }, {
963
+ name: 'useMessageData',
964
+ description: 'Returns the single non-dismissed instance of one message template with a fully bound wrapper. Use it when the template can produce at most one active instance.',
965
+ status: 'general-availability',
966
+ usageGuidelines: ['Use when one template can produce at most one active message instance.', 'Use `useMessageInstances` when multiple instances are valid rather than treating them as an error.', 'Render the message through the returned `PostOfficeMessage` and read it inside the render prop; rendering message data directly bypasses Post Office orchestration, analytics, and lifecycle behavior.', 'Prefer the render prop; `messageInstanceId` is always available. Use `dataOutsideWrapper: true` only if you absolutely need `message` (message data) outside the wrapper.'],
967
+ keywords: ['post office', 'headless messages', 'single message', 'message template', 'choreographer', 'message lifecycle'],
968
+ category: 'messaging',
969
+ parameters: [{
970
+ name: 'selector',
971
+ type: 'UseMessageDataSelector',
972
+ description: 'Placement and template to select.'
973
+ }, {
974
+ name: 'options',
975
+ type: 'UseMessageDataOptions<TMessage, TExtension>',
976
+ description: 'Optional matching, validation, and data-source configuration.',
977
+ isOptional: true
978
+ }],
979
+ returns: {
980
+ type: 'UseMessageDataResult<TMessage>',
981
+ description: 'The resolved messageInstanceId, loading and error state, dismissal controls, and an optional PostOfficeMessage wrapper whose render prop receives the message. The `message` value (message data) is only present when `dataOutsideWrapper: true`.'
982
+ },
983
+ package: '@atlassian/post-office-headless-api',
984
+ examples: ["import { useMessageData } from '@atlassian/post-office-headless-api/hooks/useMessageData';\ntype TrialReminderMessage = {\n\tmessageTemplateId: 'trial-reminder';\n\tcontext: {\n\t\ttitle: string;\n\t\tbody: string;\n\t};\n};\nconst TrialReminder = (): JSX.Element | null => {\n\tconst { PostOfficeMessage } = useMessageData<TrialReminderMessage>({\n\t\tplacementId: 'product-home',\n\t\tmessageTemplateId: 'trial-reminder',\n\t});\n\tif (!PostOfficeMessage) {\n\t\treturn null;\n\t}\n\treturn (\n\t\t<PostOfficeMessage>\n\t\t\t{(message) => (\n\t\t\t\t<section aria-label={message.context.title}>\n\t\t\t\t\t<h2>{message.context.title}</h2>\n\t\t\t\t\t<p>{message.context.body}</p>\n\t\t\t\t</section>\n\t\t\t)}\n\t\t</PostOfficeMessage>\n\t);\n};\nexport default TrialReminder;"]
985
+ }, {
986
+ name: 'useMessageInstances',
987
+ description: 'Returns every non-dismissed instance of one message template with a template-bound wrapper. Use it when an implicit message creator can produce multiple simultaneous instances.',
988
+ status: 'general-availability',
989
+ usageGuidelines: ['Use for one template only when more than one message instance can be active at the same time.', 'Prefer `useMessageData` when the template can produce at most one active instance.', 'Iterate `messageInstanceIds` and read each message inside the `PostOfficeMessageInstance` render prop; rendering message data directly bypasses Post Office orchestration, analytics, and lifecycle behavior.', 'Prefer the render prop; `messageInstanceIds` is always available for iteration. Use `dataOutsideWrapper: true` only if you absolutely need the `messages` array (message data) outside the wrapper.'],
990
+ keywords: ['post office', 'headless messages', 'message instances', 'implicit messages', 'choreographer', 'message lifecycle'],
991
+ category: 'messaging',
992
+ parameters: [{
993
+ name: 'selector',
994
+ type: "{ placementId?: string; messageTemplateId: TMessage['messageTemplateId'] }",
995
+ description: 'Placement and template to select.'
996
+ }, {
997
+ name: 'options',
998
+ type: 'UseMessageInstancesOptions<TMessage, TExtension>',
999
+ description: 'Optional matching, validation, and data-source configuration.',
1000
+ isOptional: true
1001
+ }],
1002
+ returns: {
1003
+ type: 'UseMessageInstancesResult<TMessage>',
1004
+ description: 'Message instance IDs to iterate, loading and error state, dismissal controls, and PostOfficeMessageInstance whose render prop receives each message. The `messages` array (message data) is only present when `dataOutsideWrapper: true`.'
1005
+ },
1006
+ package: '@atlassian/post-office-headless-api',
1007
+ examples: ["import { useMessageInstances } from '@atlassian/post-office-headless-api/hooks/useMessageInstances';\ntype AssignedIssueMessage = {\n\tmessageTemplateId: 'assigned-issue';\n\tcontext: {\n\t\tissueKey: string;\n\t\tsummary: string;\n\t};\n};\nconst AssignedIssueMessages = (): JSX.Element => {\n\tconst { messageInstanceIds, PostOfficeMessageInstance } =\n\t\tuseMessageInstances<AssignedIssueMessage>({\n\t\t\tplacementId: 'jira-navigation',\n\t\t\tmessageTemplateId: 'assigned-issue',\n\t\t});\n\treturn (\n\t\t<>\n\t\t\t{messageInstanceIds.map((messageInstanceId) => (\n\t\t\t\t<PostOfficeMessageInstance key={messageInstanceId} messageInstanceId={messageInstanceId}>\n\t\t\t\t\t{(message) => (\n\t\t\t\t\t\t<section aria-label={`Assigned issue ${message.context.issueKey}`}>\n\t\t\t\t\t\t\t<h2>{message.context.issueKey}</h2>\n\t\t\t\t\t\t\t<p>{message.context.summary}</p>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t)}\n\t\t\t\t</PostOfficeMessageInstance>\n\t\t\t))}\n\t\t</>\n\t);\n};\nexport default AssignedIssueMessages;"]
1008
+ }, {
1009
+ name: 'usePlacementData',
1010
+ description: 'Fetches raw headless data for a placement and returns a placement-bound message wrapper. Use it when the higher-level selection hooks do not fit the response shape or filtering needs.',
1011
+ status: 'general-availability',
1012
+ usageGuidelines: ['This is the low-level escape hatch: it exposes raw `data` and does not offer render-prop access to message content. Prefer `useAllMessages`, `useMessageInstances`, or `useMessageData` — which deliver each message through a wrapper render prop — and only reach for `usePlacementData` when the response shape or filtering does not fit those.', 'Render every visible message through `PostOfficePlacementMessage`; rendering message data directly bypasses Post Office orchestration, analytics, and lifecycle behavior.'],
1013
+ keywords: ['post office', 'headless messages', 'placement data', 'choreographer', 'message lifecycle', 'analytics'],
1014
+ category: 'messaging',
1015
+ parameters: [{
1016
+ name: 'placementId',
1017
+ type: 'string',
1018
+ description: 'Placement to fetch.',
1019
+ defaultValue: "'headless'",
1020
+ isOptional: true
1021
+ }, {
1022
+ name: 'options',
1023
+ type: 'UsePlacementDataOptions',
1024
+ description: 'Optional data source and additive query-string configuration.',
1025
+ isOptional: true
1026
+ }],
1027
+ returns: {
1028
+ type: 'UsePlacementDataResult<PlacementDataEndpointData<TMessage, TExtension>>',
1029
+ description: 'Raw placement data, loading and error state, dismissal controls, and PostOfficePlacementMessage for rendering each message.'
1030
+ },
1031
+ package: '@atlassian/post-office-headless-api',
1032
+ examples: ["import { usePlacementData } from '@atlassian/post-office-headless-api/hooks/usePlacementData';\ntype ReleaseAnnouncementMessage = {\n\tmessageTemplateId: 'release-announcement';\n\tcontext: {\n\t\ttitle: string;\n\t\tbody: string;\n\t};\n};\nconst ReleaseAnnouncementPlacement = (): JSX.Element => {\n\tconst { data, dismissedIds, PostOfficePlacementMessage } =\n\t\tusePlacementData<ReleaseAnnouncementMessage>('product-home');\n\tconst visibleMessages =\n\t\tdata?.messages.filter((message) => !dismissedIds.has(message.messageInstanceId)) ?? [];\n\treturn (\n\t\t<>\n\t\t\t{visibleMessages.map((message) => (\n\t\t\t\t<PostOfficePlacementMessage\n\t\t\t\t\tkey={message.messageInstanceId}\n\t\t\t\t\tmessageInstanceId={message.messageInstanceId}\n\t\t\t\t\tmessageTemplateId={message.messageTemplateId}\n\t\t\t\t\tmessageCategory={message.messageCategory}\n\t\t\t\t>\n\t\t\t\t\t{() => (\n\t\t\t\t\t\t<section aria-label={message.context.title}>\n\t\t\t\t\t\t\t<h2>{message.context.title}</h2>\n\t\t\t\t\t\t\t<p>{message.context.body}</p>\n\t\t\t\t\t\t</section>\n\t\t\t\t\t)}\n\t\t\t\t</PostOfficePlacementMessage>\n\t\t\t))}\n\t\t</>\n\t);\n};\nexport default ReleaseAnnouncementPlacement;"]
1033
+ }, {
1034
+ name: 'useRovoActionTrigger',
1035
+ description: 'Returns a dispatcher for callbacks, skills, chats, and base actions in an available Rovo UI mode.',
1036
+ status: 'general-availability',
1037
+ usageGuidelines: ['Provide the host sidebar adapter and stable product identifier.', 'Request a mode only when the host has declared that experience available; unsupported modes fall back safely.'],
1038
+ keywords: ['rovo', 'actions', 'trigger', 'experience mode'],
1039
+ category: 'rovo',
1040
+ package: '@atlassian/rovo-action-trigger',
1041
+ examples: []
1042
+ }, {
1043
+ name: 'useClearFormValue',
1044
+ description: 'Returns a callback for clearing one declarative form property.',
1045
+ status: 'general-availability',
1046
+ usageGuidelines: ['Use the schema property key whose current value should become undefined.'],
1047
+ keywords: ['rovo', 'agents', 'form clear', 'hook'],
1048
+ category: 'rovo',
1049
+ package: '@atlassian/rovo-agent-declarative-ui',
1050
+ examples: []
1051
+ }, {
1052
+ name: 'useDeclarativeUi',
1053
+ description: 'Returns the current declarative UI configuration, form data, overrides, and query handler.',
1054
+ status: 'general-availability',
1055
+ usageGuidelines: ['Call only below DeclarativeUiProvider; the hook throws when context is missing.'],
1056
+ keywords: ['rovo', 'agents', 'declarative ui', 'context hook'],
1057
+ category: 'rovo',
1058
+ package: '@atlassian/rovo-agent-declarative-ui',
1059
+ examples: []
1060
+ }, {
1061
+ name: 'useFormValue',
1062
+ description: 'Reads one typed value from the current declarative form data.',
1063
+ status: 'general-availability',
1064
+ usageGuidelines: ['Use the property key defined by the current input schema.'],
1065
+ keywords: ['rovo', 'agents', 'form value', 'hook'],
1066
+ category: 'rovo',
1067
+ package: '@atlassian/rovo-agent-declarative-ui',
1068
+ examples: []
1069
+ }, {
1070
+ name: 'useQuerySchema',
1071
+ description: 'Resolves a query action from a declarative data-schema path.',
1072
+ status: 'general-availability',
1073
+ usageGuidelines: ['Use dataSchema/queryData paths; unsupported or missing paths return undefined.'],
1074
+ keywords: ['rovo', 'agents', 'query schema', 'hook'],
1075
+ category: 'rovo',
1076
+ package: '@atlassian/rovo-agent-declarative-ui',
1077
+ examples: []
1078
+ }, {
1079
+ name: 'useSchemaProperty',
1080
+ description: 'Returns one input-property definition from the current connection schema.',
1081
+ status: 'general-availability',
1082
+ usageGuidelines: ['Use when a custom control needs its title, type, required state, or description.'],
1083
+ keywords: ['rovo', 'agents', 'schema property', 'hook'],
1084
+ category: 'rovo',
1085
+ package: '@atlassian/rovo-agent-declarative-ui',
1086
+ examples: []
1087
+ }, {
1088
+ name: 'useStaticData',
1089
+ description: 'Resolves a static data array from a declarative data-schema path.',
1090
+ status: 'general-availability',
1091
+ usageGuidelines: ['Use dataSchema/staticData paths; unsupported or missing paths return undefined.'],
1092
+ keywords: ['rovo', 'agents', 'static data', 'hook'],
1093
+ category: 'rovo',
1094
+ package: '@atlassian/rovo-agent-declarative-ui',
1095
+ examples: []
1096
+ }, {
1097
+ name: 'useUpdateFormValue',
1098
+ description: 'Returns a callback for updating one declarative form property.',
1099
+ status: 'general-availability',
1100
+ usageGuidelines: ['Use in custom controls so updates flow through the provider onChange handler.'],
1101
+ keywords: ['rovo', 'agents', 'form update', 'hook'],
1102
+ category: 'rovo',
1103
+ package: '@atlassian/rovo-agent-declarative-ui',
1104
+ examples: []
1105
+ }, {
1106
+ name: 'useAgentCrossProductUrlWrapper',
1107
+ description: 'Returns a URL wrapper that adds host-product XPC attribution when available and enabled.',
1108
+ status: 'general-availability',
1109
+ usageGuidelines: ['Use inside a SmartCardProvider when navigation crosses from a host product into Atlas.', 'The returned function is an identity wrapper when product attribution is unavailable.'],
1110
+ keywords: ['rovo', 'agents', 'xpc', 'url wrapper'],
1111
+ category: 'rovo',
1112
+ package: '@atlassian/rovo-agent-url-utils',
1113
+ examples: []
1114
+ }, {
1115
+ name: 'useAgentUrlActions',
1116
+ description: 'Returns analytics-aware and feature-gated navigation actions for a Rovo Agent.',
1117
+ status: 'general-availability',
1118
+ usageGuidelines: ['Provide a Relay environment because version capability checks and duplication use Relay.', 'Use this hook for interactive agent actions so URL selection, flags, feedback, and analytics remain consistent.'],
1119
+ keywords: ['rovo', 'agents', 'navigation', 'actions hook'],
1120
+ category: 'rovo',
1121
+ package: '@atlassian/rovo-agent-url-utils',
1122
+ examples: []
1123
+ }, {
1124
+ name: 'useSBSEvaluationBridge',
1125
+ description: 'Coordinates evaluation state and messages between Rovo Chat and the browser extension bridge.',
1126
+ status: 'general-availability',
1127
+ usageGuidelines: ['Mount once per chat surface and feed it current response-completion state and content.'],
1128
+ keywords: ['rovo', 'chat', 'evaluation', 'bridge hook'],
1129
+ category: 'rovo',
1130
+ package: '@atlassian/rovo-chat-side-by-side-evaluation',
1131
+ examples: []
1132
+ }, {
1133
+ name: 'useSBSTrigger',
1134
+ description: 'Determines whether a submitted prompt should start an evaluation and be held for consent.',
1135
+ status: 'general-availability',
1136
+ usageGuidelines: ['If the trigger holds a query, register its release callback before waiting for consent.'],
1137
+ keywords: ['rovo', 'chat', 'evaluation', 'trigger hook'],
1138
+ category: 'rovo',
1139
+ package: '@atlassian/rovo-chat-side-by-side-evaluation',
1140
+ examples: []
1141
+ }, {
1142
+ name: 'useActionsContext',
1143
+ description: 'Returns the nearest custom action configuration or package defaults.',
1144
+ status: 'general-availability',
1145
+ usageGuidelines: ['The hook is safe without a provider and returns disabled/default configuration.'],
1146
+ keywords: ['rovo', 'conversation actions', 'context', 'hook'],
1147
+ category: 'rovo',
1148
+ package: '@atlassian/rovo-conversation-actions',
1149
+ examples: []
1150
+ }, {
1151
+ name: 'useConversationActionsStore',
1152
+ description: 'Reads selected Rovo conversation-action store state and actions.',
1153
+ status: 'general-availability',
1154
+ usageGuidelines: ['Use for components that need a selected combination of conversation-action state and actions.'],
1155
+ keywords: ['rovo', 'conversation actions', 'store', 'hook'],
1156
+ category: 'rovo',
1157
+ returns: {
1158
+ type: 'ReturnType<typeof useConversationActionsStore>'
1159
+ },
1160
+ package: '@atlassian/rovo-conversation-actions',
1161
+ examples: []
1162
+ }, {
1163
+ name: 'useConversationActionsStoreActions',
1164
+ description: 'Returns the mutation actions for the Rovo conversation-action store.',
1165
+ status: 'general-availability',
1166
+ usageGuidelines: ['Use when a component updates conversation-action state without subscribing to values.'],
1167
+ keywords: ['rovo', 'conversation actions', 'store', 'actions'],
1168
+ category: 'rovo',
1169
+ returns: {
1170
+ type: 'ConversationActionsStoreActions'
1171
+ },
1172
+ package: '@atlassian/rovo-conversation-actions',
1173
+ examples: []
1174
+ }, {
1175
+ name: 'useConversationActionsStoreState',
1176
+ description: 'Returns the current Rovo conversation-action store state.',
1177
+ status: 'general-availability',
1178
+ usageGuidelines: ['Use when a component reads conversation-action state without dispatching actions.'],
1179
+ keywords: ['rovo', 'conversation actions', 'store', 'state'],
1180
+ category: 'rovo',
1181
+ returns: {
1182
+ type: 'ReturnType<typeof useConversationActionsStoreState>'
1183
+ },
1184
+ package: '@atlassian/rovo-conversation-actions',
1185
+ examples: []
1186
+ }, {
1187
+ name: 'useConvoStarterActionPrompt',
1188
+ description: 'Selects the currently active proactive-nudge conversation starter prompt.',
1189
+ status: 'general-availability',
1190
+ usageGuidelines: ['Use when a consumer only needs the active nudge prompt rather than the full action store.'],
1191
+ keywords: ['rovo', 'conversation starter', 'store', 'selector'],
1192
+ category: 'rovo',
1193
+ package: '@atlassian/rovo-conversation-actions',
1194
+ examples: []
1195
+ }, {
1196
+ name: 'useCreatePromptInitialData',
1197
+ description: 'Builds initial create-prompt form data for edit and duplicate flows.',
1198
+ status: 'general-availability',
1199
+ usageGuidelines: ['Pass only one source card; duplicate mode prefixes the copied title.'],
1200
+ keywords: ['rovo', 'prompts', 'initial data', 'hook'],
1201
+ category: 'rovo',
1202
+ package: '@atlassian/rovo-conversation-actions',
1203
+ examples: []
1204
+ }, {
1205
+ name: 'usePageContextType',
1206
+ description: 'Tracks browser navigation and returns the current Rovo page context.',
1207
+ status: 'general-availability',
1208
+ usageGuidelines: ['Use in React consumers that need starter content to follow in-app navigation.'],
1209
+ keywords: ['rovo', 'conversation starters', 'hook', 'page context'],
1210
+ category: 'rovo',
1211
+ package: '@atlassian/rovo-conversation-actions',
1212
+ examples: []
1213
+ }, {
1214
+ name: 'usePromptCards',
1215
+ description: 'Returns the prompt cards and prompt-library loading state available to the user.',
1216
+ status: 'general-availability',
1217
+ usageGuidelines: ['Use when composing a custom Rovo prompt-library surface.'],
1218
+ keywords: ['rovo', 'prompts', 'cards', 'hook'],
1219
+ category: 'rovo',
1220
+ returns: {
1221
+ type: '{ promptCards: PromptCard[] }'
1222
+ },
1223
+ package: '@atlassian/rovo-conversation-actions',
1224
+ examples: []
1225
+ }, {
1226
+ name: 'useRovoConversationStarters',
1227
+ description: 'Selects Rovo conversation starters for the current page and product context.',
1228
+ status: 'general-availability',
1229
+ usageGuidelines: ['Use when a Rovo chat surface needs contextual starter prompts.'],
1230
+ keywords: ['rovo', 'conversation starters', 'context', 'hook'],
1231
+ category: 'rovo',
1232
+ returns: {
1233
+ type: 'ReturnType<typeof useRovoConversationStarters>'
1234
+ },
1235
+ package: '@atlassian/rovo-conversation-actions',
1236
+ examples: []
1237
+ }, {
1238
+ name: 'useWindowLocation',
1239
+ description: 'Tracks browser history navigation and returns the full URL or pathname.',
1240
+ status: 'general-availability',
1241
+ usageGuidelines: ['Use pathname mode when query and hash changes should not affect the consumer.'],
1242
+ keywords: ['rovo', 'browser', 'location', 'hook'],
1243
+ category: 'rovo',
1244
+ package: '@atlassian/rovo-conversation-actions',
1245
+ examples: []
1246
+ }, {
1247
+ name: 'useRovoExperienceAPIStore',
1248
+ description: 'Returns Rovo experience state together with orchestration and availability actions.',
1249
+ status: 'general-availability',
1250
+ usageGuidelines: ['Use in components that both render current Rovo experience state and dispatch transitions.'],
1251
+ keywords: ['rovo', 'experience', 'store', 'hook'],
1252
+ category: 'rovo',
1253
+ package: '@atlassian/rovo-experience-api',
1254
+ examples: []
1255
+ }, {
1256
+ name: 'useRovoExperienceAPIStoreActions',
1257
+ description: 'Returns only the Rovo experience store actions without subscribing to state changes.',
1258
+ status: 'general-availability',
1259
+ usageGuidelines: ['Use when a component dispatches experience changes but does not render store state.'],
1260
+ keywords: ['rovo', 'experience', 'store actions', 'hook'],
1261
+ category: 'rovo',
1262
+ package: '@atlassian/rovo-experience-api',
1263
+ examples: []
1264
+ }, {
1265
+ name: 'useForYouNavigation',
1266
+ description: 'Returns the combined Rovo For You navigation state and actions.',
1267
+ status: 'general-availability',
1268
+ usageGuidelines: ['Use when a component needs both the current For You view and navigation actions.'],
1269
+ keywords: ['rovo', 'for you', 'navigation', 'hook'],
1270
+ category: 'rovo',
1271
+ returns: {
1272
+ type: 'ForYouNavigation'
1273
+ },
1274
+ package: '@atlassian/rovo-for-you',
1275
+ examples: []
1276
+ }, {
1277
+ name: 'useForYouNavigationActions',
1278
+ description: 'Returns actions for changing Rovo For You navigation state.',
1279
+ status: 'general-availability',
1280
+ usageGuidelines: ['Use within ForYouNavigationProvider to navigate between For You views.'],
1281
+ keywords: ['rovo', 'for you', 'navigation', 'actions'],
1282
+ category: 'rovo',
1283
+ returns: {
1284
+ type: 'ForYouNavigationActions'
1285
+ },
1286
+ package: '@atlassian/rovo-for-you',
1287
+ examples: []
1288
+ }, {
1289
+ name: 'useForYouNavigationState',
1290
+ description: 'Reads the current Rovo For You navigation state.',
1291
+ status: 'general-availability',
1292
+ usageGuidelines: ['Use within ForYouNavigationProvider when rendering the active internal view.'],
1293
+ keywords: ['rovo', 'for you', 'navigation', 'state'],
1294
+ category: 'rovo',
1295
+ returns: {
1296
+ type: 'ForYouNavigationState'
1297
+ },
1298
+ package: '@atlassian/rovo-for-you',
1299
+ examples: []
1300
+ }, {
1301
+ name: 'useFireInsightCardClicked',
1302
+ description: 'Returns portable analytics for Rovo Insight card clicks outside the feed lifecycle.',
1303
+ status: 'general-availability',
1304
+ usageGuidelines: ['Use for Insight cards opened from external surfaces such as a home carousel.'],
1305
+ keywords: ['rovo', 'insights', 'card', 'analytics'],
1306
+ category: 'rovo',
1307
+ returns: {
1308
+ type: '{ fireInsightCardClicked: (insightCategory: string) => void }'
1309
+ },
1310
+ package: '@atlassian/rovo-growth-pulse',
1311
+ examples: []
1312
+ }, {
1313
+ name: 'useInsightsAnalyticsState',
1314
+ description: 'Tracks Rovo Insights feed views, dwell qualification, clicks, links, and retries.',
1315
+ status: 'general-availability',
1316
+ usageGuidelines: ['Use with an Insights feed whose view and interaction lifecycle requires unified AI analytics.'],
1317
+ keywords: ['rovo', 'insights', 'analytics', 'dwell'],
1318
+ category: 'rovo',
1319
+ returns: {
1320
+ type: 'UseInsightsAnalyticsStateReturn'
1321
+ },
1322
+ package: '@atlassian/rovo-growth-pulse',
1323
+ examples: []
1324
+ }, {
1325
+ name: 'useInsightsFeed',
1326
+ description: 'Loads and maps Rovo Insights data into feed-ready state.',
1327
+ status: 'general-availability',
1328
+ usageGuidelines: ['Use when composing a custom surface from the standard Insights feed data lifecycle.'],
1329
+ keywords: ['rovo', 'insights', 'feed', 'data'],
1330
+ category: 'rovo',
1331
+ returns: {
1332
+ type: 'UseInsightsFeedResult'
1333
+ },
1334
+ package: '@atlassian/rovo-growth-pulse',
1335
+ examples: []
1336
+ }, {
1337
+ name: 'useInsightsStatus',
1338
+ description: 'Loads the current availability and freshness status for Rovo Insights.',
1339
+ status: 'general-availability',
1340
+ usageGuidelines: ['Use before presenting Insights UI that depends on backend availability or freshness.'],
1341
+ keywords: ['rovo', 'insights', 'status', 'availability'],
1342
+ category: 'rovo',
1343
+ returns: {
1344
+ type: 'UseInsightsStatusResult'
1345
+ },
1346
+ package: '@atlassian/rovo-growth-pulse',
1347
+ examples: []
1348
+ }, {
1349
+ name: 'useReportInsightsBannerResolved',
1350
+ description: 'Resolves banner visibility and reports the decision once per mount.',
1351
+ status: 'general-availability',
1352
+ usageGuidelines: ['Use when rendering an Insights banner so shown and hidden outcomes are observable.'],
1353
+ keywords: ['rovo', 'insights', 'banner', 'analytics'],
1354
+ category: 'rovo',
1355
+ returns: {
1356
+ type: 'InsightsBannerResolution'
1357
+ },
1358
+ package: '@atlassian/rovo-growth-pulse',
1359
+ examples: []
1360
+ }, {
1361
+ name: 'usePersonalityGreeting',
1362
+ description: 'Selects a rotating Rovo greeting and illustration for the current personality mode.',
1363
+ status: 'general-availability',
1364
+ usageGuidelines: ['Use when a Rovo surface needs a mode-aware personalized greeting.'],
1365
+ keywords: ['rovo', 'personality', 'greeting', 'hook'],
1366
+ category: 'rovo',
1367
+ returns: {
1368
+ type: 'UsePersonalityGreetingResult'
1369
+ },
1370
+ package: '@atlassian/rovo-personalization',
1371
+ examples: []
1372
+ }, {
1373
+ name: 'usePersonalityThinkingVerb',
1374
+ description: 'Selects a localized thinking verb that matches the active Rovo response tone.',
1375
+ status: 'general-availability',
1376
+ usageGuidelines: ['Use in progress messaging that should reflect the configured Rovo personality.'],
1377
+ keywords: ['rovo', 'personality', 'thinking', 'hook'],
1378
+ category: 'rovo',
1379
+ returns: {
1380
+ type: 'UsePersonalityThinkingVerbResult'
1381
+ },
1382
+ package: '@atlassian/rovo-personalization',
1383
+ examples: []
1384
+ }, {
1385
+ name: 'useInfiniteScroll',
1386
+ description: 'Coordinates loading more inline-browse results when a scroll sentinel enters view.',
1387
+ status: 'general-availability',
1388
+ usageGuidelines: ['Call useInfiniteScroll only from a React component or another custom hook.', 'Keep the hook inputs stable where the returned behavior depends on identity or lifecycle.'],
1389
+ keywords: ['rovo', 'infinite-scroll', 'pagination'],
1390
+ category: 'navigation',
1391
+ returns: {
1392
+ type: 'UseInfiniteScrollResult'
1393
+ },
1394
+ package: '@atlassian/rovo-platform-ui-components',
1395
+ examples: []
1396
+ }, {
1397
+ name: 'useProfileTrigger',
1398
+ description: 'Returns the profile-trigger renderer provided by the nearest ProfileTriggerProvider.',
1399
+ status: 'general-availability',
1400
+ usageGuidelines: ['Call useProfileTrigger only from a React component or another custom hook.', 'Keep the hook inputs stable where the returned behavior depends on identity or lifecycle.'],
1401
+ keywords: ['rovo', 'profile', 'trigger'],
1402
+ category: 'rovo',
1403
+ returns: {
1404
+ type: 'ProfileTriggerRenderer | undefined'
1405
+ },
1406
+ package: '@atlassian/rovo-platform-ui-components',
1407
+ examples: []
1408
+ }, {
1409
+ name: 'useIsRovoSettingsModalProviderMounted',
1410
+ description: 'Reports whether a Rovo settings modal provider is mounted above the caller.',
1411
+ status: 'general-availability',
1412
+ usageGuidelines: ['Use to avoid rendering controls that require an unavailable settings provider.'],
1413
+ keywords: ['rovo', 'settings', 'provider', 'hook'],
1414
+ category: 'rovo',
1415
+ returns: {
1416
+ type: 'boolean'
1417
+ },
1418
+ package: '@atlassian/rovo-settings-modal',
1419
+ examples: []
1420
+ }, {
1421
+ name: 'useRovoSettingsConfig',
1422
+ description: 'Reads the configuration supplied for the current Rovo settings experience.',
1423
+ status: 'general-availability',
1424
+ usageGuidelines: ['Use below RovoSettingsConfigProvider to access host-specific settings configuration.'],
1425
+ keywords: ['rovo', 'settings', 'config', 'hook'],
1426
+ category: 'rovo',
1427
+ returns: {
1428
+ type: 'RovoSettingsConfig'
1429
+ },
1430
+ package: '@atlassian/rovo-settings-modal',
1431
+ examples: []
1432
+ }, {
1433
+ name: 'useRovoSettingsModal',
1434
+ description: 'Returns controls for opening and closing the nearest Rovo settings modal.',
1435
+ status: 'general-availability',
1436
+ usageGuidelines: ['Use within RovoSettingsModalProvider to trigger settings from product UI.'],
1437
+ keywords: ['rovo', 'settings', 'modal', 'hook'],
1438
+ category: 'rovo',
1439
+ returns: {
1440
+ type: '{ open: (options?: RovoSettingsModalOpenOptions) => void; close: () => void }'
1441
+ },
1442
+ package: '@atlassian/rovo-settings-modal',
1443
+ examples: []
1444
+ }, {
1445
+ name: 'useAddSpaceSource',
1446
+ description: 'Adds a source to a space and mirrors the successful result into the space store.',
1447
+ status: 'general-availability',
1448
+ usageGuidelines: ['Use when a React surface lets people attach a source to a space.'],
1449
+ keywords: ['rovo', 'spaces', 'source', 'mutation'],
1450
+ category: 'rovo',
1451
+ returns: {
1452
+ type: 'ReturnType<typeof useAddSpaceSource>'
1453
+ },
1454
+ package: '@atlassian/rovo-spaces',
1455
+ examples: []
1456
+ }, {
1457
+ name: 'useCreateSpace',
1458
+ description: 'Creates a Rovo space and exposes mutation, submission, and error state.',
1459
+ status: 'general-availability',
1460
+ usageGuidelines: ['Use to connect a custom creation interface to the space service.'],
1461
+ keywords: ['rovo', 'spaces', 'create', 'mutation'],
1462
+ category: 'rovo',
1463
+ returns: {
1464
+ type: 'ReturnType<typeof useCreateSpace>'
1465
+ },
1466
+ package: '@atlassian/rovo-spaces',
1467
+ examples: []
1468
+ }, {
1469
+ name: 'useDeleteSpace',
1470
+ description: 'Deletes a space with optimistic store removal and rollback on failure.',
1471
+ status: 'general-availability',
1472
+ usageGuidelines: ['Use to connect a deletion confirmation flow to the space service.'],
1473
+ keywords: ['rovo', 'spaces', 'delete', 'mutation'],
1474
+ category: 'rovo',
1475
+ returns: {
1476
+ type: '{ deleteSpace: (spaceId: string) => Promise<void> }'
1477
+ },
1478
+ package: '@atlassian/rovo-spaces',
1479
+ examples: []
1480
+ }, {
1481
+ name: 'useDeleteSpaceSource',
1482
+ description: 'Removes a source from a space and mirrors the deletion into the space store.',
1483
+ status: 'general-availability',
1484
+ usageGuidelines: ['Use when a React surface lets people detach a source from a space.'],
1485
+ keywords: ['rovo', 'spaces', 'source', 'delete'],
1486
+ category: 'rovo',
1487
+ returns: {
1488
+ type: 'ReturnType<typeof useDeleteSpaceSource>'
1489
+ },
1490
+ package: '@atlassian/rovo-spaces',
1491
+ examples: []
1492
+ }, {
1493
+ name: 'useSpaceSourcePlugins',
1494
+ description: 'Creates the Link Picker plugins used to select supported space sources.',
1495
+ status: 'general-availability',
1496
+ usageGuidelines: ['Use to configure a space source Link Picker for the current cloud.'],
1497
+ keywords: ['rovo', 'spaces', 'source', 'link picker'],
1498
+ category: 'rovo',
1499
+ returns: {
1500
+ type: 'LinkPickerPlugin[]'
1501
+ },
1502
+ package: '@atlassian/rovo-spaces',
1503
+ examples: []
1504
+ }, {
1505
+ name: 'useActionInvocationStatuses',
1506
+ description: 'Returns live action-invocation statuses for a set of Rovo plan steps.',
1507
+ status: 'general-availability',
1508
+ usageGuidelines: ['Pass a memoized invocation ID array to keep the result referentially stable.'],
1509
+ keywords: ['rovo', 'modal', 'action', 'status'],
1510
+ category: 'rovo',
1511
+ returns: {
1512
+ type: "Record<string, MessageActionInvocationStatus | 'idle'>"
1513
+ },
1514
+ package: '@atlassian/rovodal-context',
1515
+ examples: []
1516
+ }, {
1517
+ name: 'useRovodal',
1518
+ description: 'Returns one keyed Rovodal entry and actions bound to that entry.',
1519
+ status: 'general-availability',
1520
+ usageGuidelines: ['Prefer this keyed hook when a consumer owns one Rovodal key.'],
1521
+ keywords: ['rovo', 'modal', 'store', 'actions'],
1522
+ category: 'rovo',
1523
+ returns: {
1524
+ type: '[RovodalEntry<TState> | undefined, RovodalKeyedActions<TState>]'
1525
+ },
1526
+ package: '@atlassian/rovodal-context',
1527
+ examples: []
1528
+ }, {
1529
+ name: 'useRovodalActions',
1530
+ description: 'Returns actions bound to the global Rovodal store.',
1531
+ status: 'general-availability',
1532
+ usageGuidelines: ['Use when one component must coordinate several Rovodal keys.'],
1533
+ keywords: ['rovo', 'modal', 'store', 'global actions'],
1534
+ category: 'rovo',
1535
+ returns: {
1536
+ type: 'BoundActions<RovodalStoreState, RovodalActions>'
1537
+ },
1538
+ package: '@atlassian/rovodal-context',
1539
+ examples: []
1540
+ }, {
1541
+ name: 'useRovodalStoreState',
1542
+ description: 'Returns the complete global map of keyed Rovodal entries.',
1543
+ status: 'general-availability',
1544
+ usageGuidelines: ['Prefer useRovodal unless the consumer must observe several keys.'],
1545
+ keywords: ['rovo', 'modal', 'store', 'state'],
1546
+ category: 'rovo',
1547
+ returns: {
1548
+ type: 'RovodalStoreState'
1549
+ },
1550
+ package: '@atlassian/rovodal-context',
1551
+ examples: []
1552
+ }, {
1553
+ name: 'useRovoProjectCreationCategories',
1554
+ description: 'Returns localized feedback categories for Rovo project creation.',
1555
+ status: 'general-availability',
1556
+ usageGuidelines: ['Use to keep project-creation feedback categories consistent across entry points.'],
1557
+ keywords: ['rovo', 'project creation', 'feedback', 'categories'],
1558
+ category: 'rovo',
1559
+ returns: {
1560
+ type: 'Category[]'
1561
+ },
1562
+ package: '@atlassian/smart-create-feedback',
1563
+ examples: []
1564
+ }, {
1565
+ name: 'useCurrentDisplayMessage',
1566
+ description: 'Returns the assistant message currently selected by preview history.',
1567
+ status: 'general-availability',
1568
+ usageGuidelines: ['Use when a preview must follow the current undo or redo position.'],
1569
+ keywords: ['rovo', 'smart creation', 'message', 'history'],
1570
+ category: 'rovo',
1571
+ returns: {
1572
+ type: 'StoreAssistant | undefined'
1573
+ },
1574
+ package: '@atlassian/smart-creation',
1575
+ examples: []
1576
+ }, {
1577
+ name: 'useIframeHandshake',
1578
+ description: 'Tracks the Smart Creation preview iframe handshake and timeout experience.',
1579
+ status: 'general-availability',
1580
+ usageGuidelines: ['Use when composing a custom preview iframe with the package bridge protocol.'],
1581
+ keywords: ['rovo', 'smart creation', 'iframe', 'handshake'],
1582
+ category: 'rovo',
1583
+ returns: {
1584
+ type: 'void'
1585
+ },
1586
+ package: '@atlassian/smart-creation',
1587
+ examples: []
1588
+ }, {
1589
+ name: 'useLastAssistantMessageAuthLink',
1590
+ description: 'Extracts the outbound authentication link from the latest assistant message.',
1591
+ status: 'general-availability',
1592
+ usageGuidelines: ['Use when Smart Creation must surface a connected-app authentication step.'],
1593
+ keywords: ['rovo', 'smart creation', 'authentication', 'link'],
1594
+ category: 'rovo',
1595
+ returns: {
1596
+ type: 'string | null'
1597
+ },
1598
+ package: '@atlassian/smart-creation',
1599
+ examples: []
1600
+ }, {
1601
+ name: 'useLatestActionMessage',
1602
+ description: 'Returns the latest Smart Creation action messages and preview statuses.',
1603
+ status: 'general-availability',
1604
+ usageGuidelines: ['Use to derive current create, update, and ask-question action state.'],
1605
+ keywords: ['rovo', 'smart creation', 'action', 'message'],
1606
+ category: 'rovo',
1607
+ returns: {
1608
+ type: 'SelectedPreview'
1609
+ },
1610
+ package: '@atlassian/smart-creation',
1611
+ examples: []
1612
+ }, {
1613
+ name: 'useSelectedPreview',
1614
+ description: 'Returns the message, content, title, and status selected for preview.',
1615
+ status: 'general-availability',
1616
+ usageGuidelines: ['Use when a staging area follows the user-selected creation action.'],
1617
+ keywords: ['rovo', 'smart creation', 'selected preview', 'message'],
1618
+ category: 'rovo',
1619
+ returns: {
1620
+ type: '{ selectedPreviewMessage: StoreAssistant | undefined; selectedPreviewContentId: string | undefined; selectedPreviewTitle: string | undefined; status: PreviewStatus | undefined }'
1621
+ },
1622
+ package: '@atlassian/smart-creation',
1623
+ examples: []
1624
+ }, {
1625
+ name: 'useStagingAreaContext',
1626
+ description: 'Returns the current Smart Creation staging-area context.',
1627
+ status: 'general-availability',
1628
+ usageGuidelines: ['Call inside StagingAreaContextProvider-backed components.'],
1629
+ keywords: ['rovo', 'smart creation', 'staging area', 'context'],
1630
+ category: 'rovo',
1631
+ returns: {
1632
+ type: 'StagingAreaContext'
1633
+ },
1634
+ package: '@atlassian/smart-creation',
1635
+ examples: []
1636
+ }, {
1637
+ name: 'useUndoRedoHistory',
1638
+ description: 'Builds undo and redo navigation from ephemeral creation-action messages.',
1639
+ status: 'general-availability',
1640
+ usageGuidelines: ['Use when a preview supports navigating previous generated versions.'],
1641
+ keywords: ['rovo', 'smart creation', 'undo', 'redo'],
1642
+ category: 'rovo',
1643
+ returns: {
1644
+ type: '{ controls: UndoRedoControls | undefined; cacheUrl: (messageId: string, url: string) => void; resolveDisplayUrl: (latestEmbedUrl: string | undefined) => string | undefined }'
1645
+ },
1646
+ package: '@atlassian/smart-creation',
1647
+ examples: []
1648
+ }, {
1649
+ name: 'useBrowseAgentView',
1650
+ description: 'Returns controls for opening and closing nested views in the Rovo agent browser.',
1651
+ status: 'general-availability',
1652
+ usageGuidelines: ['Use within BrowseAgentView to open agent, template, or other nested detail content.'],
1653
+ keywords: ['rovo', 'agent', 'browse', 'hook'],
1654
+ category: 'rovo',
1655
+ returns: {
1656
+ type: 'ReturnType<typeof useBrowseAgentView>'
1657
+ },
1658
+ package: '@atlassian/studio-browse-kit',
387
1659
  examples: []
388
1660
  }];