storybook 10.1.0-beta.3 → 10.1.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_browser-chunks/{Color-FTG7SQDA.js → Color-TNPFN3FC.js} +2 -2
- package/dist/_browser-chunks/{WithTooltip-LMROHDUP.js → WithTooltip-IO6J4KBT.js} +2 -2
- package/dist/_node-chunks/{builder-manager-OAF6SRKJ.js → builder-manager-DKZOFL36.js} +25 -27
- package/dist/_node-chunks/{camelcase-UG5ZJHCD.js → camelcase-OYLEV2Q6.js} +7 -7
- package/dist/_node-chunks/{chunk-U24W5IIW.js → chunk-3R7S7OBR.js} +7 -7
- package/dist/_node-chunks/chunk-3SEQ2GLE.js +20 -0
- package/dist/_node-chunks/{chunk-NOTIBODG.js → chunk-3VCEM4KX.js} +6 -6
- package/dist/_node-chunks/{chunk-LZ2HPFRB.js → chunk-5ZLC6NEA.js} +7 -7
- package/dist/_node-chunks/{chunk-STYUJSG3.js → chunk-AWAJ6MNP.js} +10 -10
- package/dist/_node-chunks/chunk-BQ4MHK5P.js +23 -0
- package/dist/_node-chunks/{chunk-RABBUYPA.js → chunk-DKJWN7NS.js} +9 -9
- package/dist/_node-chunks/{chunk-A5VW7257.js → chunk-FPWWB56H.js} +642 -639
- package/dist/_node-chunks/{chunk-CRJ7M6EO.js → chunk-IKGF3NTB.js} +285 -280
- package/dist/_node-chunks/{chunk-JOOO54RB.js → chunk-ITQ5LAB5.js} +6 -6
- package/dist/_node-chunks/{chunk-WBULWRM7.js → chunk-LE77BUC7.js} +28 -24
- package/dist/_node-chunks/{chunk-SKFAHEPX.js → chunk-LGS44CQ3.js} +15 -15
- package/dist/_node-chunks/chunk-LJNPOMKR.js +61 -0
- package/dist/_node-chunks/{chunk-WSIZMTN2.js → chunk-O4VEAB4L.js} +6 -6
- package/dist/_node-chunks/{chunk-6YYH64IJ.js → chunk-O6MAIGNQ.js} +13 -13
- package/dist/_node-chunks/chunk-P5K26BIZ.js +18 -0
- package/dist/_node-chunks/{chunk-473LXK7O.js → chunk-Q6Q7GGYG.js} +6 -6
- package/dist/_node-chunks/{chunk-7WOMK33B.js → chunk-RV4TIB2A.js} +7 -7
- package/dist/_node-chunks/{chunk-745GFLCZ.js → chunk-S3FEVISB.js} +6 -6
- package/dist/_node-chunks/{chunk-XS5QCZP7.js → chunk-U55VVTKI.js} +7 -7
- package/dist/_node-chunks/{chunk-NKT3R6IH.js → chunk-UAAE3CFN.js} +6 -6
- package/dist/_node-chunks/{chunk-H6HVK5J2.js → chunk-ULRPJDQG.js} +7 -7
- package/dist/_node-chunks/{chunk-UWK6Z4VL.js → chunk-VEUCEGV5.js} +6 -6
- package/dist/_node-chunks/{chunk-SUILKNPA.js → chunk-VVQNCKWG.js} +8 -8
- package/dist/_node-chunks/{chunk-WYLXFNIP.js → chunk-WP2HYYIX.js} +9 -9
- package/dist/_node-chunks/{chunk-N5IE6WWR.js → chunk-WP55QOFC.js} +7 -7
- package/dist/_node-chunks/{chunk-TUQOGYET.js → chunk-WXJLEHGP.js} +7 -7
- package/dist/_node-chunks/{chunk-Y7VDA7NY.js → chunk-XEZ4YPF3.js} +7 -7
- package/dist/_node-chunks/{dist-N33YQ3NH.js → dist-CYJGIQZ4.js} +9 -9
- package/dist/_node-chunks/{globby-5IBS67N3.js → globby-QGM6GHYQ.js} +9 -9
- package/dist/_node-chunks/{lib-2XH6KQ2B.js → lib-R7D5AM5W.js} +7 -7
- package/dist/_node-chunks/{mdx-N42X6CFJ-3GGSRLVV.js → mdx-N42X6CFJ-WSYY7WM6.js} +8 -8
- package/dist/_node-chunks/{p-limit-Z3A7N5MY.js → p-limit-S3E66PR5.js} +7 -7
- package/dist/babel/index.js +10 -10
- package/dist/bin/core.js +12 -12
- package/dist/bin/dispatcher.js +11 -11
- package/dist/bin/loader.js +9 -9
- package/dist/cli/index.d.ts +1 -2
- package/dist/cli/index.js +18 -18
- package/dist/common/index.d.ts +553 -560
- package/dist/common/index.js +19 -21
- package/dist/components/index.d.ts +131 -117
- package/dist/components/index.js +514 -449
- package/dist/core-server/index.js +33 -33
- package/dist/core-server/presets/common-manager.js +2 -2
- package/dist/core-server/presets/common-override-preset.js +9 -9
- package/dist/core-server/presets/common-preset.js +25 -25
- package/dist/csf-tools/index.js +9 -9
- package/dist/manager/globals-runtime.js +7207 -7142
- package/dist/manager/runtime.js +226 -328
- package/dist/manager-api/index.js +1 -1
- package/dist/mocking-utils/index.js +8 -8
- package/dist/node-logger/index.d.ts +3 -1
- package/dist/node-logger/index.js +9 -9
- package/dist/server-errors.js +11 -11
- package/dist/telemetry/index.js +23 -23
- package/dist/types/index.d.ts +1 -1
- package/package.json +2 -2
- package/dist/_node-chunks/chunk-5N3H43LE.js +0 -23
- package/dist/_node-chunks/chunk-DRN5YXX5.js +0 -18
- package/dist/_node-chunks/chunk-LJRIVT23.js +0 -61
- package/dist/_node-chunks/chunk-Q65ED3UK.js +0 -20
package/dist/manager/runtime.js
CHANGED
|
@@ -2262,7 +2262,7 @@ var manager_api_default = __STORYBOOK_API__, { ActiveTabs, Consumer, ManagerCont
|
|
|
2262
2262
|
var theming_default = __STORYBOOK_THEMING__, { CacheProvider, ClassNames, Global, ThemeProvider, background, color, convert, create, createCache, createGlobal, createReset, css, darken, ensure, getPreferredColorScheme, ignoreSsrWarning, isPropValid, jsx, keyframes, lighten, styled, themes, tokens, typography, useTheme, withTheme } = __STORYBOOK_THEMING__;
|
|
2263
2263
|
|
|
2264
2264
|
// global-externals:storybook/internal/components
|
|
2265
|
-
var components_default = __STORYBOOK_COMPONENTS__, { A, AbstractToolbar, ActionBar, AddonPanel, Badge, Bar, Blockquote, Button, Card, ClipboardCode, Code, Collapsible, DL, Div, DocumentWrapper, EmptyTabContent, ErrorFormatter, FlexBar, Form, H1, H2, H3, H4, H5, H6, HR, IconButton, Img, LI, Link, ListItem,
|
|
2265
|
+
var components_default = __STORYBOOK_COMPONENTS__, { A, AbstractToolbar, ActionBar, ActionList, AddonPanel, Badge, Bar, Blockquote, Button, Card, ClipboardCode, Code, Collapsible, DL, Div, DocumentWrapper, EmptyTabContent, ErrorFormatter, FlexBar, Form, H1, H2, H3, H4, H5, H6, HR, IconButton, Img, LI, Link, ListItem, Loader, Modal, ModalDecorator, OL, P, Placeholder, Popover, PopoverProvider, Pre, ProgressSpinner, ResetWrapper, ScrollArea, Select, Separator, Spaced, Span, StatelessTab, StatelessTabList, StatelessTabPanel, StatelessTabsView, StorybookIcon: StorybookIcon2, StorybookLogo, SyntaxHighlighter, TT, TabBar, TabButton, TabList, TabPanel, TabWrapper, Table, Tabs, TabsState, TabsView, ToggleButton, Toolbar, Tooltip, TooltipLinkList, TooltipMessage, TooltipNote, TooltipProvider, UL, WithTooltip, WithTooltipPure, Zoom, codeCommon, components, convertToReactAriaPlacement, createCopyToClipboardFunction, getStoryHref, interleaveSeparators, nameSpaceClassNames, resetComponents, useTabsState, withReset } = __STORYBOOK_COMPONENTS__;
|
|
2266
2266
|
|
|
2267
2267
|
// src/toolbar/utils/normalize-toolbar-arg-type.ts
|
|
2268
2268
|
var defaultItemValues = {
|
|
@@ -2606,8 +2606,8 @@ var ToolbarMenuItemContainer = styled("div")({
|
|
|
2606
2606
|
}) => {
|
|
2607
2607
|
let [globals, updateGlobals, storyGlobals] = useGlobals(), currentValue = globals[id], isOverridden = id in storyGlobals, icon = _icon, title2 = _title;
|
|
2608
2608
|
preventDynamicIcon || (icon = getSelectedIcon({ currentValue, items }) || icon), dynamicTitle && (title2 = getSelectedTitle({ currentValue, items }) || title2), !title2 && !icon && console.warn(`Toolbar '${name}' has no title or icon`);
|
|
2609
|
-
let resetLabel = items.find((item) => item.type === "reset")?.title, options2 = items.filter((item) => item.type === "item").
|
|
2610
|
-
let itemTitle = item.title ?? item.value, iconComponent = !item.hideIcon && item.icon ? react_default.createElement(Icons, { icon: item.icon, __suppressDeprecationWarning: !0 }) : void 0;
|
|
2609
|
+
let resetLabel = items.find((item) => item.type === "reset")?.title, options2 = items.filter((item) => item.type === "item").map((item) => {
|
|
2610
|
+
let itemTitle = item.title ?? item.value ?? "Untitled", iconComponent = !item.hideIcon && item.icon ? react_default.createElement(Icons, { icon: item.icon, __suppressDeprecationWarning: !0 }) : void 0;
|
|
2611
2611
|
return item.right ? {
|
|
2612
2612
|
title: itemTitle,
|
|
2613
2613
|
value: item.value,
|
|
@@ -2621,7 +2621,7 @@ var ToolbarMenuItemContainer = styled("div")({
|
|
|
2621
2621
|
return react_default.createElement(
|
|
2622
2622
|
Select,
|
|
2623
2623
|
{
|
|
2624
|
-
defaultOptions: currentValue,
|
|
2624
|
+
defaultOptions: [currentValue],
|
|
2625
2625
|
options: options2,
|
|
2626
2626
|
disabled: isOverridden,
|
|
2627
2627
|
ariaLabel,
|
|
@@ -3128,19 +3128,19 @@ function _wrapNativeSuper(t2) {
|
|
|
3128
3128
|
if (typeof t3 != "function") throw new TypeError("Super expression must either be null or a function");
|
|
3129
3129
|
if (r3 !== void 0) {
|
|
3130
3130
|
if (r3.has(t3)) return r3.get(t3);
|
|
3131
|
-
r3.set(t3,
|
|
3131
|
+
r3.set(t3, Wrapper6);
|
|
3132
3132
|
}
|
|
3133
|
-
function
|
|
3133
|
+
function Wrapper6() {
|
|
3134
3134
|
return _construct(t3, arguments, _getPrototypeOf(this).constructor);
|
|
3135
3135
|
}
|
|
3136
|
-
return
|
|
3136
|
+
return Wrapper6.prototype = Object.create(t3.prototype, {
|
|
3137
3137
|
constructor: {
|
|
3138
|
-
value:
|
|
3138
|
+
value: Wrapper6,
|
|
3139
3139
|
enumerable: !1,
|
|
3140
3140
|
writable: !0,
|
|
3141
3141
|
configurable: !0
|
|
3142
3142
|
}
|
|
3143
|
-
}), _setPrototypeOf(
|
|
3143
|
+
}), _setPrototypeOf(Wrapper6, t3);
|
|
3144
3144
|
}, _wrapNativeSuper(t2);
|
|
3145
3145
|
}
|
|
3146
3146
|
|
|
@@ -6537,6 +6537,19 @@ var storeOptions = {
|
|
|
6537
6537
|
};
|
|
6538
6538
|
var STORE_CHANNEL_EVENT_NAME = `UNIVERSAL_STORE:${storeOptions.id}`;
|
|
6539
6539
|
|
|
6540
|
+
// src/cli/AddonVitestService.constants.ts
|
|
6541
|
+
var SUPPORTED_FRAMEWORKS = [
|
|
6542
|
+
"html-vite" /* HTML_VITE */,
|
|
6543
|
+
"nextjs-vite" /* NEXTJS_VITE */,
|
|
6544
|
+
"preact-vite" /* PREACT_VITE */,
|
|
6545
|
+
"react-native-web-vite" /* REACT_NATIVE_WEB_VITE */,
|
|
6546
|
+
"react-vite" /* REACT_VITE */,
|
|
6547
|
+
"svelte-vite" /* SVELTE_VITE */,
|
|
6548
|
+
"sveltekit" /* SVELTEKIT */,
|
|
6549
|
+
"vue3-vite" /* VUE3_VITE */,
|
|
6550
|
+
"web-components-vite" /* WEB_COMPONENTS_VITE */
|
|
6551
|
+
];
|
|
6552
|
+
|
|
6540
6553
|
// src/docs-tools/shared.ts
|
|
6541
6554
|
var ADDON_ID5 = "storybook/docs", PANEL_ID3 = `${ADDON_ID5}/panel`;
|
|
6542
6555
|
var SNIPPET_RENDERED = `${ADDON_ID5}/snippet-rendered`;
|
|
@@ -10641,6 +10654,30 @@ TourGuide.render = (props) => {
|
|
|
10641
10654
|
);
|
|
10642
10655
|
};
|
|
10643
10656
|
|
|
10657
|
+
// src/manager/hooks/useLocation.ts
|
|
10658
|
+
var LocationMonitor = {
|
|
10659
|
+
_currentHref: globalThis.window?.location.href ?? "",
|
|
10660
|
+
_intervalId: null,
|
|
10661
|
+
_listeners: /* @__PURE__ */ new Set(),
|
|
10662
|
+
start() {
|
|
10663
|
+
this._intervalId === null && (this._intervalId = setInterval(() => {
|
|
10664
|
+
let newLocation = globalThis.window.location;
|
|
10665
|
+
newLocation.href !== this._currentHref && (this._currentHref = newLocation.href, this._listeners.forEach((listener) => listener(newLocation)));
|
|
10666
|
+
}, 100));
|
|
10667
|
+
},
|
|
10668
|
+
stop() {
|
|
10669
|
+
this._intervalId !== null && (clearInterval(this._intervalId), this._intervalId = null);
|
|
10670
|
+
},
|
|
10671
|
+
subscribe(...listeners) {
|
|
10672
|
+
return listeners.forEach((listener) => this._listeners.add(listener)), this.start(), () => {
|
|
10673
|
+
listeners.forEach((listener) => this._listeners.delete(listener)), this._listeners.size === 0 && this.stop();
|
|
10674
|
+
};
|
|
10675
|
+
}
|
|
10676
|
+
}, useLocationHash = () => {
|
|
10677
|
+
let [hash, setHash] = useState(globalThis.window?.location.hash ?? "");
|
|
10678
|
+
return useEffect(() => LocationMonitor.subscribe((location2) => setHash(location2.hash)), []), hash.slice(1);
|
|
10679
|
+
};
|
|
10680
|
+
|
|
10644
10681
|
// src/shared/checklist-store/checklistData.tsx
|
|
10645
10682
|
var CodeWrapper = styled.div(({ theme }) => ({
|
|
10646
10683
|
alignSelf: "stretch",
|
|
@@ -10652,8 +10689,13 @@ var CodeWrapper = styled.div(({ theme }) => ({
|
|
|
10652
10689
|
".linenumber": {
|
|
10653
10690
|
opacity: 0.5
|
|
10654
10691
|
}
|
|
10655
|
-
})), CodeSnippet = (props) => react_default.createElement(ThemeProvider, { theme: convert(themes.dark) }, react_default.createElement(CodeWrapper, null, react_default.createElement(SyntaxHighlighter, { ...props }))), subscribeToIndex = (condition) => ({ api, done }) => {
|
|
10656
|
-
let check = () => condition(
|
|
10692
|
+
})), CodeSnippet = (props) => react_default.createElement(ThemeProvider, { theme: convert(themes.dark) }, react_default.createElement(CodeWrapper, null, react_default.createElement(SyntaxHighlighter, { ...props }))), isExample = (id) => id.startsWith("example-") || id.startsWith("configure-your-project--"), subscribeToIndex = (condition) => ({ api, done }) => {
|
|
10693
|
+
let check = () => condition(
|
|
10694
|
+
Object.entries(api.getIndex()?.entries || {}).reduce(
|
|
10695
|
+
(acc, [id, entry]) => isExample(entry.id) ? acc : Object.assign(acc, { [id]: entry }),
|
|
10696
|
+
{}
|
|
10697
|
+
)
|
|
10698
|
+
);
|
|
10657
10699
|
if (check())
|
|
10658
10700
|
done();
|
|
10659
10701
|
else
|
|
@@ -10699,7 +10741,10 @@ var CodeWrapper = styled.div(({ theme }) => ({
|
|
|
10699
10741
|
id: "renderComponent",
|
|
10700
10742
|
label: "Render a component",
|
|
10701
10743
|
criteria: "A story finished rendering successfully",
|
|
10702
|
-
subscribe: ({ api, done }) => api.on(
|
|
10744
|
+
subscribe: ({ api, done }) => api.on(
|
|
10745
|
+
STORY_FINISHED,
|
|
10746
|
+
({ storyId, status }) => status === "success" && !isExample(storyId) && done()
|
|
10747
|
+
),
|
|
10703
10748
|
content: ({ api }) => react_default.createElement(react_default.Fragment, null, react_default.createElement("p", null, "Storybook renders your components in isolation, using stories. That allows you to work on the bit of UI you need, without worrying about the rest of the app."), react_default.createElement("p", null, "Rendering your components can often require", " ", react_default.createElement(
|
|
10704
10749
|
Link,
|
|
10705
10750
|
{
|
|
@@ -10786,7 +10831,7 @@ export const Primary: Story = {
|
|
|
10786
10831
|
criteria: "At least 5 components exist in the index",
|
|
10787
10832
|
subscribe: subscribeToIndex((entries) => {
|
|
10788
10833
|
let stories = Object.values(entries).filter(
|
|
10789
|
-
(entry) => entry.type === "story"
|
|
10834
|
+
(entry) => entry.type === "story"
|
|
10790
10835
|
);
|
|
10791
10836
|
return new Set(stories.map(({ title: title2 }) => title2)).size >= 5;
|
|
10792
10837
|
})
|
|
@@ -10819,7 +10864,7 @@ export const Primary: Story = {
|
|
|
10819
10864
|
))),
|
|
10820
10865
|
criteria: "At least 20 stories exist in the index",
|
|
10821
10866
|
subscribe: subscribeToIndex((entries) => Object.values(entries).filter(
|
|
10822
|
-
(entry) => entry.type === "story"
|
|
10867
|
+
(entry) => entry.type === "story"
|
|
10823
10868
|
).length >= 20)
|
|
10824
10869
|
},
|
|
10825
10870
|
{
|
|
@@ -10828,10 +10873,9 @@ export const Primary: Story = {
|
|
|
10828
10873
|
criteria: "What's New page is opened",
|
|
10829
10874
|
action: {
|
|
10830
10875
|
label: "Go",
|
|
10831
|
-
onClick: ({ api
|
|
10832
|
-
|
|
10833
|
-
|
|
10834
|
-
}
|
|
10876
|
+
onClick: ({ api }) => api.navigate("/settings/whats-new")
|
|
10877
|
+
},
|
|
10878
|
+
subscribe: ({ accept }) => LocationMonitor.subscribe((l3) => l3.search.endsWith("/settings/whats-new") && accept())
|
|
10835
10879
|
}
|
|
10836
10880
|
]
|
|
10837
10881
|
},
|
|
@@ -10943,8 +10987,7 @@ export default {
|
|
|
10943
10987
|
id: "installVitest",
|
|
10944
10988
|
label: "Install Vitest addon",
|
|
10945
10989
|
afterCompletion: "unavailable",
|
|
10946
|
-
available: () =>
|
|
10947
|
-
// TODO check for compatibility with the project
|
|
10990
|
+
available: () => !!globalThis.STORYBOOK_FRAMEWORK && SUPPORTED_FRAMEWORKS.includes(globalThis.STORYBOOK_FRAMEWORK),
|
|
10948
10991
|
criteria: "@storybook/addon-vitest registered in .storybook/main.js|ts",
|
|
10949
10992
|
subscribe: ({ done }) => {
|
|
10950
10993
|
addons.experimental_getRegisteredAddons().includes(ADDON_ID4) && done();
|
|
@@ -11047,7 +11090,7 @@ export default {
|
|
|
11047
11090
|
criteria: "At least one story with a play or test function",
|
|
11048
11091
|
subscribe: subscribeToIndex(
|
|
11049
11092
|
(entries) => Object.values(entries).some(
|
|
11050
|
-
(
|
|
11093
|
+
(entry) => entry.tags?.includes("play-fn") || entry.tags?.includes("test-fn")
|
|
11051
11094
|
)
|
|
11052
11095
|
),
|
|
11053
11096
|
content: ({ api }) => react_default.createElement(react_default.Fragment, null, react_default.createElement("p", null, "When you need to test non-visual or particularly complex behavior of a component, add a play function."), react_default.createElement(CodeSnippet, { language: "typescript" }, `// Button.stories.ts
|
|
@@ -11319,16 +11362,16 @@ export const Disabled: Story = {
|
|
|
11319
11362
|
label: "Automatically document your components",
|
|
11320
11363
|
criteria: "At least one component with the autodocs tag applied",
|
|
11321
11364
|
subscribe: subscribeToIndex(
|
|
11322
|
-
(entries) => Object.values(entries).some(
|
|
11323
|
-
({ id, tags }) => !id.startsWith("example-") && tags?.includes("autodocs")
|
|
11324
|
-
)
|
|
11365
|
+
(entries) => Object.values(entries).some((entry) => entry.tags?.includes("autodocs"))
|
|
11325
11366
|
),
|
|
11326
|
-
content: ({ api }) => react_default.createElement(react_default.Fragment, null, react_default.createElement("p", null, "Add the autodocs tag to a component's meta to automatically generate documentation for that component, complete with examples, source code, an API table, and a description."), react_default.createElement(CodeSnippet, { language: "typescript" }, `// Button.stories.
|
|
11367
|
+
content: ({ api }) => react_default.createElement(react_default.Fragment, null, react_default.createElement("p", null, "Add the autodocs tag to a component's meta to automatically generate documentation for that component, complete with examples, source code, an API table, and a description."), react_default.createElement(CodeSnippet, { language: "typescript" }, `// Button.stories.js
|
|
11327
11368
|
|
|
11328
|
-
|
|
11369
|
+
const meta = {
|
|
11329
11370
|
component: Button,
|
|
11330
11371
|
tags: ['autodocs'], // \u{1F448} Add this tag
|
|
11331
|
-
}
|
|
11372
|
+
}
|
|
11373
|
+
|
|
11374
|
+
export default meta;`), react_default.createElement("p", null, "That tag can also be applied in ", react_default.createElement("code", null, ".storybook/preview.ts"), ", to generate documentation for ", react_default.createElement("em", null, "all"), " components."), react_default.createElement(
|
|
11332
11375
|
"img",
|
|
11333
11376
|
{
|
|
11334
11377
|
src: api.getDocsUrl({
|
|
@@ -11356,9 +11399,7 @@ export default {
|
|
|
11356
11399
|
label: "Custom content with MDX",
|
|
11357
11400
|
criteria: "At least one MDX page",
|
|
11358
11401
|
subscribe: subscribeToIndex(
|
|
11359
|
-
(entries) => Object.values(entries).some(
|
|
11360
|
-
({ id, type }) => type === "docs" && !id.startsWith("example-")
|
|
11361
|
-
)
|
|
11402
|
+
(entries) => Object.values(entries).some((entry) => entry.type === "docs")
|
|
11362
11403
|
),
|
|
11363
11404
|
content: ({ api }) => react_default.createElement(react_default.Fragment, null, react_default.createElement("p", null, "You can use MDX (markdown + React components) to provide an introduction to your project, document things like design tokens, or go beyond the automatic documentation for your components."), react_default.createElement("p", null, "For a start, create an ", react_default.createElement("code", null, "introduction.mdx"), " file and (using markdown and Storybook's", " ", react_default.createElement(
|
|
11364
11405
|
Link,
|
|
@@ -11558,7 +11599,7 @@ var Key = styled.span(({ theme }) => ({
|
|
|
11558
11599
|
onClick: () => api.changeSettingsTab("guide"),
|
|
11559
11600
|
closeOnClick: !0,
|
|
11560
11601
|
icon: react_default.createElement(ListUnorderedIcon, null),
|
|
11561
|
-
right: progress < 100 && react_default.createElement(
|
|
11602
|
+
right: progress < 100 && react_default.createElement(ActionList.Button, { as: "div", readOnly: !0, padding: "none", ariaLabel: `${progress}% completed` }, react_default.createElement(ProgressCircle, { percentage: progress, running: !1, size: 16, width: 1.5 }), progress, "%")
|
|
11562
11603
|
}),
|
|
11563
11604
|
[api, progress]
|
|
11564
11605
|
), shortcuts = useMemo(
|
|
@@ -11652,7 +11693,7 @@ var Key = styled.span(({ theme }) => ({
|
|
|
11652
11693
|
title: "Documentation",
|
|
11653
11694
|
closeOnClick: !0,
|
|
11654
11695
|
href: api.getDocsUrl({ versioned: !0, renderer: !0 }),
|
|
11655
|
-
right: react_default.createElement(
|
|
11696
|
+
right: react_default.createElement(ActionList.Icon, null, react_default.createElement(ShareAltIcon, null)),
|
|
11656
11697
|
icon: react_default.createElement(DocumentIcon, null)
|
|
11657
11698
|
}), [api]), getAddonsShortcuts = useCallback(() => {
|
|
11658
11699
|
let addonsShortcuts = api.getAddonsShortcuts(), keys = shortcutKeys;
|
|
@@ -12048,7 +12089,7 @@ var fadeScaleIn = keyframes`
|
|
|
12048
12089
|
"&:hover #checklist-module-collapse-toggle": {
|
|
12049
12090
|
opacity: 1
|
|
12050
12091
|
}
|
|
12051
|
-
}), CollapseToggle = styled(
|
|
12092
|
+
}), CollapseToggle = styled(ActionList.Button)({
|
|
12052
12093
|
opacity: 0,
|
|
12053
12094
|
transition: "opacity var(--transition-duration, 0.2s)",
|
|
12054
12095
|
"&:focus, &:hover": {
|
|
@@ -12092,20 +12133,20 @@ var fadeScaleIn = keyframes`
|
|
|
12092
12133
|
default:
|
|
12093
12134
|
return "Become an expert";
|
|
12094
12135
|
}
|
|
12095
|
-
},
|
|
12136
|
+
}, OpenGuideButton = ({
|
|
12096
12137
|
children,
|
|
12097
12138
|
afterClick
|
|
12098
12139
|
}) => {
|
|
12099
12140
|
let api = useStorybookApi();
|
|
12100
12141
|
return react_default.createElement(
|
|
12101
|
-
|
|
12142
|
+
ActionList.Action,
|
|
12102
12143
|
{
|
|
12103
12144
|
ariaLabel: "Open onboarding guide",
|
|
12104
12145
|
onClick: (e2) => {
|
|
12105
12146
|
e2.stopPropagation(), api.navigate("/settings/guide"), afterClick?.();
|
|
12106
12147
|
}
|
|
12107
12148
|
},
|
|
12108
|
-
react_default.createElement(
|
|
12149
|
+
react_default.createElement(ActionList.Icon, null, react_default.createElement(ListUnorderedIcon, null)),
|
|
12109
12150
|
children
|
|
12110
12151
|
);
|
|
12111
12152
|
}, ChecklistWidget = () => {
|
|
@@ -12128,13 +12169,13 @@ var fadeScaleIn = keyframes`
|
|
|
12128
12169
|
{
|
|
12129
12170
|
collapsed: !hasItems,
|
|
12130
12171
|
disabled: !hasItems,
|
|
12131
|
-
summary: ({ isCollapsed, toggleCollapsed, toggleProps }) => react_default.createElement(
|
|
12172
|
+
summary: ({ isCollapsed, toggleCollapsed, toggleProps }) => react_default.createElement(ActionList, { as: "div", onClick: toggleCollapsed }, react_default.createElement(ActionList.Item, { as: "div" }, react_default.createElement(ActionList.Item, { as: "div", style: { flexShrink: 1 } }, loaded && react_default.createElement(
|
|
12132
12173
|
Optional,
|
|
12133
12174
|
{
|
|
12134
|
-
content: react_default.createElement(
|
|
12135
|
-
fallback: react_default.createElement(
|
|
12175
|
+
content: react_default.createElement(OpenGuideButton, null, react_default.createElement("strong", null, title(progress))),
|
|
12176
|
+
fallback: react_default.createElement(OpenGuideButton, null)
|
|
12136
12177
|
}
|
|
12137
|
-
)), react_default.createElement(
|
|
12178
|
+
)), react_default.createElement(ActionList.Item, { as: "div" }, react_default.createElement(
|
|
12138
12179
|
CollapseToggle,
|
|
12139
12180
|
{
|
|
12140
12181
|
...toggleProps,
|
|
@@ -12152,24 +12193,23 @@ var fadeScaleIn = keyframes`
|
|
|
12152
12193
|
}
|
|
12153
12194
|
)
|
|
12154
12195
|
), loaded && react_default.createElement(
|
|
12155
|
-
|
|
12196
|
+
PopoverProvider,
|
|
12156
12197
|
{
|
|
12157
|
-
|
|
12158
|
-
|
|
12159
|
-
|
|
12160
|
-
Listbox.Action,
|
|
12198
|
+
padding: 0,
|
|
12199
|
+
popover: ({ onHide }) => react_default.createElement(ActionList, null, react_default.createElement(ActionList.Item, null, react_default.createElement(OpenGuideButton, { afterClick: onHide }, react_default.createElement(ActionList.Text, null, "Open full guide"))), react_default.createElement(ActionList.Item, null, react_default.createElement(
|
|
12200
|
+
ActionList.Action,
|
|
12161
12201
|
{
|
|
12162
12202
|
ariaLabel: !1,
|
|
12163
12203
|
onClick: (e2) => {
|
|
12164
12204
|
e2.stopPropagation(), mute(allItems.map(({ id }) => id)), onHide();
|
|
12165
12205
|
}
|
|
12166
12206
|
},
|
|
12167
|
-
react_default.createElement(
|
|
12168
|
-
react_default.createElement(
|
|
12207
|
+
react_default.createElement(ActionList.Icon, null, react_default.createElement(EyeCloseIcon, null)),
|
|
12208
|
+
react_default.createElement(ActionList.Text, null, "Remove from sidebar")
|
|
12169
12209
|
)))
|
|
12170
12210
|
},
|
|
12171
12211
|
react_default.createElement(
|
|
12172
|
-
|
|
12212
|
+
ActionList.Button,
|
|
12173
12213
|
{
|
|
12174
12214
|
ariaLabel: `${progress}% completed`,
|
|
12175
12215
|
onClick: (e2) => e2.stopPropagation()
|
|
@@ -12187,39 +12227,29 @@ var fadeScaleIn = keyframes`
|
|
|
12187
12227
|
)
|
|
12188
12228
|
))))
|
|
12189
12229
|
},
|
|
12190
|
-
react_default.createElement(
|
|
12191
|
-
([item, { status, isMounted }]) => isMounted && react_default.createElement(
|
|
12192
|
-
|
|
12230
|
+
react_default.createElement(ActionList, null, transitionItems.map(
|
|
12231
|
+
([item, { status, isMounted }]) => isMounted && react_default.createElement(ActionList.HoverItem, { key: item.id, targetId: item.id, transitionStatus: status }, react_default.createElement(
|
|
12232
|
+
ActionList.Action,
|
|
12193
12233
|
{
|
|
12194
|
-
|
|
12195
|
-
|
|
12196
|
-
targetId: item.id,
|
|
12197
|
-
transitionStatus: status
|
|
12234
|
+
ariaLabel: `Open onboarding guide for ${item.label}`,
|
|
12235
|
+
onClick: () => api.navigate(`/settings/guide#${item.id}`)
|
|
12198
12236
|
},
|
|
12199
|
-
react_default.createElement(
|
|
12200
|
-
|
|
12201
|
-
|
|
12202
|
-
|
|
12203
|
-
|
|
12204
|
-
|
|
12205
|
-
|
|
12206
|
-
|
|
12207
|
-
|
|
12208
|
-
|
|
12209
|
-
|
|
12210
|
-
|
|
12211
|
-
|
|
12212
|
-
|
|
12213
|
-
|
|
12214
|
-
|
|
12215
|
-
api,
|
|
12216
|
-
accept: () => accept(item.id)
|
|
12217
|
-
});
|
|
12218
|
-
}
|
|
12219
|
-
},
|
|
12220
|
-
item.action.label
|
|
12221
|
-
)
|
|
12222
|
-
)
|
|
12237
|
+
react_default.createElement(ActionList.Icon, null, item.isCompleted ? react_default.createElement(Particles, { anchor: Checked, key: item.id }) : react_default.createElement(StatusFailIcon, null)),
|
|
12238
|
+
react_default.createElement(ActionList.Text, null, react_default.createElement(ItemLabel, { isCompleted: item.isCompleted, isSkipped: item.isSkipped }, item.label))
|
|
12239
|
+
), item.action && react_default.createElement(
|
|
12240
|
+
ActionList.Button,
|
|
12241
|
+
{
|
|
12242
|
+
"data-target-id": item.id,
|
|
12243
|
+
ariaLabel: !1,
|
|
12244
|
+
onClick: (e2) => {
|
|
12245
|
+
e2.stopPropagation(), item.action?.onClick({
|
|
12246
|
+
api,
|
|
12247
|
+
accept: () => accept(item.id)
|
|
12248
|
+
});
|
|
12249
|
+
}
|
|
12250
|
+
},
|
|
12251
|
+
item.action.label
|
|
12252
|
+
))
|
|
12223
12253
|
))
|
|
12224
12254
|
)));
|
|
12225
12255
|
};
|
|
@@ -13764,7 +13794,7 @@ var { window: globalWindow2 } = scope, TextStyle = styled.div(({ theme }) => ({
|
|
|
13764
13794
|
), " ", "in your story files.", " "))) : react_default.createElement(Text3, null, "This composed Storybook is empty. Perhaps no stories match your selected filters.")))), LoaderBlock = ({ isMain }) => react_default.createElement(Contained, null, react_default.createElement(Loader2, { size: isMain ? 17 : 5 }));
|
|
13765
13795
|
|
|
13766
13796
|
// src/manager/components/sidebar/RefIndicator.tsx
|
|
13767
|
-
var { document: document4, window: globalWindow3 } = scope, IndicatorPlacement = styled.
|
|
13797
|
+
var { document: document4, window: globalWindow3 } = scope, IndicatorPlacement = styled.div(({ theme }) => ({
|
|
13768
13798
|
height: 16,
|
|
13769
13799
|
display: "flex",
|
|
13770
13800
|
alignItems: "center",
|
|
@@ -14090,6 +14120,7 @@ var withStatusColor = ({ theme, status }) => {
|
|
|
14090
14120
|
"&:focus": {
|
|
14091
14121
|
color: theme.color.secondary,
|
|
14092
14122
|
borderColor: theme.color.secondary,
|
|
14123
|
+
outlineOffset: -2,
|
|
14093
14124
|
"&:not(:focus-visible)": {
|
|
14094
14125
|
borderColor: "transparent"
|
|
14095
14126
|
}
|
|
@@ -14104,6 +14135,9 @@ var withStatusColor = ({ theme, status }) => {
|
|
|
14104
14135
|
), StatusButton = forwardRef((props, ref) => react_default.createElement(StyledButton, { variant: "ghost", padding: "small", ...props, ref }));
|
|
14105
14136
|
StatusButton.displayName = "StatusButton";
|
|
14106
14137
|
|
|
14138
|
+
// src/manager/components/sidebar/StatusContext.tsx
|
|
14139
|
+
var StatusContext = createContext({});
|
|
14140
|
+
|
|
14107
14141
|
// src/manager/components/sidebar/ContextMenu.tsx
|
|
14108
14142
|
var empty = {
|
|
14109
14143
|
onMouseEnter: () => {
|
|
@@ -14119,7 +14153,7 @@ var empty = {
|
|
|
14119
14153
|
outlineOffset: -2
|
|
14120
14154
|
}
|
|
14121
14155
|
}), useContextMenu = (context, links, api) => {
|
|
14122
|
-
let [hoverCount, setHoverCount] = useState(0), [isOpen, setIsOpen] = useState(!1), [copyText, setCopyText] = react_default.useState("Copy story name"), shortcutKeys = api.getShortcutKeys(), enableShortcuts = !!shortcutKeys, topLinks = useMemo(() => {
|
|
14156
|
+
let [hoverCount, setHoverCount] = useState(0), [isOpen, setIsOpen] = useState(!1), [copyText, setCopyText] = react_default.useState("Copy story name"), { allStatuses, groupStatus } = useContext(StatusContext), shortcutKeys = api.getShortcutKeys(), enableShortcuts = !!shortcutKeys, topLinks = useMemo(() => {
|
|
14123
14157
|
let defaultLinks = [];
|
|
14124
14158
|
return context && "importPath" in context && defaultLinks.push({
|
|
14125
14159
|
id: "open-in-editor",
|
|
@@ -14146,7 +14180,7 @@ var empty = {
|
|
|
14146
14180
|
}, 2e3);
|
|
14147
14181
|
}
|
|
14148
14182
|
}), defaultLinks;
|
|
14149
|
-
}, [context, copyText, enableShortcuts, shortcutKeys]), handlers = useMemo(() => ({
|
|
14183
|
+
}, [api, context, copyText, enableShortcuts, shortcutKeys]), handlers = useMemo(() => ({
|
|
14150
14184
|
onMouseEnter: () => {
|
|
14151
14185
|
setHoverCount((c2) => c2 + 1);
|
|
14152
14186
|
},
|
|
@@ -14159,7 +14193,20 @@ var empty = {
|
|
|
14159
14193
|
}), []), providerLinks = useMemo(() => {
|
|
14160
14194
|
let registeredTestProviders = api.getElements(Addon_TypesEnum.experimental_TEST_PROVIDER);
|
|
14161
14195
|
return hoverCount ? generateTestProviderLinks(registeredTestProviders, context) : [];
|
|
14162
|
-
}, [api, context, hoverCount]), shouldRender = !context.refId && (providerLinks.length > 0 || links.length > 0 || topLinks.length > 0)
|
|
14196
|
+
}, [api, context, hoverCount]), shouldRender = !context.refId && (providerLinks.length > 0 || links.length > 0 || topLinks.length > 0), isLeafNode = context.type === "story" || context.type === "docs", itemStatus = useMemo(() => {
|
|
14197
|
+
let status = "status-value:unknown";
|
|
14198
|
+
if (!context)
|
|
14199
|
+
return status;
|
|
14200
|
+
if (isLeafNode) {
|
|
14201
|
+
let values = Object.values(allStatuses?.[context.id] || {}).map((s2) => s2.value);
|
|
14202
|
+
status = getMostCriticalStatusValue(values);
|
|
14203
|
+
}
|
|
14204
|
+
if (!isLeafNode) {
|
|
14205
|
+
let groupValue = groupStatus && groupStatus[context.id];
|
|
14206
|
+
status = groupValue === "status-value:success" || groupValue === void 0 ? "status-value:unknown" : groupValue;
|
|
14207
|
+
}
|
|
14208
|
+
return status;
|
|
14209
|
+
}, [allStatuses, groupStatus, context, isLeafNode]), MenuIcon2 = useMemo(() => context.type !== "story" && context.type !== "docs" ? itemStatus !== "status-value:success" && itemStatus !== "status-value:unknown" ? react_default.createElement("svg", { key: "icon", viewBox: "0 0 6 6", width: "6", height: "6" }, react_default.createElement(UseSymbol, { type: "dot" })) : react_default.createElement(EllipsisIcon, null) : itemStatus === "status-value:error" ? react_default.createElement("svg", { key: "icon", viewBox: "0 0 14 14", width: "14", height: "14" }, react_default.createElement(UseSymbol, { type: "error" })) : itemStatus === "status-value:warning" ? react_default.createElement("svg", { key: "icon", viewBox: "0 0 14 14", width: "14", height: "14" }, react_default.createElement(UseSymbol, { type: "warning" })) : itemStatus === "status-value:success" ? react_default.createElement("svg", { key: "icon", viewBox: "0 0 14 14", width: "14", height: "14" }, react_default.createElement(UseSymbol, { type: "success" })) : react_default.createElement(EllipsisIcon, null), [itemStatus, context.type]);
|
|
14163
14210
|
return useMemo(() => globalThis.CONFIG_TYPE !== "DEVELOPMENT" ? empty : {
|
|
14164
14211
|
onMouseEnter: handlers.onMouseEnter,
|
|
14165
14212
|
node: shouldRender ? react_default.createElement(
|
|
@@ -14180,13 +14227,13 @@ var empty = {
|
|
|
14180
14227
|
"data-testid": "context-menu",
|
|
14181
14228
|
ariaLabel: "Open context menu",
|
|
14182
14229
|
type: "button",
|
|
14183
|
-
status:
|
|
14230
|
+
status: itemStatus,
|
|
14184
14231
|
onClick: handlers.onOpen
|
|
14185
14232
|
},
|
|
14186
|
-
|
|
14233
|
+
MenuIcon2
|
|
14187
14234
|
)
|
|
14188
14235
|
) : null
|
|
14189
|
-
}, [context, handlers, isOpen, shouldRender, links, topLinks]);
|
|
14236
|
+
}, [context, handlers, isOpen, shouldRender, links, topLinks, itemStatus, MenuIcon2]);
|
|
14190
14237
|
}, LiveContextMenu = ({
|
|
14191
14238
|
context,
|
|
14192
14239
|
links,
|
|
@@ -14209,33 +14256,6 @@ function generateTestProviderLinks(registeredTestProviders, context) {
|
|
|
14209
14256
|
}).filter(Boolean);
|
|
14210
14257
|
}
|
|
14211
14258
|
|
|
14212
|
-
// src/manager/components/sidebar/StatusContext.tsx
|
|
14213
|
-
var StatusContext = createContext({}), useStatusSummary = (item) => {
|
|
14214
|
-
let { data, allStatuses, groupStatus } = useContext(StatusContext), summary = {
|
|
14215
|
-
counts: {
|
|
14216
|
-
"status-value:pending": 0,
|
|
14217
|
-
"status-value:success": 0,
|
|
14218
|
-
"status-value:error": 0,
|
|
14219
|
-
"status-value:warning": 0,
|
|
14220
|
-
"status-value:unknown": 0
|
|
14221
|
-
},
|
|
14222
|
-
statusesByValue: {
|
|
14223
|
-
"status-value:pending": {},
|
|
14224
|
-
"status-value:success": {},
|
|
14225
|
-
"status-value:error": {},
|
|
14226
|
-
"status-value:warning": {},
|
|
14227
|
-
"status-value:unknown": {}
|
|
14228
|
-
}
|
|
14229
|
-
};
|
|
14230
|
-
if (data && allStatuses && groupStatus && ["status-value:pending", "status-value:warning", "status-value:error"].includes(
|
|
14231
|
-
groupStatus[item.id]
|
|
14232
|
-
))
|
|
14233
|
-
for (let storyId of getDescendantIds(data, item.id, !1))
|
|
14234
|
-
for (let status of Object.values(allStatuses[storyId] ?? {}))
|
|
14235
|
-
summary.counts[status.value]++, summary.statusesByValue[status.value][storyId] ??= [], summary.statusesByValue[status.value][storyId].push(status);
|
|
14236
|
-
return summary;
|
|
14237
|
-
};
|
|
14238
|
-
|
|
14239
14259
|
// src/manager/components/sidebar/components/CollapseIcon.tsx
|
|
14240
14260
|
var CollapseIconWrapper = styled.div(({ theme, isExpanded }) => ({
|
|
14241
14261
|
width: 8,
|
|
@@ -14578,47 +14598,19 @@ var statusOrder = [
|
|
|
14578
14598
|
setExpanded,
|
|
14579
14599
|
onSelectStoryId,
|
|
14580
14600
|
api
|
|
14581
|
-
} = props, theme = useTheme(), { isDesktop, isMobile: isMobile2, setMobileMenuOpen } = useLayout()
|
|
14601
|
+
} = props, theme = useTheme(), { isDesktop, isMobile: isMobile2, setMobileMenuOpen } = useLayout();
|
|
14582
14602
|
if (!isDisplayed)
|
|
14583
14603
|
return null;
|
|
14584
|
-
let statusLinks = useMemo(() => {
|
|
14585
|
-
|
|
14586
|
-
|
|
14587
|
-
|
|
14588
|
-
|
|
14589
|
-
|
|
14590
|
-
|
|
14591
|
-
|
|
14592
|
-
onClick: () => {
|
|
14593
|
-
onSelectStoryId(item.id), internal_fullStatusStore.selectStatuses([status]);
|
|
14594
|
-
}
|
|
14595
|
-
}));
|
|
14596
|
-
if (item.type === "component" || item.type === "group") {
|
|
14597
|
-
let links = [], errorCount = counts["status-value:error"], warningCount = counts["status-value:warning"];
|
|
14598
|
-
return errorCount && links.push({
|
|
14599
|
-
id: "errors",
|
|
14600
|
-
icon: StatusIconMap["status-value:error"],
|
|
14601
|
-
title: `${errorCount} ${errorCount === 1 ? "story" : "stories"} with errors`,
|
|
14602
|
-
onClick: () => {
|
|
14603
|
-
let [firstStoryId] = Object.entries(statusesByValue["status-value:error"])[0];
|
|
14604
|
-
onSelectStoryId(firstStoryId);
|
|
14605
|
-
let errorStatuses = Object.values(statusesByValue["status-value:error"]).flat();
|
|
14606
|
-
internal_fullStatusStore.selectStatuses(errorStatuses);
|
|
14607
|
-
}
|
|
14608
|
-
}), warningCount && links.push({
|
|
14609
|
-
id: "warnings",
|
|
14610
|
-
icon: StatusIconMap["status-value:warning"],
|
|
14611
|
-
title: `${warningCount} ${warningCount === 1 ? "story" : "stories"} with warnings`,
|
|
14612
|
-
onClick: () => {
|
|
14613
|
-
let [firstStoryId] = Object.entries(statusesByValue["status-value:warning"])[0];
|
|
14614
|
-
onSelectStoryId(firstStoryId);
|
|
14615
|
-
let warningStatuses = Object.values(statusesByValue["status-value:warning"]).flat();
|
|
14616
|
-
internal_fullStatusStore.selectStatuses(warningStatuses);
|
|
14617
|
-
}
|
|
14618
|
-
}), links;
|
|
14604
|
+
let statusLinks = useMemo(() => item.type === "story" || item.type === "docs" ? Object.entries(statuses).filter(([, status]) => status.sidebarContextMenu !== !1).sort((a2, b2) => statusOrder.indexOf(a2[1].value) - statusOrder.indexOf(b2[1].value)).map(([typeId, status]) => ({
|
|
14605
|
+
id: typeId,
|
|
14606
|
+
title: status.title,
|
|
14607
|
+
description: status.description,
|
|
14608
|
+
"aria-label": `Test status for ${status.title}: ${status.value}`,
|
|
14609
|
+
icon: StatusIconMap[status.value],
|
|
14610
|
+
onClick: () => {
|
|
14611
|
+
onSelectStoryId(item.id), internal_fullStatusStore.selectStatuses([status]);
|
|
14619
14612
|
}
|
|
14620
|
-
|
|
14621
|
-
}, [counts, item.id, item.type, onSelectStoryId, statuses, statusesByValue]), id = createId(item.id, refId), contextMenu = refId === "storybook_internal" ? useContextMenu(item, statusLinks, api) : { node: null, onMouseEnter: () => {
|
|
14613
|
+
})) : [], [item.id, item.type, onSelectStoryId, statuses]), id = createId(item.id, refId), contextMenu = refId === "storybook_internal" ? useContextMenu(item, statusLinks, api) : { node: null, onMouseEnter: () => {
|
|
14622
14614
|
} };
|
|
14623
14615
|
if (item.type === "story" && !("children" in item && item.children) && (!("subtype" in item) || item.subtype !== "test") || item.type === "docs") {
|
|
14624
14616
|
let LeafNode3 = item.type === "docs" ? DocumentNode : StoryNode, statusValue = getMostCriticalStatusValue(
|
|
@@ -15223,8 +15215,8 @@ var buttonStyleAdditions = ({
|
|
|
15223
15215
|
}), SidebarButton = styled(Button)(buttonStyleAdditions), SidebarToggleButton = styled(ToggleButton)(buttonStyleAdditions), MenuButtonGroup = styled.div({
|
|
15224
15216
|
display: "flex",
|
|
15225
15217
|
gap: 6
|
|
15226
|
-
}), SidebarMenuList = ({ menu, onHide }) => react_default.createElement(Container6, null, menu.filter((links) => links.length).flatMap((links) => react_default.createElement(
|
|
15227
|
-
|
|
15218
|
+
}), SidebarMenuList = ({ menu, onHide }) => react_default.createElement(Container6, null, menu.filter((links) => links.length).flatMap((links) => react_default.createElement(ActionList, { key: links.map((link) => link.id).join("_") }, links.map((link) => react_default.createElement(ActionList.Item, { key: link.id, active: link.active }, react_default.createElement(
|
|
15219
|
+
ActionList.Action,
|
|
15228
15220
|
{
|
|
15229
15221
|
...link.href && { as: "a", href: link.href, target: "_blank" },
|
|
15230
15222
|
ariaLabel: !1,
|
|
@@ -15244,8 +15236,8 @@ var buttonStyleAdditions = ({
|
|
|
15244
15236
|
}), link.closeOnClick && onHide();
|
|
15245
15237
|
}
|
|
15246
15238
|
},
|
|
15247
|
-
(link.icon || link.input) && react_default.createElement(
|
|
15248
|
-
(link.title || link.center) && react_default.createElement(
|
|
15239
|
+
(link.icon || link.input) && react_default.createElement(ActionList.Icon, null, link.icon || link.input),
|
|
15240
|
+
(link.title || link.center) && react_default.createElement(ActionList.Text, null, link.title || link.center),
|
|
15249
15241
|
link.right
|
|
15250
15242
|
)))))), SidebarMenu = ({ menu, isHighlighted, onClick }) => {
|
|
15251
15243
|
let [isTooltipVisible, setIsTooltipVisible] = useState(!1), { isMobile: isMobile2, setMobileMenuOpen } = useLayout();
|
|
@@ -17679,7 +17671,7 @@ var { document: document7 } = scope, DEFAULT_MAX_SEARCH_RESULTS = 50, options =
|
|
|
17679
17671
|
variant: "ghost",
|
|
17680
17672
|
ariaLabel: "Clear search",
|
|
17681
17673
|
onClick: () => {
|
|
17682
|
-
reset({ inputValue: "" }), closeMenu();
|
|
17674
|
+
reset({ inputValue: "" }), closeMenu(), inputRef.current?.focus();
|
|
17683
17675
|
}
|
|
17684
17676
|
},
|
|
17685
17677
|
react_default.createElement(CloseIcon, null)
|
|
@@ -17929,14 +17921,32 @@ var DEFAULT_HEIGHT = 500, HoverCard2 = styled(Card)({
|
|
|
17929
17921
|
display: "flex",
|
|
17930
17922
|
justifyContent: "flex-end",
|
|
17931
17923
|
gap: 4
|
|
17932
|
-
}), CollapseToggle2 = styled(Button)({
|
|
17924
|
+
}), CollapseToggle2 = styled(ActionList.Button)({
|
|
17933
17925
|
opacity: 0,
|
|
17934
17926
|
transition: "opacity 250ms",
|
|
17935
17927
|
"&:focus, &:hover": {
|
|
17936
17928
|
opacity: 1
|
|
17937
17929
|
}
|
|
17938
|
-
}), RunButton = ({
|
|
17939
|
-
|
|
17930
|
+
}), RunButton = ({
|
|
17931
|
+
children,
|
|
17932
|
+
isRunning,
|
|
17933
|
+
onRunAll,
|
|
17934
|
+
...props
|
|
17935
|
+
}) => react_default.createElement(
|
|
17936
|
+
ActionList.Button,
|
|
17937
|
+
{
|
|
17938
|
+
ariaLabel: isRunning ? "Running..." : "Run tests",
|
|
17939
|
+
tooltip: isRunning ? "Running tests..." : "Start all tests",
|
|
17940
|
+
disabled: isRunning,
|
|
17941
|
+
onClick: (e2) => {
|
|
17942
|
+
e2.stopPropagation(), onRunAll();
|
|
17943
|
+
},
|
|
17944
|
+
...props
|
|
17945
|
+
},
|
|
17946
|
+
react_default.createElement(ActionList.Icon, null, react_default.createElement(PlayAllHollowIcon, null)),
|
|
17947
|
+
children
|
|
17948
|
+
), StatusButton2 = styled(ActionList.Toggle)(
|
|
17949
|
+
{ minWidth: 28, outlineOffset: -2 },
|
|
17940
17950
|
({ pressed, status, theme }) => !pressed && (theme.base === "light" ? {
|
|
17941
17951
|
background: {
|
|
17942
17952
|
negative: theme.background.negative,
|
|
@@ -18023,36 +18033,12 @@ var DEFAULT_HEIGHT = 500, HoverCard2 = styled(Card)({
|
|
|
18023
18033
|
react_default.createElement(Bar2, { ...hasTestProviders ? { onClick: (e2) => toggleCollapsed(e2) } : {} }, react_default.createElement(Action, null, hasTestProviders && react_default.createElement(
|
|
18024
18034
|
Optional,
|
|
18025
18035
|
{
|
|
18026
|
-
content: react_default.createElement(
|
|
18027
|
-
|
|
18028
|
-
{
|
|
18029
|
-
ariaLabel: !1,
|
|
18030
|
-
tooltip: isRunning ? "Running tests..." : "Start all tests",
|
|
18031
|
-
disabled: isRunning,
|
|
18032
|
-
onClick: (e2) => {
|
|
18033
|
-
e2.stopPropagation(), onRunAll();
|
|
18034
|
-
}
|
|
18035
|
-
},
|
|
18036
|
-
react_default.createElement("span", null, isRunning ? "Running..." : "Run tests")
|
|
18037
|
-
),
|
|
18038
|
-
fallback: react_default.createElement(
|
|
18039
|
-
RunButton,
|
|
18040
|
-
{
|
|
18041
|
-
ariaLabel: isRunning ? "Running..." : "Run tests",
|
|
18042
|
-
tooltip: isRunning ? "Running tests..." : "Start all tests",
|
|
18043
|
-
disabled: isRunning,
|
|
18044
|
-
onClick: (e2) => {
|
|
18045
|
-
e2.stopPropagation(), onRunAll();
|
|
18046
|
-
}
|
|
18047
|
-
}
|
|
18048
|
-
)
|
|
18036
|
+
content: react_default.createElement(RunButton, { isRunning, onRunAll }, isRunning ? "Running..." : "Run tests"),
|
|
18037
|
+
fallback: react_default.createElement(RunButton, { isRunning, onRunAll })
|
|
18049
18038
|
}
|
|
18050
18039
|
)), react_default.createElement(Filters, null, hasTestProviders && react_default.createElement(
|
|
18051
18040
|
CollapseToggle2,
|
|
18052
18041
|
{
|
|
18053
|
-
size: "medium",
|
|
18054
|
-
variant: "ghost",
|
|
18055
|
-
padding: "small",
|
|
18056
18042
|
onClick: (e2) => toggleCollapsed(e2),
|
|
18057
18043
|
id: "testing-module-collapse-toggle",
|
|
18058
18044
|
ariaLabel: isCollapsed ? "Expand testing module" : "Collapse testing module"
|
|
@@ -18099,12 +18085,9 @@ var DEFAULT_HEIGHT = 500, HoverCard2 = styled(Card)({
|
|
|
18099
18085
|
},
|
|
18100
18086
|
warningCount < 1e3 ? warningCount : "999+"
|
|
18101
18087
|
), hasStatuses && react_default.createElement(
|
|
18102
|
-
Button,
|
|
18088
|
+
ActionList.Button,
|
|
18103
18089
|
{
|
|
18104
18090
|
id: "clear-statuses",
|
|
18105
|
-
padding: "small",
|
|
18106
|
-
variant: "ghost",
|
|
18107
|
-
size: "medium",
|
|
18108
18091
|
onClick: (e2) => {
|
|
18109
18092
|
e2.stopPropagation(), clearStatuses();
|
|
18110
18093
|
},
|
|
@@ -18236,38 +18219,12 @@ var groupByType = (filters) => filters.reduce(
|
|
|
18236
18219
|
{}
|
|
18237
18220
|
), Wrapper5 = styled.div({
|
|
18238
18221
|
minWidth: 240,
|
|
18239
|
-
maxWidth: 300
|
|
18240
|
-
|
|
18241
|
-
|
|
18242
|
-
justifyContent: "space-between",
|
|
18243
|
-
gap: 4,
|
|
18244
|
-
padding: 4,
|
|
18245
|
-
borderBottom: `1px solid ${theme.appBorderColor}`
|
|
18246
|
-
})), TagRow = styled.div({
|
|
18247
|
-
display: "flex",
|
|
18248
|
-
"& button:last-of-type": {
|
|
18249
|
-
width: 64,
|
|
18250
|
-
maxWidth: 64,
|
|
18251
|
-
marginLeft: 4,
|
|
18252
|
-
paddingLeft: 0,
|
|
18253
|
-
paddingRight: 0,
|
|
18254
|
-
fontWeight: "normal",
|
|
18255
|
-
transition: "max-width 150ms"
|
|
18256
|
-
},
|
|
18257
|
-
"&:not(:hover):not(:focus-within)": {
|
|
18258
|
-
"& button:last-of-type": {
|
|
18259
|
-
marginLeft: 0,
|
|
18260
|
-
maxWidth: 0,
|
|
18261
|
-
opacity: 0
|
|
18262
|
-
},
|
|
18263
|
-
"& svg + input": {
|
|
18264
|
-
display: "none"
|
|
18265
|
-
}
|
|
18266
|
-
}
|
|
18267
|
-
}), Label = styled.div({
|
|
18222
|
+
maxWidth: 300,
|
|
18223
|
+
maxHeight: 15.5 * 32 + 8,
|
|
18224
|
+
// 15.5 items at 32px each + 8px padding
|
|
18268
18225
|
overflow: "hidden",
|
|
18269
|
-
|
|
18270
|
-
|
|
18226
|
+
overflowY: "auto",
|
|
18227
|
+
scrollbarWidth: "thin"
|
|
18271
18228
|
}), MutedText = styled.span(({ theme }) => ({
|
|
18272
18229
|
color: theme.textMutedColor
|
|
18273
18230
|
})), TagsFilterPanel = ({
|
|
@@ -18278,7 +18235,6 @@ var groupByType = (filters) => filters.reduce(
|
|
|
18278
18235
|
toggleFilter,
|
|
18279
18236
|
setAllFilters,
|
|
18280
18237
|
resetFilters,
|
|
18281
|
-
isDevelopment,
|
|
18282
18238
|
isDefaultSelection,
|
|
18283
18239
|
hasDefaultSelection
|
|
18284
18240
|
}) => {
|
|
@@ -18289,91 +18245,72 @@ var groupByType = (filters) => filters.reduce(
|
|
|
18289
18245
|
icon,
|
|
18290
18246
|
count
|
|
18291
18247
|
}) => {
|
|
18292
|
-
let onToggle = (selected, excluded) => toggleFilter(id, selected, excluded), isIncluded = includedFilters.has(id), isExcluded = excludedFilters.has(id), isChecked = isIncluded || isExcluded,
|
|
18248
|
+
let onToggle = (selected, excluded) => toggleFilter(id, selected, excluded), isIncluded = includedFilters.has(id), isExcluded = excludedFilters.has(id), isChecked = isIncluded || isExcluded, toggleLabel = `${type} filter: ${isExcluded ? `exclude ${title2}` : title2}`, toggleTooltip = `${isChecked ? "Remove" : "Add"} ${type} filter: ${title2}`, invertButtonLabel = `${isExcluded ? "Include" : "Exclude"} ${type}: ${title2}`;
|
|
18293
18249
|
if (!(count === 0 && type === "built-in"))
|
|
18294
18250
|
return {
|
|
18295
18251
|
id: `filter-${type}-${id}`,
|
|
18296
|
-
content: react_default.createElement(
|
|
18297
|
-
|
|
18252
|
+
content: react_default.createElement(ActionList.HoverItem, { targetId: `filter-${type}-${id}` }, react_default.createElement(ActionList.Action, { as: "label", tabIndex: -1, tooltip: toggleTooltip }, react_default.createElement(ActionList.Icon, null, isExcluded ? react_default.createElement(DeleteIcon, null) : isIncluded ? null : icon, react_default.createElement(
|
|
18253
|
+
Form.Checkbox,
|
|
18298
18254
|
{
|
|
18299
|
-
|
|
18300
|
-
|
|
18301
|
-
|
|
18302
|
-
|
|
18303
|
-
{
|
|
18304
|
-
checked: isChecked,
|
|
18305
|
-
onChange: () => onToggle(!isChecked),
|
|
18306
|
-
"data-tag": title2,
|
|
18307
|
-
"aria-hidden": !0,
|
|
18308
|
-
tabIndex: -1
|
|
18309
|
-
}
|
|
18310
|
-
)),
|
|
18311
|
-
"aria-label": toggleTagLabel,
|
|
18312
|
-
title: react_default.createElement(Label, null, title2, isExcluded && react_default.createElement(MutedText, null, " (excluded)")),
|
|
18313
|
-
right: isExcluded ? react_default.createElement("s", null, count) : react_default.createElement("span", null, count)
|
|
18255
|
+
checked: isChecked,
|
|
18256
|
+
onChange: () => onToggle(!isChecked),
|
|
18257
|
+
"data-tag": title2,
|
|
18258
|
+
"aria-label": toggleLabel
|
|
18314
18259
|
}
|
|
18315
|
-
)), react_default.createElement(
|
|
18316
|
-
Button,
|
|
18260
|
+
)), react_default.createElement(ActionList.Text, null, react_default.createElement("span", null, title2, isExcluded && react_default.createElement(MutedText, null, " (excluded)"))), isExcluded ? react_default.createElement("s", null, count) : react_default.createElement("span", null, count)), react_default.createElement(
|
|
18261
|
+
ActionList.Button,
|
|
18317
18262
|
{
|
|
18318
|
-
|
|
18319
|
-
|
|
18320
|
-
onClick: () => onToggle(!0, !isExcluded)
|
|
18321
|
-
ariaLabel: invertButtonLabel
|
|
18263
|
+
"data-target-id": `filter-${type}-${id}`,
|
|
18264
|
+
ariaLabel: invertButtonLabel,
|
|
18265
|
+
onClick: () => onToggle(!0, !isExcluded)
|
|
18322
18266
|
},
|
|
18323
|
-
isExcluded ? "Include" : "Exclude"
|
|
18267
|
+
react_default.createElement("span", { style: { minWidth: 45 } }, isExcluded ? "Include" : "Exclude")
|
|
18324
18268
|
))
|
|
18325
18269
|
};
|
|
18326
18270
|
}, groups = groupByType(Object.values(filtersById)), links = Object.values(groups).map(
|
|
18327
|
-
(group) => group.sort((a2, b2) => a2.id.localeCompare(b2.id)).map((filter) => renderLink(filter)).filter(
|
|
18328
|
-
);
|
|
18329
|
-
|
|
18330
|
-
|
|
18331
|
-
id: "tags-docs",
|
|
18332
|
-
title: "Learn how to add tags",
|
|
18333
|
-
icon: react_default.createElement(DocumentIcon, null),
|
|
18334
|
-
right: react_default.createElement(ShareAltIcon, null),
|
|
18335
|
-
href: api.getDocsUrl({ subpath: "writing-stories/tags#custom-tags" })
|
|
18336
|
-
}
|
|
18337
|
-
]);
|
|
18338
|
-
let isNothingSelectedYet = includedFilters.size === 0 && excludedFilters.size === 0, filtersLabel = isNothingSelectedYet ? "Select all" : "Clear filters";
|
|
18339
|
-
return react_default.createElement(Wrapper5, { ref }, Object.keys(filtersById).length > 0 && react_default.createElement(Actions2, null, isNothingSelectedYet ? react_default.createElement(
|
|
18340
|
-
Button,
|
|
18271
|
+
(group) => group.sort((a2, b2) => a2.id.localeCompare(b2.id)).map((filter) => renderLink(filter)).filter((value) => !!value)
|
|
18272
|
+
).filter((value) => value.length > 0), hasItems = links.length > 0, hasUserTags = Object.values(filtersById).some(({ type }) => type === "tag"), isNothingSelectedYet = includedFilters.size === 0 && excludedFilters.size === 0;
|
|
18273
|
+
return react_default.createElement(Wrapper5, { ref }, hasItems && react_default.createElement(ActionList, { as: "div" }, react_default.createElement(ActionList.Item, { as: "div" }, isNothingSelectedYet ? react_default.createElement(
|
|
18274
|
+
ActionList.Button,
|
|
18341
18275
|
{
|
|
18342
18276
|
ariaLabel: !1,
|
|
18343
|
-
variant: "ghost",
|
|
18344
|
-
padding: "small",
|
|
18345
18277
|
id: "select-all",
|
|
18346
18278
|
key: "select-all",
|
|
18347
18279
|
onClick: () => setAllFilters(!0)
|
|
18348
18280
|
},
|
|
18349
18281
|
react_default.createElement(BatchAcceptIcon, null),
|
|
18350
|
-
|
|
18282
|
+
react_default.createElement(ActionList.Text, null, "Select all")
|
|
18351
18283
|
) : react_default.createElement(
|
|
18352
|
-
Button,
|
|
18284
|
+
ActionList.Button,
|
|
18353
18285
|
{
|
|
18354
18286
|
ariaLabel: !1,
|
|
18355
|
-
variant: "ghost",
|
|
18356
|
-
padding: "small",
|
|
18357
18287
|
id: "deselect-all",
|
|
18358
18288
|
key: "deselect-all",
|
|
18359
18289
|
onClick: () => setAllFilters(!1)
|
|
18360
18290
|
},
|
|
18361
18291
|
react_default.createElement(SweepIcon, null),
|
|
18362
|
-
|
|
18292
|
+
react_default.createElement(ActionList.Text, null, "Clear filters")
|
|
18363
18293
|
), hasDefaultSelection && react_default.createElement(
|
|
18364
|
-
Button,
|
|
18294
|
+
ActionList.Button,
|
|
18365
18295
|
{
|
|
18366
18296
|
id: "reset-filters",
|
|
18367
18297
|
key: "reset-filters",
|
|
18368
18298
|
onClick: resetFilters,
|
|
18369
18299
|
ariaLabel: "Reset filters",
|
|
18370
|
-
variant: "ghost",
|
|
18371
|
-
padding: "small",
|
|
18372
18300
|
tooltip: "Reset to default selection",
|
|
18373
18301
|
disabled: isDefaultSelection
|
|
18374
18302
|
},
|
|
18375
18303
|
react_default.createElement(UndoIcon, null)
|
|
18376
|
-
)), react_default.createElement(
|
|
18304
|
+
))), links.map((group) => react_default.createElement(ActionList, { key: group.map((link) => link.id).join("_") }, group.map((link) => react_default.createElement(Fragment, { key: link.id }, link.content)))), !hasUserTags && react_default.createElement(ActionList, { as: "div" }, react_default.createElement(ActionList.Item, { as: "div" }, react_default.createElement(
|
|
18305
|
+
ActionList.Link,
|
|
18306
|
+
{
|
|
18307
|
+
href: api.getDocsUrl({ subpath: "writing-stories/tags#custom-tags" }),
|
|
18308
|
+
target: "_blank"
|
|
18309
|
+
},
|
|
18310
|
+
react_default.createElement(ActionList.Icon, null, react_default.createElement(DocumentIcon, null)),
|
|
18311
|
+
react_default.createElement(ActionList.Text, null, react_default.createElement("span", null, "Learn how to add tags")),
|
|
18312
|
+
react_default.createElement(ActionList.Icon, null, react_default.createElement(ShareAltIcon, null))
|
|
18313
|
+
))));
|
|
18377
18314
|
};
|
|
18378
18315
|
|
|
18379
18316
|
// src/manager/components/sidebar/TagsFilter.tsx
|
|
@@ -18385,11 +18322,11 @@ var TAGS_FILTER = "tags-filter", BUILT_IN_TAGS = /* @__PURE__ */ new Set([
|
|
|
18385
18322
|
"unattached-mdx",
|
|
18386
18323
|
"play-fn",
|
|
18387
18324
|
"test-fn"
|
|
18388
|
-
]),
|
|
18325
|
+
]), StyledButton2 = styled(Button)(({ isHighlighted, theme }) => ({
|
|
18389
18326
|
"&:focus-visible": {
|
|
18390
18327
|
outlineOffset: 4
|
|
18391
18328
|
},
|
|
18392
|
-
...
|
|
18329
|
+
...isHighlighted && {
|
|
18393
18330
|
background: theme.background.hoverable,
|
|
18394
18331
|
color: theme.color.secondary
|
|
18395
18332
|
}
|
|
@@ -18399,9 +18336,7 @@ var TAGS_FILTER = "tags-filter", BUILT_IN_TAGS = /* @__PURE__ */ new Set([
|
|
|
18399
18336
|
}, remove = (set, id) => {
|
|
18400
18337
|
let copy3 = new Set(set);
|
|
18401
18338
|
return copy3.delete(id), copy3;
|
|
18402
|
-
}, equal3 = (left, right) => left.size === right.size && (/* @__PURE__ */ new Set([...left, ...right])).size === left.size,
|
|
18403
|
-
position: "relative"
|
|
18404
|
-
}), TagSelected = styled(Badge)(({ theme }) => ({
|
|
18339
|
+
}, equal3 = (left, right) => left.size === right.size && (/* @__PURE__ */ new Set([...left, ...right])).size === left.size, TagSelected = styled(Badge)(({ theme }) => ({
|
|
18405
18340
|
position: "absolute",
|
|
18406
18341
|
top: 7,
|
|
18407
18342
|
right: 7,
|
|
@@ -18417,7 +18352,7 @@ var TAGS_FILTER = "tags-filter", BUILT_IN_TAGS = /* @__PURE__ */ new Set([
|
|
|
18417
18352
|
fontSize: theme.typography.size.s1 - 1,
|
|
18418
18353
|
background: theme.barSelectedColor,
|
|
18419
18354
|
color: theme.color.inverseText
|
|
18420
|
-
})), TagsFilter = ({ api, indexJson,
|
|
18355
|
+
})), TagsFilter = ({ api, indexJson, tagPresets }) => {
|
|
18421
18356
|
let filtersById = useMemo(() => {
|
|
18422
18357
|
let userTagsCounts = Object.values(indexJson.entries).reduce(
|
|
18423
18358
|
(acc, entry) => (entry.tags?.forEach((tag) => {
|
|
@@ -18491,7 +18426,7 @@ var TAGS_FILTER = "tags-filter", BUILT_IN_TAGS = /* @__PURE__ */ new Set([
|
|
|
18491
18426
|
},
|
|
18492
18427
|
[expanded, setExpanded]
|
|
18493
18428
|
);
|
|
18494
|
-
return
|
|
18429
|
+
return react_default.createElement(
|
|
18495
18430
|
PopoverProvider,
|
|
18496
18431
|
{
|
|
18497
18432
|
placement: "bottom",
|
|
@@ -18508,21 +18443,21 @@ var TAGS_FILTER = "tags-filter", BUILT_IN_TAGS = /* @__PURE__ */ new Set([
|
|
|
18508
18443
|
toggleFilter,
|
|
18509
18444
|
setAllFilters,
|
|
18510
18445
|
resetFilters,
|
|
18511
|
-
isDevelopment,
|
|
18512
18446
|
isDefaultSelection: equal3(includedFilters, defaultIncluded) && equal3(excludedFilters, defaultExcluded),
|
|
18513
18447
|
hasDefaultSelection: defaultIncluded.size > 0 || defaultExcluded.size > 0
|
|
18514
18448
|
}
|
|
18515
18449
|
)
|
|
18516
18450
|
},
|
|
18517
18451
|
react_default.createElement(
|
|
18518
|
-
|
|
18452
|
+
StyledButton2,
|
|
18519
18453
|
{
|
|
18520
18454
|
key: "tags",
|
|
18521
18455
|
ariaLabel: "Tag filters",
|
|
18522
18456
|
ariaDescription: "Filter the items shown in a sidebar based on the tags applied to them.",
|
|
18457
|
+
"aria-haspopup": "dialog",
|
|
18523
18458
|
variant: "ghost",
|
|
18524
18459
|
padding: "small",
|
|
18525
|
-
|
|
18460
|
+
isHighlighted: tagsActive,
|
|
18526
18461
|
onClick: handleToggleExpand
|
|
18527
18462
|
},
|
|
18528
18463
|
react_default.createElement(FilterIcon, null),
|
|
@@ -18663,15 +18598,7 @@ var DEFAULT_REF_ID = "storybook_internal", Container7 = styled.nav(({ theme }) =
|
|
|
18663
18598
|
onOpenChange: setIsFileSearchModalOpen
|
|
18664
18599
|
}
|
|
18665
18600
|
)),
|
|
18666
|
-
searchFieldContent: indexJson && react_default.createElement(
|
|
18667
|
-
TagsFilter,
|
|
18668
|
-
{
|
|
18669
|
-
api,
|
|
18670
|
-
indexJson,
|
|
18671
|
-
isDevelopment,
|
|
18672
|
-
tagPresets
|
|
18673
|
-
}
|
|
18674
|
-
),
|
|
18601
|
+
searchFieldContent: indexJson && react_default.createElement(TagsFilter, { api, indexJson, tagPresets }),
|
|
18675
18602
|
...lastViewedProps
|
|
18676
18603
|
},
|
|
18677
18604
|
({
|
|
@@ -18813,7 +18740,7 @@ var Container8 = styled.div({
|
|
|
18813
18740
|
color: theme.base === "light" ? theme.color.dark : theme.color.lightest,
|
|
18814
18741
|
fontWeight: theme.typography.weight.regular,
|
|
18815
18742
|
fontSize: theme.typography.size.s2
|
|
18816
|
-
})),
|
|
18743
|
+
})), Actions2 = styled.div({
|
|
18817
18744
|
display: "flex",
|
|
18818
18745
|
flexDirection: "row",
|
|
18819
18746
|
alignItems: "center",
|
|
@@ -18828,7 +18755,7 @@ var Container8 = styled.div({
|
|
|
18828
18755
|
"&:hover": {
|
|
18829
18756
|
color: theme.base === "light" ? theme.color.darkest : theme.color.lightest
|
|
18830
18757
|
}
|
|
18831
|
-
})), AboutScreen = ({ onNavigateToWhatsNew }) => react_default.createElement(Container8, null, react_default.createElement(Header, null, react_default.createElement(StorybookLogo, { alt: "Storybook" })), react_default.createElement(UpgradeBlock, { onNavigateToWhatsNew }), react_default.createElement(Footer, null, react_default.createElement(
|
|
18758
|
+
})), AboutScreen = ({ onNavigateToWhatsNew }) => react_default.createElement(Container8, null, react_default.createElement(Header, null, react_default.createElement(StorybookLogo, { alt: "Storybook" })), react_default.createElement(UpgradeBlock, { onNavigateToWhatsNew }), react_default.createElement(Footer, null, react_default.createElement(Actions2, null, react_default.createElement(Button, { ariaLabel: !1, asChild: !0 }, react_default.createElement("a", { href: "https://github.com/storybookjs/storybook" }, react_default.createElement(GithubIcon, null), "GitHub")), react_default.createElement(Button, { ariaLabel: !1, asChild: !0 }, react_default.createElement("a", { href: "https://storybook.js.org/docs?ref=ui" }, react_default.createElement(DocumentIcon, { style: { display: "inline", marginRight: 5 } }), "Documentation"))), react_default.createElement("div", null, "Open source software maintained by", " ", react_default.createElement(StyledLink, { href: "https://www.chromatic.com/" }, "Chromatic"), " and the", " ", react_default.createElement(StyledLink, { href: "https://github.com/storybookjs/storybook/graphs/contributors" }, "Storybook Community"))));
|
|
18832
18759
|
|
|
18833
18760
|
// src/manager/settings/AboutPage.tsx
|
|
18834
18761
|
var NotificationClearer = class extends Component {
|
|
@@ -18852,30 +18779,6 @@ var NotificationClearer = class extends Component {
|
|
|
18852
18779
|
));
|
|
18853
18780
|
};
|
|
18854
18781
|
|
|
18855
|
-
// src/manager/components/useLocationHash.ts
|
|
18856
|
-
var hashMonitor = {
|
|
18857
|
-
currentHash: globalThis.window?.location.hash ?? "",
|
|
18858
|
-
intervalId: null,
|
|
18859
|
-
listeners: /* @__PURE__ */ new Set(),
|
|
18860
|
-
start() {
|
|
18861
|
-
this.intervalId === null && (this.intervalId = setInterval(() => {
|
|
18862
|
-
let newHash = globalThis.window.location.hash ?? "";
|
|
18863
|
-
newHash !== this.currentHash && (this.currentHash = newHash, this.listeners.forEach((listener) => listener(newHash)));
|
|
18864
|
-
}, 100));
|
|
18865
|
-
},
|
|
18866
|
-
stop() {
|
|
18867
|
-
this.intervalId !== null && (clearInterval(this.intervalId), this.intervalId = null);
|
|
18868
|
-
},
|
|
18869
|
-
subscribe(...listeners) {
|
|
18870
|
-
return listeners.forEach((listener) => this.listeners.add(listener)), this.start(), () => {
|
|
18871
|
-
listeners.forEach((listener) => this.listeners.delete(listener)), this.listeners.size === 0 && this.stop();
|
|
18872
|
-
};
|
|
18873
|
-
}
|
|
18874
|
-
}, useLocationHash = () => {
|
|
18875
|
-
let [hash, setHash] = useState(globalThis.window?.location.hash ?? "");
|
|
18876
|
-
return useEffect(() => hashMonitor.subscribe(setHash), []), hash.slice(1);
|
|
18877
|
-
};
|
|
18878
|
-
|
|
18879
18782
|
// src/manager/components/Focus/Focus.tsx
|
|
18880
18783
|
var FocusOutline = styled.div(
|
|
18881
18784
|
({ theme, active = !1, outlineOffset = 0 }) => ({
|
|
@@ -19082,7 +18985,7 @@ var Sections = styled.ol(({ theme }) => ({
|
|
|
19082
18985
|
width: visible ? "auto" : 0,
|
|
19083
18986
|
height: visible ? 18 : 16,
|
|
19084
18987
|
transition: "all var(--transition-duration, 0.2s)"
|
|
19085
|
-
})),
|
|
18988
|
+
})), Actions3 = styled.div({
|
|
19086
18989
|
alignSelf: "flex-end",
|
|
19087
18990
|
flexDirection: "row-reverse",
|
|
19088
18991
|
display: "flex",
|
|
@@ -19119,14 +19022,9 @@ var Sections = styled.ol(({ theme }) => ({
|
|
|
19119
19022
|
return { id, title: title2, items, progress };
|
|
19120
19023
|
}),
|
|
19121
19024
|
[itemsById, sectionsById]
|
|
19122
|
-
), next = useMemo(
|
|
19123
|
-
() => Object.values(sections).findIndex(
|
|
19124
|
-
({ items }) => items.some((item) => item.isOpen && item.isAvailable)
|
|
19125
|
-
),
|
|
19126
|
-
[sections]
|
|
19127
19025
|
);
|
|
19128
|
-
return react_default.createElement(Sections, null, sections.map(({ id, title: title2, items, progress }
|
|
19129
|
-
let collapsed =
|
|
19026
|
+
return react_default.createElement(Sections, null, sections.map(({ id, title: title2, items, progress }) => {
|
|
19027
|
+
let collapsed = progress === 100 && items.every((item) => item.id !== locationHash);
|
|
19130
19028
|
return react_default.createElement("li", { key: id }, react_default.createElement(Focus.Proxy, { targetId: `toggle-${id}` }, react_default.createElement(
|
|
19131
19029
|
Collapsible,
|
|
19132
19030
|
{
|
|
@@ -19140,7 +19038,7 @@ var Sections = styled.ol(({ theme }) => ({
|
|
|
19140
19038
|
},
|
|
19141
19039
|
react_default.createElement(StatusIcon2, null, react_default.createElement(Checked2, { "data-visible": progress === 100 })),
|
|
19142
19040
|
react_default.createElement(SectionHeading, null, title2),
|
|
19143
|
-
react_default.createElement(
|
|
19041
|
+
react_default.createElement(Actions3, null, react_default.createElement(
|
|
19144
19042
|
ToggleButton2,
|
|
19145
19043
|
{
|
|
19146
19044
|
...toggleProps,
|
|
@@ -19164,8 +19062,8 @@ var Sections = styled.ol(({ theme }) => ({
|
|
|
19164
19062
|
isSkipped,
|
|
19165
19063
|
...item
|
|
19166
19064
|
}) => {
|
|
19167
|
-
let isChecked = isAccepted || isDone, isCollapsed =
|
|
19168
|
-
return react_default.createElement(
|
|
19065
|
+
let isChecked = isAccepted || isDone, isCollapsed = item.id !== locationHash, isLocked = !!isLockedBy, itemContent = content?.({ api });
|
|
19066
|
+
return react_default.createElement(ActionList.Item, { key: item.id }, react_default.createElement(
|
|
19169
19067
|
Focus.Target,
|
|
19170
19068
|
{
|
|
19171
19069
|
targetHash: item.id,
|
|
@@ -19184,7 +19082,7 @@ var Sections = styled.ol(({ theme }) => ({
|
|
|
19184
19082
|
},
|
|
19185
19083
|
react_default.createElement(StatusIcon2, null, react_default.createElement(Checked2, { "data-visible": isChecked }), react_default.createElement(Skipped, { visible: isSkipped }, "Skipped")),
|
|
19186
19084
|
react_default.createElement(ItemHeading, { skipped: isSkipped }, item.label),
|
|
19187
|
-
react_default.createElement(
|
|
19085
|
+
react_default.createElement(Actions3, null, itemContent && react_default.createElement(
|
|
19188
19086
|
ToggleButton2,
|
|
19189
19087
|
{
|
|
19190
19088
|
...toggleProps,
|