From 2dd04bb029e84087259eb360be097dad27ef3ed4 Mon Sep 17 00:00:00 2001 From: Reid Barber Date: Thu, 26 Feb 2026 18:44:28 -0600 Subject: [PATCH 1/2] docs(RAC): Add TreeSection docs (#9699) * docs(Tree): Add TreeSection docs * export tree components from starter --- .../dev/s2-docs/pages/react-aria/Tree.mdx | 51 ++++++++++++++++++- starters/docs/src/Tree.css | 11 ++++ starters/docs/src/Tree.tsx | 16 +++++- 3 files changed, 75 insertions(+), 3 deletions(-) diff --git a/packages/dev/s2-docs/pages/react-aria/Tree.mdx b/packages/dev/s2-docs/pages/react-aria/Tree.mdx index 0cfb27d58c4..63bd61068c9 100644 --- a/packages/dev/s2-docs/pages/react-aria/Tree.mdx +++ b/packages/dev/s2-docs/pages/react-aria/Tree.mdx @@ -7,6 +7,7 @@ import vanillaDocs from 'docs:vanilla-starter/Tree'; import '../../tailwind/tailwind.css'; import Anatomy from 'react-aria-components/docs/TreeAnatomy.svg'; import {InlineAlert, Heading, Content} from '@react-spectrum/s2' +import {VersionBadge} from '../../src/VersionBadge'; export const tags = ['data', 'tree', 'nested', 'hierarchy']; export const relatedPages = [ @@ -237,6 +238,40 @@ import {Tree} from 'vanilla-starter/Tree'; ``` +### Sections + +Use the `` component to group options. A `` element may also be included to label the section. Sections without a header must have an `aria-label`. + +```tsx render +"use client"; +import {Tree, TreeHeader, TreeItem, TreeSection} from 'vanilla-starter/Tree'; + + + + Photos + + + + + + + + + + + Documents + + + + + + + + + + +``` + ## Selection and actions Use the `selectionMode` prop to enable single or multiple selection. The selected items can be controlled via the `selectedKeys` prop, matching the `id` prop of the items. The `onAction` event handles item actions. Items can be disabled with the `isDisabled` prop. See the [selection guide](selection?component=Tree) for more details. @@ -367,7 +402,7 @@ function Example() { -```tsx links={{Tree: '#tree', TreeItem: '#treeitem', TreeItemContent: '#treeitemcontent', Button: 'Button', Checkbox: 'Checkbox', TreeLoadMoreItem: '#treeloadmoreitem', SelectionIndicator: 'selection#animated-selectionindicator'}} +```tsx links={{Tree: '#tree', TreeItem: '#treeitem', TreeItemContent: '#treeitemcontent', TreeSection: '#treesection', TreeHeader: '#treeheader', Button: 'Button', Checkbox: 'Checkbox', TreeLoadMoreItem: '#treeloadmoreitem', SelectionIndicator: 'selection#animated-selectionindicator'}} @@ -378,8 +413,12 @@ function Example() { {/* ... */} - + + + {/* ... */} + + ``` @@ -401,6 +440,14 @@ function Example() { +### TreeSection + + + +### TreeHeader + +`` labels the section within a Tree. It accepts all DOM attributes. + ### TreeLoadMoreItem ); } + +export function TreeSection( + props: React.ComponentProps +) { + return ; +} + +export function TreeHeader( + props: React.ComponentProps +) { + return ; +} From d974b93dee0ba4dc7906095097348220ef778e99 Mon Sep 17 00:00:00 2001 From: Daniel Lu Date: Thu, 26 Feb 2026 21:17:09 -0800 Subject: [PATCH 2/2] fix: prevent docs crash by making template elements always append children into .content (#9703) * fix: prevent docs crash by making template elements always append children into .content * fix lint --- .../@react-aria/collections/src/Hidden.tsx | 46 +++---------------- 1 file changed, 6 insertions(+), 40 deletions(-) diff --git a/packages/@react-aria/collections/src/Hidden.tsx b/packages/@react-aria/collections/src/Hidden.tsx index 6ff7465d909..9730dd09bdb 100644 --- a/packages/@react-aria/collections/src/Hidden.tsx +++ b/packages/@react-aria/collections/src/Hidden.tsx @@ -11,8 +11,7 @@ */ import {forwardRefType} from '@react-types/shared'; -import React, {Context, createContext, forwardRef, JSX, ReactElement, ReactNode, useContext, useRef} from 'react'; -import {useLayoutEffect} from '@react-aria/utils'; +import React, {Context, createContext, forwardRef, JSX, ReactElement, ReactNode, useContext} from 'react'; // React doesn't understand the