storybook 10.0.0-beta.0 → 10.0.0-beta.2

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.
Files changed (77) hide show
  1. package/dist/_browser-chunks/{WithTooltip-2E62HIBN.js → WithTooltip-ERFLZL6W.js} +1 -1
  2. package/dist/_browser-chunks/{chunk-FWKO3E35.js → chunk-EOILZP2R.js} +3 -1
  3. package/dist/_node-chunks/{builder-manager-OW6YGKXV.js → builder-manager-KCNW2J74.js} +13 -13
  4. package/dist/_node-chunks/{camelcase-2K3EMR6G.js → camelcase-FH5EGUIB.js} +7 -7
  5. package/dist/_node-chunks/{chunk-6JSVPEAU.js → chunk-2E5IZBC2.js} +7 -7
  6. package/dist/_node-chunks/{chunk-JDKH3XYB.js → chunk-2VH25RMB.js} +7 -7
  7. package/dist/_node-chunks/{chunk-FWUE7SRE.js → chunk-2VOEBWNF.js} +7 -7
  8. package/dist/_node-chunks/{chunk-IQAUGVYR.js → chunk-63VGATS4.js} +7 -7
  9. package/dist/_node-chunks/{chunk-5HLANIBM.js → chunk-6A2WP6N7.js} +7 -7
  10. package/dist/_node-chunks/{chunk-YWGNEBRO.js → chunk-6B3CXS7K.js} +7 -7
  11. package/dist/_node-chunks/{chunk-G46DWX7Z.js → chunk-6FPFMFFH.js} +8 -8
  12. package/dist/_node-chunks/{chunk-UHHZPSP7.js → chunk-7DWWXKIE.js} +6 -6
  13. package/dist/_node-chunks/{chunk-MUD3GH3L.js → chunk-B7L5A4BQ.js} +9 -9
  14. package/dist/_node-chunks/{chunk-GZZDIJIB.js → chunk-CGY2ITTD.js} +8 -8
  15. package/dist/_node-chunks/{chunk-GZUNYRFU.js → chunk-CIIY3F53.js} +7 -7
  16. package/dist/_node-chunks/{chunk-CD3IP6HA.js → chunk-CMFB2H3U.js} +12 -12
  17. package/dist/_node-chunks/{chunk-3QB3ZG6H.js → chunk-DPF2NDLD.js} +7 -7
  18. package/dist/_node-chunks/{chunk-2H7LZ2SD.js → chunk-FXPYWCQE.js} +7 -7
  19. package/dist/_node-chunks/{chunk-ANEKBWDX.js → chunk-HSI4BG2J.js} +16 -25
  20. package/dist/_node-chunks/{chunk-UIREEOC7.js → chunk-HSS67Y6T.js} +7 -7
  21. package/dist/_node-chunks/chunk-IAAPNJG4.js +62 -0
  22. package/dist/_node-chunks/{chunk-W6GKFQ7F.js → chunk-IBC4BVDB.js} +7 -7
  23. package/dist/_node-chunks/{chunk-NOQITS3C.js → chunk-JWFNAC5N.js} +7 -7
  24. package/dist/_node-chunks/{chunk-I3YCPGZJ.js → chunk-JZ7ZEAK6.js} +7 -7
  25. package/dist/_node-chunks/{chunk-IBXERYDG.js → chunk-KDKM7KMS.js} +7 -7
  26. package/dist/_node-chunks/{chunk-H5LTFJHQ.js → chunk-MX77OTGN.js} +46 -45
  27. package/dist/_node-chunks/chunk-NNJMYLJM.js +18 -0
  28. package/dist/_node-chunks/{chunk-FBMMEEO4.js → chunk-NTXIDMDM.js} +7 -7
  29. package/dist/_node-chunks/{chunk-7TISOZS6.js → chunk-NUODGCJN.js} +7 -7
  30. package/dist/_node-chunks/{chunk-X5GAZ3EW.js → chunk-NWTLWMJN.js} +8 -8
  31. package/dist/_node-chunks/{chunk-LH3BEEIR.js → chunk-PTT3CRNJ.js} +6 -6
  32. package/dist/_node-chunks/{chunk-NZGJJABJ.js → chunk-RSG3AEWL.js} +16 -16
  33. package/dist/_node-chunks/{chunk-VKKLKNFC.js → chunk-TLM4ECJN.js} +9 -9
  34. package/dist/_node-chunks/{chunk-R7RKO2DC.js → chunk-WBRWBEAS.js} +47029 -18559
  35. package/dist/_node-chunks/{chunk-LKB7KRSV.js → chunk-XWJNZVOR.js} +8 -8
  36. package/dist/_node-chunks/{chunk-BFXER3XW.js → chunk-ZF6AXYHM.js} +7 -7
  37. package/dist/_node-chunks/{default-browser-id-Z6WQ7DZA.js → default-browser-id-YRAH7IMC.js} +7 -7
  38. package/dist/_node-chunks/{dist-465RSKRC.js → dist-G5THJIW5.js} +9 -9
  39. package/dist/_node-chunks/{globby-LJ3MVB6M.js → globby-FGF2JG5Z.js} +9 -9
  40. package/dist/_node-chunks/{lib-OW3DENXB.js → lib-OPOVJQIO.js} +7 -7
  41. package/dist/_node-chunks/{mdx-N42X6CFJ-PYX2IFUO.js → mdx-N42X6CFJ-N5MJA4NM.js} +8 -8
  42. package/dist/_node-chunks/{p-limit-X4OG45RB.js → p-limit-JNDYEQZX.js} +8 -8
  43. package/dist/_node-chunks/{plugin-GE36R32R.js → plugin-6GW4GYGS.js} +10 -12
  44. package/dist/_node-chunks/{plugin-ALTIQMDE.js → plugin-ZL4ZLDWE.js} +10 -10
  45. package/dist/_node-chunks/{webpack-inject-mocker-runtime-plugin-NLCAF7S6.js → webpack-inject-mocker-runtime-plugin-F6BXWV4R.js} +10 -10
  46. package/dist/_node-chunks/{webpack-mock-plugin-BRYODMCC.js → webpack-mock-plugin-5QNP4V3B.js} +9 -11
  47. package/dist/babel/index.js +11 -12
  48. package/dist/bin/core.js +11 -11
  49. package/dist/bin/dispatcher.js +11 -11
  50. package/dist/bin/loader.js +8 -8
  51. package/dist/cli/index.js +20 -21
  52. package/dist/common/index.js +22 -22
  53. package/dist/components/index.d.ts +234 -2
  54. package/dist/components/index.js +3 -6
  55. package/dist/core-server/index.d.ts +540 -39
  56. package/dist/core-server/index.js +36 -36
  57. package/dist/core-server/presets/common-override-preset.js +9 -9
  58. package/dist/core-server/presets/common-preset.js +22 -31
  59. package/dist/core-server/presets/webpack/loaders/storybook-mock-transform-loader.js +9 -11
  60. package/dist/core-server/presets/webpack/loaders/webpack-automock-loader.js +10 -12
  61. package/dist/csf-tools/index.js +9 -9
  62. package/dist/manager/globals-runtime.js +4 -5
  63. package/dist/manager/runtime.js +90 -48
  64. package/dist/manager-api/index.d.ts +527 -26
  65. package/dist/manager-api/index.js +1 -1
  66. package/dist/manager-errors.d.ts +527 -0
  67. package/dist/node-logger/index.js +14 -14
  68. package/dist/preview-errors.d.ts +527 -0
  69. package/dist/router/index.d.ts +668 -10
  70. package/dist/server-errors.d.ts +527 -0
  71. package/dist/server-errors.js +10 -10
  72. package/dist/telemetry/index.js +25 -25
  73. package/dist/types/index.d.ts +523 -9
  74. package/package.json +1 -3
  75. package/dist/_node-chunks/chunk-27W2Z6VL.js +0 -28502
  76. package/dist/_node-chunks/chunk-T23YQHYB.js +0 -62
  77. package/dist/_node-chunks/chunk-YUYBO6S7.js +0 -18
