* feat(techdocs): make sidebar positioning configurable via CSS custom properties
Replace hardcoded Backstage app sidebar widths (224px/72px) in the
TechDocs layout CSS with CSS custom properties that inherit through
the shadow DOM boundary, allowing apps with custom sidebar widths
to override the defaults.
- `--techdocs-sidebar-closed-offset-pinned` (default: 224px)
- `--techdocs-sidebar-closed-offset-collapsed` (default: 72px)
- `--techdocs-sidebar-open-translate` (default: 16rem)
Also extract all magic values into named constants.
Signed-off-by: Johan Persson <johanopersson@gmail.com>
* Add PR #33908 to patch release
Signed-off-by: Johan Persson <johanopersson@gmail.com>
---------
Signed-off-by: Johan Persson <johanopersson@gmail.com>
Add dependencies that were only available transitively through other
packages but were being imported directly:
- csstype and copy-to-clipboard in @backstage/core-components
- @storybook/react-vite in @backstage/ui
- react-aria-components in @backstage/plugin-notifications
- @octokit/core in @backstage/plugin-scaffolder-backend-module-github
- @rjsf/utils in example-app-legacy
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Remove 30 dependencies across 18 packages that have no imports in
source code and are not peer dependencies of any other dependency.
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Remove duplicated entries that appeared in both dependencies and
devDependencies across 10 packages. Also remove zod entirely from
core-compat-api as it is unused.
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Several packages had the same dependency listed in both `dependencies`
and `devDependencies`. This removes the duplicate from whichever section
is incorrect based on actual usage in the source code.
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
Add aria-labels to the theme select, color scheme toggle group,
and the individual light/dark toggle buttons.
Signed-off-by: Johan Persson <johanopersson@gmail.com>
Change changelog badge labels from spaced title case (e.g.
"Button Link") to PascalCase (e.g. "ButtonLink") so they match
the actual component names and are searchable. Hook slugs
starting with `use-` display as camelCase (e.g. "useTable").
Signed-off-by: Johan Persson <johanopersson@gmail.com>
Add `badge`, `slider`, and `use-table` to the Component type so
the changelog sync script recognizes them. Add `useTable` special
case mapping in the sync script, and include `use-table` in the
Table docs page changelog.
Also fix CHANGELOG.md to use `Slider` instead of `RangeSlider`
as the affected component name.
Signed-off-by: Johan Persson <johanopersson@gmail.com>
Add explicit type annotations to `.map()` callback parameters in
`renderInTestApp` to prevent TS7006 errors with TypeScript 6, and
update `@mswjs/interceptors` to 0.39.8 within the existing version
range.
Signed-off-by: Fredrik Adelöw <freben@spotify.com>
Made-with: Cursor
* Replace duplicate error utilities with @backstage/cli-common imports
Remove dead CustomError and ExitCodeError classes from repo-tools and
create-app, replacing them with the ExitCodeError import from
@backstage/cli-common. This fixes the instanceof check in exitWithError
so it actually catches errors thrown by cli-common's run().
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
* Add changeset for repo-tools and create-app
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
---------
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Delete the unused `ActionsService.ts` and `ActionsRegistryService.ts`
files under `services/definitions/`. These were never exported from the
definitions index and had zero imports across the repo. The canonical
copies live in the `alpha/` directory and have already diverged. Removing
these eliminates a confusing dual source of truth.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
React Aria Components v1.17.0 consolidated individual packages
into monopackages, dropping `@react-types/table` as a transitive
dependency. This caused `TS2307` errors in new app installations
where `react-aria-components@1.17.0` was resolved.
Migrate all imports from individual `@react-aria/*` and
`@react-stately/*` packages to the `react-aria` and
`react-stately` monopackages in both `@backstage/ui` and
`@backstage/plugin-app`, and update minimum dependency versions
accordingly.
Signed-off-by: Johan Persson <johanopersson@gmail.com>
Every CustomErrorBase subclass explicitly sets `name = 'ClassName' as const`
except ServiceUnavailableError, which relied on the constructor fallback that
reads `this.constructor.name`. This is fragile under minification. Added the
explicit name property for consistency and added a serialization round-trip test.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Resolve config paths relative to the target package directory instead
of the workspace root in readDatabaseClient, matching the behavior of
the rest of the config loading system.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
* fix(ui): use correct dark theme selector in Dialog
The Dialog component used [data-theme='dark'] while every other BUI
component and the global token system uses [data-theme-mode='dark'].
This mismatch meant the dark mode background rule never matched.
Signed-off-by: David Josefson <david.josefson@neo4j.com>
* Update .changeset/fix-dialog-dark-theme-selector.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: David Josefson <david.josefson@neo4j.com>
---------
Signed-off-by: David Josefson <david.josefson@neo4j.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>