Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
a3f2795
Add the agentic AvatarGroup component
JasonVMo Sep 2, 2026
c917c7c
fix(agentic): address avatar group review feedback
JasonVMo Sep 2, 2026
ba124d9
feat(components): add the agentic DestructiveButton component
JasonVMo Sep 2, 2026
1779ee1
fix(agentic): address destructive button review feedback
JasonVMo Sep 2, 2026
007e5e3
feat(components): add agentic InteractionTag
JasonVMo Sep 2, 2026
58f8766
fix(agentic): address interaction tag review feedback
JasonVMo Sep 2, 2026
6f9761c
Add the agentic Label component
JasonVMo Sep 2, 2026
a939908
fix(agentic): address label review feedback
JasonVMo Sep 2, 2026
f19a0e0
feat(components): add the agentic Link component
JasonVMo Sep 2, 2026
5d97385
fix(agentic): address link review feedback
JasonVMo Sep 2, 2026
b3ca7ba
feat(components): add the agentic NavItem component
JasonVMo Sep 2, 2026
7318c29
fix(agentic): address nav item review feedback
JasonVMo Sep 2, 2026
023bc9b
Add the agentic Popover component
JasonVMo Sep 2, 2026
0a94d52
fix(agentic): address popover review feedback
JasonVMo Sep 2, 2026
b72c61b
feat(components): add the agentic SearchBox component
JasonVMo Sep 2, 2026
08adb6e
fix(agentic): address search box review feedback
JasonVMo Sep 2, 2026
1b2404e
chore(agentic): reconcile component exports and source report
JasonVMo Sep 2, 2026
9b8edc9
Add the agentic Tooltip component
JasonVMo Sep 3, 2026
5b6ad9c
Drop a pending Tooltip reveal when the trigger becomes disabled
JasonVMo Sep 3, 2026
615a643
fix(storybook): keep desktop plans statically extractable
JasonVMo Sep 3, 2026
a0fe649
Fix floating surface and input alignment
JasonVMo Sep 3, 2026
d312d09
Share agentic component policies
JasonVMo Sep 3, 2026
cbe9a74
Merge remote-tracking branch 'origin/main' into user/jasonvmo/compone…
JasonVMo Sep 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/olive-jars-visit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@fluentui-react-native/components": minor
---

Add the NavItem component: a pressable navigation row with density and nesting rhythm, externally driven selection and category disclosure, a collapsed icon rail mode, and trailing content and action regions.
5 changes: 5 additions & 0 deletions .changeset/olive-labels-name.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@fluentui-react-native/components": minor
---

Add the agentic Label component for naming an associated form control.
5 changes: 5 additions & 0 deletions .changeset/plain-links-navigate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@fluentui-react-native/components": minor
---

Add the agentic Link component with functional and content type sets, inline and standalone layouts, an optional trailing icon, and platform navigation through React Native Linking.
5 changes: 5 additions & 0 deletions .changeset/popover-agentic-component.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@fluentui-react-native/components": minor
---

Add the agentic Popover component: a trigger paired with a native floating surface built on Callout, with owned open state, tokenized surface styling, and documented per-platform limits.
7 changes: 7 additions & 0 deletions .changeset/shared-components-align.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@fluentui-react-native/components": patch
"@fluentui-react-native/design": patch
"@fluentui-react-native/framework-base": patch
---

Share component accessibility, interaction, warning, and numeric style policies, and migrate component semantics to the ARIA-aligned `role` prop.
5 changes: 5 additions & 0 deletions .changeset/smooth-queries-clear.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@fluentui-react-native/components": minor
---

Add the agentic SearchBox component: an Input-backed query field with a leading search icon, a clear button that appears only while a query is present, and search, clear, disabled, and read-only semantics.
5 changes: 5 additions & 0 deletions .changeset/steady-surfaces-center.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@fluentui-react-native/components": patch
---

Keep Popover and Tooltip surfaces readable when native callouts measure unconstrained text, and keep Input and SearchBox text vertically centered after clearing a focused value.
5 changes: 5 additions & 0 deletions .changeset/tidy-moons-delete.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@fluentui-react-native/components": minor
---

Add the DestructiveButton component for irreversible and high-consequence actions, with primary and subtle danger appearances, three sizes, rounded and circle shapes, and a leading or trailing icon slot.
5 changes: 5 additions & 0 deletions .changeset/tidy-pears-gather.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@fluentui-react-native/components": minor
---

Add the agentic AvatarGroup component with spread and stack layouts, size-scaled geometry, and an optional `+N` overflow indicator.
5 changes: 5 additions & 0 deletions .changeset/tidy-tags-interact.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@fluentui-react-native/components': minor
---

