@atlaskit/ads-mcp 1.8.1 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/dist/cjs/tools/get-all-components/components.codegen.js +2 -2
- package/dist/cjs/tools/get-all-icons/icons.js +2 -2
- package/dist/cjs/tools/get-atlaskit-components/atlaskit-components.codegen.js +2 -2
- package/dist/cjs/tools/get-atlaskit-hooks/atlaskit-hooks.codegen.js +123 -3
- package/dist/cjs/tools/get-atlaskit-utilities/atlaskit-utilities.codegen.js +488 -3
- package/dist/cjs/tools/migration-guides/migrations/onboarding-multi-step.js +2 -2
- package/dist/cjs/tools/migration-guides/migrations/onboarding-single-step.js +2 -2
- package/dist/cjs/tools/migration-guides/migrations/onboarding-with-motion.js +2 -2
- package/dist/es2019/tools/get-all-components/components.codegen.js +2 -2
- package/dist/es2019/tools/get-all-icons/icons.js +1 -1
- package/dist/es2019/tools/get-atlaskit-components/atlaskit-components.codegen.js +2 -2
- package/dist/es2019/tools/get-atlaskit-hooks/atlaskit-hooks.codegen.js +123 -3
- package/dist/es2019/tools/get-atlaskit-utilities/atlaskit-utilities.codegen.js +488 -3
- package/dist/es2019/tools/migration-guides/migrations/onboarding-multi-step.js +4 -2
- package/dist/es2019/tools/migration-guides/migrations/onboarding-single-step.js +3 -3
- package/dist/es2019/tools/migration-guides/migrations/onboarding-with-motion.js +2 -2
- package/dist/esm/tools/get-all-components/components.codegen.js +2 -2
- package/dist/esm/tools/get-all-icons/icons.js +1 -1
- package/dist/esm/tools/get-atlaskit-components/atlaskit-components.codegen.js +2 -2
- package/dist/esm/tools/get-atlaskit-hooks/atlaskit-hooks.codegen.js +123 -3
- package/dist/esm/tools/get-atlaskit-utilities/atlaskit-utilities.codegen.js +488 -3
- package/dist/esm/tools/migration-guides/migrations/onboarding-multi-step.js +2 -2
- package/dist/esm/tools/migration-guides/migrations/onboarding-single-step.js +2 -2
- package/dist/esm/tools/migration-guides/migrations/onboarding-with-motion.js +2 -2
- package/dist/types/tools/get-all-components/components.codegen.d.ts +1 -1
- package/dist/types/tools/get-atlaskit-components/atlaskit-components.codegen.d.ts +1 -1
- package/dist/types/tools/get-atlaskit-hooks/atlaskit-hooks.codegen.d.ts +1 -1
- package/dist/types/tools/get-atlaskit-utilities/atlaskit-utilities.codegen.d.ts +1 -1
- package/package.json +4 -4
|
@@ -9,7 +9,7 @@ exports.atlaskitHooks = void 0;
|
|
|
9
9
|
*
|
|
10
10
|
* Structured content hooks from design-system *.docs.tsx files
|
|
11
11
|
*
|
|
12
|
-
* @codegen <<SignedSource::
|
|
12
|
+
* @codegen <<SignedSource::eff635a23ccace1d4e4c6ef6efc21551>>
|
|
13
13
|
* @codegenCommand yarn workspace @af/ads-ai-tooling codegen
|
|
14
14
|
*/
|
|
15
15
|
/* eslint-disable @repo/internal/react/boolean-prop-naming-convention -- not our types */
|
|
@@ -260,7 +260,7 @@ var atlaskitHooks = exports.atlaskitHooks = [{
|
|
|
260
260
|
keywords: ['smart-card', 'hooks', 'useSmartLinkActions', 'actions'],
|
|
261
261
|
category: 'linking',
|
|
262
262
|
package: '@atlaskit/smart-card',
|
|
263
|
-
examples: ["import React, { useCallback } from 'react';\nimport Button from '@atlaskit/button/
|
|
263
|
+
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;"]
|
|
264
264
|
}, {
|
|
265
265
|
name: 'useSmartLinkEvents',
|
|
266
266
|
description: 'Hook that returns a SmartLinkEvents object for dispatching analytics events for a given URL. Currently supports insertSmartLink.',
|
|
@@ -270,5 +270,125 @@ var atlaskitHooks = exports.atlaskitHooks = [{
|
|
|
270
270
|
keywords: ['smart-card', 'hooks', 'analytics', 'useSmartLinkEvents', 'events'],
|
|
271
271
|
category: 'linking',
|
|
272
272
|
package: '@atlaskit/smart-card',
|
|
273
|
-
examples: ["import
|
|
273
|
+
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};"]
|
|
274
|
+
}, {
|
|
275
|
+
name: 'useAllMessages',
|
|
276
|
+
description: 'Returns every non-dismissed message in a placement with a placement-bound wrapper. Use it when one surface renders messages from multiple templates.',
|
|
277
|
+
status: 'general-availability',
|
|
278
|
+
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.'],
|
|
279
|
+
keywords: ['post office', 'headless messages', 'all messages', 'multiple templates', 'choreographer', 'message lifecycle'],
|
|
280
|
+
category: 'messaging',
|
|
281
|
+
parameters: [{
|
|
282
|
+
name: 'placementId',
|
|
283
|
+
type: 'string',
|
|
284
|
+
description: 'Placement to fetch.',
|
|
285
|
+
defaultValue: "'headless'",
|
|
286
|
+
isOptional: true
|
|
287
|
+
}, {
|
|
288
|
+
name: 'options',
|
|
289
|
+
type: 'UseAllMessagesOptions<TMessage, TExtension>',
|
|
290
|
+
description: 'Optional matching, validation, and data-source configuration.',
|
|
291
|
+
isOptional: true
|
|
292
|
+
}],
|
|
293
|
+
returns: {
|
|
294
|
+
type: 'UseAllMessagesResult<TMessage>',
|
|
295
|
+
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`.'
|
|
296
|
+
},
|
|
297
|
+
package: '@atlassian/post-office-headless-api',
|
|
298
|
+
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;"]
|
|
299
|
+
}, {
|
|
300
|
+
name: 'useMessageData',
|
|
301
|
+
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.',
|
|
302
|
+
status: 'general-availability',
|
|
303
|
+
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.'],
|
|
304
|
+
keywords: ['post office', 'headless messages', 'single message', 'message template', 'choreographer', 'message lifecycle'],
|
|
305
|
+
category: 'messaging',
|
|
306
|
+
parameters: [{
|
|
307
|
+
name: 'selector',
|
|
308
|
+
type: 'UseMessageDataSelector',
|
|
309
|
+
description: 'Placement and template to select.'
|
|
310
|
+
}, {
|
|
311
|
+
name: 'options',
|
|
312
|
+
type: 'UseMessageDataOptions<TMessage, TExtension>',
|
|
313
|
+
description: 'Optional matching, validation, and data-source configuration.',
|
|
314
|
+
isOptional: true
|
|
315
|
+
}],
|
|
316
|
+
returns: {
|
|
317
|
+
type: 'UseMessageDataResult<TMessage>',
|
|
318
|
+
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`.'
|
|
319
|
+
},
|
|
320
|
+
package: '@atlassian/post-office-headless-api',
|
|
321
|
+
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;"]
|
|
322
|
+
}, {
|
|
323
|
+
name: 'useMessageInstances',
|
|
324
|
+
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.',
|
|
325
|
+
status: 'general-availability',
|
|
326
|
+
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.'],
|
|
327
|
+
keywords: ['post office', 'headless messages', 'message instances', 'implicit messages', 'choreographer', 'message lifecycle'],
|
|
328
|
+
category: 'messaging',
|
|
329
|
+
parameters: [{
|
|
330
|
+
name: 'selector',
|
|
331
|
+
type: "{ placementId?: string; messageTemplateId: TMessage['messageTemplateId'] }",
|
|
332
|
+
description: 'Placement and template to select.'
|
|
333
|
+
}, {
|
|
334
|
+
name: 'options',
|
|
335
|
+
type: 'UseMessageInstancesOptions<TMessage, TExtension>',
|
|
336
|
+
description: 'Optional matching, validation, and data-source configuration.',
|
|
337
|
+
isOptional: true
|
|
338
|
+
}],
|
|
339
|
+
returns: {
|
|
340
|
+
type: 'UseMessageInstancesResult<TMessage>',
|
|
341
|
+
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`.'
|
|
342
|
+
},
|
|
343
|
+
package: '@atlassian/post-office-headless-api',
|
|
344
|
+
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;"]
|
|
345
|
+
}, {
|
|
346
|
+
name: 'usePlacementData',
|
|
347
|
+
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.',
|
|
348
|
+
status: 'general-availability',
|
|
349
|
+
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.'],
|
|
350
|
+
keywords: ['post office', 'headless messages', 'placement data', 'choreographer', 'message lifecycle', 'analytics'],
|
|
351
|
+
category: 'messaging',
|
|
352
|
+
parameters: [{
|
|
353
|
+
name: 'placementId',
|
|
354
|
+
type: 'string',
|
|
355
|
+
description: 'Placement to fetch.',
|
|
356
|
+
defaultValue: "'headless'",
|
|
357
|
+
isOptional: true
|
|
358
|
+
}, {
|
|
359
|
+
name: 'options',
|
|
360
|
+
type: 'UsePlacementDataOptions',
|
|
361
|
+
description: 'Optional data source and additive query-string configuration.',
|
|
362
|
+
isOptional: true
|
|
363
|
+
}],
|
|
364
|
+
returns: {
|
|
365
|
+
type: 'UsePlacementDataResult<PlacementDataEndpointData<TMessage, TExtension>>',
|
|
366
|
+
description: 'Raw placement data, loading and error state, dismissal controls, and PostOfficePlacementMessage for rendering each message.'
|
|
367
|
+
},
|
|
368
|
+
package: '@atlassian/post-office-headless-api',
|
|
369
|
+
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;"]
|
|
370
|
+
}, {
|
|
371
|
+
name: 'useInfiniteScroll',
|
|
372
|
+
description: 'Coordinates loading more inline-browse results when a scroll sentinel enters view.',
|
|
373
|
+
status: 'general-availability',
|
|
374
|
+
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.'],
|
|
375
|
+
keywords: ['rovo', 'infinite-scroll', 'pagination'],
|
|
376
|
+
category: 'navigation',
|
|
377
|
+
returns: {
|
|
378
|
+
type: 'UseInfiniteScrollResult'
|
|
379
|
+
},
|
|
380
|
+
package: '@atlassian/rovo-platform-ui-components',
|
|
381
|
+
examples: []
|
|
382
|
+
}, {
|
|
383
|
+
name: 'useProfileTrigger',
|
|
384
|
+
description: 'Returns the profile-trigger renderer provided by the nearest ProfileTriggerProvider.',
|
|
385
|
+
status: 'general-availability',
|
|
386
|
+
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.'],
|
|
387
|
+
keywords: ['rovo', 'profile', 'trigger'],
|
|
388
|
+
category: 'rovo',
|
|
389
|
+
returns: {
|
|
390
|
+
type: 'ProfileTriggerRenderer | undefined'
|
|
391
|
+
},
|
|
392
|
+
package: '@atlassian/rovo-platform-ui-components',
|
|
393
|
+
examples: []
|
|
274
394
|
}];
|