Fixed client-side navigation by wrapping container components
(not individual items) in RouterProvider. Components now
conditionally provide routing context only when children have
internal hrefs.
Changes:
- Added createRoutingRegistration factory for reusable routing
registration pattern
- Refactored Menu, MenuAutocomplete to use RoutingProvider
- Refactored TagGroup, Tag to use RoutingProvider
- Refactored Tabs, Tab with RoutedTabEffects for URL-based
tab selection
Signed-off-by: Johan Persson <johanopersson@gmail.com>
Introduced InternalLinkProvider component that conditionally wraps
children in RouterProvider only when an internal href is present.
This allows Link, ButtonLink, and Row components to render without
requiring a Router context when used with external or no hrefs.
Signed-off-by: Johan Persson <johanopersson@gmail.com>
Migrates ButtonIcon and ButtonLink to use the useDefinition hook
with fully independent styling. Each component now has its own
complete CSS, types, and definition without sharing internals
with Button.
- ButtonIcon: Add complete styles, use defineComponent with
ButtonIconOwnProps, extend LeafSurfaceProps
- ButtonLink: Add new CSS module with complete styles, use
defineComponent with ButtonLinkOwnProps, extend LeafSurfaceProps
- Update API report
Signed-off-by: Johan Persson <johanopersson@gmail.com>
Adds shared prop types for surface-aware components and type-level
validation to ensure proper surface prop declarations.
- Add `LeafSurfaceProps` and `ContainerSurfaceProps` shared types
- Add `SurfacePropsConstraint` type that errors if `surface: 'leaf'`
is set but `onSurface` is missing from props (and vice versa for
container components)
- Update Button to extend `LeafSurfaceProps` instead of declaring
`onSurface` manually
Signed-off-by: Johan Persson <johanopersson@gmail.com>
Comprehensive rewrite of the Table component documentation including:
- Updated prop definitions with JSX descriptions
- New interactive examples for sorting, search, pagination, selection
- Expanded code snippets covering all major use cases
- Added custom row and primitives examples
- Improved MDX structure and styling
Signed-off-by: Johan Persson <johanopersson@gmail.com>
- Add ReactAriaLink component for linking to React Aria docs
- Make PropsTable columns configurable
- Improve Chip styling to support multiline content
- Allow ReactNode in PropDef descriptions
Signed-off-by: Johan Persson <johanopersson@gmail.com>
React Aria's Collection component injects an `id` prop into rendered
children. When children were wrapped in Fragment, this caused
"Invalid prop `id` supplied to `React.Fragment`" errors on render.
BREAKING CHANGE: The `cell` and `header` properties in `ColumnConfig`
now return `ReactElement` instead of `ReactNode`. Cell and header
functions that return non-element values must be updated to always
return a valid element.
Signed-off-by: Johan Persson <johanopersson@gmail.com>
Updated the `ScheduledTasksContent` component to provide better visual
feedback when a user lacks permission to run a task. A new
`CreateNotAllowed` component displays a disabled block icon with a
tooltip instead of the default error behavior.
Signed-off-by: Yash Oswal <yoswal@redhat.com>
this is pre-work for upcoming Backstage ContribFest at KubeCon
Amsterdam to hopefully make it easier for people to start contributing.
node was updated to 24 to support the latest things in backstage,
additionally necessary vscode plugins and settings are now included.
Signed-off-by: Hellgren Heikki <heikki.hellgren@op.fi>