Add the agentic InteractionTag component with independently pressable primary and dismiss regions, exclusive leading icon or avatar content, and per-region focus visuals.
5 changes: 5 additions & 0 deletions .changeset/tooltip-agentic-component.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@fluentui-react-native/components": minor
---

Add the agentic Tooltip component: a trigger paired with a short descriptive label that is revealed on pointer entry after a delay and on keyboard focus, built on the reviewed Popover pipeline with owned visibility, trigger description semantics, tokenized label styling, and documented per-platform limits.
Original file line number Diff line number Diff line change
Expand Up @@ -101,14 +101,20 @@ accessibilityState: {

The component must own its role and state semantics while preserving unrelated consumer values such as `busy`.

- Set the native role explicitly.
- Set native semantics with React Native's ARIA-aligned `role` prop, not the legacy `accessibilityRole`. Use ARIA names
such as `img` and `heading`, not legacy names such as `image` and `header`.
- Omit both `role` and `accessibilityRole` from public native props when the component owns the role. If a caller owns
the semantic choice, expose only `role`.
- Keep disabled state, focusability, and interaction behavior consistent.
- Prefer a consumer-provided `accessible` or `focusable` value only when it does not violate the component contract.
Disabled state is authoritative: resolve focusability with the shared component interaction helper so
`focusable={true}` cannot keep a disabled control in the focus order.
- Add selected or checked semantics only when the corresponding behavior is enabled.
- Use action-oriented accessible names for icon-only controls.

Button warns in development when an icon-only instance lacks an `accessibilityLabel`. Put warnings in an effect so
render remains free of observable side effects, and make the dependency list match every value used by the warning.
Button warns in development when an icon-only instance lacks an `accessibilityLabel`. Use `useDevWarning` from
`@fluentui-react-native/framework-base` for conditional usage warnings so render remains free of observable side
effects and repeated renders do not emit duplicate messages.

## Use framework interaction and slot hooks

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,8 @@ Destructure only the token groups needed by a factory:
```

Validate token values when their generated type is wider than the React Native style property. Button validates its gap
token before assigning it to `ViewStyle['gap']`.
token before assigning it to `ViewStyle['gap']`. Use `getNumericStyleValueAsNumber` when the target property requires a
number; it centralizes validation and numeric-string coercion instead of repeating `Number(getNumericStyleValue(...))`.

## Apply slot props in one stage

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Use `@testing-library/react-native`. Do not import `react-test-renderer` directl
Prefer public semantics:

- query the root by accessibility role
- assert the ARIA-aligned `role` prop rather than the legacy `accessibilityRole`
- use matchers such as `toBeDisabled()`
- assert `accessibilityState`, accessible names, and focusability
- use async `fireEvent` calls for hover, press, focus, and user handlers
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Translate web concepts deliberately:

| Flex evidence | React Native contract |
| ------------------------------------ | ---------------------------------------------------------------------------------- |
| ARIA attributes or native elements | `accessibilityRole`, `accessibilityState`, labels, and UIA/AX expectations |
| ARIA attributes or native elements | ARIA-aligned `role`, `accessibilityState`, labels, and UIA/AX expectations |
| CSS pseudo-classes | explicit interaction state and precedence |
| browser focus selectors and outlines | persistent `FocusVisual`; never conditional `outline*` or RNW native focus visuals |
| CSS pixel or layout rules | React Native units, minimum targets, and platform behavior |
Expand Down
3 changes: 3 additions & 0 deletions packages/agentic/components/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ invariants; detailed authoring recipes live in the
- Use `src/components/button` as the canonical higher-order implementation and `src/primitives/icon` as the canonical
primitive.
- Keep public props and slots small, typed, and spec-driven.
- Express native semantics with React Native's ARIA-aligned `role` prop, not the legacy `accessibilityRole`. When a
component owns its semantics, omit both props from its public native surface; expose only `role` when callers own the
semantic choice.
- This package targets React 19.1.4 or newer. Expose a stable native root ref through the `ref` prop, receive it as part
of the component props, and forward it to the declared root slot. Do not use `forwardRef`.
- Export higher-order components and public types explicitly from `src/index.ts`; export primitives and their public types
Expand Down
7 changes: 1 addition & 6 deletions packages/agentic/components/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -87,12 +87,7 @@
}
},
"furn": {
"jestPlatform": "macos",
"knip": {
"ignoreDependencies": [
"@fluentui-react-native/callout"
]
}
"jestPlatform": "macos"
},
"rnx-kit": {
"kitType": "library",
Expand Down
Loading
Loading