Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
a0d3da9
UI: Fix regression on addon panel empty content fontsize
Sidnioulz Nov 12, 2025
c5fd0cf
Merge branch 'next' into a11y/addon-panel-font-size
yannbf Nov 12, 2025
860e8e8
UI: Avoid injecting an empty div
Sidnioulz Nov 12, 2025
f2ae071
Docs: Separate supported from community frameworks
Sidnioulz Nov 17, 2025
4eaa35c
Merge branch 'next' into sidnioulz/external-framework-consolidation
jonniebigodes Nov 18, 2025
dfdbe30
Merge branch 'next' into sidnioulz/external-framework-consolidation
jonniebigodes Nov 18, 2025
1a5e14a
Merge branch 'next' into sidnioulz/external-framework-consolidation
jonniebigodes Nov 19, 2025
d1e7bab
Update docs/index.mdx
Sidnioulz Nov 19, 2025
94f8769
Fix ListboxButton focus outline visibility
ghengeveld Nov 24, 2025
8df3666
Rename Listbox component to ActionsList to avoid implying ARIA 'listb…
ghengeveld Nov 24, 2025
2a54928
Update TagsFilterPanel to use ActionsList components instead of Toolt…
ghengeveld Nov 24, 2025
1b989be
Fix TagsFilterPanel scrolling and fix story data
ghengeveld Nov 24, 2025
9c64692
Fix empty group in TagsFilter
ghengeveld Nov 24, 2025
ce2aa7e
Always show documentation link when no user tags are defined and fix …
ghengeveld Nov 24, 2025
2edb10e
Change default tag for ActionList/Item to ul/li and fix ChecklistWidg…
ghengeveld Nov 24, 2025
6b37449
Remove prop
ghengeveld Nov 24, 2025
7131e1c
Update label match patterns according to updated aria-label attributes
ghengeveld Nov 24, 2025
885aed3
Update code/core/src/manager/components/sidebar/TagsFilterPanel.stori…
ghengeveld Nov 24, 2025
6366cd4
Merge branch 'next' into rename-listbox-to-actionslist
ghengeveld Nov 24, 2025
f7f1247
Formatting
ghengeveld Nov 24, 2025
6e62ca4
Ensure tags filter panel is closed before asserting sidebar
ghengeveld Nov 24, 2025
797b49c
Tweaks to tags panel tests
ghengeveld Nov 25, 2025
e60b009
Sometimes it takes two Escape presses to close the popover...
ghengeveld Nov 25, 2025
f77ba51
Rename ActionsList to ActionList
ghengeveld Nov 25, 2025
2cc1f59
Cleanup and consistency
ghengeveld Nov 25, 2025
327b9df
Replace ListItem with ActionList in Vitest testing module entry
ghengeveld Nov 25, 2025
263af5b
Fix Vitest testing module accessibility
ghengeveld Nov 25, 2025
3b9cea1
Add data-deprecated props to deprecated components for DOM traceability
ghengeveld Nov 25, 2025
961333e
Merge branch 'next' into rename-listbox-to-actionslist
ghengeveld Nov 25, 2025
7f46f2d
Add TODO to remove in SB 11
ghengeveld Nov 25, 2025
1052074
WIP fix select allowing undefined values from globalTypes
yannbf Nov 25, 2025
f65a556
Remove ineffective data-deprecated attribute
ghengeveld Nov 25, 2025
e431e5c
Merge branch 'next' into rename-listbox-to-actionslist
ghengeveld Nov 25, 2025
b10fed8
UI: Fix crashes in Select when passed falsy non-string options
Sidnioulz Nov 25, 2025
fa6d6ef
UI: Stop filtering undefined global types
Sidnioulz Nov 25, 2025
f8be43f
Drop flaky and unnecessary assertion
ghengeveld Nov 25, 2025
e3e32ad
Merge branch 'next' into rename-listbox-to-actionslist
ghengeveld Nov 25, 2025
f7d3304
Fix: Handle side effects of relaxing Select types
Sidnioulz Nov 25, 2025
cef2f5d
refactor: Remove unused param
Sidnioulz Nov 25, 2025
f2b690a
Fix: Avoid key conflict in Select
Sidnioulz Nov 25, 2025
a4cf0a6
UI: Refocus search input after clearing it
Sidnioulz Nov 25, 2025
bb6b1b9
UI: Rework default background of Color swatch for dark mode
Sidnioulz Nov 12, 2025
1b17317
Docs: Make Search FilledIn story content less confusing
Sidnioulz Nov 12, 2025
9ff887c
UI: Make room for ArgsTable shadow in tabbed version
Sidnioulz Nov 12, 2025
651e0d6
Merge branch 'next' into a11y/addon-panel-font-size
yannbf Nov 25, 2025
df9dc9d
Merge pull request #33021 from storybookjs/a11y/addon-panel-font-size
yannbf Nov 25, 2025
9aeb817
refactor: Help axe-core understand a hidden checkbox is not interactive
Sidnioulz Nov 25, 2025
7d0063a
Detect navigation to /settings/whats-new to autocomplete "See what's …
ghengeveld Nov 25, 2025
268d34d
Merge branch 'next-release' into next
storybook-bot Nov 25, 2025
82c16a3
Fix status button outline offset to avoid truncation by overflowing t…
ghengeveld Nov 25, 2025
14820f9
Use ActionList components in TestingWidget for consistency with Check…
ghengeveld Nov 25, 2025
8f95c6d
Move LocationMonitor to hooks dir and rename the file accordingly
ghengeveld Nov 25, 2025
2d27199
Merge pull request #33164 from storybookjs/bug/globaltypes-select-issue
yannbf Nov 25, 2025
df92371
Merge pull request #33165 from storybookjs/sidnioulz/search-clear-ref…
yannbf Nov 25, 2025
46e49fb
Merge pull request #33140 from storybookjs/rename-listbox-to-actionslist
ghengeveld Nov 25, 2025
5d35723
Merge branch 'next' into fix-testing-widget-focus-outline
ghengeveld Nov 25, 2025
65fae57
Merge pull request #33023 from storybookjs/a11y/color-swatch-bg-dark
yannbf Nov 25, 2025
53486ac
Merge pull request #33034 from storybookjs/a11y/tabbed-argstable-crop…
yannbf Nov 25, 2025
556b777
Merge pull request #33062 from storybookjs/sidnioulz/external-framewo…
kylegach Nov 25, 2025
e2e9db9
Merge pull request #33027 from storybookjs/a11y/make-search-story-les…
yannbf Nov 25, 2025
e1c96f1
UI: Fix trivial RefBlocks ARIA violations
Sidnioulz Nov 12, 2025
b75ad9d
Fix type issues with strictly typed ref
Sidnioulz Nov 12, 2025
123405f
Fix checklist heading text color
ghengeveld Nov 25, 2025
9477e23
Fix type and merge spread operations
ghengeveld Nov 25, 2025
5b805ce
Merge pull request #33026 from storybookjs/a11y/fix-basic-refblocks-a…
yannbf Nov 25, 2025
21f3f25
Merge pull request #33167 from storybookjs/detect-whats-new-url
ghengeveld Nov 25, 2025
350cf07
Merge pull request #33172 from storybookjs/fix-testing-widget-focus-o…
ghengeveld Nov 25, 2025
5299715
Write changelog for 10.1.0-beta.5 [skip ci]
storybook-bot Nov 25, 2025
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
12 changes: 12 additions & 0 deletions CHANGELOG.prerelease.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
## 10.1.0-beta.5

