@storybook/addon-docs 10.6.0-alpha.7 → 10.6.0-alpha.8

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,17 +1,41 @@
1
+ // src/blocks/components/SnippetWarning.tsx
2
+ import React from "react";
3
+ import { Button } from "storybook/internal/components";
4
+ import { AlertIcon } from "@storybook/icons";
5
+ import { styled } from "storybook/theming";
6
+ var SNIPPET_WARNING_LABEL = "Incomplete code snippet", WarningButton = styled(Button)(({ theme }) => ({
7
+ color: theme.fgColor.warning,
8
+ "&:hover, &:focus-visible": {
9
+ color: theme.fgColor.warning,
10
+ background: theme.bgColor.warning
11
+ }
12
+ })), SnippetWarning = ({ warning, className }) => warning?.trim() ? React.createElement(
13
+ WarningButton,
14
+ {
15
+ className,
16
+ ariaLabel: SNIPPET_WARNING_LABEL,
17
+ tooltip: warning,
18
+ variant: "ghost",
19
+ size: "small",
20
+ padding: "small"
21
+ },
22
+ React.createElement(AlertIcon, null)
23
+ ) : null;
24
+
1
25
  // src/blocks/components/Source.tsx
2
- import React2 from "react";
26
+ import React3 from "react";
3
27
  import { SyntaxHighlighter } from "storybook/internal/components";
4
28
  import {
5
29
  ThemeProvider,
6
30
  convert,
7
31
  ignoreSsrWarning,
8
- styled as styled2,
32
+ styled as styled3,
9
33
  themes,
10
34
  useTheme
11
35
  } from "storybook/theming";
12
36
 
13
37
  // src/blocks/components/EmptyBlock.tsx
14
- import React from "react";
38
+ import React2 from "react";
15
39
  import { withReset } from "storybook/internal/components";
16
40
 
17
41
  // ../../../node_modules/@babel/runtime/helpers/esm/extends.js