@@ -16390,76 +16390,103 @@ var SidebarBottom = /* @__PURE__ */ __name(({ isDevelopment }) => {
16390
16390
  }, "SidebarBottom");
16391
16391
 
16392
16392
  // src/manager/components/sidebar/TagsFilterPanel.tsx
16393
- var BUILT_IN_TAGS_SHOW = /* @__PURE__ */ new Set(["play-fn"]);
16393
+ var BUILT_IN_TAGS = /* @__PURE__ */ new Set([
16394
+ "dev",
16395
+ "test",
16396
+ "autodocs",
16397
+ "attached-mdx",
16398
+ "unattached-mdx",
16399
+ "play-fn",
16400
+ "test-fn",
16401
+ "vitest",
16402
+ "svelte-csf",
16403
+ "svelte-csf-v4",
16404
+ "svelte-csf-v5"
16405
+ ]);
16394
16406
  var Wrapper3 = styled.div({
16395
- minWidth: 180,
16396
- maxWidth: 220
16407
+ minWidth: 240,
16408
+ maxWidth: 300
16397
16409
  });
16410
+ var Actions3 = styled.div(({ theme }) => ({
16411
+ display: "flex",
16412
+ justifyContent: "space-between",
16413
+ gap: 4,
16414
+ padding: 4,
16415
+ borderBottom: `1px solid ${theme.appBorderColor}`
16416
+ }));
16398
16417
  var TagsFilterPanel = /* @__PURE__ */ __name(({
16399
16418
  api,
16400
16419
  allTags,
16401
16420
  selectedTags,
16402
16421
  toggleTag,
16422
+ setAllTags,
16423
+ inverted,
16424
+ setInverted,
16403
16425
  isDevelopment
16404
16426
  }) => {
16405
- const userTags = allTags.filter((tag) => !BUILT_IN_TAGS_SHOW.has(tag));
16427
+ const [builtInEntries, userEntries] = Array.from(allTags.entries()).reduce(
16428
+ (acc, [tag, count]) => {
16429
+ acc[BUILT_IN_TAGS.has(tag) ? 0 : 1].push([tag, count]);
16430
+ return acc;
16431
+ },
16432
+ [[], []]
16433
+ );
16406
16434
  const docsUrl = api.getDocsUrl({ subpath: "writing-stories/tags#filtering-by-custom-tags" });
16435
+ const noTags = {
16436
+ id: "no-tags",
16437
+ title: "There are no tags. Use tags to organize and filter your Storybook.",
16438
+ isIndented: false
16439
+ };
16407
16440
  const groups = [
16408
- allTags.map((tag) => {
16441
+ allTags.size === 0 ? [noTags] : [],
16442
+ userEntries.sort((a2, b2) => a2[0].localeCompare(b2[0])).map(([tag, count]) => {
16409
16443
  const checked = selectedTags.includes(tag);
16410
16444
  const id = `tag-${tag}`;
16411
16445
  return {
16412
16446
  id,
16413
16447
  title: tag,
16414
- right: react_default.createElement(
16415
- "input",
16416
- {
16417
- type: "checkbox",
16418
- id,
16419
- name: id,
16420
- value: tag,
16421
- checked,
16422
- onChange: () => {
16423
- }
16424
- }
16425
- ),
16426
- onClick: /* @__PURE__ */ __name(() => toggleTag(tag), "onClick")
16448
+ right: count,
16449
+ input: react_default.createElement(Form.Checkbox, { checked, onChange: () => toggleTag(tag) })
16450
+ };
16451
+ }),
16452
+ builtInEntries.sort((a2, b2) => a2[0].localeCompare(b2[0])).map(([tag, count]) => {
16453
+ const checked = selectedTags.includes(tag);
16454
+ const id = `tag-${tag}`;
16455
+ return {
16456
+ id,
16457
+ title: tag,
16458
+ right: count,
16459
+ input: react_default.createElement(Form.Checkbox, { checked, onChange: () => toggleTag(tag) })
16427
16460
  };
16428
16461
  })
16429
16462
  ];
16430
- if (allTags.length === 0) {
16431
- groups.push([
16432
- {
16433
- id: "no-tags",
16434
- title: "There are no tags. Use tags to organize and filter your Storybook.",
16435
- isIndented: false
16436
- }
16437
- ]);
16438
- }
16439
- if (userTags.length === 0 && isDevelopment) {
16463
+ if (userEntries.length === 0 && isDevelopment) {
16440
16464
  groups.push([
16441
16465
  {
16442
16466
  id: "tags-docs",
16443
16467
  title: "Learn how to add tags",
16444
- icon: react_default.createElement(ShareAltIcon, null),
16468
+ icon: react_default.createElement(DocumentIcon, null),
16469
+ right: react_default.createElement(ShareAltIcon, null),
16445
16470
  href: docsUrl
16446
16471
  }
16447
16472
  ]);
16448
16473
  }
16449
- return react_default.createElement(Wrapper3, null, react_default.createElement(TooltipLinkList, { links: groups }));
16474
+ return react_default.createElement(Wrapper3, null, allTags.size > 0 && react_default.createElement(Actions3, null, selectedTags.length ? react_default.createElement(IconButton, { id: "unselect-all", onClick: () => setAllTags(false) }, react_default.createElement(CloseIcon, null), "Clear filters") : react_default.createElement(IconButton, { id: "select-all", onClick: () => setAllTags(true) }, react_default.createElement(BatchAcceptIcon, null), "Select all"), react_default.createElement(
16475
+ IconButton,
16476
+ {
16477
+ id: "invert-selection",
16478
+ disabled: selectedTags.length === 0,
16479
+ onClick: () => setInverted(!inverted),
16480
+ active: inverted
16481
+ },
16482
+ inverted ? react_default.createElement(EyeCloseIcon, null) : react_default.createElement(EyeIcon, null),
16483
+ "Invert"
16484
+ )), react_default.createElement(TooltipLinkList, { links: groups }));
16450
16485
  }, "TagsFilterPanel");
16451
16486
 
16452
16487
  // src/manager/components/sidebar/TagsFilter.tsx
16453
16488
  var TAGS_FILTER = "tags-filter";
16454
- var BUILT_IN_TAGS_HIDE = /* @__PURE__ */ new Set([
16455
- "dev",
16456
- "docs-only",
16457
- "test-only",
16458
- "autodocs",
16459
- "test",
16460
- "attached-mdx",
16461
- "unattached-mdx"
16462
- ]);
16489
+ var BUILT_IN_TAGS_HIDE = /* @__PURE__ */ new Set(["dev", "autodocs", "test", "attached-mdx", "unattached-mdx"]);
16463
16490
  var Wrapper4 = styled.div({
16464
16491
  position: "relative"
16465
16492
  });
@@ -16488,23 +16515,25 @@ var TagsFilter = /* @__PURE__ */ __name(({
16488
16515
  }) => {
16489
16516
  const [selectedTags, setSelectedTags] = useState(initialSelectedTags);
16490
16517
  const [expanded, setExpanded] = useState(false);
16518
+ const [inverted, setInverted] = useState(false);
16491
16519
  const tagsActive = selectedTags.length > 0;
16492
16520
  useEffect(() => {
16493
16521
  api.experimental_setFilter(TAGS_FILTER, (item) => {
16494
16522
  if (selectedTags.length === 0) {
16495
16523
  return true;
16496
16524
  }
16497
- return selectedTags.some((tag) => item.tags?.includes(tag));
16525
+ const match = selectedTags.some((tag) => item.tags?.includes(tag));
16526
+ return inverted ? !match : match;
16498
16527
  });
16499
- }, [api, selectedTags]);
16528
+ }, [api, selectedTags, inverted]);
16500
16529
  const allTags = Object.values(indexJson.entries).reduce((acc, entry) => {
16501
16530
  entry.tags?.forEach((tag) => {
16502
16531
  if (!BUILT_IN_TAGS_HIDE.has(tag)) {
16503
- acc.add(tag);
16532
+ acc.set(tag, (acc.get(tag) || 0) + 1);
16504
16533
  }
16505
16534
  });
16506
16535
  return acc;
16507
- }, /* @__PURE__ */ new Set());
16536
+ }, /* @__PURE__ */ new Map());
16508
16537
  const toggleTag = useCallback(
16509
16538
  (tag) => {
16510
16539
  if (selectedTags.includes(tag)) {
@@ -16515,6 +16544,17 @@ var TagsFilter = /* @__PURE__ */ __name(({
16515
16544
  },
16516
16545
  [selectedTags, setSelectedTags]
16517
16546
  );
16547
+ const setAllTags = useCallback(
16548
+ (selected) => {
16549
+ if (selected) {
16550
+ setSelectedTags(Array.from(allTags.keys()));
16551
+ } else {
16552
+ setSelectedTags([]);
16553
+ setInverted(false);
16554
+ }
16555
+ },
16556
+ [allTags, setSelectedTags]
16557
+ );
16518
16558
  const handleToggleExpand = useCallback(
16519
16559
  (event) => {
16520
16560
  event.preventDefault();
@@ -16525,21 +16565,23 @@ var TagsFilter = /* @__PURE__ */ __name(({
16525
16565
  if (allTags.size === 0 && !isDevelopment) {
16526
16566
  return null;
16527
16567
  }
16528
- const tags = Array.from(allTags);
16529
- tags.sort();
16530
16568
  return react_default.createElement(
16531
16569
  WithTooltip,
16532
16570
  {
16533
16571
  placement: "bottom",
16534
16572
  trigger: "click",
16535
16573
  onVisibleChange: setExpanded,
16574
+ portalContainer: "#storybook-mobile-menu",
16536
16575
  tooltip: () => react_default.createElement(
16537
16576
  TagsFilterPanel,
16538
16577
  {
16539
16578
  api,
16540
- allTags: tags,
16579
+ allTags,
16541
16580
  selectedTags,
16542
16581
  toggleTag,
16582
+ setAllTags,
16583
+ inverted,
16584
+ setInverted,
16543
16585
  isDevelopment
16544
16586
  }
16545
16587
  ),
@@ -23627,7 +23669,7 @@ var Footer = styled.div(({ theme }) => ({
23627
23669
  fontWeight: theme.typography.weight.regular,
23628
23670
  fontSize: theme.typography.size.s2
23629
23671
  }));
23630
- var Actions3 = styled.div({
23672
+ var Actions4 = styled.div({
23631
23673
  display: "flex",
23632
23674
  flexDirection: "row",
23633
23675
  alignItems: "center",
@@ -23645,7 +23687,7 @@ var StyledLink = styled(Link)(({ theme }) => ({
23645
23687
  }
23646
23688
  }));
23647
23689
  var AboutScreen = /* @__PURE__ */ __name(({ onNavigateToWhatsNew }) => {
23648
- return 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(Actions3, null, react_default.createElement(Button, { asChild: true }, react_default.createElement("a", { href: "https://github.com/storybookjs/storybook" }, react_default.createElement(GithubIcon, null), "GitHub")), react_default.createElement(Button, { asChild: true }, 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"))));
23690
+ return 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(Actions4, null, react_default.createElement(Button, { asChild: true }, react_default.createElement("a", { href: "https://github.com/storybookjs/storybook" }, react_default.createElement(GithubIcon, null), "GitHub")), react_default.createElement(Button, { asChild: true }, 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"))));
23649
23691
  }, "AboutScreen");
23650
23692
 
23651
23693
  // src/manager/settings/AboutPage.tsx