@storybook/addon-docs 10.4.0-alpha.1 → 10.4.0-alpha.11

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.
@@ -998,12 +998,18 @@ var Wrapper = styled.div({
998
998
  setValue(updatedValue), onChange(updatedValue);
999
999
  }, [color, colorSpace, onChange]);
1000
1000
  return { value, realValue, updateValue, color, colorSpace, cycleColorSpace };
1001
- }, id = (value) => value.replace(/\s*/, "").toLowerCase(), usePresets = (presetColors, currentColor, colorSpace) => {
1001
+ }, id = (value) => value.replace(/\s*/, "").toLowerCase(), usePresets = (presetColors, currentColor, colorSpace, maxPresetColors = 27) => {
1002
1002
  let [selectedColors, setSelectedColors] = useState(currentColor?.valid ? [currentColor] : []);
1003
1003
  useEffect(() => {
1004
1004
  currentColor === void 0 && setSelectedColors([]);
1005
1005
  }, [currentColor]);
1006
- let presets = useMemo(() => (presetColors || []).map((preset) => typeof preset == "string" ? parseValue(preset) : preset.title ? { ...parseValue(preset.color), keyword: preset.title } : parseValue(preset.color)).concat(selectedColors).filter(Boolean).slice(-27), [presetColors, selectedColors]), addPreset = useCallback(
1006
+ let presets = useMemo(() => {
1007
+ let combined = (presetColors || []).map((preset) => typeof preset == "string" ? parseValue(preset) : preset.title ? { ...parseValue(preset.color), keyword: preset.title } : parseValue(preset.color)).concat(selectedColors).filter(Boolean);
1008
+ if (maxPresetColors === 0 || maxPresetColors === 1 / 0)
1009
+ return combined;
1010
+ let limit = Number.isInteger(maxPresetColors) && maxPresetColors > 0 ? maxPresetColors : 27;
1011
+ return combined.slice(-limit);
1012
+ }, [presetColors, selectedColors, maxPresetColors]), addPreset = useCallback(
1007
1013
  (color) => {
1008
1014
  color?.valid && (presets.some(
1009
1015
  (preset) => preset && preset[colorSpace] && id(preset[colorSpace] || "") === id(color[colorSpace] || "")
@@ -1020,13 +1026,14 @@ var Wrapper = styled.div({
1020
1026
  onFocus,
1021
1027
  onBlur,
1022
1028
  presetColors,
1029
+ maxPresetColors,
1023
1030
  startOpen = !1,
1024
1031
  argType
1025
1032
  }) => {
1026
1033
  let debouncedOnChange = useCallback(debounce(onChange, 200), [onChange]), { value, realValue, updateValue, color, colorSpace, cycleColorSpace } = useColorInput(
1027
1034
  initialValue,
1028
1035
  debouncedOnChange
1029
- ), { presets, addPreset } = usePresets(presetColors ?? [], color, colorSpace), Picker = ColorPicker[colorSpace], readOnly = !!argType?.table?.readonly, controlId = getControlId(name, storyId);
1036
+ ), { presets, addPreset } = usePresets(presetColors ?? [], color, colorSpace, maxPresetColors), Picker = ColorPicker[colorSpace], readOnly = !!argType?.table?.readonly, controlId = getControlId(name, storyId);
1030
1037
  return React.createElement(Wrapper, null, React.createElement("label", { htmlFor: controlId, className: "sb-sr-only" }, name), React.createElement(
1031
1038
  Input,
1032
1039
  {
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_mbyf8gwq1e from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_mbyf8gwq1e from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_mbyf8gwq1e from "node:module";
1
+ import CJS_COMPAT_NODE_URL_mggrqh1ekvm from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_mggrqh1ekvm from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_mggrqh1ekvm from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_mbyf8gwq1e.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_mbyf8gwq1e.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_mbyf8gwq1e.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_mggrqh1ekvm.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_mggrqh1ekvm.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_mggrqh1ekvm.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_mbyf8gwq1e from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_mbyf8gwq1e from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_mbyf8gwq1e from "node:module";
1
+ import CJS_COMPAT_NODE_URL_mggrqh1ekvm from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_mggrqh1ekvm from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_mggrqh1ekvm from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_mbyf8gwq1e.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_mbyf8gwq1e.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_mbyf8gwq1e.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_mggrqh1ekvm.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_mggrqh1ekvm.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_mggrqh1ekvm.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
@@ -12,15 +12,15 @@ var require = CJS_COMPAT_NODE_MODULE_mbyf8gwq1e.createRequire(import.meta.url);
12
12
  import {
13
13
  esm_default,
14
14
  stringify
15
- } from "./chunk-O3IP3EYZ.js";
15
+ } from "./chunk-P56KWDKY.js";
16
16
  import {
17
17
  visit
18
- } from "./chunk-3CQLJTS4.js";
18
+ } from "./chunk-6NKZRZCL.js";
19
19
  import {
20
20
  __commonJS,
21
21
  __export,
22
22
  __toESM
23
- } from "./chunk-UBUIPEWJ.js";
23
+ } from "./chunk-J3FUADMZ.js";
24
24
 
25
25
  // ../../../node_modules/@mdx-js/mdx/node_modules/acorn-jsx/xhtml.js
26
26
  var require_xhtml = __commonJS({
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_mbyf8gwq1e from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_mbyf8gwq1e from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_mbyf8gwq1e from "node:module";
1
+ import CJS_COMPAT_NODE_URL_mggrqh1ekvm from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_mggrqh1ekvm from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_mggrqh1ekvm from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_mbyf8gwq1e.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_mbyf8gwq1e.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_mbyf8gwq1e.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_mggrqh1ekvm.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_mggrqh1ekvm.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_mggrqh1ekvm.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_mbyf8gwq1e from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_mbyf8gwq1e from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_mbyf8gwq1e from "node:module";
1
+ import CJS_COMPAT_NODE_URL_mggrqh1ekvm from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_mggrqh1ekvm from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_mggrqh1ekvm from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_mbyf8gwq1e.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_mbyf8gwq1e.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_mbyf8gwq1e.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_mggrqh1ekvm.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_mggrqh1ekvm.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_mggrqh1ekvm.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
@@ -1,23 +1,23 @@
1
- import CJS_COMPAT_NODE_URL_mbyf8gwq1e from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_mbyf8gwq1e from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_mbyf8gwq1e from "node:module";
1
+ import CJS_COMPAT_NODE_URL_mggrqh1ekvm from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_mggrqh1ekvm from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_mggrqh1ekvm from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_mbyf8gwq1e.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_mbyf8gwq1e.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_mbyf8gwq1e.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_mggrqh1ekvm.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_mggrqh1ekvm.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_mggrqh1ekvm.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 "./chunk-FOXFKJUT.js";
15
- import "./chunk-O3IP3EYZ.js";
16
- import "./chunk-3CQLJTS4.js";
14
+ } from "./chunk-CQ7JP424.js";
15
+ import "./chunk-P56KWDKY.js";
16
+ import "./chunk-6NKZRZCL.js";
17
17
  import {
18
18
  __commonJS,
19
19
  __toESM
20
- } from "./chunk-UBUIPEWJ.js";
20
+ } from "./chunk-J3FUADMZ.js";
21
21
 
22
22
  // ../../../node_modules/@rollup/pluginutils/node_modules/picomatch/lib/constants.js
23
23
  var require_constants = __commonJS({
@@ -1000,30 +1000,33 @@ var hasStringIsWellFormed = "isWellFormed" in String.prototype;
1000
1000
 
1001
1001
  // src/mdx-plugin.ts
1002
1002
  async function mdxPlugin(options) {
1003
- let filter = createFilter(/\.mdx$/), { presets } = options, mdxPluginOptions = (await presets.apply("options", {}))?.mdxPluginOptions, rehypeSlug = (await import("./rehype-slug-WTB7POBJ.js")).default, rehypeExternalLinks = (await import("./rehype-external-links-PGJMHXWX.js")).default;
1003
+ let include = /\.mdx$/, filter = createFilter(include), { presets } = options, mdxPluginOptions = (await presets.apply("options", {}))?.mdxPluginOptions, rehypeSlug = (await import("./rehype-slug-RW2QDUVH.js")).default, rehypeExternalLinks = (await import("./rehype-external-links-T674BFXZ.js")).default;
1004
1004
  return {
1005
1005
  name: "storybook:mdx-plugin",
1006
1006
  enforce: "pre",
1007
- async transform(src, id) {
1008
- if (!filter(id))
1009
- return;
1010
- let mdxLoaderOptions = await presets.apply("mdxLoaderOptions", {
1011
- ...mdxPluginOptions,
1012
- mdxCompileOptions: {
1013
- providerImportSource: import.meta.resolve("@storybook/addon-docs/mdx-react-shim"),
1014
- ...mdxPluginOptions?.mdxCompileOptions,
1015
- rehypePlugins: [
1016
- ...mdxPluginOptions?.mdxCompileOptions?.rehypePlugins ?? [],
1017
- rehypeSlug,
1018
- rehypeExternalLinks
1019
- ]
1020
- }
1021
- });
1022
- return {
1023
- code: String(await compile(src, mdxLoaderOptions)),
1024
- // TODO: support source maps
1025
- map: null
1026
- };
1007
+ transform: {
1008
+ filter: { id: include },
1009
+ async handler(src, id) {
1010
+ if (!filter(id))
1011
+ return;
1012
+ let mdxLoaderOptions = await presets.apply("mdxLoaderOptions", {
1013
+ ...mdxPluginOptions,
1014
+ mdxCompileOptions: {
1015
+ providerImportSource: import.meta.resolve("@storybook/addon-docs/mdx-react-shim"),
1016
+ ...mdxPluginOptions?.mdxCompileOptions,
1017
+ rehypePlugins: [
1018
+ ...mdxPluginOptions?.mdxCompileOptions?.rehypePlugins ?? [],
1019
+ rehypeSlug,
1020
+ rehypeExternalLinks
1021
+ ]
1022
+ }
1023
+ });
1024
+ return {
1025
+ code: String(await compile(src, mdxLoaderOptions)),
1026
+ // TODO: support source maps
1027
+ map: null
1028
+ };
1029
+ }
1027
1030
  }
1028
1031
  };
1029
1032
  }
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_mbyf8gwq1e from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_mbyf8gwq1e from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_mbyf8gwq1e from "node:module";
1
+ import CJS_COMPAT_NODE_URL_mggrqh1ekvm from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_mggrqh1ekvm from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_mggrqh1ekvm from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_mbyf8gwq1e.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_mbyf8gwq1e.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_mbyf8gwq1e.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_mggrqh1ekvm.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_mggrqh1ekvm.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_mggrqh1ekvm.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
@@ -12,11 +12,11 @@ var require = CJS_COMPAT_NODE_MODULE_mbyf8gwq1e.createRequire(import.meta.url);
12
12
  import {
13
13
  esm_default,
14
14
  parse
15
- } from "./chunk-O3IP3EYZ.js";
15
+ } from "./chunk-P56KWDKY.js";
16
16
  import {
17
17
  visit
18
- } from "./chunk-3CQLJTS4.js";
19
- import "./chunk-UBUIPEWJ.js";
18
+ } from "./chunk-6NKZRZCL.js";
19
+ import "./chunk-J3FUADMZ.js";
20
20
 
21
21
  // ../../../node_modules/hast-util-is-element/lib/index.js
22
22
  var convertElement = (
@@ -1,18 +1,18 @@
1
- import CJS_COMPAT_NODE_URL_mbyf8gwq1e from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_mbyf8gwq1e from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_mbyf8gwq1e from "node:module";
1
+ import CJS_COMPAT_NODE_URL_mggrqh1ekvm from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_mggrqh1ekvm from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_mggrqh1ekvm from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_mbyf8gwq1e.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_mbyf8gwq1e.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_mbyf8gwq1e.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_mggrqh1ekvm.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_mggrqh1ekvm.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_mggrqh1ekvm.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
  visit
14
- } from "./chunk-3CQLJTS4.js";
15
- import "./chunk-UBUIPEWJ.js";
14
+ } from "./chunk-6NKZRZCL.js";
15
+ import "./chunk-J3FUADMZ.js";
16
16
 
17
17
  // ../../../node_modules/github-slugger/regex.js
18
18
  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;
package/dist/blocks.d.ts CHANGED
@@ -110,6 +110,7 @@ type PreviewProps = PropsWithChildren<{
110
110
  withToolbar?: boolean;
111
111
  className?: string;
112
112
  additionalActions?: ActionItem[];
113
+ onReloadStory?: () => void;
113
114
  }>;
114
115
  type Layout = 'padded' | 'fullscreen' | 'centered';
115
116
 
@@ -276,7 +277,7 @@ type SourceProps = SourceParameters & {
276
277
  __forceInitialArgs?: boolean;
277
278
  };
278
279
  type PureSourceProps = ComponentProps<typeof Source$1>;
279
- declare const useSourceProps: (props: SourceProps, docsContext: DocsContextProps<any>, sourceContext: SourceContextProps) => PureSourceProps;
280
+ declare const useSourceProps: (props: SourceProps, docsContext: DocsContextProps, sourceContext: SourceContextProps) => PureSourceProps;
280
281
  declare const Source: React__default.ComponentType<SourceProps>;
281
282
 
282
283
  type PureStoryProps = ComponentProps<typeof Story$1>;
@@ -970,6 +971,14 @@ type PresetColor = ColorValue | {
970
971
  };
971
972
  interface ColorConfig {
972
973
  presetColors?: PresetColor[];
974
+ /**
975
+ * Maximum number of preset colors shown in the color picker. When the number of presets exceeds
976
+ * this value, the oldest presets are removed first (most-recently-used order). Set to `Infinity`
977
+ * or `0` to disable the limit and show all presets.
978
+ *
979
+ * @default 27
980
+ */
981
+ maxPresetColors?: number;
973
982
  /**
974
983
  * Whether the color picker should be open by default when rendered.
975
984
  *
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,
@@ -2733,7 +2736,7 @@ var FilesControl = ({
2733
2736
  };
2734
2737
 
2735
2738
  // src/blocks/controls/index.tsx
2736
- var LazyColorControl = lazy(() => import("./_browser-chunks/Color-Q5GAO7KP.js")), ColorControl = (props) => React15.createElement(Suspense, { fallback: React15.createElement("div", null) }, React15.createElement(LazyColorControl, { ...props }));
2739
+ var LazyColorControl = lazy(() => import("./_browser-chunks/Color-23OOGO2C.js")), ColorControl = (props) => React15.createElement(Suspense, { fallback: React15.createElement("div", null) }, React15.createElement(LazyColorControl, { ...props }));
2737
2740
 
2738
2741
  // src/blocks/components/ArgsTable/ArgControl.tsx
2739
2742
  var Controls2 = {
@@ -4190,6 +4193,7 @@ var DocsContext = globalThis ? globalThis.__DOCS_CONTEXT__ : createContext(null)
4190
4193
 
4191
4194
  // src/blocks/blocks/Story.tsx
4192
4195
  import React26, { useContext } from "react";
4196
+ import { InvalidBlockOfPropError } from "storybook/internal/preview-errors";
4193
4197
 
4194
4198
  // src/blocks/blocks/useStory.ts
4195
4199
  import { useEffect as useEffect8, useState as useState11 } from "react";
@@ -4240,7 +4244,7 @@ var MDX_WRAPPED_BLOCK = Symbol("mdxWrappedBlock"), MdxWrappedBlockContext = Reac
4240
4244
  var getStoryId = (props, context) => {
4241
4245
  let { of, meta } = props;
4242
4246
  if ("of" in props && of === void 0)
4243
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
4247
+ throw new InvalidBlockOfPropError();
4244
4248
  return meta && context.referenceMeta(meta, !1), context.resolveOf(of || "story", ["story"]).story.id;
4245
4249
  }, getStoryProps = (props, story, context) => {
4246
4250
  let { parameters = {} } = story || {}, { docs = {} } = parameters, storyParameters = docs.story || {};
@@ -4388,7 +4392,7 @@ var storyBlockIdFromId = ({ story, primary }) => `story--${story.id}${primary ?
4388
4392
  // src/blocks/components/Toolbar.tsx
4389
4393
  import React29 from "react";
4390
4394
  import { Button as Button6, Toolbar as SharedToolbar } from "storybook/internal/components";
4391
- import { ShareAltIcon, ZoomIcon, ZoomOutIcon, ZoomResetIcon } from "@storybook/icons";
4395
+ import { ShareAltIcon, SyncIcon, ZoomIcon, ZoomOutIcon, ZoomResetIcon } from "@storybook/icons";
4392
4396
  import { styled as styled21 } from "storybook/theming";
4393
4397
  var AbsoluteBar = styled21(SharedToolbar)({
4394
4398
  position: "absolute",
@@ -4409,7 +4413,24 @@ var AbsoluteBar = styled21(SharedToolbar)({
4409
4413
  margin: "0 7px",
4410
4414
  backgroundColor: theme.appBorderColor,
4411
4415
  animation: `${theme.animation.glow} 1.5s ease-in-out infinite`
4412
- })), Toolbar = ({ isLoading, storyId, zoom, resetZoom, ...rest }) => React29.createElement(AbsoluteBar, { innerStyle: { gap: 4, paddingInline: 7, justifyContent: "space-between" }, ...rest }, React29.createElement(Wrapper7, { key: "left" }, isLoading ? [1, 2, 3].map((key) => React29.createElement(IconPlaceholder, { key })) : React29.createElement(React29.Fragment, null, React29.createElement(
4416
+ })), Toolbar = ({
4417
+ isLoading,
4418
+ storyId,
4419
+ zoom,
4420
+ resetZoom,
4421
+ onReloadStory,
4422
+ ...rest
4423
+ }) => React29.createElement(AbsoluteBar, { innerStyle: { gap: 4, paddingInline: 7, justifyContent: "space-between" }, ...rest }, React29.createElement(Wrapper7, { key: "left" }, isLoading ? [1, 2, 3].map((key) => React29.createElement(IconPlaceholder, { key })) : React29.createElement(React29.Fragment, null, onReloadStory && React29.createElement(
4424
+ Button6,
4425
+ {
4426
+ padding: "small",
4427
+ variant: "ghost",
4428
+ key: "reload",
4429
+ onClick: onReloadStory,
4430
+ ariaLabel: "Reload story"
4431
+ },
4432
+ React29.createElement(SyncIcon, null)
4433
+ ), React29.createElement(
4413
4434
  Button6,
4414
4435
  {
4415
4436
  padding: "small",
@@ -4541,6 +4562,7 @@ var PositionedToolbar = styled22(Toolbar)({
4541
4562
  className,
4542
4563
  layout = "padded",
4543
4564
  inline = !1,
4565
+ onReloadStory,
4544
4566
  ...props
4545
4567
  }) => {
4546
4568
  let [expanded, setExpanded] = useState13(isExpanded), [copied, setCopied] = useState13(null), [scale, setScale] = useState13(1), additionalActionItems = useMemo3(
@@ -4572,7 +4594,8 @@ var PositionedToolbar = styled22(Toolbar)({
4572
4594
  border: !0,
4573
4595
  zoom: (z2) => setScale(scale * z2),
4574
4596
  resetZoom: () => setScale(1),
4575
- storyId: !isLoading && childProps ? getStoryId(childProps, context) : void 0
4597
+ storyId: !isLoading && childProps ? getStoryId(childProps, context) : void 0,
4598
+ onReloadStory
4576
4599
  }
4577
4600
  ),
4578
4601
  React30.createElement(ZoomContext.Provider, { value: { scale } }, React30.createElement(
@@ -5471,6 +5494,7 @@ var anchorBlockIdFromId = (storyId) => `anchor--${storyId}`, Anchor = ({ storyId
5471
5494
 
5472
5495
  // src/blocks/blocks/ArgTypes.tsx
5473
5496
  import React37 from "react";
5497
+ import { InvalidBlockOfPropError as InvalidBlockOfPropError2 } from "storybook/internal/preview-errors";
5474
5498
  import { filterArgTypes } from "storybook/preview-api";
5475
5499
 
5476
5500
  // src/blocks/blocks/useOf.ts
@@ -5523,7 +5547,7 @@ function getArgTypesFromResolved(resolved) {
5523
5547
  var ArgTypesImpl = (props) => {
5524
5548
  let { of } = props;
5525
5549
  if ("of" in props && of === void 0)
5526
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
5550
+ throw new InvalidBlockOfPropError2();
5527
5551
  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);
5528
5552
  if (!(!!subcomponents && Object.keys(subcomponents || {}).length > 0))
5529
5553
  return React37.createElement(ArgsTable, { rows: filteredArgTypes, sort });
@@ -5547,11 +5571,14 @@ var ArgTypesImpl = (props) => {
5547
5571
  }, ArgTypes = withMdxComponentOverride("ArgTypes", ArgTypesImpl);
5548
5572
 
5549
5573
  // src/blocks/blocks/Canvas.tsx
5550
- import React40, { useContext as useContext5 } from "react";
5574
+ import React40, { useCallback as useCallback7, useContext as useContext5 } from "react";
5575
+ import { FORCE_REMOUNT } from "storybook/internal/core-events";
5576
+ import { InvalidBlockOfPropError as InvalidBlockOfPropError4 } from "storybook/internal/preview-errors";
5551
5577
 
5552
5578
  // src/blocks/blocks/Source.tsx
5553
5579
  import React39, { useContext as useContext4, useMemo as useMemo4 } from "react";
5554
5580
  import { SourceType } from "storybook/internal/docs-tools";
5581
+ import { InvalidBlockOfPropError as InvalidBlockOfPropError3 } from "storybook/internal/preview-errors";
5555
5582
 
5556
5583
  // src/blocks/blocks/SourceContainer.tsx
5557
5584
  import React38, { createContext as createContext3, useEffect as useEffect11, useState as useState14 } from "react";
@@ -6624,7 +6651,7 @@ function useTransformCode(source, transform, storyContext) {
6624
6651
  }
6625
6652
 
6626
6653
  // src/blocks/blocks/Source.tsx
6627
- var getStorySource = (storyId, args, sourceContext) => {
6654
+ var EMPTY_SOURCE_CONTEXT = { sources: {} }, getStorySource = (storyId, args, sourceContext) => {
6628
6655
  let { sources } = sourceContext, sourceMap = sources?.[storyId];
6629
6656
  return sourceMap?.[argsHash(args)] || sourceMap?.[UNKNOWN_ARGS_HASH] || { code: "" };
6630
6657
  }, useCode = ({
@@ -6651,9 +6678,9 @@ var getStorySource = (storyId, args, sourceContext) => {
6651
6678
  transformFromProps: props.transform
6652
6679
  });
6653
6680
  if ("of" in props && of === void 0)
6654
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
6681
+ throw new InvalidBlockOfPropError3();
6655
6682
  let sourceParameters = story?.parameters?.docs?.source || {}, format2 = props.format, language = props.language ?? sourceParameters.language ?? "jsx", dark = props.dark ?? sourceParameters.dark ?? !1;
6656
- return !props.code && !story ? { error: "Oh no! The source is not available." /* SOURCE_UNAVAILABLE */ } : props.code ? {
6683
+ return props.code === void 0 && !story ? { error: "Oh no! The source is not available." /* SOURCE_UNAVAILABLE */ } : props.code !== void 0 ? {
6657
6684
  code: props.code,
6658
6685
  format: format2,
6659
6686
  language,
@@ -6664,17 +6691,22 @@ var getStorySource = (storyId, args, sourceContext) => {
6664
6691
  language,
6665
6692
  dark
6666
6693
  });
6667
- }, SourceImpl = (props) => {
6694
+ }, SourceWithStorySnippet = (props) => {
6668
6695
  let sourceContext = useContext4(SourceContext), docsContext = useContext4(DocsContext), sourceProps = useSourceProps(props, docsContext, sourceContext);
6669
6696
  return React39.createElement(Source, { ...sourceProps });
6670
- }, Source2 = withMdxComponentOverride("Source", SourceImpl);
6697
+ }, SourceWithCode = (props) => {
6698
+ let docsContext = useContext4(DocsContext), sourceProps = useSourceProps(props, docsContext, EMPTY_SOURCE_CONTEXT);
6699
+ return React39.createElement(Source, { ...sourceProps });
6700
+ }, SourceImpl = (props) => props.code !== void 0 ? React39.createElement(SourceWithCode, { ...props }) : React39.createElement(SourceWithStorySnippet, { ...props }), Source2 = withMdxComponentOverride("Source", SourceImpl);
6671
6701
 
6672
6702
  // src/blocks/blocks/Canvas.tsx
6673
6703
  var CanvasImpl = (props) => {
6674
6704
  let docsContext = useContext5(DocsContext), sourceContext = useContext5(SourceContext), { of, source } = props;
6675
6705
  if ("of" in props && of === void 0)
6676
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
6677
- 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;
6706
+ throw new InvalidBlockOfPropError4();
6707
+ 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(() => {
6708
+ docsContext.channel.emit(FORCE_REMOUNT, { storyId: story.id });
6709
+ }, [docsContext.channel, story.id]);
6678
6710
  return React40.createElement(
6679
6711
  Preview,
6680
6712
  {
@@ -6684,7 +6716,8 @@ var CanvasImpl = (props) => {
6684
6716
  additionalActions,
6685
6717
  className,
6686
6718
  layout,
6687
- inline
6719
+ inline,
6720
+ onReloadStory: inline ? handleReloadStory : void 0
6688
6721
  },
6689
6722
  React40.createElement(Story2, { of: of || story.moduleExport, meta: props.meta, ...props.story })
6690
6723
  );
@@ -6695,7 +6728,7 @@ import React41, { useContext as useContext7 } from "react";
6695
6728
  import { filterArgTypes as filterArgTypes2 } from "storybook/preview-api";
6696
6729
 
6697
6730
  // src/blocks/blocks/useArgs.ts
6698
- import { useCallback as useCallback7, useEffect as useEffect13, useState as useState16 } from "react";
6731
+ import { useCallback as useCallback8, useEffect as useEffect13, useState as useState16 } from "react";
6699
6732
  import {
6700
6733
  RESET_STORY_ARGS,
6701
6734
  STORY_ARGS_UPDATED,
@@ -6714,10 +6747,10 @@ var useArgs = (story, context) => {
6714
6747
  };
6715
6748
  return context.channel.on(STORY_ARGS_UPDATED, onArgsUpdated), () => context.channel.off(STORY_ARGS_UPDATED, onArgsUpdated);
6716
6749
  }, [storyId, context.channel]);
6717
- let updateArgs = useCallback7(
6750
+ let updateArgs = useCallback8(
6718
6751
  (updatedArgs) => context.channel.emit(UPDATE_STORY_ARGS, { storyId, updatedArgs }),
6719
6752
  [storyId, context.channel]
6720
- ), resetArgs = useCallback7(
6753
+ ), resetArgs = useCallback8(
6721
6754
  (argNames) => context.channel.emit(RESET_STORY_ARGS, { storyId, argNames }),
6722
6755
  [storyId, context.channel]
6723
6756
  );
@@ -6795,6 +6828,7 @@ var ControlsImpl = (props) => {
6795
6828
 
6796
6829
  // src/blocks/blocks/Description.tsx
6797
6830
  import React44 from "react";
6831
+ import { InvalidBlockOfPropError as InvalidBlockOfPropError5 } from "storybook/internal/preview-errors";
6798
6832
 
6799
6833
  // src/blocks/blocks/Markdown.tsx
6800
6834
  import React43 from "react";
@@ -6993,7 +7027,7 @@ var DescriptionType = /* @__PURE__ */ ((DescriptionType2) => (DescriptionType2.I
6993
7027
  }, DescriptionImpl = (props) => {
6994
7028
  let { of } = props;
6995
7029
  if ("of" in props && of === void 0)
6996
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
7030
+ throw new InvalidBlockOfPropError5();
6997
7031
  let resolvedOf = useOf(of || "meta"), markdown = getDescriptionFromResolvedOf(resolvedOf);
6998
7032
  return markdown ? React44.createElement(Markdown, null, markdown) : null;
6999
7033
  }, Description2 = withMdxComponentOverride("Description", DescriptionImpl);
@@ -7002,14 +7036,68 @@ var DescriptionType = /* @__PURE__ */ ((DescriptionType2) => (DescriptionType2.I
7002
7036
  import React54 from "react";
7003
7037
 
7004
7038
  // src/blocks/blocks/DocsContainer.tsx
7005
- import React45, { useEffect as useEffect15 } from "react";
7039
+ import React45, { useEffect as useEffect15, useMemo as useMemo5 } from "react";
7006
7040
  import { ThemeProvider, ensure as ensureTheme } from "storybook/theming";
7041
+
7042
+ // src/blocks/blocks/DocsSluggerContext.ts
7043
+ import { createContext as createContext4 } from "react";
7044
+
7045
+ // ../../../node_modules/github-slugger/regex.js
7046
+ 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;
7047
+
7048
+ // ../../../node_modules/github-slugger/index.js
7049
+ var own = Object.hasOwnProperty, BananaSlug = class {
7050
+ /**
7051
+ * Create a new slug class.
7052
+ */
7053
+ constructor() {
7054
+ this.occurrences, this.reset();
7055
+ }
7056
+ /**
7057
+ * Generate a unique slug.
7058
+ *
7059
+ * Tracks previously generated slugs: repeated calls with the same value
7060
+ * will result in different slugs.
7061
+ * Use the `slug` function to get same slugs.
7062
+ *
7063
+ * @param {string} value
7064
+ * String of text to slugify
7065
+ * @param {boolean} [maintainCase=false]
7066
+ * Keep the current case, otherwise make all lowercase
7067
+ * @return {string}
7068
+ * A unique slug string
7069
+ */
7070
+ slug(value, maintainCase) {
7071
+ let self2 = this, result = slug(value, maintainCase === !0), originalSlug = result;
7072
+ for (; own.call(self2.occurrences, result); )
7073
+ self2.occurrences[originalSlug]++, result = originalSlug + "-" + self2.occurrences[originalSlug];
7074
+ return self2.occurrences[result] = 0, result;
7075
+ }
7076
+ /**
7077
+ * Reset - Forget all previous slugs
7078
+ *
7079
+ * @return void
7080
+ */
7081
+ reset() {
7082
+ this.occurrences = /* @__PURE__ */ Object.create(null);
7083
+ }
7084
+ };
7085
+ function slug(value, maintainCase) {
7086
+ return typeof value != "string" ? "" : (maintainCase || (value = value.toLowerCase()), value.replace(regex, "").replace(/ /g, "-"));
7087
+ }
7088
+
7089
+ // src/blocks/blocks/DocsSluggerContext.ts
7090
+ var createDocsSlugger = () => new BananaSlug(), DocsSluggerContext = createContext4(
7091
+ null
7092
+ );
7093
+
7094
+ // src/blocks/blocks/DocsContainer.tsx
7007
7095
  var { document: document3, window: globalWindow3 } = globalThis, DocsContainer = ({
7008
7096
  context,
7009
7097
  theme,
7010
7098
  children
7011
7099
  }) => {
7012
- let toc;
7100
+ let slugger = useMemo5(() => createDocsSlugger(), []), toc;
7013
7101
  try {
7014
7102
  toc = context.resolveOf("meta", ["meta"]).preparedMeta.parameters?.docs?.toc;
7015
7103
  } catch {
@@ -7026,7 +7114,7 @@ var { document: document3, window: globalWindow3 } = globalThis, DocsContainer =
7026
7114
  }
7027
7115
  } catch {
7028
7116
  }
7029
- }), React45.createElement(DocsContext.Provider, { value: context }, React45.createElement(SourceContainer, { channel: context.channel }, React45.createElement(ThemeProvider, { theme: ensureTheme(theme) }, React45.createElement(
7117
+ }), 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(
7030
7118
  DocsPageWrapper,
7031
7119
  {
7032
7120
  toc: toc ? React45.createElement(
@@ -7039,7 +7127,7 @@ var { document: document3, window: globalWindow3 } = globalThis, DocsContainer =
7039
7127
  ) : null
7040
7128
  },
7041
7129
  children
7042
- ))));
7130
+ )))));
7043
7131
  };
7044
7132
 
7045
7133
  // src/blocks/blocks/DocsPage.tsx
@@ -7058,52 +7146,6 @@ import { H3 } from "storybook/internal/components";
7058
7146
  // src/blocks/blocks/Heading.tsx
7059
7147
  import React46 from "react";
7060
7148
  import { H2 } from "storybook/internal/components";
7061
-
7062
- // ../../../node_modules/github-slugger/regex.js
7063
- 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;
7064
-
7065
- // ../../../node_modules/github-slugger/index.js
7066
- var own = Object.hasOwnProperty, BananaSlug = class {
7067
- /**
7068
- * Create a new slug class.
7069
- */
7070
- constructor() {
7071
- this.occurrences, this.reset();
7072
- }
7073
- /**
7074
- * Generate a unique slug.
7075
- *
7076
- * Tracks previously generated slugs: repeated calls with the same value
7077
- * will result in different slugs.
7078
- * Use the `slug` function to get same slugs.
7079
- *
7080
- * @param {string} value
7081
- * String of text to slugify
7082
- * @param {boolean} [maintainCase=false]
7083
- * Keep the current case, otherwise make all lowercase
7084
- * @return {string}
7085
- * A unique slug string
7086
- */
7087
- slug(value, maintainCase) {
7088
- let self2 = this, result = slug(value, maintainCase === !0), originalSlug = result;
7089
- for (; own.call(self2.occurrences, result); )
7090
- self2.occurrences[originalSlug]++, result = originalSlug + "-" + self2.occurrences[originalSlug];
7091
- return self2.occurrences[result] = 0, result;
7092
- }
7093
- /**
7094
- * Reset - Forget all previous slugs
7095
- *
7096
- * @return void
7097
- */
7098
- reset() {
7099
- this.occurrences = /* @__PURE__ */ Object.create(null);
7100
- }
7101
- };
7102
- function slug(value, maintainCase) {
7103
- return typeof value != "string" ? "" : (maintainCase || (value = value.toLowerCase()), value.replace(regex, "").replace(/ /g, "-"));
7104
- }
7105
-
7106
- // src/blocks/blocks/Heading.tsx
7107
7149
  var slugs = new BananaSlug(), HeadingImpl = ({
7108
7150
  children,
7109
7151
  disableAnchor,
@@ -7111,7 +7153,7 @@ var slugs = new BananaSlug(), HeadingImpl = ({
7111
7153
  }) => {
7112
7154
  if (disableAnchor || typeof children != "string")
7113
7155
  return React46.createElement(H2, null, children);
7114
- let tagID = slugs.slug(children.toLowerCase());
7156
+ let tagID = (React46.useContext(DocsSluggerContext) ?? slugs).slug(children.toLowerCase());
7115
7157
  return React46.createElement(HeaderMdx, { as: "h2", id: tagID, ...props }, children);
7116
7158
  }, Heading2 = withMdxComponentOverride("Heading", HeadingImpl);
7117
7159
 
@@ -7119,7 +7161,7 @@ var slugs = new BananaSlug(), HeadingImpl = ({
7119
7161
  var SubheadingImpl = ({ children, disableAnchor }) => {
7120
7162
  if (disableAnchor || typeof children != "string")
7121
7163
  return React47.createElement(H3, null, children);
7122
- let tagID = slugs.slug(children.toLowerCase());
7164
+ let tagID = (React47.useContext(DocsSluggerContext) ?? slugs).slug(children.toLowerCase());
7123
7165
  return React47.createElement(HeaderMdx, { as: "h3", id: tagID }, children);
7124
7166
  }, Subheading = withMdxComponentOverride("Subheading", SubheadingImpl);
7125
7167
 
@@ -7176,10 +7218,11 @@ var StyledHeading = styled29(Heading2)(({ theme }) => ({
7176
7218
  // src/blocks/blocks/Subtitle.tsx
7177
7219
  import React51 from "react";
7178
7220
  import { deprecate } from "storybook/internal/client-logger";
7221
+ import { InvalidBlockOfPropError as InvalidBlockOfPropError6 } from "storybook/internal/preview-errors";
7179
7222
  var DEPRECATION_MIGRATION_LINK = "https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#subtitle-block-and-parameterscomponentsubtitle", SubtitleImpl = (props) => {
7180
7223
  let { of, children } = props;
7181
7224
  if ("of" in props && of === void 0)
7182
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
7225
+ throw new InvalidBlockOfPropError6();
7183
7226
  let preparedMeta;
7184
7227
  try {
7185
7228
  preparedMeta = useOf(of || "meta", ["meta"]).preparedMeta;
@@ -7197,13 +7240,14 @@ var DEPRECATION_MIGRATION_LINK = "https://github.com/storybookjs/storybook/blob/
7197
7240
 
7198
7241
  // src/blocks/blocks/Title.tsx
7199
7242
  import React52 from "react";
7243
+ import { InvalidBlockOfPropError as InvalidBlockOfPropError7 } from "storybook/internal/preview-errors";
7200
7244
  var STORY_KIND_PATH_SEPARATOR = /\s*\/\s*/, extractTitle = (title) => {
7201
7245
  let groups = title.trim().split(STORY_KIND_PATH_SEPARATOR);
7202
7246
  return groups?.[groups?.length - 1] || title;
7203
7247
  }, TitleImpl = (props) => {
7204
7248
  let { children, of } = props;
7205
7249
  if ("of" in props && of === void 0)
7206
- throw new Error("Unexpected `of={undefined}`, did you mistype a CSF file reference?");
7250
+ throw new InvalidBlockOfPropError7();
7207
7251
  let preparedMeta;
7208
7252
  try {
7209
7253
  preparedMeta = useOf(of || "meta", ["meta"]).preparedMeta;
@@ -1,20 +1,20 @@
1
- import CJS_COMPAT_NODE_URL_mbyf8gwq1e from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_mbyf8gwq1e from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_mbyf8gwq1e from "node:module";
1
+ import CJS_COMPAT_NODE_URL_mggrqh1ekvm from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_mggrqh1ekvm from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_mggrqh1ekvm from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_mbyf8gwq1e.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_mbyf8gwq1e.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_mbyf8gwq1e.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_mggrqh1ekvm.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_mggrqh1ekvm.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_mggrqh1ekvm.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-FOXFKJUT.js";
15
- import "./_node-chunks/chunk-O3IP3EYZ.js";
16
- import "./_node-chunks/chunk-3CQLJTS4.js";
17
- import "./_node-chunks/chunk-UBUIPEWJ.js";
14
+ } from "./_node-chunks/chunk-CQ7JP424.js";
15
+ import "./_node-chunks/chunk-P56KWDKY.js";
16
+ import "./_node-chunks/chunk-6NKZRZCL.js";
17
+ import "./_node-chunks/chunk-J3FUADMZ.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_mbyf8gwq1e from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_mbyf8gwq1e from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_mbyf8gwq1e from "node:module";
1
+ import CJS_COMPAT_NODE_URL_mggrqh1ekvm from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_mggrqh1ekvm from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_mggrqh1ekvm from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_mbyf8gwq1e.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_mbyf8gwq1e.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_mbyf8gwq1e.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_mggrqh1ekvm.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_mggrqh1ekvm.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_mggrqh1ekvm.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-UBUIPEWJ.js";
12
+ import "./_node-chunks/chunk-J3FUADMZ.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-WTB7POBJ.js")).default, rehypeExternalLinks = (await import("./_node-chunks/rehype-external-links-PGJMHXWX.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-RW2QDUVH.js")).default, rehypeExternalLinks = (await import("./_node-chunks/rehype-external-links-T674BFXZ.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-YVVOIQAZ.js"), { react, reactDom, mdx } = await getResolvedReact(options), packageDeduplicationPlugin = {
391
+ let { plugins = [] } = config, { mdxPlugin } = await import("./_node-chunks/mdx-plugin-25QZZ22K.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.1",
3
+ "version": "10.4.0-alpha.11",
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.1",
90
+ "@storybook/csf-plugin": "10.4.0-alpha.11",
91
91
  "@storybook/icons": "^2.0.1",
92
- "@storybook/react-dom-shim": "10.4.0-alpha.1",
92
+ "@storybook/react-dom-shim": "10.4.0-alpha.11",
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.1"
119
+ "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
120
+ "storybook": "^10.4.0-alpha.11"
121
+ },
122
+ "peerDependenciesMeta": {
123
+ "@types/react": {
124
+ "optional": true
125
+ }
120
126
  },
121
127
  "publishConfig": {
122
128
  "access": "public"