@@ -851,8 +875,8 @@ function transparentize(amount, color) {
851
875
  var curriedTransparentize = curry(transparentize), curriedTransparentize$1 = curriedTransparentize;
852
876
 
853
877
  // src/blocks/components/EmptyBlock.tsx
854
- import { styled } from "storybook/theming";
855
- var Wrapper = styled.div(withReset, ({ theme }) => ({
878
+ import { styled as styled2 } from "storybook/theming";
879
+ var Wrapper = styled2.div(withReset, ({ theme }) => ({
856
880
  backgroundColor: theme.base === "light" ? "rgba(0,0,0,.01)" : "rgba(255,255,255,.01)",
857
881
  borderRadius: theme.appBorderRadius,
858
882
  border: `1px dashed ${theme.appBorderColor}`,
@@ -863,10 +887,10 @@ var Wrapper = styled.div(withReset, ({ theme }) => ({
863
887
  margin: "25px 0 40px",
864
888
  color: curriedTransparentize$1(0.3, theme.color.defaultText),
865
889
  fontSize: theme.typography.size.s2
866
- })), EmptyBlock = (props) => React.createElement(Wrapper, { ...props, className: "docblock-emptyblock sb-unstyled" });
890
+ })), EmptyBlock = (props) => React2.createElement(Wrapper, { ...props, className: "docblock-emptyblock sb-unstyled" });
867
891
 
868
892
  // src/blocks/components/Source.tsx
869
- var StyledSyntaxHighlighter = styled2(
893
+ var StyledSyntaxHighlighter = styled3(
870
894
  SyntaxHighlighter
871
895
  )(({ theme }) => ({
872
896
  // DocBlocks-specific styling and overrides
@@ -880,14 +904,21 @@ var StyledSyntaxHighlighter = styled2(
880
904
  background: "inherit"
881
905
  }
882
906
  }));
883
- var SourceSkeletonWrapper = styled2.div(({ theme }) => ({
907
+ var PositionedSnippetWarning = styled3(SnippetWarning)({
908
+ position: "absolute",
909
+ top: 4,
910
+ right: 4,
911
+ zIndex: 1
912
+ }), SourceWrapper = styled3.div({
913
+ position: "relative"
914
+ }), SourceSkeletonWrapper = styled3.div(({ theme }) => ({
884
915
  background: theme.background.content,
885
916
  borderRadius: theme.appBorderRadius,
886
917
  border: `1px solid ${theme.appBorderColor}`,
887
918
  boxShadow: theme.base === "light" ? "rgba(0, 0, 0, 0.10) 0 1px 3px 0" : "rgba(0, 0, 0, 0.20) 0 2px 5px 0",
888
919
  margin: "25px 0 40px",
889
920
  padding: "20px 20px 20px 22px"
890
- })), SourceSkeletonPlaceholder = styled2.div(({ theme }) => ({
921
+ })), SourceSkeletonPlaceholder = styled3.div(({ theme }) => ({
891
922
  animation: `${theme.animation.glow} 1.5s ease-in-out infinite`,
892
923
  background: theme.appBorderColor,
893
924
  height: 17,
@@ -896,7 +927,7 @@ var SourceSkeletonWrapper = styled2.div(({ theme }) => ({
896
927
  [`&:first-child${ignoreSsrWarning}`]: {
897
928
  margin: 0
898
929
  }
899
- })), SourceSkeleton = () => React2.createElement(SourceSkeletonWrapper, null, React2.createElement(SourceSkeletonPlaceholder, null), React2.createElement(SourceSkeletonPlaceholder, { style: { width: "80%" } }), React2.createElement(SourceSkeletonPlaceholder, { style: { width: "30%" } }), React2.createElement(SourceSkeletonPlaceholder, { style: { width: "80%" } })), Source = ({
930
+ })), SourceSkeleton = () => React3.createElement(SourceSkeletonWrapper, null, React3.createElement(SourceSkeletonPlaceholder, null), React3.createElement(SourceSkeletonPlaceholder, { style: { width: "80%" } }), React3.createElement(SourceSkeletonPlaceholder, { style: { width: "30%" } }), React3.createElement(SourceSkeletonPlaceholder, { style: { width: "80%" } })), Source = ({
900
931
  isLoading,
901
932
  error,
902
933
  language,
@@ -904,14 +935,15 @@ var SourceSkeletonWrapper = styled2.div(({ theme }) => ({
904
935
  dark,
905
936
  format: format2 = !0,
906
937
  copyable = !0,
938
+ warning,
907
939
  ...rest
908
940
  }) => {
909
941
  let { typography } = useTheme();
910
942
  if (isLoading)
911
- return React2.createElement(SourceSkeleton, null);
943
+ return React3.createElement(SourceSkeleton, null);
912
944
  if (error)
913
- return React2.createElement(EmptyBlock, null, error);
914
- let syntaxHighlighter = React2.createElement(
945
+ return React3.createElement(EmptyBlock, null, error);
946
+ let highlighter = React3.createElement(
915
947
  StyledSyntaxHighlighter,
916
948
  {
917
949
  bordered: !0,
@@ -922,11 +954,11 @@ var SourceSkeletonWrapper = styled2.div(({ theme }) => ({
922
954
  ...rest
923
955
  },
924
956
  code
925
- );
957
+ ), syntaxHighlighter = warning ? React3.createElement(SourceWrapper, null, highlighter, React3.createElement(PositionedSnippetWarning, { warning })) : highlighter;
926
958
  if (typeof dark > "u")
927
959
  return syntaxHighlighter;
928
960
  let overrideTheme = dark ? themes.dark : themes.light;
929
- return React2.createElement(
961
+ return React3.createElement(
930
962
  ThemeProvider,
931
963
  {
932
964
  theme: convert({
@@ -940,6 +972,7 @@ var SourceSkeletonWrapper = styled2.div(({ theme }) => ({
940
972
  };
941
973
 
942
974
  export {
975
+ SnippetWarning,
943
976
  rgba,
944
977
  curriedDarken$1,
945
978
  curriedLighten$1,
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_zmitwhqt38 from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_zmitwhqt38 from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_zmitwhqt38 from "node:module";
1
+ import CJS_COMPAT_NODE_URL_dgqus2stgw from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_dgqus2stgw from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_dgqus2stgw from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_zmitwhqt38.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_zmitwhqt38.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_zmitwhqt38.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_dgqus2stgw.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_dgqus2stgw.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_dgqus2stgw.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_zmitwhqt38 from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_zmitwhqt38 from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_zmitwhqt38 from "node:module";
1
+ import CJS_COMPAT_NODE_URL_dgqus2stgw from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_dgqus2stgw from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_dgqus2stgw from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_zmitwhqt38.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_zmitwhqt38.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_zmitwhqt38.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_dgqus2stgw.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_dgqus2stgw.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_dgqus2stgw.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_zmitwhqt38 from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_zmitwhqt38 from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_zmitwhqt38 from "node:module";
1
+ import CJS_COMPAT_NODE_URL_dgqus2stgw from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_dgqus2stgw from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_dgqus2stgw from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_zmitwhqt38.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_zmitwhqt38.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_zmitwhqt38.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_dgqus2stgw.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_dgqus2stgw.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_dgqus2stgw.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_zmitwhqt38.createRequire(import.meta.url);
12
12
  import {
13
13
  esm_default,
14
14
  stringify
15
- } from "./chunk-DMPLXDY3.js";
15
+ } from "./chunk-REBXNTVL.js";
16
16
  import {
17
17
  visit
18
- } from "./chunk-CYAJP3CF.js";
18
+ } from "./chunk-6WL4S62N.js";
19
19
  import {
20
20
  __commonJS,
21
21
  __esm,
22
22
  __export,
23
23
  __toCommonJS,
24
24
  __toESM
25
- } from "./chunk-GENIQEI7.js";
25
+ } from "./chunk-BNKEYVDY.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_zmitwhqt38 from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_zmitwhqt38 from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_zmitwhqt38 from "node:module";
1
+ import CJS_COMPAT_NODE_URL_dgqus2stgw from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_dgqus2stgw from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_dgqus2stgw from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_zmitwhqt38.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_zmitwhqt38.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_zmitwhqt38.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_dgqus2stgw.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_dgqus2stgw.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_dgqus2stgw.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_zmitwhqt38 from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_zmitwhqt38 from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_zmitwhqt38 from "node:module";
1
+ import CJS_COMPAT_NODE_URL_dgqus2stgw from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_dgqus2stgw from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_dgqus2stgw from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_zmitwhqt38.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_zmitwhqt38.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_zmitwhqt38.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_dgqus2stgw.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_dgqus2stgw.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_dgqus2stgw.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-3QLSFOKL.js";
15
- import "./chunk-DMPLXDY3.js";
16
- import "./chunk-CYAJP3CF.js";
14
+ } from "./chunk-PAAB5ORS.js";
15
+ import "./chunk-REBXNTVL.js";
16
+ import "./chunk-6WL4S62N.js";
17
17
  import {
18
18
  __commonJS,
19
19
  __toESM
20
- } from "./chunk-GENIQEI7.js";
20
+ } from "./chunk-BNKEYVDY.js";
21
21
 
22
22
  // ../../../node_modules/@rollup/pluginutils/node_modules/picomatch/lib/constants.js
23
23
  var require_constants = __commonJS({
@@ -1153,7 +1153,7 @@ var hasStringIsWellFormed = "isWellFormed" in String.prototype;
1153
1153
 
1154
1154
  // src/mdx-plugin.ts
1155
1155
  async function mdxPlugin(options) {
1156
- let include = /\.mdx$/, filter = createFilter(include), { presets } = options, mdxPluginOptions = (await presets.apply("options", {}))?.mdxPluginOptions, rehypeSlug = (await import("./rehype-slug-B7LU5WWS.js")).default, rehypeExternalLinks = (await import("./rehype-external-links-HKUP343E.js")).default;
1156
+ let include = /\.mdx$/, filter = createFilter(include), { presets } = options, mdxPluginOptions = (await presets.apply("options", {}))?.mdxPluginOptions, rehypeSlug = (await import("./rehype-slug-UL2737TS.js")).default, rehypeExternalLinks = (await import("./rehype-external-links-KAD54GUY.js")).default;
1157
1157
  return {
1158
1158
  name: "storybook:mdx-plugin",
1159
1159
  enforce: "pre",
@@ -1,10 +1,10 @@
1
- import CJS_COMPAT_NODE_URL_zmitwhqt38 from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_zmitwhqt38 from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_zmitwhqt38 from "node:module";
1
+ import CJS_COMPAT_NODE_URL_dgqus2stgw from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_dgqus2stgw from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_dgqus2stgw from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_zmitwhqt38.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_zmitwhqt38.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_zmitwhqt38.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_dgqus2stgw.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_dgqus2stgw.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_dgqus2stgw.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_zmitwhqt38.createRequire(import.meta.url);
12
12
  import {
13
13
  esm_default,
14
14
  parse
15
- } from "./chunk-DMPLXDY3.js";
15
+ } from "./chunk-REBXNTVL.js";
16
16
  import {
17
17
  visit
18
- } from "./chunk-CYAJP3CF.js";
19
- import "./chunk-GENIQEI7.js";
18
+ } from "./chunk-6WL4S62N.js";
19
+ import "./chunk-BNKEYVDY.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_zmitwhqt38 from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_zmitwhqt38 from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_zmitwhqt38 from "node:module";
1
+ import CJS_COMPAT_NODE_URL_dgqus2stgw from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_dgqus2stgw from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_dgqus2stgw from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_zmitwhqt38.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_zmitwhqt38.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_zmitwhqt38.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_dgqus2stgw.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_dgqus2stgw.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_dgqus2stgw.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-CYAJP3CF.js";
15
- import "./chunk-GENIQEI7.js";
14
+ } from "./chunk-6WL4S62N.js";
15
+ import "./chunk-BNKEYVDY.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
@@ -3,9 +3,9 @@ import * as React$1 from "react";
3
3
  import React, { ComponentProps, Context, FC, FunctionComponent, PropsWithChildren, ReactElement, ReactNode } from "react";
4
4
  import { Args, BaseAnnotations, ComponentTitle, Conditional, DocsContextProps as DocsContextProps$1, ModuleExport, ModuleExports, Parameters as Parameters$1, PreparedStory, ProjectAnnotations, Renderer, ResolvedModuleExportFromType, ResolvedModuleExportType, StoryId } from "storybook/internal/types";
5
5
  import { ActionItem, SupportedLanguage, SyntaxHighlighter, SyntaxHighlighterFormatTypes } from "storybook/internal/components";
6
+ import { SourceType, anchorBlockIdFromId } from "storybook/internal/docs-tools";
6
7
  import { Renderer as Renderer$1 } from "storybook/internal/csf";
7
8
  import { PropDescriptor } from "storybook/preview-api";
8
- import { SourceType } from "storybook/internal/docs-tools";
9
9
 
10
10
  //#region code/addons/docs/.dts-emit/code/addons/docs/src/blocks/components/Source.d.ts
11
11
  declare enum SourceError {
@@ -27,6 +27,8 @@ interface SourceCodeProps {
27
27
  interface SourceProps$1 extends SourceCodeProps {
28
28
  isLoading?: boolean;
29
29
  error?: SourceError;
30
+ /** Why the snippet is an incomplete example, when it is one; see `StoryDoc.warning`. */
31
+ warning?: string;
30
32
  }
31
33
  /** Syntax-highlighted source code for a component (or anything!) */
32
34
  declare const Source$1: FunctionComponent<SourceProps$1>;
@@ -189,7 +191,6 @@ interface IconGalleryProps {
189
191
  declare const IconGallery: FunctionComponent<IconGalleryProps>;
190
192
  //#endregion
191
193
  //#region code/addons/docs/.dts-emit/code/addons/docs/src/blocks/blocks/Anchor.d.ts
192
- declare const anchorBlockIdFromId: (storyId: string) => string;
193
194
  interface AnchorProps {
194
195
  storyId: string;
195
196
  }
@@ -212,6 +213,8 @@ declare function argsHash(args: Args): ArgsHash;
212
213
  interface SourceItem {
213
214
  code: string;
214
215
  format?: SyntaxHighlighterFormatTypes;
216
+ /** Why `code` is an incomplete example, when it is one; see `StoryDoc.warning`. */
217
+ warning?: string;
215
218
  }
216
219
  type StorySources = Record<StoryId, Record<ArgsHash, SourceItem>>;
217
220
  interface SourceContextProps {
@@ -245,7 +248,7 @@ type SourceProps = SourceParameters & {
245
248
  __forceInitialArgs?: boolean;
246
249
  };
247
250
  type PureSourceProps = ComponentProps<typeof Source$1>;
248
- declare const useSourceProps: (props: SourceProps, docsContext: DocsContextProps, sourceContext: SourceContextProps, serviceSnippet?: string) => PureSourceProps;
251
+ declare const useSourceProps: (props: SourceProps, docsContext: DocsContextProps, sourceContext: SourceContextProps, serviceSnippet?: string, serviceWarning?: string) => PureSourceProps;
249
252
  declare const Source: React.ComponentType<SourceProps>;
250
253
  //#endregion
251
254
  //#region code/addons/docs/.dts-emit/code/addons/docs/src/blocks/blocks/Story.d.ts
package/dist/blocks.js CHANGED
@@ -4,13 +4,14 @@ import {
4
4
  } from "./_browser-chunks/chunk-QQBDHPVZ.js";
5
5
  import {
6
6
  EmptyBlock,
7
+ SnippetWarning,
7
8
  Source,
8
9
  curriedDarken$1,
9
10
  curriedLighten$1,
10
11
  curriedOpacify$1,
11
12
  curriedTransparentize$1,
12
13
  rgba
13
- } from "./_browser-chunks/chunk-SPXYZZB5.js";
14
+ } from "./_browser-chunks/chunk-Q6BGOKFZ.js";
14
15
  import "./_browser-chunks/chunk-UAWMPV5J.js";
15
16
 
16
17
  // src/blocks/components/ArgsTable/ArgsTable.tsx
@@ -4518,7 +4519,7 @@ import React29 from "react";
4518
4519
  import { Button as Button6, Toolbar as SharedToolbar } from "storybook/internal/components";
4519
4520
  import { ShareAltIcon, SyncIcon, ZoomIcon, ZoomOutIcon, ZoomResetIcon } from "@storybook/icons";
4520
4521
  import { styled as styled21 } from "storybook/theming";
4521
- var AbsoluteBar = styled21(SharedToolbar)({
4522
+ var TRAILING_INSET = 10, AbsoluteBar = styled21(SharedToolbar)({
4522
4523
  position: "absolute",
4523
4524
  left: 0,
4524
4525
  right: 0,
@@ -4547,7 +4548,12 @@ var AbsoluteBar = styled21(SharedToolbar)({
4547
4548
  }) => React29.createElement(
4548
4549
  AbsoluteBar,
4549
4550
  {
4550
- innerStyle: { gap: 4, paddingInline: 7, justifyContent: "space-between" },
4551
+ innerStyle: {
4552
+ gap: 4,
4553
+ paddingInline: 7,
4554
+ paddingInlineEnd: TRAILING_INSET - 1,
4555
+ justifyContent: "space-between"
4556
+ },
4551
4557
  lang: "en",
4552
4558
  ...rest
4553
4559
  },
@@ -4645,6 +4651,9 @@ var ChildrenContainer = styled22.div(
4645
4651
  ), ActionBar = styled22(Bar)({
4646
4652
  marginTop: -40,
4647
4653
  marginBottom: 40
4654
+ }), TrailingSnippetWarning = styled22(SnippetWarning)({
4655
+ marginInlineStart: "auto",
4656
+ marginInlineEnd: TRAILING_INSET
4648
4657
  }), StyledSource = styled22(Source)(({ theme }) => ({
4649
4658
  margin: 0,
4650
4659
  borderTopLeftRadius: 0,
@@ -4711,7 +4720,7 @@ var PositionedToolbar = styled22(Toolbar)({
4711
4720
  logger4.error(err), setCopied("Copy error!");
4712
4721
  }
4713
4722
  globalThis.window.setTimeout(() => setCopied(null), COPIED_LABEL_ANIMATION_DURATION);
4714
- }, [copyToClipboard, withSource?.code]), childProps = getChildProps(children), hasSourceError = !!(withSource && withSource.error), hasValidSource = !!(withSource && !withSource.error);
4723
+ }, [copyToClipboard, withSource?.code]), childProps = getChildProps(children), { warning: sourceWarning, ...sourceProps } = withSource ?? {}, hasSourceError = !!(withSource && withSource.error), hasValidSource = !!(withSource && !withSource.error);
4715
4724
  return React30.createElement(React30.Fragment, null, React30.createElement(
4716
4725
  PreviewContainer,
4717
4726
  {
@@ -4742,7 +4751,7 @@ var PositionedToolbar = styled22(Toolbar)({
4742
4751
  },
4743
4752
  React30.createElement(Zoom.Element, { centered: layout === "centered", scale: inline ? scale : 1 }, Array.isArray(children) ? children.map((child, i2) => React30.createElement("div", { key: i2 }, child)) : React30.createElement("div", null, children))
4744
4753
  )),
4745
- hasValidSource && expanded && React30.createElement("div", { id: sourceId }, React30.createElement(StyledSource, { ...withSource, dark: !0, copyable: !1 }))
4754
+ hasValidSource && expanded && React30.createElement("div", { id: sourceId }, React30.createElement(StyledSource, { ...sourceProps, dark: !0, copyable: !1 }))
4746
4755
  ), (withSource || additionalActionItems.length > 0) && React30.createElement(ActionBar, { className: "sbdocs sbdocs-preview-actions", innerStyle: { paddingInline: 0 } }, hasSourceError && React30.createElement(
4747
4756
  Button7,
4748
4757
  {
@@ -4782,7 +4791,7 @@ var PositionedToolbar = styled22(Toolbar)({
4782
4791
  },
4783
4792
  title
4784
4793
  )
4785
- )));
4794
+ ), hasValidSource && React30.createElement(TrailingSnippetWarning, { warning: sourceWarning })));
4786
4795
  }, StyledPreview = styled22(Preview)(() => ({
4787
4796
  ".docs-story": {
4788
4797
  paddingTop: 32,
@@ -5637,7 +5646,8 @@ var Aside = styled27.aside(() => ({
5637
5646
 
5638
5647
  // src/blocks/blocks/Anchor.tsx
5639
5648
  import React36 from "react";
5640
- var anchorBlockIdFromId = (storyId) => `anchor--${storyId}`, Anchor = ({ storyId, children }) => React36.createElement("div", { id: anchorBlockIdFromId(storyId), className: "sb-anchor" }, children);
5649
+ import { anchorBlockIdFromId } from "storybook/internal/docs-tools";
5650
+ var Anchor = ({ storyId, children }) => React36.createElement("div", { id: anchorBlockIdFromId(storyId), className: "sb-anchor" }, children);
5641
5651
 
5642
5652
  // src/blocks/blocks/ArgTypes.tsx
5643
5653
  import React37, { useContext as useContext4 } from "react";
@@ -6924,7 +6934,8 @@ var SourceContext = createContext3({ sources: {} }), UNKNOWN_ARGS_HASH = "--unkn
6924
6934
  id,
6925
6935
  args = void 0,
6926
6936
  source,
6927
- format: format2
6937
+ format: format2,
6938
+ warning = void 0
6928
6939
  } = typeof idOrEvent == "string" ? {
6929
6940
  id: idOrEvent,
6930
6941
  source: inputSource,
@@ -6934,7 +6945,7 @@ var SourceContext = createContext3({ sources: {} }), UNKNOWN_ARGS_HASH = "--unkn
6934
6945
  ...current,
6935
6946
  [id]: {
6936
6947
  ...current[id],
6937
- [hash]: { code: source || "", format: format2 }
6948
+ [hash]: { code: source || "", format: format2, warning }
6938
6949
  }
6939
6950
  }));
6940
6951
  };
@@ -6944,7 +6955,11 @@ var SourceContext = createContext3({ sources: {} }), UNKNOWN_ARGS_HASH = "--unkn
6944
6955
 
6945
6956
  // src/blocks/blocks/use-service-story-docs.ts
6946
6957
  import { useCallback as useCallback9 } from "react";
6947
- import { selectSnippetForStory, selectStoryDoc } from "storybook/open-service";
6958
+ import {
6959
+ selectSnippetForStory,
6960
+ selectStoryDoc,
6961
+ selectWarningForStory
6962
+ } from "storybook/open-service";
6948
6963
  import { getService as getService2 } from "storybook/preview-api";
6949
6964
  function useServiceStory(storyId, selector) {
6950
6965
  let componentId = storyId.split("--")[0], service = getService2("core/story-docs", { internal: !0 }), boundSelector = useCallback9(
@@ -6964,6 +6979,9 @@ function useServiceStoryDoc(storyId) {
6964
6979
  function useServiceStorySnippet(storyId) {
6965
6980
  return useServiceStory(storyId, selectSnippetForStory);
6966
6981
  }
6982
+ function useServiceStoryWarning(storyId) {
6983
+ return useServiceStory(storyId, selectWarningForStory);
6984
+ }
6967
6985
 
6968
6986
  // src/blocks/blocks/useTransformCode.tsx
6969
6987
  import { useEffect as useEffect14, useState as useState16 } from "react";
@@ -6992,7 +7010,7 @@ var EMPTY_SOURCE_CONTEXT = { sources: {} }, getStorySource = (storyId, args, sou
6992
7010
  let parameters = storyContext.parameters ?? {}, { __isArgsStory: isArgsStory } = parameters, sourceParameters = parameters.docs?.source || {}, type = typeFromProps || sourceParameters.type || SourceType.AUTO, staticSnippet = serviceSnippet || snippet, code = /* if user has explicitly set this as dynamic, use snippet */ type === SourceType.DYNAMIC || // if this is an args story and there's a snippet
6993
7011
  type === SourceType.AUTO && staticSnippet && isArgsStory ? staticSnippet : sourceParameters.originalSource || "", transformer = transformFromProps ?? sourceParameters.transform, transformedCode = transformer ? useTransformCode(code, transformer, storyContext) : code;
6994
7012
  return sourceParameters.code !== void 0 ? sourceParameters.code : transformedCode;
6995
- }, useSourceProps = (props, docsContext, sourceContext, serviceSnippet = "") => {
7013
+ }, useSourceProps = (props, docsContext, sourceContext, serviceSnippet = "", serviceWarning) => {
6996
7014
  let { of } = props, story = useMemo4(() => {
6997
7015
  if (of)
6998
7016
  return docsContext.resolveOf(of, ["story"]).story;
@@ -7010,19 +7028,32 @@ var EMPTY_SOURCE_CONTEXT = { sources: {} }, getStorySource = (storyId, args, sou
7010
7028
  if ("of" in props && of === void 0)
7011
7029
  throw new InvalidBlockOfPropError3();
7012
7030
  let sourceParameters = story?.parameters?.docs?.source || {}, format2 = props.format, language = props.language ?? sourceParameters.language ?? "jsx", dark = props.dark ?? sourceParameters.dark ?? !1;
7013
- return props.code === void 0 && !story ? { error: "Oh no! The source is not available." /* SOURCE_UNAVAILABLE */ } : props.code !== void 0 ? {
7014
- code: props.code,
7015
- format: format2,
7016
- language,
7017
- dark
7018
- } : (format2 = source?.format ?? !0, {
7031
+ if (props.code === void 0 && !story)
7032
+ return { error: "Oh no! The source is not available." /* SOURCE_UNAVAILABLE */ };
7033
+ if (props.code !== void 0)
7034
+ return {
7035
+ code: props.code,
7036
+ format: format2,
7037
+ language,
7038
+ dark
7039
+ };
7040
+ format2 = source?.format ?? !0;
7041
+ let warning;
7042
+ return transformedCode === serviceSnippet ? warning = serviceWarning : transformedCode === source?.code && (warning = source.warning), {
7019
7043
  code: transformedCode,
7020
7044
  format: format2,
7021
7045
  language,
7022
- dark
7023
- });
7046
+ dark,
7047
+ warning
7048
+ };
7024
7049
  }, SourceWithStoryDocsSnippet = ({ storyId, docsContext, sourceContext, ...props }) => {
7025
- let serviceSnippet = useServiceStorySnippet(storyId).data ?? "", sourceProps = useSourceProps(props, docsContext, sourceContext, serviceSnippet);
7050
+ let serviceSnippet = useServiceStorySnippet(storyId).data ?? "", serviceWarning = useServiceStoryWarning(storyId).data, sourceProps = useSourceProps(
7051
+ props,
7052
+ docsContext,
7053
+ sourceContext,
7054
+ serviceSnippet,
7055
+ serviceWarning
7056
+ );
7026
7057
  return React39.createElement(Source, { ...sourceProps });
7027
7058
  }, SourceWithStorySnippet = (props) => {
7028
7059
  let { of } = props, sourceContext = useContext5(SourceContext), docsContext = useContext5(DocsContext), story = useMemo4(() => {
@@ -1,15 +1,15 @@
1
- import CJS_COMPAT_NODE_URL_zmitwhqt38 from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_zmitwhqt38 from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_zmitwhqt38 from "node:module";
1
+ import CJS_COMPAT_NODE_URL_dgqus2stgw from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_dgqus2stgw from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_dgqus2stgw from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_zmitwhqt38.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_zmitwhqt38.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_zmitwhqt38.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_dgqus2stgw.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_dgqus2stgw.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_dgqus2stgw.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-GENIQEI7.js";
12
+ import "../_node-chunks/chunk-BNKEYVDY.js";
13
13
 
14
14
  // src/csf-plugin/webpack-loader.ts
15
15
  import { readFile } from "node:fs/promises";
package/dist/manager.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import {
2
+ SnippetWarning,
2
3
  Source
3
- } from "./_browser-chunks/chunk-SPXYZZB5.js";
4
+ } from "./_browser-chunks/chunk-Q6BGOKFZ.js";
4
5
  import "./_browser-chunks/chunk-UAWMPV5J.js";
5
6
 
6
7
  // src/manager.tsx
@@ -24,7 +25,8 @@ var CodePanel = ({
24
25
  }) => {
25
26
  let lastEventMatchesCurrentStory = lastEvent?.id === currentStoryId, [codeSnippet, setSourceCode] = useState({
26
27
  source: lastEventMatchesCurrentStory ? lastEvent?.source : void 0,
27
- format: lastEventMatchesCurrentStory ? lastEvent?.format ?? void 0 : void 0
28
+ format: lastEventMatchesCurrentStory ? lastEvent?.format ?? void 0 : void 0,
29
+ warning: lastEventMatchesCurrentStory ? lastEvent?.warning : void 0
28
30
  }), parameter = useParameter(PARAM_KEY, {
29
31
  source: { code: "" },
30
32
  theme: "dark"
@@ -32,18 +34,19 @@ var CodePanel = ({
32
34
  useEffect(() => {
33
35
  setSourceCode({
34
36
  source: void 0,
35
- format: void 0
37
+ format: void 0,
38
+ warning: void 0
36
39
  });
37
40
  }, [currentStoryId]), useChannel(
38
41
  {
39
- [SNIPPET_RENDERED]: ({ id, source, format }) => {
40
- id !== void 0 && id !== currentStoryId || setSourceCode({ source, format });
42
+ [SNIPPET_RENDERED]: ({ id, source, format, warning: warning2 }) => {
43
+ id !== void 0 && id !== currentStoryId || setSourceCode({ source, format, warning: warning2 });
41
44
  }
42
45
  },
43
46
  [currentStoryId]
44
47
  );
45
- let isDark = useTheme().base !== "light", awaitingServiceSnippet = shouldWaitForServiceSnippet(storyParameters, storyPrepared), code = parameter.source?.code || codeSnippet.source || (awaitingServiceSnippet ? "" : parameter.source?.originalSource);
46
- return React.createElement(AddonPanel, { active: !!active }, React.createElement(SourceStyles, null, React.createElement(Source, { ...parameter.source, code, format: codeSnippet.format, dark: isDark })));
48
+ let isDark = useTheme().base !== "light", awaitingServiceSnippet = shouldWaitForServiceSnippet(storyParameters, storyPrepared), code = parameter.source?.code || codeSnippet.source || (awaitingServiceSnippet ? "" : parameter.source?.originalSource), warning = parameter.source?.code ? void 0 : codeSnippet.warning;
49
+ return React.createElement(AddonPanel, { active: !!active }, React.createElement(SourceStyles, null, React.createElement(Source, { ...parameter.source, code, format: codeSnippet.format, dark: isDark }), React.createElement(PositionedSnippetWarning, { warning })));
47
50
  };
48
51
  addons.register(ADDON_ID, (api) => {
49
52
  addons.add(PANEL_ID, {
@@ -80,11 +83,16 @@ addons.register(ADDON_ID, (api) => {
80
83
  }
81
84
  });
82
85
  });
83
- var SourceStyles = styled.div(() => ({
86
+ var SourceStyles = styled.div({
84
87
  height: "100%",
88
+ position: "relative",
85
89
  [`> :first-child${ignoreSsrWarning}`]: {
86
90
  margin: 0,
87
91
  height: "100%",
88
92
  boxShadow: "none"
89
93
  }
90
- }));
94
+ }), PositionedSnippetWarning = styled(SnippetWarning)({
95
+ position: "absolute",
96
+ top: 8,
97
+ right: 10
98
+ });
@@ -1,20 +1,20 @@
1
- import CJS_COMPAT_NODE_URL_zmitwhqt38 from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_zmitwhqt38 from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_zmitwhqt38 from "node:module";
1
+ import CJS_COMPAT_NODE_URL_dgqus2stgw from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_dgqus2stgw from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_dgqus2stgw from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_zmitwhqt38.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_zmitwhqt38.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_zmitwhqt38.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_dgqus2stgw.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_dgqus2stgw.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_dgqus2stgw.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-3QLSFOKL.js";
15
- import "./_node-chunks/chunk-DMPLXDY3.js";
16
- import "./_node-chunks/chunk-CYAJP3CF.js";
17
- import "./_node-chunks/chunk-GENIQEI7.js";
14
+ } from "./_node-chunks/chunk-PAAB5ORS.js";
15
+ import "./_node-chunks/chunk-REBXNTVL.js";
16
+ import "./_node-chunks/chunk-6WL4S62N.js";
17
+ import "./_node-chunks/chunk-BNKEYVDY.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_zmitwhqt38 from 'node:url';
2
- import CJS_COMPAT_NODE_PATH_zmitwhqt38 from 'node:path';
3
- import CJS_COMPAT_NODE_MODULE_zmitwhqt38 from "node:module";
1
+ import CJS_COMPAT_NODE_URL_dgqus2stgw from 'node:url';
2
+ import CJS_COMPAT_NODE_PATH_dgqus2stgw from 'node:path';
3
+ import CJS_COMPAT_NODE_MODULE_dgqus2stgw from "node:module";
4
4
 
5
- var __filename = CJS_COMPAT_NODE_URL_zmitwhqt38.fileURLToPath(import.meta.url);
6
- var __dirname = CJS_COMPAT_NODE_PATH_zmitwhqt38.dirname(__filename);
7
- var require = CJS_COMPAT_NODE_MODULE_zmitwhqt38.createRequire(import.meta.url);
5
+ var __filename = CJS_COMPAT_NODE_URL_dgqus2stgw.fileURLToPath(import.meta.url);
6
+ var __dirname = CJS_COMPAT_NODE_PATH_dgqus2stgw.dirname(__filename);
7
+ var require = CJS_COMPAT_NODE_MODULE_dgqus2stgw.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-GENIQEI7.js";
12
+ import "./_node-chunks/chunk-BNKEYVDY.js";
13
13
 
14
14
  // src/preset.ts
15
15
  import { isAbsolute as isAbsolute2 } from "node:path";
@@ -807,7 +807,7 @@ var getResolvedReact = async (options) => {
807
807
  };
808
808
  };
809
809
  async function webpack2(webpackConfig = {}, options) {
810
- let { module = {} } = webpackConfig, { csfPluginOptions = {}, mdxPluginOptions = {} } = options, enrichCsf2 = await options.presets.apply("experimental_enrichCsf"), rehypeSlug = (await import("./_node-chunks/rehype-slug-B7LU5WWS.js")).default, rehypeExternalLinks = (await import("./_node-chunks/rehype-external-links-HKUP343E.js")).default, mdxLoaderOptions = await options.presets.apply("mdxLoaderOptions", {
810
+ let { module = {} } = webpackConfig, { csfPluginOptions = {}, mdxPluginOptions = {} } = options, enrichCsf2 = await options.presets.apply("experimental_enrichCsf"), rehypeSlug = (await import("./_node-chunks/rehype-slug-UL2737TS.js")).default, rehypeExternalLinks = (await import("./_node-chunks/rehype-external-links-KAD54GUY.js")).default, mdxLoaderOptions = await options.presets.apply("mdxLoaderOptions", {
811
811
  ...mdxPluginOptions,
812
812
  mdxCompileOptions: {
813
813
  providerImportSource: fileURLToPath3(
@@ -885,7 +885,7 @@ var docs = (input = {}, options) => {
885
885
  }, addons = [
886
886
  import.meta.resolve("@storybook/react-dom-shim/preset")
887
887
  ], viteFinal = async (config, options) => {
888
- let { plugins = [] } = config, { csfPluginOptions = {} } = options, { mdxPlugin } = await import("./_node-chunks/mdx-plugin-IUPTVTCV.js"), enrichCsf2 = await options.presets.apply("experimental_enrichCsf"), { react, reactDom, mdx } = await getResolvedReact(options), packageDeduplicationPlugin = {
888
+ let { plugins = [] } = config, { csfPluginOptions = {} } = options, { mdxPlugin } = await import("./_node-chunks/mdx-plugin-KTB3ISIL.js"), enrichCsf2 = await options.presets.apply("experimental_enrichCsf"), { react, reactDom, mdx } = await getResolvedReact(options), packageDeduplicationPlugin = {
889
889
  name: "storybook:package-deduplication",
890
890
  enforce: "pre",
891
891
  config: () => ({
@@ -915,12 +915,9 @@ var docs = (input = {}, options) => {
915
915
  mdx: existing?.mdx ?? fileURLToPath3(import.meta.resolve("@mdx-js/react"))
916
916
  }), services = async (_value, options) => {
917
917
  let features = await options.presets.apply("features");
918
- if (features?.experimentalDocgenServer && features?.componentsManifest && !options.ignorePreview) {
919
- let generator = await options.presets.apply("storyIndexGenerator");
920
- registerMdxService({
921
- getIndex: () => generator.getIndex()
922
- });
923
- }
918
+ features?.experimentalDocgenServer && features?.componentsManifest && !options.ignorePreview && registerMdxService({
919
+ getIndex: () => options.presets.apply("storyIndexGenerator").then((generator) => generator.getIndex())
920
+ });
924
921
  }, optimizeViteDeps = [
925
922
  "@storybook/addon-docs",
926
923
  "@storybook/addon-docs/blocks",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/addon-docs",
3
- "version": "10.6.0-alpha.7",
3
+ "version": "10.6.0-alpha.8",
4
4
  "description": "Storybook Docs: Document UI components automatically with stories and MDX",
5
5
  "keywords": [
6
6
  "docs",
@@ -88,7 +88,7 @@
88
88
  "dependencies": {
89
89
  "@mdx-js/react": "^3.0.0",
90
90
  "@storybook/icons": "^2.0.2",
91
- "@storybook/react-dom-shim": "10.6.0-alpha.7",
91
+ "@storybook/react-dom-shim": "10.6.0-alpha.8",
92
92
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
93
93
  "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
94
94
  "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.6.0-alpha.7"
120
+ "storybook": "^10.6.0-alpha.8"
121
121
  },
122
122
  "peerDependenciesMeta": {
123
123
  "@types/react": {