- Checklist: Autocomplete "See what's new" on URL navigation - [#33167](https://github.com/storybookjs/storybook/pull/33167), thanks @ghengeveld!
- Core: Fix testing widget focus outline - [#33172](https://github.com/storybookjs/storybook/pull/33172), thanks @ghengeveld!
- Core: Rename `Listbox` component to `ActionList` and use it in `TagsFilterPanel` - [#33140](https://github.com/storybookjs/storybook/pull/33140), thanks @ghengeveld!
- UI: Add padding for ArgsTable shadow in TabbedArgsTable - [#33034](https://github.com/storybookjs/storybook/pull/33034), thanks @Sidnioulz!
- UI: Fix crashes in Select when passed falsy non-string options - [#33164](https://github.com/storybookjs/storybook/pull/33164), thanks @Sidnioulz!
- UI: Fix regression on addon panel empty content fontsize - [#33021](https://github.com/storybookjs/storybook/pull/33021), thanks @Sidnioulz!
- UI: Fix trivial RefBlocks ARIA violations - [#33026](https://github.com/storybookjs/storybook/pull/33026), thanks @Sidnioulz!
- UI: Refocus search input after clearing it - [#33165](https://github.com/storybookjs/storybook/pull/33165), thanks @Sidnioulz!
- UI: Rework default background of Color swatch for dark mode - [#33023](https://github.com/storybookjs/storybook/pull/33023), thanks @Sidnioulz!

## 10.1.0-beta.4

- Angular: Migrate from RxJS to async/await in command builders and run Compodoc utility as spinner - [#33156](https://github.com/storybookjs/storybook/pull/33156), thanks @valentinpalkovic!
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ export const TableWrapper = styled.table<{

// Makes border alignment consistent w/other DocBlocks
marginInline: inAddonPanel || inTabPanel ? 0 : 1,
paddingInline: inTabPanel ? 3 : 0,

tbody: {
// Safari doesn't love shadows on tbody so we need to use a shadow filter. In order to do this,
Expand Down
5 changes: 3 additions & 2 deletions code/addons/docs/src/blocks/controls/Color.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,8 @@ const Swatches = styled.div({
width: 200,
});

const swatchBackground = `url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>')`;
const swatchBackground = (isDark: boolean) =>
`url('data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity="0.05" fill="${isDark ? 'white' : 'black'}"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>')`;

const SwatchColor = styled(Button)<{ selected?: boolean; value: string }>(
({ value, selected, theme }) => ({
Expand All @@ -56,7 +57,7 @@ const SwatchColor = styled(Button)<{ selected?: boolean; value: string }>(
'&, &:hover': {
background: 'unset',
backgroundColor: 'unset',
backgroundImage: `linear-gradient(${value}, ${value}), ${swatchBackground}, linear-gradient(hsl(0 0 100 / .4), hsl(0 0 100 / .4))`,
backgroundImage: `linear-gradient(${value}, ${value}), ${swatchBackground(theme.base === 'dark')}`,
},
})
);
Expand Down
3 changes: 2 additions & 1 deletion code/addons/pseudo-states/src/manager/PseudoStateTool.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ export const PseudoStateTool = () => {
multiSelect
onChange={(selected) => {
updateGlobals({
[PARAM_KEY]: selected.reduce((acc, curr) => ({ ...acc, [curr]: true }), {}),
// We know curr is a string because we are using string values in options
[PARAM_KEY]: selected.reduce((acc, curr) => ({ ...acc, [curr as string]: true }), {}),
});
}}
/>
Expand Down
124 changes: 55 additions & 69 deletions code/addons/vitest/src/components/TestProviderRender.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import React, { type ComponentProps, type FC } from 'react';

import {
ActionList,
Button,
Form,
ListItem,
ProgressSpinner,
ToggleButton,
} from 'storybook/internal/components';
Expand All @@ -27,10 +27,11 @@ import type { StatusValueToStoryIds } from '../use-test-provider-state';
import { Description } from './Description';
import { TestStatusIcon } from './TestStatusIcon';

const Container = styled.div({
const Container = styled.div<{ inContextMenu?: boolean }>(({ inContextMenu }) => ({
display: 'flex',
flexDirection: 'column',
});
paddingBottom: inContextMenu ? 0 : 1,
}));

const Heading = styled.div({
display: 'flex',
Expand All @@ -57,8 +58,8 @@ const Actions = styled.div({
gap: 4,
});

const Extras = styled.div({
marginBottom: 2,
const StyledActionList = styled(ActionList)({
padding: 0,
});

const Muted = styled.span(({ theme }) => ({
Expand All @@ -69,11 +70,6 @@ const Progress = styled(ProgressSpinner)({
margin: 4,
});

const Row = styled.div({
display: 'flex',
gap: 4,
});

const StopIcon = styled(StopAltIcon)({
width: 10,
});
Expand Down Expand Up @@ -147,7 +143,7 @@ export const TestProviderRender: FC<TestProviderRenderProps> = ({
: ['unknown', 'Run tests to see accessibility results'];

return (
<Container {...props}>
<Container {...props} inContextMenu={!!entry}>
<Heading>
<Info>
{entry ? (
Expand Down Expand Up @@ -257,15 +253,20 @@ export const TestProviderRender: FC<TestProviderRenderProps> = ({
)}
</Actions>
</Heading>
<Extras>
<Row>
<ListItem
as="label"
// FIXME: why interactions? why not components?
title="Interactions"
icon={entry ? null : <Form.Checkbox checked disabled />}
/>
<Button

<StyledActionList>
<ActionList.Item>
{entry ? (
<ActionList.Text>Interactions</ActionList.Text>
) : (
<ActionList.Action as="label" readOnly>
<ActionList.Icon>
<Form.Checkbox name="Interactions" checked disabled />
</ActionList.Icon>
<ActionList.Text>Interactions</ActionList.Text>
</ActionList.Action>
)}
<ActionList.Button
ariaLabel={`${componentTestStatusLabel}${
componentTestStatusValueToStoryIds['status-value:error'].length +
componentTestStatusValueToStoryIds['status-value:warning'].length >
Expand All @@ -277,9 +278,6 @@ export const TestProviderRender: FC<TestProviderRenderProps> = ({
: ''
}`}
tooltip={componentTestStatusLabel}
padding="small"
size="medium"
variant="ghost"
disabled={
componentTestStatusValueToStoryIds['status-value:error'].length === 0 &&
componentTestStatusValueToStoryIds['status-value:warning'].length === 0 &&
Expand All @@ -300,16 +298,15 @@ export const TestProviderRender: FC<TestProviderRenderProps> = ({
<TestStatusIcon status={componentTestStatusIcon} isRunning={isRunning} />
{componentTestStatusValueToStoryIds['status-value:error'].length +
componentTestStatusValueToStoryIds['status-value:warning'].length || null}
</Button>
</Row>
</ActionList.Button>
</ActionList.Item>

{!entry && (
<Row>
<ListItem
as="label"
title={watching ? <Muted>Coverage (unavailable)</Muted> : 'Coverage'}
icon={
<ActionList.Item>
<ActionList.Action as="label" readOnly={isRunning} ariaLabel={false}>
<ActionList.Icon>
<Form.Checkbox
name="Coverage"
checked={config.coverage}
disabled={isRunning}
onChange={() =>
Expand All @@ -319,34 +316,27 @@ export const TestProviderRender: FC<TestProviderRenderProps> = ({
}))
}
/>
}
/>

{/* FIXME: aria labels were not 100% consistent with the tooltip logic. Double check this logic during review please! */}
</ActionList.Icon>
<ActionList.Text>
{watching ? <Muted>Coverage (unavailable)</Muted> : 'Coverage'}
</ActionList.Text>
</ActionList.Action>
{watching ||
(currentRun.triggeredBy && !FULL_RUN_TRIGGERS.includes(currentRun.triggeredBy)) ? (
<Button
padding="small"
size="medium"
variant="ghost"
<ActionList.Button
disabled
ariaLabel={
watching
? `Coverage unavailable in watch mode`
: `Coverage unavailable when running focused tests`
: `Coverage only available after running all tests`
}
>
<InfoIcon />
</Button>
</ActionList.Button>
) : currentRun.coverageSummary ? (
<Button
<ActionList.Button
asChild
padding="small"
size="medium"
variant="ghost"
ariaLabel={
// FIXME: I can't deduce from the original tooltip logic whether this use case
// is logically possible or not. It is a reachable conditional branch in the original code.
isRunning
? 'Open coverage report (testing still in progress)'
: `Open coverage report (${currentRun.coverageSummary.percentage}% coverage)`
Expand All @@ -360,12 +350,9 @@ export const TestProviderRender: FC<TestProviderRenderProps> = ({
/>
{currentRun.coverageSummary.percentage}%
</a>
</Button>
</ActionList.Button>
) : (
<Button
padding="small"
size="medium"
variant="ghost"
<ActionList.Button
disabled
ariaLabel={
isRunning
Expand All @@ -379,19 +366,20 @@ export const TestProviderRender: FC<TestProviderRenderProps> = ({
isRunning={isRunning}
status={fatalError ? 'critical' : 'unknown'}
/>
</Button>
</ActionList.Button>
)}
</Row>
</ActionList.Item>
)}

{hasA11yAddon && (
<Row>
<ListItem
as="label"
title="Accessibility"
icon={
entry ? null : (
<ActionList.Item>
{entry ? (
<ActionList.Text>Accessibility</ActionList.Text>
) : (
<ActionList.Action as="label" readOnly={isRunning} ariaLabel={false}>
<ActionList.Icon>
<Form.Checkbox
name="Accessibility"
checked={config.a11y}
disabled={isRunning}
onChange={() =>
Expand All @@ -401,14 +389,12 @@ export const TestProviderRender: FC<TestProviderRenderProps> = ({
}))
}
/>
)
}
/>
<Button
</ActionList.Icon>
<ActionList.Text>Accessibility</ActionList.Text>
</ActionList.Action>
)}
<ActionList.Button
ariaLabel={a11yStatusLabel}
padding="small"
size="medium"
variant="ghost"
disabled={
a11yStatusValueToStoryIds['status-value:error'].length === 0 &&
a11yStatusValueToStoryIds['status-value:warning'].length === 0 &&
Expand All @@ -429,10 +415,10 @@ export const TestProviderRender: FC<TestProviderRenderProps> = ({
<TestStatusIcon status={a11yStatusIcon} isRunning={isRunning} />
{a11yStatusValueToStoryIds['status-value:error'].length +
a11yStatusValueToStoryIds['status-value:warning'].length || null}
</Button>
</Row>
</ActionList.Button>
</ActionList.Item>
)}
</Extras>
</StyledActionList>
</Container>
);
};
3 changes: 1 addition & 2 deletions code/core/src/backgrounds/components/Tool.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,6 @@ interface PureProps {

const Pure = memo(function PureTool(props: PureProps) {
const {
item,
length,
updateGlobals,
backgroundMap,
Expand Down Expand Up @@ -104,7 +103,7 @@ const Pure = memo(function PureTool(props: PureProps) {
tooltip={isLocked ? 'Background set by story parameters' : 'Change background'}
defaultOptions={backgroundName}
options={options}
onSelect={(selected) => update({ value: selected, grid: isGrid })}
onSelect={(selected) => update({ value: selected as string, grid: isGrid })}
/>
) : null}
</Fragment>
Expand Down
Loading