@storybook/addon-docs 10.5.0-alpha.1 → 10.5.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getControlId
3
- } from "./chunk-S2IHWCOG.js";
3
+ } from "./chunk-QQBDHPVZ.js";
4
4
  import {
5
5
  __commonJS,
6
6
  __toESM
@@ -1021,6 +1021,7 @@ var Wrapper = styled.div({
1021
1021
  }, ColorControl = ({
1022
1022
  name,
1023
1023
  storyId,
1024
+ controlsId,
1024
1025
  value: initialValue,
1025
1026
  onChange,
1026
1027
  onFocus,
@@ -1033,7 +1034,7 @@ var Wrapper = styled.div({
1033
1034
  let debouncedOnChange = useCallback(debounce(onChange, 200), [onChange]), { value, realValue, updateValue, color, colorSpace, cycleColorSpace } = useColorInput(
1034
1035
  initialValue,
1035
1036
  debouncedOnChange
1036
- ), { presets, addPreset } = usePresets(presetColors ?? [], color, colorSpace, maxPresetColors), Picker = ColorPicker[colorSpace], readOnly = !!argType?.table?.readonly, controlId = getControlId(name, storyId);
1037
+ ), { presets, addPreset } = usePresets(presetColors ?? [], color, colorSpace, maxPresetColors), Picker = ColorPicker[colorSpace], readOnly = !!argType?.table?.readonly, controlId = getControlId(name, storyId, controlsId);
1037
1038
  return React.createElement(Wrapper, null, React.createElement("label", { htmlFor: controlId, className: "sb-sr-only" }, name), React.createElement(
1038
1039
  Input,
1039
1040
  {
@@ -0,0 +1,13 @@
1
+ // src/blocks/controls/helpers.ts
2
+ var getControlId = (value, storyId, controlsId) => {
3
+ let base = value.replace(/\s+/g, "-"), parts = ["control"];
4
+ return controlsId && parts.push(controlsId), storyId && parts.push(storyId), parts.push(base), parts.join("-");
5
+ }, getControlSetterButtonId = (value, storyId, controlsId) => {
6
+ let base = value.replace(/\s+/g, "-"), parts = ["set"];
7
+ return controlsId && parts.push(controlsId), storyId && parts.push(storyId), parts.push(base), parts.join("-");
8
+ };
9
+
10
+ export {
11
+ getControlId,
12
+ getControlSetterButtonId
13
+ };
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_gfstvrkbvmd from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_gfstvrkbvmd from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_gfstvrkbvmd from "node:module";
1
+ import CJS_COMPAT_NODE_URL_nxfv7j63nja from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_nxfv7j63nja from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_nxfv7j63nja from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_gfstvrkbvmd.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_gfstvrkbvmd.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_gfstvrkbvmd.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_nxfv7j63nja.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_nxfv7j63nja.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_nxfv7j63nja.createRequire(import.meta.url);
8
8
 
9
9
  // ------------------------------------------------------------
10
10
  // end of CJS compatibility banner, injected by Storybook's esbuild configuration
@@ -12,17 +12,17 @@ var require = CJS_COMPAT_NODE_MODULE_gfstvrkbvmd.createRequire(import.meta.url);
12
12
  import {
13
13
  esm_default,
14
14
  stringify
15
- } from "./chunk-CHBEJILX.js";
15
+ } from "./chunk-ITTBDXG3.js";
16
16
  import {
17
17
  visit
18
- } from "./chunk-ER2HZR2B.js";
18
+ } from "./chunk-6JFNUZI6.js";
19
19
  import {
20
20
  __commonJS,
21
21
  __esm,
22
22
  __export,
23
23
  __toCommonJS,
24
24
  __toESM
25
- } from "./chunk-QT5SF4ZG.js";
25
+ } from "./chunk-4WYVLCIN.js";
26
26
 
27
27
  // ../../../node_modules/acorn-jsx/xhtml.js
28
28
  var require_xhtml = __commonJS({
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_gfstvrkbvmd from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_gfstvrkbvmd from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_gfstvrkbvmd from "node:module";
1
+ import CJS_COMPAT_NODE_URL_nxfv7j63nja from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_nxfv7j63nja from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_nxfv7j63nja from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_gfstvrkbvmd.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_gfstvrkbvmd.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_gfstvrkbvmd.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_nxfv7j63nja.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_nxfv7j63nja.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_nxfv7j63nja.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_gfstvrkbvmd from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_gfstvrkbvmd from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_gfstvrkbvmd from "node:module";
1
+ import CJS_COMPAT_NODE_URL_nxfv7j63nja from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_nxfv7j63nja from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_nxfv7j63nja from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_gfstvrkbvmd.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_gfstvrkbvmd.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_gfstvrkbvmd.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_nxfv7j63nja.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_nxfv7j63nja.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_nxfv7j63nja.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_gfstvrkbvmd from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_gfstvrkbvmd from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_gfstvrkbvmd from "node:module";
1
+ import CJS_COMPAT_NODE_URL_nxfv7j63nja from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_nxfv7j63nja from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_nxfv7j63nja from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_gfstvrkbvmd.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_gfstvrkbvmd.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_gfstvrkbvmd.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_nxfv7j63nja.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_nxfv7j63nja.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_nxfv7j63nja.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_gfstvrkbvmd from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_gfstvrkbvmd from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_gfstvrkbvmd from "node:module";
1
+ import CJS_COMPAT_NODE_URL_nxfv7j63nja from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_nxfv7j63nja from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_nxfv7j63nja from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_gfstvrkbvmd.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_gfstvrkbvmd.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_gfstvrkbvmd.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_nxfv7j63nja.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_nxfv7j63nja.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_nxfv7j63nja.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-2P7DRLLN.js";
15
- import "./chunk-CHBEJILX.js";
16
- import "./chunk-ER2HZR2B.js";
14
+ } from "./chunk-3Y2SQNBB.js";
15
+ import "./chunk-ITTBDXG3.js";
16
+ import "./chunk-6JFNUZI6.js";
17
17
  import {
18
18
  __commonJS,
19
19
  __toESM
20
- } from "./chunk-QT5SF4ZG.js";
20
+ } from "./chunk-4WYVLCIN.js";
21
21
 
22
22
  // ../../../node_modules/@rollup/pluginutils/node_modules/picomatch/lib/constants.js
23
23
  var require_constants = __commonJS({
@@ -1150,7 +1150,7 @@ var hasStringIsWellFormed = "isWellFormed" in String.prototype;
1150
1150
 
1151
1151
  // src/mdx-plugin.ts
1152
1152
  async function mdxPlugin(options) {
1153
- let include = /\.mdx$/, filter = createFilter(include), { presets } = options, mdxPluginOptions = (await presets.apply("options", {}))?.mdxPluginOptions, rehypeSlug = (await import("./rehype-slug-LVCBRYZT.js")).default, rehypeExternalLinks = (await import("./rehype-external-links-5FK5D2OH.js")).default;
1153
+ let include = /\.mdx$/, filter = createFilter(include), { presets } = options, mdxPluginOptions = (await presets.apply("options", {}))?.mdxPluginOptions, rehypeSlug = (await import("./rehype-slug-SGE7I27P.js")).default, rehypeExternalLinks = (await import("./rehype-external-links-647EEFIQ.js")).default;
1154
1154
  return {
1155
1155
  name: "storybook:mdx-plugin",
1156
1156
  enforce: "pre",
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_gfstvrkbvmd from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_gfstvrkbvmd from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_gfstvrkbvmd from "node:module";
1
+ import CJS_COMPAT_NODE_URL_nxfv7j63nja from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_nxfv7j63nja from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_nxfv7j63nja from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_gfstvrkbvmd.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_gfstvrkbvmd.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_gfstvrkbvmd.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_nxfv7j63nja.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_nxfv7j63nja.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_nxfv7j63nja.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_gfstvrkbvmd.createRequire(import.meta.url);
12
12
  import {
13
13
  esm_default,
14
14
  parse
15
- } from "./chunk-CHBEJILX.js";
15
+ } from "./chunk-ITTBDXG3.js";
16
16
  import {
17
17
  visit
18
- } from "./chunk-ER2HZR2B.js";
19
- import "./chunk-QT5SF4ZG.js";
18
+ } from "./chunk-6JFNUZI6.js";
19
+ import "./chunk-4WYVLCIN.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_gfstvrkbvmd from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_gfstvrkbvmd from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_gfstvrkbvmd from "node:module";
1
+ import CJS_COMPAT_NODE_URL_nxfv7j63nja from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_nxfv7j63nja from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_nxfv7j63nja from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_gfstvrkbvmd.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_gfstvrkbvmd.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_gfstvrkbvmd.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_nxfv7j63nja.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_nxfv7j63nja.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_nxfv7j63nja.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-ER2HZR2B.js";
15
- import "./chunk-QT5SF4ZG.js";
14
+ } from "./chunk-6JFNUZI6.js";
15
+ import "./chunk-4WYVLCIN.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
@@ -57,6 +57,7 @@ interface ArgsTableOptionProps {
57
57
  isLoading?: boolean;
58
58
  sort?: SortType;
59
59
  storyId?: string;
60
+ controlsId?: string;
60
61
  }
61
62
  interface ArgsTableDataProps {
62
63
  rows: ArgTypes$1;
@@ -954,6 +955,7 @@ declare const HeadersMdx: {};
954
955
  interface ControlProps<T> {
955
956
  name: string;
956
957
  storyId?: string;
958
+ controlsId?: string;
957
959
  value?: T;
958
960
  defaultValue?: T;
959
961
  argType?: ArgType;
package/dist/blocks.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getControlId,
3
3
  getControlSetterButtonId
4
- } from "./_browser-chunks/chunk-S2IHWCOG.js";
4
+ } from "./_browser-chunks/chunk-QQBDHPVZ.js";
5
5
  import {
6
6
  EmptyBlock,
7
7
  Source,
@@ -663,6 +663,7 @@ var getBooleanControlStyles = (theme) => ({
663
663
  }), Label = styled.label(({ theme }) => getBooleanControlStyles(theme)), parse = (value) => value === "true", BooleanControl = ({
664
664
  name,
665
665
  storyId,
666
+ controlsId,
666
667
  value,
667
668
  onChange,
668
669
  onBlur,
@@ -677,13 +678,13 @@ var getBooleanControlStyles = (theme) => ({
677
678
  ariaLabel: !1,
678
679
  variant: "outline",
679
680
  size: "medium",
680
- id: getControlSetterButtonId(name, storyId),
681
+ id: getControlSetterButtonId(name, storyId, controlsId),
681
682
  onClick: onSetFalse,
682
683
  disabled: readonly
683
684
  },
684
685
  "Set boolean"
685
686
  );
686
- let controlId = getControlId(name, storyId), parsedValue = typeof value == "string" ? parse(value) : value;
687
+ let controlId = getControlId(name, storyId, controlsId), parsedValue = typeof value == "string" ? parse(value) : value;
687
688
  return React.createElement(Label, { "aria-disabled": readonly, htmlFor: controlId, "aria-label": name }, React.createElement(
688
689
  "input",
689
690
  {
@@ -741,6 +742,7 @@ var parseDate = (value) => {
741
742
  }), DateControl = ({
742
743
  name,
743
744
  storyId,
745
+ controlsId,
744
746
  value,
745
747
  onChange,
746
748
  onFocus,
@@ -765,7 +767,7 @@ var parseDate = (value) => {
765
767
  result.setHours(parsed.getHours()), result.setMinutes(parsed.getMinutes());
766
768
  let time = result.getTime();
767
769
  time && onChange(time), setValid(!!time);
768
- }, controlId = getControlId(name, storyId);
770
+ }, controlId = getControlId(name, storyId, controlsId);
769
771
  return React2.createElement(FlexSpaced, null, React2.createElement("legend", { className: "sb-sr-only" }, name), React2.createElement("label", { htmlFor: `${controlId}-date`, className: "sb-sr-only" }, "Date"), React2.createElement(
770
772
  FormInput,
771
773
  {
@@ -808,6 +810,7 @@ var Wrapper = styled3.label({
808
810
  })), NumberControl = ({
809
811
  name,
810
812
  storyId,
813
+ controlsId,
811
814
  value,
812
815
  onChange,
813
816
  min,
@@ -843,7 +846,7 @@ var Wrapper = styled3.label({
843
846
  ariaLabel: !1,
844
847
  variant: "outline",
845
848
  size: "medium",
846
- id: getControlSetterButtonId(name, storyId),
849
+ id: getControlSetterButtonId(name, storyId, controlsId),
847
850
  onClick: onForceVisible,
848
851
  disabled: readonly
849
852
  },
@@ -852,7 +855,7 @@ var Wrapper = styled3.label({
852
855
  FormInput2,
853
856
  {
854
857
  ref: htmlElRef,
855
- id: getControlId(name, storyId),
858
+ id: getControlId(name, storyId, controlsId),
856
859
  type: "number",
857
860
  onChange: handleChange,
858
861
  size: "flex",
@@ -921,6 +924,7 @@ var Wrapper2 = styled4.fieldset(
921
924
  })), CheckboxControl = ({
922
925
  name,
923
926
  storyId,
927
+ controlsId,
924
928
  options,
925
929
  value,
926
930
  onChange,
@@ -936,7 +940,7 @@ var Wrapper2 = styled4.fieldset(
936
940
  useEffect3(() => {
937
941
  setSelected(selectedKeys(value || [], options));
938
942
  }, [value]);
939
- let controlId = getControlId(name, storyId);
943
+ let controlId = getControlId(name, storyId, controlsId);
940
944
  return React4.createElement(Wrapper2, { $isInline: isInline }, React4.createElement("legend", { className: "sb-sr-only" }, name), Object.keys(options).map((key, index) => {
941
945
  let id = `${controlId}-${index}`;
942
946
  return React4.createElement(Label2, { key: id, htmlFor: id, $readOnly: readonly }, React4.createElement(
@@ -993,6 +997,7 @@ var Wrapper3 = styled5.fieldset(
993
997
  })), RadioControl = ({
994
998
  name,
995
999
  storyId,
1000
+ controlsId,
996
1001
  options,
997
1002
  value,
998
1003
  onChange,
@@ -1001,7 +1006,7 @@ var Wrapper3 = styled5.fieldset(
1001
1006
  }) => {
1002
1007
  if (!options)
1003
1008
  return logger2.warn(`Radio with no options: ${name}`), React5.createElement(React5.Fragment, null, "-");
1004
- let selection = selectedKey(value, options), controlId = getControlId(name, storyId), readonly = !!argType?.table?.readonly;
1009
+ let selection = selectedKey(value, options), controlId = getControlId(name, storyId, controlsId), readonly = !!argType?.table?.readonly;
1005
1010
  return React5.createElement(Wrapper3, { isInline }, React5.createElement("legend", { className: "sb-sr-only" }, name), Object.keys(options).map((key, index) => {
1006
1011
  let id = `${controlId}-${index}`;
1007
1012
  return React5.createElement(Label3, { key: id, htmlFor: id, $readOnly: readonly }, React5.createElement(
@@ -1095,16 +1100,32 @@ var styleResets = {
1095
1100
  fill: theme.textMutedColor
1096
1101
  }
1097
1102
  }
1098
- })), NO_SELECTION = "Choose option...", SingleSelect = ({ name, storyId, value, options, onChange, argType }) => {
1103
+ })), NO_SELECTION = "Choose option...", SingleSelect = ({
1104
+ name,
1105
+ storyId,
1106
+ controlsId,
1107
+ value,
1108
+ options,
1109
+ onChange,
1110
+ argType
1111
+ }) => {
1099
1112
  let handleChange = (e2) => {
1100
1113
  onChange(options[e2.currentTarget.value]);
1101
- }, selection = selectedKey(value, options) || NO_SELECTION, controlId = getControlId(name, storyId), readonly = !!argType?.table?.readonly;
1114
+ }, selection = selectedKey(value, options) || NO_SELECTION, controlId = getControlId(name, storyId, controlsId), readonly = !!argType?.table?.readonly;
1102
1115
  return React6.createElement(SelectWrapper, null, React6.createElement(ChevronSmallDownIcon, null), React6.createElement("label", { htmlFor: controlId, className: "sb-sr-only" }, name), React6.createElement(OptionsSelect, { disabled: readonly, id: controlId, value: selection, onChange: handleChange }, React6.createElement("option", { disabled: selection === NO_SELECTION, key: "no-selection" }, NO_SELECTION), Object.keys(options).map((key) => React6.createElement("option", { key, value: key }, key))));
1103
- }, MultiSelect = ({ name, storyId, value, options, onChange, argType }) => {
1116
+ }, MultiSelect = ({
1117
+ name,
1118
+ storyId,
1119
+ controlsId,
1120
+ value,
1121
+ options,
1122
+ onChange,
1123
+ argType
1124
+ }) => {
1104
1125
  let handleChange = (e2) => {
1105
1126
  let selection2 = Array.from(e2.currentTarget.options).filter((option) => option.selected).map((option) => option.value);
1106
1127
  onChange(selectedValues(selection2, options));
1107
- }, selection = selectedKeys(value, options), controlId = getControlId(name, storyId), readonly = !!argType?.table?.readonly;
1128
+ }, selection = selectedKeys(value, options), controlId = getControlId(name, storyId, controlsId), readonly = !!argType?.table?.readonly;
1108
1129
  return React6.createElement(SelectWrapper, null, React6.createElement("label", { htmlFor: controlId, className: "sb-sr-only" }, name), React6.createElement(
1109
1130
  OptionsSelect,
1110
1131
  {
@@ -2401,7 +2422,14 @@ var { window: globalWindow } = globalThis, Wrapper4 = styled8.div(({ theme }) =>
2401
2422
  event.currentTarget.dispatchEvent(new globalWindow.KeyboardEvent("keydown", ENTER_EVENT));
2402
2423
  }, selectValue = (event) => {
2403
2424
  event.currentTarget.select();
2404
- }, ObjectControl = ({ name, storyId, value, onChange, argType }) => {
2425
+ }, ObjectControl = ({
2426
+ name,
2427
+ storyId,
2428
+ controlsId,
2429
+ value,
2430
+ onChange,
2431
+ argType
2432
+ }) => {
2405
2433
  let theme = useTheme(), data = useMemo(() => value && cloneDeep(value), [value]), hasData = data != null, [showRaw, setShowRaw] = useState4(!hasData), [parseError, setParseError] = useState4(null), readonly = !!argType?.table?.readonly, updateRaw = useCallback3(
2406
2434
  (raw) => {
2407
2435
  try {
@@ -2424,7 +2452,7 @@ var { window: globalWindow } = globalThis, Wrapper4 = styled8.div(({ theme }) =>
2424
2452
  {
2425
2453
  ariaLabel: !1,
2426
2454
  disabled: readonly,
2427
- id: getControlSetterButtonId(name, storyId),
2455
+ id: getControlSetterButtonId(name, storyId, controlsId),
2428
2456
  onClick: onForceVisible
2429
2457
  },
2430
2458
  "Set object"
@@ -2433,7 +2461,7 @@ var { window: globalWindow } = globalThis, Wrapper4 = styled8.div(({ theme }) =>
2433
2461
  RawInput,
2434
2462
  {
2435
2463
  ref: htmlElRef,
2436
- id: getControlId(name, storyId),
2464
+ id: getControlId(name, storyId, controlsId),
2437
2465
  minRows: 3,
2438
2466
  name,
2439
2467
  key: jsonString,
@@ -2600,6 +2628,7 @@ function getNumberOfDecimalPlaces(number) {
2600
2628
  var RangeControl = ({
2601
2629
  name,
2602
2630
  storyId,
2631
+ controlsId,
2603
2632
  value,
2604
2633
  onChange,
2605
2634
  min = 0,
@@ -2611,7 +2640,7 @@ var RangeControl = ({
2611
2640
  }) => {
2612
2641
  let handleChange = (event) => {
2613
2642
  onChange(parse2(event.target.value));
2614
- }, hasValue = value !== void 0, numberOFDecimalsPlaces = useMemo2(() => getNumberOfDecimalPlaces(step), [step]), readonly = !!argType?.table?.readonly, controlId = getControlId(name, storyId);
2643
+ }, hasValue = value !== void 0, numberOFDecimalsPlaces = useMemo2(() => getNumberOfDecimalPlaces(step), [step]), readonly = !!argType?.table?.readonly, controlId = getControlId(name, storyId, controlsId);
2615
2644
  return React12.createElement(RangeWrapper, { readOnly: readonly }, React12.createElement("label", { htmlFor: controlId, className: "sb-sr-only" }, name), React12.createElement(RangeLabel, null, min), React12.createElement(
2616
2645
  RangeInput,
2617
2646
  {
@@ -2643,6 +2672,7 @@ var Wrapper5 = styled10.label({
2643
2672
  })), TextControl = ({
2644
2673
  name,
2645
2674
  storyId,
2675
+ controlsId,
2646
2676
  value,
2647
2677
  onChange,
2648
2678
  onFocus,
@@ -2663,7 +2693,7 @@ var Wrapper5 = styled10.label({
2663
2693
  variant: "outline",
2664
2694
  size: "medium",
2665
2695
  disabled: readonly,
2666
- id: getControlSetterButtonId(name, storyId),
2696
+ id: getControlSetterButtonId(name, storyId, controlsId),
2667
2697
  onClick: onForceVisible
2668
2698
  },
2669
2699
  "Set string"
@@ -2672,7 +2702,7 @@ var Wrapper5 = styled10.label({
2672
2702
  return React13.createElement(Wrapper5, null, React13.createElement(
2673
2703
  Form4.Textarea,
2674
2704
  {
2675
- id: getControlId(name, storyId),
2705
+ id: getControlId(name, storyId, controlsId),
2676
2706
  maxLength,
2677
2707
  onChange: handleChange,
2678
2708
  disabled: readonly,
@@ -2704,6 +2734,7 @@ var FilesControl = ({
2704
2734
  onChange,
2705
2735
  name,
2706
2736
  storyId,
2737
+ controlsId,
2707
2738
  accept = "image/*",
2708
2739
  value,
2709
2740
  argType
@@ -2718,7 +2749,7 @@ var FilesControl = ({
2718
2749
  useEffect5(() => {
2719
2750
  value == null && inputElement.current && (inputElement.current.value = "");
2720
2751
  }, [value, name]);
2721
- let controlId = getControlId(name, storyId);
2752
+ let controlId = getControlId(name, storyId, controlsId);
2722
2753
  return React14.createElement(React14.Fragment, null, React14.createElement("label", { htmlFor: controlId, className: "sb-sr-only" }, name), React14.createElement(
2723
2754
  FileInput,
2724
2755
  {
@@ -2736,7 +2767,7 @@ var FilesControl = ({
2736
2767
  };
2737
2768
 
2738
2769
  // src/blocks/controls/index.tsx
2739
- var LazyColorControl = lazy(() => import("./_browser-chunks/Color-23OOGO2C.js")), ColorControl = (props) => React15.createElement(Suspense, { fallback: React15.createElement("div", null) }, React15.createElement(LazyColorControl, { ...props }));
2770
+ var LazyColorControl = lazy(() => import("./_browser-chunks/Color-MQE2NRD4.js")), ColorControl = (props) => React15.createElement(Suspense, { fallback: React15.createElement("div", null) }, React15.createElement(LazyColorControl, { ...props }));
2740
2771
 
2741
2772
  // src/blocks/components/ArgsTable/ArgControl.tsx
2742
2773
  var Controls2 = {
@@ -2755,7 +2786,14 @@ var Controls2 = {
2755
2786
  range: RangeControl,
2756
2787
  text: TextControl,
2757
2788
  file: FilesControl
2758
- }, NoControl = () => React16.createElement(React16.Fragment, null, "-"), ArgControl = ({ row, arg, updateArgs, isHovered, storyId }) => {
2789
+ }, NoControl = () => React16.createElement(React16.Fragment, null, "-"), ArgControl = ({
2790
+ row,
2791
+ arg,
2792
+ updateArgs,
2793
+ isHovered,
2794
+ storyId,
2795
+ controlsId
2796
+ }) => {
2759
2797
  let { key, control } = row, [isFocused, setFocused] = useState6(!1), [boxedValue, setBoxedValue] = useState6({ value: arg });
2760
2798
  useEffect6(() => {
2761
2799
  isFocused || setBoxedValue({ value: arg });
@@ -2779,6 +2817,7 @@ var Controls2 = {
2779
2817
  let props = {
2780
2818
  name: key,
2781
2819
  storyId,
2820
+ controlsId,
2782
2821
  argType: row,
2783
2822
  value: boxedValue.value,
2784
2823
  onChange,
@@ -3403,7 +3442,8 @@ var sortFns = {
3403
3442
  initialExpandedArgs,
3404
3443
  sort = "none",
3405
3444
  isLoading,
3406
- storyId
3445
+ storyId,
3446
+ controlsId
3407
3447
  } = props;
3408
3448
  if ("error" in props) {
3409
3449
  let { error } = props;
@@ -3422,7 +3462,14 @@ var sortFns = {
3422
3462
  return React23.createElement(Empty, { inAddonPanel });
3423
3463
  let colSpan = 1;
3424
3464
  updateArgs && (colSpan += 1), compact2 || (colSpan += 2);
3425
- let expandable = Object.keys(groups.sections).length > 0, common = { updateArgs, compact: compact2, inAddonPanel, initialExpandedArgs, storyId };
3465
+ let expandable = Object.keys(groups.sections).length > 0, common = {
3466
+ updateArgs,
3467
+ compact: compact2,
3468
+ inAddonPanel,
3469
+ initialExpandedArgs,
3470
+ storyId,
3471
+ controlsId
3472
+ };
3426
3473
  return React23.createElement(ResetWrapper, null, React23.createElement(TablePositionWrapper, null, updateArgs && !isLoading && resetArgs && React23.createElement(ButtonPositionWrapper, null, React23.createElement(
3427
3474
  StyledButton,
3428
3475
  {
@@ -4643,17 +4690,20 @@ var PositionedToolbar = styled22(Toolbar)({
4643
4690
  React30.createElement(MarkupIcon, null),
4644
4691
  " ",
4645
4692
  expanded ? "Hide code" : "Show code"
4646
- ), React30.createElement(Button7, { ariaLabel: !1, variant: "ghost", onClick: handleCopyCode }, React30.createElement(CopyIcon, null), " ", copied ?? "Copy code")), additionalActionItems.map(({ title, className: className2, onClick, disabled }, index) => React30.createElement(
4647
- Button7,
4648
- {
4649
- key: index,
4650
- className: className2,
4651
- onClick,
4652
- disabled: !!disabled,
4653
- variant: "ghost"
4654
- },
4655
- title
4656
- ))));
4693
+ ), React30.createElement(Button7, { ariaLabel: !1, variant: "ghost", onClick: handleCopyCode }, React30.createElement(CopyIcon, null), " ", copied ?? "Copy code")), additionalActionItems.map(
4694
+ ({ title, ariaLabel, className: className2, onClick, disabled }, index) => React30.createElement(
4695
+ Button7,
4696
+ {
4697
+ key: index,
4698
+ ariaLabel: ariaLabel ?? !1,
4699
+ className: className2,
4700
+ onClick,
4701
+ disabled: !!disabled,
4702
+ variant: "ghost"
4703
+ },
4704
+ title
4705
+ )
4706
+ )));
4657
4707
  }, StyledPreview = styled22(Preview)(() => ({
4658
4708
  ".docs-story": {
4659
4709
  paddingTop: 32,
@@ -6792,7 +6842,7 @@ function extractComponentArgTypes2(component, parameters) {
6792
6842
  return extractArgTypes(component);
6793
6843
  }
6794
6844
  var ControlsImpl = (props) => {
6795
- let { of } = props, context = useContext7(DocsContext), primaryStory = usePrimaryStory(), story = of ? context.resolveOf(of, ["story"]).story : primaryStory;
6845
+ let { of } = props, context = useContext7(DocsContext), primaryStory = usePrimaryStory(), controlsId = $bdb11010cef70236$export$f680877a34711e37(), story = of ? context.resolveOf(of, ["story"]).story : primaryStory;
6796
6846
  if (!story)
6797
6847
  return null;
6798
6848
  let { parameters, argTypes, component, subcomponents } = story, controlsParameters = parameters.docs?.controls || {}, include = props.include ?? controlsParameters.include, exclude = props.exclude ?? controlsParameters.exclude, sort = props.sort ?? controlsParameters.sort, [args, updateArgs, resetArgs] = useArgs(story, context), [globals] = useGlobals(story, context), filteredArgTypes = filterArgTypes2(argTypes, include, exclude);
@@ -6801,6 +6851,7 @@ var ControlsImpl = (props) => {
6801
6851
  ArgsTable,
6802
6852
  {
6803
6853
  storyId: story.id,
6854
+ controlsId,
6804
6855
  rows: filteredArgTypes,
6805
6856
  sort,
6806
6857
  args,
@@ -6830,7 +6881,8 @@ var ControlsImpl = (props) => {
6830
6881
  globals,
6831
6882
  updateArgs,
6832
6883
  resetArgs,
6833
- storyId: story.id
6884
+ storyId: story.id,
6885
+ controlsId
6834
6886
  }
6835
6887
  );
6836
6888
  }, Controls3 = withMdxComponentOverride("Controls", ControlsImpl);
@@ -6845,7 +6897,7 @@ import { dedent } from "ts-dedent";
6845
6897
 
6846
6898
  // src/blocks/blocks/mdx.tsx
6847
6899
  import React42, { useContext as useContext8 } from "react";
6848
- import { Code, components, nameSpaceClassNames } from "storybook/internal/components";
6900
+ import { Button as Button8, Code, components, nameSpaceClassNames } from "storybook/internal/components";
6849
6901
  import { NAVIGATE_URL as NAVIGATE_URL2 } from "storybook/internal/core-events";
6850
6902
  import { LinkIcon } from "@storybook/icons";
6851
6903
  import { styled as styled28 } from "storybook/theming";
@@ -6909,46 +6961,51 @@ var A2 = components.a, AnchorInPage = ({ hash, children }) => {
6909
6961
  (acc, headerType) => ({
6910
6962
  ...acc,
6911
6963
  [headerType]: styled28(headerType)({
6964
+ position: "relative",
6912
6965
  "& svg": {
6913
6966
  position: "relative",
6914
6967
  top: "-0.1em",
6915
6968
  visibility: "hidden"
6916
6969
  },
6917
- "&:hover svg": {
6970
+ "&:hover svg, &:focus-within svg": {
6918
6971
  visibility: "visible"
6919
6972
  }
6920
6973
  })
6921
6974
  }),
6922
6975
  {}
6923
- ), OcticonAnchor = styled28.a(
6924
- () => ({
6925
- float: "left",
6926
- lineHeight: "inherit",
6927
- paddingRight: "10px",
6928
- marginLeft: "-24px",
6929
- // Allow the theme's text color to override the default link color.
6930
- color: "inherit"
6931
- })
6932
- ), HeaderWithOcticonAnchor = ({
6976
+ ), OcticonAnchorWrapper = styled28.span({
6977
+ // Position the anchor in the heading's left gutter instead of floating it, so the
6978
+ // Button's dimensions never shift the heading text. The parent header is relatively
6979
+ // positioned to anchor this.
6980
+ position: "absolute",
6981
+ top: 0,
6982
+ right: "100%",
6983
+ lineHeight: "inherit",
6984
+ paddingRight: "10px",
6985
+ // Allow the theme's text color to override the default link color.
6986
+ color: "inherit",
6987
+ "& a": {
6988
+ color: "inherit",
6989
+ textDecoration: "none"
6990
+ }
6991
+ }), HeaderWithOcticonAnchor = ({
6933
6992
  as,
6934
6993
  id,
6935
6994
  children,
6936
6995
  ...rest
6937
6996
  }) => {
6938
6997
  let context = useContext8(DocsContext), OcticonHeader = OcticonHeaders[as], hash = `#${id}`;
6939
- return React42.createElement(OcticonHeader, { id, ...rest }, React42.createElement(
6940
- OcticonAnchor,
6998
+ return React42.createElement(OcticonHeader, { id, ...rest }, React42.createElement(OcticonAnchorWrapper, null, React42.createElement(Button8, { asChild: !0, variant: "ghost", size: "small", ariaLabel: "Copy heading URL to address bar" }, React42.createElement(
6999
+ "a",
6941
7000
  {
6942
- "aria-hidden": "true",
6943
7001
  href: hash,
6944
- tabIndex: -1,
6945
7002
  target: "_self",
6946
7003
  onClick: (event) => {
6947
- document2.getElementById(id) && navigate(context, hash);
7004
+ event.preventDefault(), document2.getElementById(id) && navigate(context, hash);
6948
7005
  }
6949
7006
  },
6950
7007
  React42.createElement(LinkIcon, null)
6951
- ), children);
7008
+ ))), children);
6952
7009
  }, HeaderMdx = (props) => {
6953
7010
  let { as, id, children, ...rest } = props;
6954
7011
  if (id)
package/dist/index.d.ts CHANGED
@@ -96,6 +96,7 @@ type CanvasBlockParameters = {
96
96
  * buttons that do anything you specify in the onClick function.
97
97
  */
98
98
  additionalActions?: {
99
+ ariaLabel?: string;
99
100
  className?: string;
100
101
  disabled?: boolean;
101
102
  onClick: () => void;
@@ -1,20 +1,20 @@
1
- import CJS_COMPAT_NODE_URL_gfstvrkbvmd from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_gfstvrkbvmd from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_gfstvrkbvmd from "node:module";
1
+ import CJS_COMPAT_NODE_URL_nxfv7j63nja from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_nxfv7j63nja from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_nxfv7j63nja from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_gfstvrkbvmd.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_gfstvrkbvmd.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_gfstvrkbvmd.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_nxfv7j63nja.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_nxfv7j63nja.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_nxfv7j63nja.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-2P7DRLLN.js";
15
- import "./_node-chunks/chunk-CHBEJILX.js";
16
- import "./_node-chunks/chunk-ER2HZR2B.js";
17
- import "./_node-chunks/chunk-QT5SF4ZG.js";
14
+ } from "./_node-chunks/chunk-3Y2SQNBB.js";
15
+ import "./_node-chunks/chunk-ITTBDXG3.js";
16
+ import "./_node-chunks/chunk-6JFNUZI6.js";
17
+ import "./_node-chunks/chunk-4WYVLCIN.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_gfstvrkbvmd from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_gfstvrkbvmd from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_gfstvrkbvmd from "node:module";
1
+ import CJS_COMPAT_NODE_URL_nxfv7j63nja from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_nxfv7j63nja from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_nxfv7j63nja from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_gfstvrkbvmd.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_gfstvrkbvmd.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_gfstvrkbvmd.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_nxfv7j63nja.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_nxfv7j63nja.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_nxfv7j63nja.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-QT5SF4ZG.js";
12
+ import "./_node-chunks/chunk-4WYVLCIN.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-LVCBRYZT.js")).default, rehypeExternalLinks = (await import("./_node-chunks/rehype-external-links-5FK5D2OH.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-SGE7I27P.js")).default, rehypeExternalLinks = (await import("./_node-chunks/rehype-external-links-647EEFIQ.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-EVGRZT7I.js"), { react, reactDom, mdx } = await getResolvedReact(options), packageDeduplicationPlugin = {
391
+ let { plugins = [] } = config, { mdxPlugin } = await import("./_node-chunks/mdx-plugin-BGUNIZOG.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.5.0-alpha.1",
3
+ "version": "10.5.0-alpha.2",
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.5.0-alpha.1",
90
+ "@storybook/csf-plugin": "10.5.0-alpha.2",
91
91
  "@storybook/icons": "^2.0.2",
92
- "@storybook/react-dom-shim": "10.5.0-alpha.1",
92
+ "@storybook/react-dom-shim": "10.5.0-alpha.2",
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"
@@ -117,7 +117,7 @@
117
117
  },
118
118
  "peerDependencies": {
119
119
  "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
120
- "storybook": "^10.5.0-alpha.1"
120
+ "storybook": "^10.5.0-alpha.2"
121
121
  },
122
122
  "peerDependenciesMeta": {
123
123
  "@types/react": {
@@ -1,13 +0,0 @@
1
- // src/blocks/controls/helpers.ts
2
- var getControlId = (value, storyId) => {
3
- let base = value.replace(/\s+/g, "-");
4
- return storyId ? `control-${storyId}-${base}` : `control-${base}`;
5
- }, getControlSetterButtonId = (value, storyId) => {
6
- let base = value.replace(/\s+/g, "-");
7
- return storyId ? `set-${storyId}-${base}` : `set-${base}`;
8
- };
9
-
10
- export {
11
- getControlId,
12
- getControlSetterButtonId
13
- };