@storybook/addon-docs 10.4.0-alpha.8 → 10.4.0-beta.0

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/blocks.js CHANGED
@@ -581,8 +581,8 @@ import React15, { Suspense, lazy } from "react";
581
581
  // src/blocks/controls/Boolean.tsx
582
582
  import React, { useCallback } from "react";
583
583
  import { Button } from "storybook/internal/components";
584
- import { styled } from "storybook/theming";
585
- var Label = styled.label(({ theme }) => ({
584
+ import { srOnlyStyles, styled } from "storybook/theming";
585
+ var getBooleanControlStyles = (theme) => ({
586
586
  lineHeight: "18px",
587
587
  alignItems: "center",
588
588
  marginBottom: 8,
@@ -598,28 +598,26 @@ var Label = styled.label(({ theme }) => ({
598
598
  cursor: "not-allowed"
599
599
  }
600
600
  },
601
+ "@media (forced-colors: active)": {
602
+ background: "ButtonFace",
603
+ outline: "1px solid ButtonText"
604
+ },
605
+ "&:focus-within": {
606
+ outline: `1px solid ${theme.color.secondary}`,
607
+ outlineOffset: 1,
608
+ "@media (forced-colors: active)": {
609
+ outline: "1px solid Highlight",
610
+ outlineOffset: 1
611
+ }
612
+ },
601
613
  input: {
614
+ ...srOnlyStyles,
602
615
  appearance: "none",
603
- width: "100%",
604
- height: "100%",
605
- position: "absolute",
606
616
  left: 0,
607
617
  top: 0,
608
- margin: 0,
609
- padding: 0,
610
- border: "none",
611
618
  background: "transparent",
612
619
  cursor: "pointer",
613
- borderRadius: "3em",
614
- "&:focus": {
615
- outline: "none",
616
- boxShadow: `${theme.color.secondary} 0 0 0 1px inset !important`
617
- },
618
- "@media (forced-colors: active)": {
619
- "&:focus": {
620
- outline: "1px solid highlight"
621
- }
622
- }
620
+ borderRadius: "3em"
623
621
  },
624
622
  span: {
625
623
  textAlign: "center",
@@ -634,9 +632,6 @@ var Label = styled.label(({ theme }) => ({
634
632
  borderRadius: "3em",
635
633
  color: curriedTransparentize$1(0.5, theme.color.defaultText),
636
634
  background: "transparent",
637
- "&:hover": {
638
- boxShadow: `${curriedOpacify$1(0.3, theme.appBorderColor)} 0 0 0 1px inset`
639
- },
640
635
  "&:active": {
641
636
  boxShadow: `${curriedOpacify$1(0.05, theme.appBorderColor)} 0 0 0 2px inset`,
642
637
  color: curriedOpacify$1(1, theme.appBorderColor)
@@ -646,6 +641,10 @@ var Label = styled.label(({ theme }) => ({
646
641
  },
647
642
  "&:last-of-type": {
648
643
  paddingLeft: 8
644
+ },
645
+ "@media (forced-colors: active)": {
646
+ color: "ButtonText",
647
+ boxShadow: "none"
649
648
  }
650
649
  },
651
650
  "input:checked ~ span:last-of-type, input:not(:checked) ~ span:first-of-type": {
@@ -654,10 +653,14 @@ var Label = styled.label(({ theme }) => ({
654
653
  color: theme.color.defaultText,
655
654
  padding: "7px 15px",
656
655
  "@media (forced-colors: active)": {
657
- textDecoration: "underline"
656
+ forcedColorAdjust: "none",
657
+ background: "Highlight",
658
+ color: "HighlightText",
659
+ boxShadow: "none",
660
+ outline: "1px solid ButtonText"
658
661
  }
659
662
  }
660
- })), parse = (value) => value === "true", BooleanControl = ({
663
+ }), Label = styled.label(({ theme }) => getBooleanControlStyles(theme)), parse = (value) => value === "true", BooleanControl = ({
661
664
  name,
662
665
  storyId,
663
666
  value,
@@ -3317,6 +3320,15 @@ var TableWrapper2 = styled18.table(({ theme, compact: compact2, inAddonPanel, in
3317
3320
  borderBottomRightRadius: theme.appBorderRadius
3318
3321
  }
3319
3322
  }
3323
+ },
3324
+ // High contrast mode: ensure borders are visible with system colors
3325
+ "@media (forced-colors: active)": {
3326
+ tbody: {
3327
+ filter: "none",
3328
+ "> tr > *": {
3329
+ borderColor: "CanvasText"
3330
+ }
3331
+ }
3320
3332
  }
3321
3333
  // End awesome table styling
3322
3334
  }
@@ -4190,6 +4202,7 @@ var DocsContext = globalThis ? globalThis.__DOCS_CONTEXT__ : createContext(null)
4190
4202
 
4191
4203
  // src/blocks/blocks/Story.tsx
4192
4204
  import React26, { useContext } from "react";
4205
+ import { InvalidBlockOfPropError } from "storybook/internal/preview-errors";
4193
4206
 
4194
4207
  // src/blocks/blocks/useStory.ts
4195
4208
  import { useEffect as useEffect8, useState as useState11 } from "react";
@@ -4240,7 +4253,7 @@ var MDX_WRAPPED_BLOCK = Symbol("mdxWrappedBlock"), MdxWrappedBlockContext = Reac
4240
4253
  var getStoryId = (props, context) => {
4241
4254
  let { of, meta } = props;
4242
4255
  if ("of" in props && of === void 0)
4243
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
4256
+ throw new InvalidBlockOfPropError();
4244
4257
  return meta && context.referenceMeta(meta, !1), context.resolveOf(of || "story", ["story"]).story.id;
4245
4258
  }, getStoryProps = (props, story, context) => {
4246
4259
  let { parameters = {} } = story || {}, { docs = {} } = parameters, storyParameters = docs.story || {};
@@ -5490,6 +5503,7 @@ var anchorBlockIdFromId = (storyId) => `anchor--${storyId}`, Anchor = ({ storyId
5490
5503
 
5491
5504
  // src/blocks/blocks/ArgTypes.tsx
5492
5505
  import React37 from "react";
5506
+ import { InvalidBlockOfPropError as InvalidBlockOfPropError2 } from "storybook/internal/preview-errors";
5493
5507
  import { filterArgTypes } from "storybook/preview-api";
5494
5508
 
5495
5509
  // src/blocks/blocks/useOf.ts
@@ -5542,7 +5556,7 @@ function getArgTypesFromResolved(resolved) {
5542
5556
  var ArgTypesImpl = (props) => {
5543
5557
  let { of } = props;
5544
5558
  if ("of" in props && of === void 0)
5545
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
5559
+ throw new InvalidBlockOfPropError2();
5546
5560
  let resolved = useOf(of || "meta"), { argTypes, parameters, component, subcomponents } = getArgTypesFromResolved(resolved), argTypesParameters = parameters?.docs?.argTypes || {}, include = props.include ?? argTypesParameters.include, exclude = props.exclude ?? argTypesParameters.exclude, sort = props.sort ?? argTypesParameters.sort, filteredArgTypes = filterArgTypes(argTypes, include, exclude);
5547
5561
  if (!(!!subcomponents && Object.keys(subcomponents || {}).length > 0))
5548
5562
  return React37.createElement(ArgsTable, { rows: filteredArgTypes, sort });
@@ -5568,10 +5582,12 @@ var ArgTypesImpl = (props) => {
5568
5582
  // src/blocks/blocks/Canvas.tsx
5569
5583
  import React40, { useCallback as useCallback7, useContext as useContext5 } from "react";
5570
5584
  import { FORCE_REMOUNT } from "storybook/internal/core-events";
5585
+ import { InvalidBlockOfPropError as InvalidBlockOfPropError4 } from "storybook/internal/preview-errors";
5571
5586
 
5572
5587
  // src/blocks/blocks/Source.tsx
5573
5588
  import React39, { useContext as useContext4, useMemo as useMemo4 } from "react";
5574
5589
  import { SourceType } from "storybook/internal/docs-tools";
5590
+ import { InvalidBlockOfPropError as InvalidBlockOfPropError3 } from "storybook/internal/preview-errors";
5575
5591
 
5576
5592
  // src/blocks/blocks/SourceContainer.tsx
5577
5593
  import React38, { createContext as createContext3, useEffect as useEffect11, useState as useState14 } from "react";
@@ -6644,7 +6660,7 @@ function useTransformCode(source, transform, storyContext) {
6644
6660
  }
6645
6661
 
6646
6662
  // src/blocks/blocks/Source.tsx
6647
- var getStorySource = (storyId, args, sourceContext) => {
6663
+ var EMPTY_SOURCE_CONTEXT = { sources: {} }, getStorySource = (storyId, args, sourceContext) => {
6648
6664
  let { sources } = sourceContext, sourceMap = sources?.[storyId];
6649
6665
  return sourceMap?.[argsHash(args)] || sourceMap?.[UNKNOWN_ARGS_HASH] || { code: "" };
6650
6666
  }, useCode = ({
@@ -6671,9 +6687,9 @@ var getStorySource = (storyId, args, sourceContext) => {
6671
6687
  transformFromProps: props.transform
6672
6688
  });
6673
6689
  if ("of" in props && of === void 0)
6674
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
6690
+ throw new InvalidBlockOfPropError3();
6675
6691
  let sourceParameters = story?.parameters?.docs?.source || {}, format2 = props.format, language = props.language ?? sourceParameters.language ?? "jsx", dark = props.dark ?? sourceParameters.dark ?? !1;
6676
- return !props.code && !story ? { error: "Oh no! The source is not available." /* SOURCE_UNAVAILABLE */ } : props.code ? {
6692
+ return props.code === void 0 && !story ? { error: "Oh no! The source is not available." /* SOURCE_UNAVAILABLE */ } : props.code !== void 0 ? {
6677
6693
  code: props.code,
6678
6694
  format: format2,
6679
6695
  language,
@@ -6684,16 +6700,19 @@ var getStorySource = (storyId, args, sourceContext) => {
6684
6700
  language,
6685
6701
  dark
6686
6702
  });
6687
- }, SourceImpl = (props) => {
6703
+ }, SourceWithStorySnippet = (props) => {
6688
6704
  let sourceContext = useContext4(SourceContext), docsContext = useContext4(DocsContext), sourceProps = useSourceProps(props, docsContext, sourceContext);
6689
6705
  return React39.createElement(Source, { ...sourceProps });
6690
- }, Source2 = withMdxComponentOverride("Source", SourceImpl);
6706
+ }, SourceWithCode = (props) => {
6707
+ let docsContext = useContext4(DocsContext), sourceProps = useSourceProps(props, docsContext, EMPTY_SOURCE_CONTEXT);
6708
+ return React39.createElement(Source, { ...sourceProps });
6709
+ }, SourceImpl = (props) => props.code !== void 0 ? React39.createElement(SourceWithCode, { ...props }) : React39.createElement(SourceWithStorySnippet, { ...props }), Source2 = withMdxComponentOverride("Source", SourceImpl);
6691
6710
 
6692
6711
  // src/blocks/blocks/Canvas.tsx
6693
6712
  var CanvasImpl = (props) => {
6694
6713
  let docsContext = useContext5(DocsContext), sourceContext = useContext5(SourceContext), { of, source } = props;
6695
6714
  if ("of" in props && of === void 0)
6696
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
6715
+ throw new InvalidBlockOfPropError4();
6697
6716
  let { story } = useOf(of || "story", ["story"]), sourceProps = useSourceProps({ ...source, ...of && { of } }, docsContext, sourceContext), layout = props.layout ?? story.parameters.layout ?? story.parameters.docs?.canvas?.layout ?? "padded", withToolbar = props.withToolbar ?? story.parameters.docs?.canvas?.withToolbar ?? !1, additionalActions = props.additionalActions ?? story.parameters.docs?.canvas?.additionalActions, sourceState = props.sourceState ?? story.parameters.docs?.canvas?.sourceState ?? "hidden", className = props.className ?? story.parameters.docs?.canvas?.className, inline = props.story?.inline ?? story.parameters?.docs?.story?.inline ?? !1, handleReloadStory = useCallback7(() => {
6698
6717
  docsContext.channel.emit(FORCE_REMOUNT, { storyId: story.id });
6699
6718
  }, [docsContext.channel, story.id]);
@@ -6818,6 +6837,7 @@ var ControlsImpl = (props) => {
6818
6837
 
6819
6838
  // src/blocks/blocks/Description.tsx
6820
6839
  import React44 from "react";
6840
+ import { InvalidBlockOfPropError as InvalidBlockOfPropError5 } from "storybook/internal/preview-errors";
6821
6841
 
6822
6842
  // src/blocks/blocks/Markdown.tsx
6823
6843
  import React43 from "react";
@@ -7016,7 +7036,7 @@ var DescriptionType = /* @__PURE__ */ ((DescriptionType2) => (DescriptionType2.I
7016
7036
  }, DescriptionImpl = (props) => {
7017
7037
  let { of } = props;
7018
7038
  if ("of" in props && of === void 0)
7019
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
7039
+ throw new InvalidBlockOfPropError5();
7020
7040
  let resolvedOf = useOf(of || "meta"), markdown = getDescriptionFromResolvedOf(resolvedOf);
7021
7041
  return markdown ? React44.createElement(Markdown, null, markdown) : null;
7022
7042
  }, Description2 = withMdxComponentOverride("Description", DescriptionImpl);
@@ -7025,14 +7045,68 @@ var DescriptionType = /* @__PURE__ */ ((DescriptionType2) => (DescriptionType2.I
7025
7045
  import React54 from "react";
7026
7046
 
7027
7047
  // src/blocks/blocks/DocsContainer.tsx
7028
- import React45, { useEffect as useEffect15 } from "react";
7048
+ import React45, { useEffect as useEffect15, useMemo as useMemo5 } from "react";
7029
7049
  import { ThemeProvider, ensure as ensureTheme } from "storybook/theming";
7050
+
7051
+ // src/blocks/blocks/DocsSluggerContext.ts
7052
+ import { createContext as createContext4 } from "react";
7053
+
7054
+ // ../../../node_modules/github-slugger/regex.js
7055
+ var regex = /[\0-\x1F!-,\.\/:-@\[-\^`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482\u0530\u0557\u0558\u055A-\u055F\u0589-\u0590\u05BE\u05C0\u05C3\u05C6\u05C8-\u05CF\u05EB-\u05EE\u05F3-\u060F\u061B-\u061F\u066A-\u066D\u06D4\u06DD\u06DE\u06E9\u06FD\u06FE\u0700-\u070F\u074B\u074C\u07B2-\u07BF\u07F6-\u07F9\u07FB\u07FC\u07FE\u07FF\u082E-\u083F\u085C-\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u08E2\u0964\u0965\u0970\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09F2-\u09FB\u09FD\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF0-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B70\u0B72-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BF0-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C7F\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D4F-\u0D53\u0D58-\u0D5E\u0D64\u0D65\u0D70-\u0D79\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF4-\u0E00\u0E3B-\u0E3F\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F17\u0F1A-\u0F1F\u0F2A-\u0F34\u0F36\u0F38\u0F3A-\u0F3D\u0F48\u0F6D-\u0F70\u0F85\u0F98\u0FBD-\u0FC5\u0FC7-\u0FFF\u104A-\u104F\u109E\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u1360-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u170D\u1715-\u171F\u1735-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17D4-\u17D6\u17D8-\u17DB\u17DE\u17DF\u17EA-\u180A\u180E\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DA-\u19FF\u1A1C-\u1A1F\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B5A-\u1B6A\u1B74-\u1B7F\u1BF4-\u1BFF\u1C38-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CCF\u1CD3\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u203E\u2041-\u2053\u2055-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u20CF\u20F1-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u215F\u2189-\u24B5\u24EA-\u2BFF\u2C2F\u2C5F\u2CE5-\u2CEA\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E00-\u2E2E\u2E30-\u3004\u3008-\u3020\u3030\u3036\u3037\u303D-\u3040\u3097\u3098\u309B\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\u9FFD-\u9FFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA673\uA67E\uA6F2-\uA716\uA720\uA721\uA789\uA78A\uA7C0\uA7C1\uA7CB-\uA7F4\uA828-\uA82B\uA82D-\uA83F\uA874-\uA87F\uA8C6-\uA8CF\uA8DA-\uA8DF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA954-\uA95F\uA97D-\uA97F\uA9C1-\uA9CE\uA9DA-\uA9DF\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAAC3-\uAADA\uAADE\uAADF\uAAF0\uAAF1\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABEB\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFDFF\uFE10-\uFE1F\uFE30-\uFE32\uFE35-\uFE4C\uFE50-\uFE6F\uFE75\uFEFD-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF3E\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD3F\uDD75-\uDDFC\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEE1-\uDEFF\uDF20-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE40-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE7-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD28-\uDD2F\uDD3A-\uDE7F\uDEAA\uDEAD-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF51-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC47-\uDC65\uDC70-\uDC7E\uDCBB-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD40-\uDD43\uDD48-\uDD4F\uDD74\uDD75\uDD77-\uDD7F\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDFF\uDE12\uDE38-\uDE3D\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC4B-\uDC4F\uDC5A-\uDC5D\uDC62-\uDC7F\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDC1-\uDDD7\uDDDE-\uDDFF\uDE41-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF3A-\uDFFF]|\uD806[\uDC3B-\uDC9F\uDCEA-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD44-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE2\uDDE5-\uDDFF\uDE3F-\uDE46\uDE48-\uDE4F\uDE9A-\uDE9C\uDE9E-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC41-\uDC4F\uDC5A-\uDC71\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF7-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83D\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDECF\uDEEE\uDEEF\uDEF5-\uDEFF\uDF37-\uDF3F\uDF44-\uDF4F\uDF5A-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE2\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDC9C\uDC9F-\uDFFF]|\uD834[\uDC00-\uDD64\uDD6A-\uDD6C\uDD73-\uDD7A\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDE41\uDE45-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDEBF\uDEFA-\uDFFF]|\uD83A[\uDCC5-\uDCCF\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDD2F\uDD4A-\uDD4F\uDD6A-\uDD6F\uDD8A-\uDFFF]|\uD83E[\uDC00-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]/g;
7056
+
7057
+ // ../../../node_modules/github-slugger/index.js
7058
+ var own = Object.hasOwnProperty, BananaSlug = class {
7059
+ /**
7060
+ * Create a new slug class.
7061
+ */
7062
+ constructor() {
7063
+ this.occurrences, this.reset();
7064
+ }
7065
+ /**
7066
+ * Generate a unique slug.
7067
+ *
7068
+ * Tracks previously generated slugs: repeated calls with the same value
7069
+ * will result in different slugs.
7070
+ * Use the `slug` function to get same slugs.
7071
+ *
7072
+ * @param {string} value
7073
+ * String of text to slugify
7074
+ * @param {boolean} [maintainCase=false]
7075
+ * Keep the current case, otherwise make all lowercase
7076
+ * @return {string}
7077
+ * A unique slug string
7078
+ */
7079
+ slug(value, maintainCase) {
7080
+ let self2 = this, result = slug(value, maintainCase === !0), originalSlug = result;
7081
+ for (; own.call(self2.occurrences, result); )
7082
+ self2.occurrences[originalSlug]++, result = originalSlug + "-" + self2.occurrences[originalSlug];
7083
+ return self2.occurrences[result] = 0, result;
7084
+ }
7085
+ /**
7086
+ * Reset - Forget all previous slugs
7087
+ *
7088
+ * @return void
7089
+ */
7090
+ reset() {
7091
+ this.occurrences = /* @__PURE__ */ Object.create(null);
7092
+ }
7093
+ };
7094
+ function slug(value, maintainCase) {
7095
+ return typeof value != "string" ? "" : (maintainCase || (value = value.toLowerCase()), value.replace(regex, "").replace(/ /g, "-"));
7096
+ }
7097
+
7098
+ // src/blocks/blocks/DocsSluggerContext.ts
7099
+ var createDocsSlugger = () => new BananaSlug(), DocsSluggerContext = createContext4(
7100
+ null
7101
+ );
7102
+
7103
+ // src/blocks/blocks/DocsContainer.tsx
7030
7104
  var { document: document3, window: globalWindow3 } = globalThis, DocsContainer = ({
7031
7105
  context,
7032
7106
  theme,
7033
7107
  children
7034
7108
  }) => {
7035
- let toc;
7109
+ let slugger = useMemo5(() => createDocsSlugger(), []), toc;
7036
7110
  try {
7037
7111
  toc = context.resolveOf("meta", ["meta"]).preparedMeta.parameters?.docs?.toc;
7038
7112
  } catch {
@@ -7049,7 +7123,7 @@ var { document: document3, window: globalWindow3 } = globalThis, DocsContainer =
7049
7123
  }
7050
7124
  } catch {
7051
7125
  }
7052
- }), React45.createElement(DocsContext.Provider, { value: context }, React45.createElement(SourceContainer, { channel: context.channel }, React45.createElement(ThemeProvider, { theme: ensureTheme(theme) }, React45.createElement(
7126
+ }), React45.createElement(DocsSluggerContext.Provider, { value: slugger }, React45.createElement(DocsContext.Provider, { value: context }, React45.createElement(SourceContainer, { channel: context.channel }, React45.createElement(ThemeProvider, { theme: ensureTheme(theme) }, React45.createElement(
7053
7127
  DocsPageWrapper,
7054
7128
  {
7055
7129
  toc: toc ? React45.createElement(
@@ -7062,7 +7136,7 @@ var { document: document3, window: globalWindow3 } = globalThis, DocsContainer =
7062
7136
  ) : null
7063
7137
  },
7064
7138
  children
7065
- ))));
7139
+ )))));
7066
7140
  };
7067
7141
 
7068
7142
  // src/blocks/blocks/DocsPage.tsx
@@ -7081,52 +7155,6 @@ import { H3 } from "storybook/internal/components";
7081
7155
  // src/blocks/blocks/Heading.tsx
7082
7156
  import React46 from "react";
7083
7157
  import { H2 } from "storybook/internal/components";
7084
-
7085
- // ../../../node_modules/github-slugger/regex.js
7086
- var regex = /[\0-\x1F!-,\.\/:-@\[-\^`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u02FF\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482\u0530\u0557\u0558\u055A-\u055F\u0589-\u0590\u05BE\u05C0\u05C3\u05C6\u05C8-\u05CF\u05EB-\u05EE\u05F3-\u060F\u061B-\u061F\u066A-\u066D\u06D4\u06DD\u06DE\u06E9\u06FD\u06FE\u0700-\u070F\u074B\u074C\u07B2-\u07BF\u07F6-\u07F9\u07FB\u07FC\u07FE\u07FF\u082E-\u083F\u085C-\u085F\u086B-\u089F\u08B5\u08C8-\u08D2\u08E2\u0964\u0965\u0970\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA\u09BB\u09C5\u09C6\u09C9\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4\u09E5\u09F2-\u09FB\u09FD\u09FF\u0A00\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A\u0A3B\u0A3D\u0A43-\u0A46\u0A49\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA\u0ABB\u0AC6\u0ACA\u0ACE\u0ACF\u0AD1-\u0ADF\u0AE4\u0AE5\u0AF0-\u0AF8\u0B00\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A\u0B3B\u0B45\u0B46\u0B49\u0B4A\u0B4E-\u0B54\u0B58-\u0B5B\u0B5E\u0B64\u0B65\u0B70\u0B72-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BF0-\u0BFF\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5B-\u0C5F\u0C64\u0C65\u0C70-\u0C7F\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4\u0CE5\u0CF0\u0CF3-\u0CFF\u0D0D\u0D11\u0D45\u0D49\u0D4F-\u0D53\u0D58-\u0D5E\u0D64\u0D65\u0D70-\u0D79\u0D80\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DE5\u0DF0\u0DF1\u0DF4-\u0E00\u0E3B-\u0E3F\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EBE\u0EBF\u0EC5\u0EC7\u0ECE\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F17\u0F1A-\u0F1F\u0F2A-\u0F34\u0F36\u0F38\u0F3A-\u0F3D\u0F48\u0F6D-\u0F70\u0F85\u0F98\u0FBD-\u0FC5\u0FC7-\u0FFF\u104A-\u104F\u109E\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B\u135C\u1360-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u170D\u1715-\u171F\u1735-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17D4-\u17D6\u17D8-\u17DB\u17DE\u17DF\u17EA-\u180A\u180E\u180F\u181A-\u181F\u1879-\u187F\u18AB-\u18AF\u18F6-\u18FF\u191F\u192C-\u192F\u193C-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DA-\u19FF\u1A1C-\u1A1F\u1A5F\u1A7D\u1A7E\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1AAF\u1AC1-\u1AFF\u1B4C-\u1B4F\u1B5A-\u1B6A\u1B74-\u1B7F\u1BF4-\u1BFF\u1C38-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C89-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CCF\u1CD3\u1CFB-\u1CFF\u1DFA\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u203E\u2041-\u2053\u2055-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u20CF\u20F1-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u215F\u2189-\u24B5\u24EA-\u2BFF\u2C2F\u2C5F\u2CE5-\u2CEA\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7E\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E00-\u2E2E\u2E30-\u3004\u3008-\u3020\u3030\u3036\u3037\u303D-\u3040\u3097\u3098\u309B\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\u9FFD-\u9FFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA673\uA67E\uA6F2-\uA716\uA720\uA721\uA789\uA78A\uA7C0\uA7C1\uA7CB-\uA7F4\uA828-\uA82B\uA82D-\uA83F\uA874-\uA87F\uA8C6-\uA8CF\uA8DA-\uA8DF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA954-\uA95F\uA97D-\uA97F\uA9C1-\uA9CE\uA9DA-\uA9DF\uA9FF\uAA37-\uAA3F\uAA4E\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAAC3-\uAADA\uAADE\uAADF\uAAF0\uAAF1\uAAF7-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABEB\uABEE\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFDFF\uFE10-\uFE1F\uFE30-\uFE32\uFE35-\uFE4C\uFE50-\uFE6F\uFE75\uFEFD-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF3E\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD3F\uDD75-\uDDFC\uDDFE-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEDF\uDEE1-\uDEFF\uDF20-\uDF2C\uDF4B-\uDF4F\uDF7B-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE04\uDE07-\uDE0B\uDE14\uDE18\uDE36\uDE37\uDE3B-\uDE3E\uDE40-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE7-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD28-\uDD2F\uDD3A-\uDE7F\uDEAA\uDEAD-\uDEAF\uDEB2-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF51-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC47-\uDC65\uDC70-\uDC7E\uDCBB-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDCFF\uDD35\uDD40-\uDD43\uDD48-\uDD4F\uDD74\uDD75\uDD77-\uDD7F\uDDC5-\uDDC8\uDDCD\uDDDB\uDDDD-\uDDFF\uDE12\uDE38-\uDE3D\uDE3F-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEEB-\uDEEF\uDEFA-\uDEFF\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A\uDF45\uDF46\uDF49\uDF4A\uDF4E\uDF4F\uDF51-\uDF56\uDF58-\uDF5C\uDF64\uDF65\uDF6D-\uDF6F\uDF75-\uDFFF]|\uD805[\uDC4B-\uDC4F\uDC5A-\uDC5D\uDC62-\uDC7F\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDB6\uDDB7\uDDC1-\uDDD7\uDDDE-\uDDFF\uDE41-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEB9-\uDEBF\uDECA-\uDEFF\uDF1B\uDF1C\uDF2C-\uDF2F\uDF3A-\uDFFF]|\uD806[\uDC3B-\uDC9F\uDCEA-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD36\uDD39\uDD3A\uDD44-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD8\uDDD9\uDDE2\uDDE5-\uDDFF\uDE3F-\uDE46\uDE48-\uDE4F\uDE9A-\uDE9C\uDE9E-\uDEBF\uDEF9-\uDFFF]|\uD807[\uDC09\uDC37\uDC41-\uDC4F\uDC5A-\uDC71\uDC90\uDC91\uDCA8\uDCB7-\uDCFF\uDD07\uDD0A\uDD37-\uDD39\uDD3B\uDD3E\uDD48-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8F\uDD92\uDD99-\uDD9F\uDDAA-\uDEDF\uDEF7-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD80B\uD80E-\uD810\uD812-\uD819\uD824-\uD82B\uD82D\uD82E\uD830-\uD833\uD837\uD839\uD83D\uD83F\uD87B-\uD87D\uD87F\uD885-\uDB3F\uDB41-\uDBFF][\uDC00-\uDFFF]|\uD80D[\uDC2F-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDECF\uDEEE\uDEEF\uDEF5-\uDEFF\uDF37-\uDF3F\uDF44-\uDF4F\uDF5A-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4E\uDF88-\uDF8E\uDFA0-\uDFDF\uDFE2\uDFE5-\uDFEF\uDFF2-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFF\uDD09-\uDFFF]|\uD82C[\uDD1F-\uDD4F\uDD53-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDC9C\uDC9F-\uDFFF]|\uD834[\uDC00-\uDD64\uDD6A-\uDD6C\uDD73-\uDD7A\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDE41\uDE45-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD836[\uDC00-\uDDFF\uDE37-\uDE3A\uDE6D-\uDE74\uDE76-\uDE83\uDE85-\uDE9A\uDEA0\uDEB0-\uDFFF]|\uD838[\uDC07\uDC19\uDC1A\uDC22\uDC25\uDC2B-\uDCFF\uDD2D-\uDD2F\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDEBF\uDEFA-\uDFFF]|\uD83A[\uDCC5-\uDCCF\uDCD7-\uDCFF\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDD2F\uDD4A-\uDD4F\uDD6A-\uDD6F\uDD8A-\uDFFF]|\uD83E[\uDC00-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEDE-\uDEFF]|\uD86D[\uDF35-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDFFF]|\uDB40[\uDC00-\uDCFF\uDDF0-\uDFFF]/g;
7087
-
7088
- // ../../../node_modules/github-slugger/index.js
7089
- var own = Object.hasOwnProperty, BananaSlug = class {
7090
- /**
7091
- * Create a new slug class.
7092
- */
7093
- constructor() {
7094
- this.occurrences, this.reset();
7095
- }
7096
- /**
7097
- * Generate a unique slug.
7098
- *
7099
- * Tracks previously generated slugs: repeated calls with the same value
7100
- * will result in different slugs.
7101
- * Use the `slug` function to get same slugs.
7102
- *
7103
- * @param {string} value
7104
- * String of text to slugify
7105
- * @param {boolean} [maintainCase=false]
7106
- * Keep the current case, otherwise make all lowercase
7107
- * @return {string}
7108
- * A unique slug string
7109
- */
7110
- slug(value, maintainCase) {
7111
- let self2 = this, result = slug(value, maintainCase === !0), originalSlug = result;
7112
- for (; own.call(self2.occurrences, result); )
7113
- self2.occurrences[originalSlug]++, result = originalSlug + "-" + self2.occurrences[originalSlug];
7114
- return self2.occurrences[result] = 0, result;
7115
- }
7116
- /**
7117
- * Reset - Forget all previous slugs
7118
- *
7119
- * @return void
7120
- */
7121
- reset() {
7122
- this.occurrences = /* @__PURE__ */ Object.create(null);
7123
- }
7124
- };
7125
- function slug(value, maintainCase) {
7126
- return typeof value != "string" ? "" : (maintainCase || (value = value.toLowerCase()), value.replace(regex, "").replace(/ /g, "-"));
7127
- }
7128
-
7129
- // src/blocks/blocks/Heading.tsx
7130
7158
  var slugs = new BananaSlug(), HeadingImpl = ({
7131
7159
  children,
7132
7160
  disableAnchor,
@@ -7134,7 +7162,7 @@ var slugs = new BananaSlug(), HeadingImpl = ({
7134
7162
  }) => {
7135
7163
  if (disableAnchor || typeof children != "string")
7136
7164
  return React46.createElement(H2, null, children);
7137
- let tagID = slugs.slug(children.toLowerCase());
7165
+ let tagID = (React46.useContext(DocsSluggerContext) ?? slugs).slug(children.toLowerCase());
7138
7166
  return React46.createElement(HeaderMdx, { as: "h2", id: tagID, ...props }, children);
7139
7167
  }, Heading2 = withMdxComponentOverride("Heading", HeadingImpl);
7140
7168
 
@@ -7142,7 +7170,7 @@ var slugs = new BananaSlug(), HeadingImpl = ({
7142
7170
  var SubheadingImpl = ({ children, disableAnchor }) => {
7143
7171
  if (disableAnchor || typeof children != "string")
7144
7172
  return React47.createElement(H3, null, children);
7145
- let tagID = slugs.slug(children.toLowerCase());
7173
+ let tagID = (React47.useContext(DocsSluggerContext) ?? slugs).slug(children.toLowerCase());
7146
7174
  return React47.createElement(HeaderMdx, { as: "h3", id: tagID }, children);
7147
7175
  }, Subheading = withMdxComponentOverride("Subheading", SubheadingImpl);
7148
7176
 
@@ -7199,10 +7227,11 @@ var StyledHeading = styled29(Heading2)(({ theme }) => ({
7199
7227
  // src/blocks/blocks/Subtitle.tsx
7200
7228
  import React51 from "react";
7201
7229
  import { deprecate } from "storybook/internal/client-logger";
7230
+ import { InvalidBlockOfPropError as InvalidBlockOfPropError6 } from "storybook/internal/preview-errors";
7202
7231
  var DEPRECATION_MIGRATION_LINK = "https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#subtitle-block-and-parameterscomponentsubtitle", SubtitleImpl = (props) => {
7203
7232
  let { of, children } = props;
7204
7233
  if ("of" in props && of === void 0)
7205
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
7234
+ throw new InvalidBlockOfPropError6();
7206
7235
  let preparedMeta;
7207
7236
  try {
7208
7237
  preparedMeta = useOf(of || "meta", ["meta"]).preparedMeta;
@@ -7220,13 +7249,14 @@ var DEPRECATION_MIGRATION_LINK = "https://github.com/storybookjs/storybook/blob/
7220
7249
 
7221
7250
  // src/blocks/blocks/Title.tsx
7222
7251
  import React52 from "react";
7252
+ import { InvalidBlockOfPropError as InvalidBlockOfPropError7 } from "storybook/internal/preview-errors";
7223
7253
  var STORY_KIND_PATH_SEPARATOR = /\s*\/\s*/, extractTitle = (title) => {
7224
7254
  let groups = title.trim().split(STORY_KIND_PATH_SEPARATOR);
7225
7255
  return groups?.[groups?.length - 1] || title;
7226
7256
  }, TitleImpl = (props) => {
7227
7257
  let { children, of } = props;
7228
7258
  if ("of" in props && of === void 0)
7229
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
7259
+ throw new InvalidBlockOfPropError7();
7230
7260
  let preparedMeta;
7231
7261
  try {
7232
7262
  preparedMeta = useOf(of || "meta", ["meta"]).preparedMeta;
@@ -1,20 +1,20 @@
1
- import CJS_COMPAT_NODE_URL_77ctz5767es from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_77ctz5767es from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_77ctz5767es from "node:module";
1
+ import CJS_COMPAT_NODE_URL_c15h0qamzs from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_c15h0qamzs from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_c15h0qamzs from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_77ctz5767es.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_77ctz5767es.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_77ctz5767es.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_c15h0qamzs.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_c15h0qamzs.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_c15h0qamzs.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
11
11
  // ------------------------------------------------------------
12
12
  import {
13
13
  compile
14
- } from "./_node-chunks/chunk-IS45SPO5.js";
15
- import "./_node-chunks/chunk-GDAWU5FC.js";
16
- import "./_node-chunks/chunk-ZLMXFAX6.js";
17
- import "./_node-chunks/chunk-C3L2KPDA.js";
14
+ } from "./_node-chunks/chunk-G6X2A4IU.js";
15
+ import "./_node-chunks/chunk-WMOA7R2N.js";
16
+ import "./_node-chunks/chunk-2YS7SZW7.js";
17
+ import "./_node-chunks/chunk-MQBXIHGN.js";
18
18
 
19
19
  // src/mdx-loader.ts
20
20
  var DEFAULT_RENDERER = `
package/dist/preset.js CHANGED
@@ -1,15 +1,15 @@
1
- import CJS_COMPAT_NODE_URL_77ctz5767es from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_77ctz5767es from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_77ctz5767es from "node:module";
1
+ import CJS_COMPAT_NODE_URL_c15h0qamzs from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_c15h0qamzs from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_c15h0qamzs from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_77ctz5767es.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_77ctz5767es.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_77ctz5767es.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_c15h0qamzs.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_c15h0qamzs.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_c15h0qamzs.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
11
11
  // ------------------------------------------------------------
12
- import "./_node-chunks/chunk-C3L2KPDA.js";
12
+ import "./_node-chunks/chunk-MQBXIHGN.js";
13
13
 
14
14
  // src/preset.ts
15
15
  import { isAbsolute as isAbsolute2 } from "node:path";
@@ -312,7 +312,7 @@ var getResolvedReact = async (options) => {
312
312
  };
313
313
  };
314
314
  async function webpack(webpackConfig = {}, options) {
315
- let { module = {} } = webpackConfig, { csfPluginOptions = {}, mdxPluginOptions = {} } = options, enrichCsf = await options.presets.apply("experimental_enrichCsf"), rehypeSlug = (await import("./_node-chunks/rehype-slug-LBCL6GZ6.js")).default, rehypeExternalLinks = (await import("./_node-chunks/rehype-external-links-RJJLC2CY.js")).default, mdxLoaderOptions = await options.presets.apply("mdxLoaderOptions", {
315
+ let { module = {} } = webpackConfig, { csfPluginOptions = {}, mdxPluginOptions = {} } = options, enrichCsf = await options.presets.apply("experimental_enrichCsf"), rehypeSlug = (await import("./_node-chunks/rehype-slug-DAFADOON.js")).default, rehypeExternalLinks = (await import("./_node-chunks/rehype-external-links-AI2DGGW6.js")).default, mdxLoaderOptions = await options.presets.apply("mdxLoaderOptions", {
316
316
  ...mdxPluginOptions,
317
317
  mdxCompileOptions: {
318
318
  providerImportSource: import.meta.resolve("@storybook/addon-docs/mdx-react-shim"),
@@ -388,7 +388,7 @@ var docs = (input = {}, options) => {
388
388
  }, addons = [
389
389
  import.meta.resolve("@storybook/react-dom-shim/preset")
390
390
  ], viteFinal = async (config, options) => {
391
- let { plugins = [] } = config, { mdxPlugin } = await import("./_node-chunks/mdx-plugin-SLD2HMTO.js"), { react, reactDom, mdx } = await getResolvedReact(options), packageDeduplicationPlugin = {
391
+ let { plugins = [] } = config, { mdxPlugin } = await import("./_node-chunks/mdx-plugin-CQ73DXBD.js"), { react, reactDom, mdx } = await getResolvedReact(options), packageDeduplicationPlugin = {
392
392
  name: "storybook:package-deduplication",
393
393
  enforce: "pre",
394
394
  config: () => ({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/addon-docs",
3
- "version": "10.4.0-alpha.8",
3
+ "version": "10.4.0-beta.0",
4
4
  "description": "Storybook Docs: Document UI components automatically with stories and MDX",
5
5
  "keywords": [
6
6
  "docs",
@@ -87,9 +87,9 @@
87
87
  ],
88
88
  "dependencies": {
89
89
  "@mdx-js/react": "^3.0.0",
90
- "@storybook/csf-plugin": "10.4.0-alpha.8",
91
- "@storybook/icons": "^2.0.1",
92
- "@storybook/react-dom-shim": "10.4.0-alpha.8",
90
+ "@storybook/csf-plugin": "10.4.0-beta.0",
91
+ "@storybook/icons": "^2.0.2",
92
+ "@storybook/react-dom-shim": "10.4.0-beta.0",
93
93
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
94
94
  "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
95
95
  "ts-dedent": "^2.0.0"
@@ -116,7 +116,13 @@
116
116
  "vite": "^7.0.4"
117
117
  },
118
118
  "peerDependencies": {
119
- "storybook": "^10.4.0-alpha.8"
119
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
120
+ "storybook": "^10.4.0-beta.0"
121
+ },
122
+ "peerDependenciesMeta": {
123
+ "@types/react": {
124
+ "optional": true
125
+ }
120
126
  },
121
127
  "publishConfig": {
122
128
  "access": "public"