@storybook/addon-onboarding 0.0.21--canary.42.4b1611d.0 → 0.0.21--canary.42.70c2d8e.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/manager.js +2 -4
- package/dist/manager.js.map +1 -1
- package/dist/manager.mjs +2 -4
- package/dist/manager.mjs.map +1 -1
- package/package.json +1 -1
package/dist/manager.js
CHANGED
|
@@ -385,13 +385,11 @@ var Ao=Object.defineProperty;var a=(t,o)=>()=>(t&&(o=t(t=0)),o);var $o=(t,o)=>{f
|
|
|
385
385
|
position: relative;
|
|
386
386
|
padding-top: 12px;
|
|
387
387
|
padding-bottom: 12px;
|
|
388
|
-
`;});var we,Vt,Qt=a(()=>{Ut();we={default:{filter:"grayscale(1)",opacity:.5},active:{filter:"grayscale(0)",opacity:1}},Vt=e.forwardRef(({active:t,content:o,open:r},n)=>{let s={fontSize:"0.8125rem",lineHeight:"1.1875rem"};return e__default.default.createElement(theming.ThemeProvider,{theme:theming.ensure(theming.themes.dark)},e__default.default.createElement(Ht,{ref:n,initial:"default",animate:t?"active":"default","aria-hidden":!t,variants:we,transition:{ease:"easeInOut",duration:.6}},o.map(({toggle:i,code:l},f)=>e__default.default.createElement(e.Fragment,{key:f},i===void 0&&e__default.default.createElement(components.SyntaxHighlighter,{language:"javascript",customStyle:s},l),i&&!r&&e__default.default.createElement(components.SyntaxHighlighter,{language:"javascript",customStyle:s}," // ..."),i&&r&&e__default.default.createElement(framerMotion.motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.4}},e__default.default.createElement(components.SyntaxHighlighter,{language:"javascript",customStyle:s,codeTagProps:{style:{paddingLeft:"15px"}}},l))))))});});var Z,Zt,Xt=a(()=>{Ft();Qt();Z=49,Zt=({activeStep:t,data:o,width:r})=>{let[n,s]=e.useState([]),i=e.useMemo(()=>o.map(()=>e.createRef()),[o]),l=p=>{let d=0;for(let g=0;g<p;g++)d-=i[g].current.getBoundingClientRect().height;return d},f=e.useCallback(()=>{let p=o.flatMap((d,g)=>{let z=i[g].current.getBoundingClientRect().height,k=[{yPos:l(g)+Z-7,backdropHeight:z,index:g,open:!1}];return d.length>1&&k.push({yPos:l(g)+Z-7,backdropHeight:z,index:g,open:!0}),k});s(p);},[o]);return e.useLayoutEffect(()=>{let p=new ResizeObserver(()=>{f();});return i.forEach(d=>{p.observe(d.current);}),()=>{p.disconnect();}},[]),e__default.default.createElement(Gt,{width:r},e__default.default.createElement(_t,{animate:{y:n[t]?.yPos??0},transition:{ease:"easeInOut",duration:.6}},o.map((p,d)=>e__default.default.createElement(Vt,{key:d,ref:i[d],active:n[t]?.index===d,open:n[t]?.index>d?!0:n[t]?.open??!1,content:p}))),e__default.default.createElement(Yt,{animate:{height:n[t]?.backdropHeight??0},transition:{ease:"easeInOut",duration:.6},style:{top:Z},className:"syntax-highlighter-backdrop"}))};});var Kt,qt=a(()=>{Kt=theming.styled.ul(()=>({display:"flex",flexDirection:"column",rowGap:16,padding:0,margin:0}));});var Jt,Rt=a(()=>{qt();Jt=({children:t})=>e__default.default.createElement(Kt,null,t);});var to,oo,eo,ro=a(()=>{to=theming.styled.li(()=>({display:"flex",alignItems:"flex-start",columnGap:12})),oo=theming.styled.div(({theme:t})=>({fontFamily:t.typography.fonts.base,color:t.color.darker,fontSize:"13px"})),eo=theming.styled.div(({isCompleted:t,theme:o})=>({display:"flex",alignItems:"center",justifyContent:"center",border:!t&&`1px solid ${o.color.medium}`,minWidth:20,width:20,height:20,borderRadius:"50%",backgroundColor:t?o.color.green:"white",fontFamily:o.typography.fonts.base,fontSize:10,fontWeight:600,color:o.color.dark}));});var N,no=a(()=>{ro();N=({children:t,index:o,isCompleted:r})=>e__default.default.createElement(to,null,e__default.default.createElement(eo,{"aria-label":r?"complete":"not complete",isCompleted:r},r?e__default.default.createElement(components.Icons,{width:10,height:10,icon:"check",color:"white"}):o),e__default.default.createElement(oo,null,t));});function io(){let[t,o]=e.useState(null);return e.useEffect(()=>{(async()=>{try{let i=(await(await fetch("/index.json")).json()).entries["example-button--primary"].importPath;o({data:i,error:null});}catch(n){o({data:null,error:n});}})();},[]),t}var so=a(()=>{});var po,lo=a(()=>{po=(t,o,r)=>{let[n,s]=e.useState(null);return e.useEffect(()=>{if(t){let i=()=>{r.getChannel().once(coreEvents.STORY_RENDERED,()=>{o.getData("example-button--warning")&&s({data:!0,error:null});});};return r.getServerChannel().on(coreEvents.STORY_INDEX_INVALIDATED,i),()=>{r.getServerChannel().off(coreEvents.STORY_INDEX_INVALIDATED,i);}}},[t]),n};});var mo,co=a(()=>{mo=(t,o)=>{let[r,n]=e.useState(null),s=document.querySelector(`.${t}`);return e.useEffect(()=>{if(o){let i=new ResizeObserver(()=>{s&&n({top:s.offsetTop,left:s.offsetLeft,height:s.offsetHeight,width:s.offsetWidth});});return i.observe(s),()=>{i.disconnect();}}},[t,o]),r};});var fo,uo=a(()=>{fo="data:image/png;base64,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";});var ho,go=a(()=>{ho="data:image/png;base64,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";});var yo,xo=a(()=>{yo="data:image/png;base64,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";});var bo,Co=a(()=>{bo=[[{code:"// Button.stories.jsx"}],[{code:"import { Button } from './Button';"}],[{code:`const meta = {
|
|
388
|
+
`;});var we,Vt,Qt=a(()=>{Ut();we={default:{filter:"grayscale(1)",opacity:.5},active:{filter:"grayscale(0)",opacity:1}},Vt=e.forwardRef(({active:t,content:o,open:r},n)=>{let s={fontSize:"0.8125rem",lineHeight:"1.1875rem"};return e__default.default.createElement(theming.ThemeProvider,{theme:theming.ensure(theming.themes.dark)},e__default.default.createElement(Ht,{ref:n,initial:"default",animate:t?"active":"default","aria-hidden":!t,variants:we,transition:{ease:"easeInOut",duration:.6}},o.map(({toggle:i,code:l},f)=>e__default.default.createElement(e.Fragment,{key:f},i===void 0&&e__default.default.createElement(components.SyntaxHighlighter,{language:"javascript",customStyle:s},l),i&&!r&&e__default.default.createElement(components.SyntaxHighlighter,{language:"javascript",customStyle:s}," // ..."),i&&r&&e__default.default.createElement(framerMotion.motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.4}},e__default.default.createElement(components.SyntaxHighlighter,{language:"javascript",customStyle:s,codeTagProps:{style:{paddingLeft:"15px"}}},l))))))});});var Z,Zt,Xt=a(()=>{Ft();Qt();Z=49,Zt=({activeStep:t,data:o,width:r})=>{let[n,s]=e.useState([]),i=e.useMemo(()=>o.map(()=>e.createRef()),[o]),l=p=>{let d=0;for(let g=0;g<p;g++)d-=i[g].current.getBoundingClientRect().height;return d},f=e.useCallback(()=>{let p=o.flatMap((d,g)=>{let z=i[g].current.getBoundingClientRect().height,k=[{yPos:l(g)+Z-7,backdropHeight:z,index:g,open:!1}];return d.length>1&&k.push({yPos:l(g)+Z-7,backdropHeight:z,index:g,open:!0}),k});s(p);},[o]);return e.useLayoutEffect(()=>{let p=new ResizeObserver(()=>{f();});return i.forEach(d=>{p.observe(d.current);}),()=>{p.disconnect();}},[]),e__default.default.createElement(Gt,{width:r},e__default.default.createElement(_t,{animate:{y:n[t]?.yPos??0},transition:{ease:"easeInOut",duration:.6}},o.map((p,d)=>e__default.default.createElement(Vt,{key:d,ref:i[d],active:n[t]?.index===d,open:n[t]?.index>d?!0:n[t]?.open??!1,content:p}))),e__default.default.createElement(Yt,{animate:{height:n[t]?.backdropHeight??0},transition:{ease:"easeInOut",duration:.6},style:{top:Z},className:"syntax-highlighter-backdrop"}))};});var Kt,qt=a(()=>{Kt=theming.styled.ul(()=>({display:"flex",flexDirection:"column",rowGap:16,padding:0,margin:0}));});var Jt,Rt=a(()=>{qt();Jt=({children:t})=>e__default.default.createElement(Kt,null,t);});var to,oo,eo,ro=a(()=>{to=theming.styled.li(()=>({display:"flex",alignItems:"flex-start",columnGap:12})),oo=theming.styled.div(({theme:t})=>({fontFamily:t.typography.fonts.base,color:t.color.darker,fontSize:"13px"})),eo=theming.styled.div(({isCompleted:t,theme:o})=>({display:"flex",alignItems:"center",justifyContent:"center",border:!t&&`1px solid ${o.color.medium}`,minWidth:20,width:20,height:20,borderRadius:"50%",backgroundColor:t?o.color.green:"white",fontFamily:o.typography.fonts.base,fontSize:10,fontWeight:600,color:o.color.dark}));});var N,no=a(()=>{ro();N=({children:t,index:o,isCompleted:r})=>e__default.default.createElement(to,null,e__default.default.createElement(eo,{"aria-label":r?"complete":"not complete",isCompleted:r},r?e__default.default.createElement(components.Icons,{width:10,height:10,icon:"check",color:"white"}):o),e__default.default.createElement(oo,null,t));});function io(){let[t,o]=e.useState(null);return e.useEffect(()=>{(async()=>{try{let i=(await(await fetch("/index.json")).json()).entries["example-button--primary"].importPath;o({data:i,error:null});}catch(n){o({data:null,error:n});}})();},[]),t}var so=a(()=>{});var po,lo=a(()=>{po=(t,o,r)=>{let[n,s]=e.useState(null);return e.useEffect(()=>{if(t){let i=()=>{r.getChannel().once(coreEvents.STORY_RENDERED,()=>{o.getData("example-button--warning")&&s({data:!0,error:null});});};return r.getServerChannel().on(coreEvents.STORY_INDEX_INVALIDATED,i),()=>{r.getServerChannel().off(coreEvents.STORY_INDEX_INVALIDATED,i);}}},[t]),n};});var mo,co=a(()=>{mo=(t,o)=>{let[r,n]=e.useState(null),s=document.querySelector(`.${t}`);return e.useEffect(()=>{if(o){let i=new ResizeObserver(()=>{s&&n({top:s.offsetTop,left:s.offsetLeft,height:s.offsetHeight,width:s.offsetWidth});});return i.observe(s),()=>{i.disconnect();}}},[t,o]),r};});var fo,uo=a(()=>{fo="data:image/png;base64,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";});var ho,go=a(()=>{ho="data:image/png;base64,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";});var yo,xo=a(()=>{yo="data:image/png;base64,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";});var bo,Co=a(()=>{bo=[[{code:"// Button.stories.jsx"}],[{code:"import { Button } from './Button';"}],[{code:`export default {
|
|
389
389
|
title: 'Example/Button',
|
|
390
390
|
component: Button,
|
|
391
391
|
// ...
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
export default meta;`}],[{code:"export const Primary = {"},{code:`args: {
|
|
392
|
+
};`}],[{code:"export const Primary = {"},{code:`args: {
|
|
395
393
|
primary: true,
|
|
396
394
|
label: 'Click',
|
|
397
395
|
background: 'red'
|
package/dist/manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/PulsatingEffect/PulsatingEffect.tsx","../src/components/Confetti/Confetti.tsx","../src/components/Button/Button.tsx","../src/features/GuidedTour/Tooltip.tsx","../src/features/GuidedTour/GuidedTour.tsx","../src/components/Modal/Modal.styled.tsx","../src/components/Modal/Modal.tsx","../src/features/WelcomeModal/StorybookLogo.tsx","../src/features/WelcomeModal/WelcomeModal.styled.tsx","../src/features/WelcomeModal/WelcomeModal.tsx","../src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx","../src/components/SyntaxHighlighter/SyntaxHighlighter.styled.tsx","../src/components/SyntaxHighlighter/Snippet/Snippet.styled.tsx","../src/components/SyntaxHighlighter/Snippet/Snippet.tsx","../src/components/SyntaxHighlighter/SyntaxHighlighter.tsx","../src/components/List/List.styled.tsx","../src/components/List/List.tsx","../src/components/List/ListItem/ListItem.styled.tsx","../src/components/List/ListItem/ListItem.tsx","../src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx","../src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx","../src/features/WriteStoriesModal/hooks/useGetBackdropBoundary.tsx","../src/features/WriteStoriesModal/code/javascript.tsx","../src/features/WriteStoriesModal/code/typescript.tsx","../src/features/WriteStoriesModal/code/nextjs-typescript.tsx","../src/features/WriteStoriesModal/hooks/useGetFrameworkName.tsx","../src/features/WriteStoriesModal/WriteStoriesModal.tsx","../src/App.tsx","../src/manager.tsx"],"names":["useEffect","PulsatingEffect","targetSelector","element","keyframes","style","styleElement","init_PulsatingEffect","__esmMin","ReactConfetti","React","styled","createPortal","useState","Confetti","top","left","width","height","confettiProps","confettiContainer","container","Wrapper","init_Confetti","Button","init_Button","theme","TooltipBody","TooltipTitle","TooltipContent","TooltipFooter","Tooltip","init_Tooltip","step","primaryProps","tooltipProps","Joyride","STATUS","STORY_ARGS_UPDATED","GuidedTour","api","isFinalStep","onFirstTourDone","stepIndex","setStepIndex","data","init_GuidedTour","css","Dialog","motion","StyledOverlay","StyledContent","ContentWrapper","init_Modal_styled","init_Modal","children","contentProps","ref","initial","animate","exit","AnimatePresence","Modal","isOpen","setOpen","onEscapeKeyDown","onInteractOutside","ev","StorybookLogo","init_StorybookLogo","Icons","ModalContentWrapper","TopContent","Title","Description","SkipButton","StyledIcon","Background","circle1Anim","Circle1","circle2Anim","Circle2","circle3Anim","Circle3","StyledTitle","StyledDescription","init_WelcomeModal_styled","WelcomeModal","init_WelcomeModal","skipOnboarding","onProceed","Close","ModalContent","Main","Header","ModalTitle","Content","SpanHighlight","Image","init_WriteStoriesModal_styled","Code","Container","Backdrop","init_SyntaxHighlighter_styled","SnippetWrapper","init_Snippet_styled","Fragment","forwardRef","StorybookSyntaxHighlighter","ThemeProvider","ensure","themes","wrapperVariants","Snippet","init_Snippet","active","content","open","customStyle","toggle","code","i","createRef","useCallback","useLayoutEffect","useMemo","OFFSET","SyntaxHighlighter","init_SyntaxHighlighter","activeStep","steps","setSteps","refs","getYPos","idx","yPos","setNewSteps","newSteps","backdropHeight","finalSteps","resizeObserver","ListWrapper","init_List_styled","List","init_List","ListItemWrapper","ListItemContentWrapper","ListItemIndexWrapper","init_ListItem_styled","isCompleted","ListItem","init_ListItem","index","useGetButtonPath","buttonPath","setButtonPath","e","init_useGetButtonPath","STORY_INDEX_INVALIDATED","STORY_RENDERED","useGetWarningButtonStatus","init_useGetWarningButtonStatus","addonsStore","status","setStatus","getWarningButtonStatus","useGetBackdropBoundary","init_useGetBackdropBoundary","className","boundary","setBoundary","javascript_default","init_javascript","typescript_default","init_typescript","nextjs_typescript_default","init_nextjs_typescript","useGetProject","project","setProject","json","init_useGetFrameworkName","useMeasure","WriteStoriesModal","init_WriteStoriesModal","init_title_sidebar","init_story_name_sidebar","init_args","onFinish","setStep","isWarningStoryCopied","setWarningStoryCopied","clipboardButtonRef","clipboardButtonBounds","warningButtonStatus","backdropBoundary","copyWarningStory","warningContent","title_sidebar_default","story_name_sidebar_default","args_default","App_exports","__export","App","STORY_CHANGED","CURRENT_STORY_WAS_SET","addons","enabled","setEnabled","showConfetti","setShowConfetti","url","path","stepTimeout","storyId","onStoryChanged","confetti","init_App","ReactDOM","lazy","Suspense","urlState","hasButtonStories","domNode"],"mappings":"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","sourcesContent":["import { useEffect } from \"react\";\n\nexport function PulsatingEffect({\n targetSelector,\n}: {\n targetSelector: string;\n}): JSX.Element {\n useEffect(() => {\n const element = document.querySelector<HTMLElement>(targetSelector);\n\n if (element) {\n element.style.animation = \"pulsate 3s infinite\";\n element.style.transformOrigin = \"center\";\n element.style.animationTimingFunction = \"ease-in-out\";\n\n const keyframes = `\n @keyframes pulsate {\n 0% {\n box-shadow: 0 0 0 0 rgba(2, 156, 253, 0.7), 0 0 0 0 rgba(2, 156, 253, 0.4);\n }\n 50% {\n box-shadow: 0 0 0 20px rgba(2, 156, 253, 0), 0 0 0 40px rgba(2, 156, 253, 0);\n }\n 100% {\n box-shadow: 0 0 0 0 rgba(2, 156, 253, 0), 0 0 0 0 rgba(2, 156, 253, 0);\n }\n }\n `;\n const style = document.createElement(\"style\");\n style.id = \"sb-onboarding-pulsating-effect\";\n style.innerHTML = keyframes;\n document.head.appendChild(style);\n }\n\n return () => {\n const styleElement = document.querySelector(\n \"#sb-onboarding-pulsating-effect\"\n );\n\n if (styleElement) {\n styleElement.remove();\n }\n\n if (element) {\n element.style.animation = \"auto\";\n }\n };\n }, [targetSelector]);\n\n return null;\n}\n","import ReactConfetti from \"react-confetti\";\nimport React, { useEffect } from \"react\";\nimport { styled } from \"@storybook/theming\";\nimport { createPortal } from \"react-dom\";\nimport { useState } from \"react\";\n\ninterface ConfettiProps\n extends Omit<React.ComponentProps<typeof ReactConfetti>, \"drawShape\"> {\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n}\n\nconst Wrapper = styled.div<{\n width: number;\n height: number;\n top: number;\n left: number;\n}>(({ width, height, left, top }) => ({\n width: `${width}px`,\n height: `${height}px`,\n left: `${left}px`,\n top: `${top}px`,\n position: \"relative\",\n overflow: \"hidden\",\n}));\n\nexport function Confetti({\n top = 0,\n left = 0,\n width = window.innerWidth,\n height = window.innerHeight,\n ...confettiProps\n}: ConfettiProps): React.ReactPortal {\n const [confettiContainer] = useState(() => {\n const container = document.createElement(\"div\");\n container.setAttribute(\"id\", \"confetti-container\");\n container.setAttribute(\n \"style\",\n \"position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999;\"\n );\n\n return container;\n });\n\n useEffect(() => {\n document.body.appendChild(confettiContainer);\n\n return () => {\n document.body.removeChild(confettiContainer);\n };\n }, []);\n\n return createPortal(\n <Wrapper top={top} left={left} width={width} height={height}>\n <ReactConfetti {...confettiProps} />\n </Wrapper>,\n confettiContainer\n );\n}\n","import { styled } from \"@storybook/theming\";\nimport React, { FC, forwardRef } from \"react\";\n\nexport interface ButtonProps {\n children: string;\n onClick?: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n}\n\nexport const Button = styled.button`\n all: unset;\n border: 0;\n border-radius: 0.25rem;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.75rem;\n background: ${({ theme }) => theme.color.secondary};\n color: ${({ theme }) => theme.color.lightest};\n height: 32px;\n font-size: 0.8125rem;\n font-weight: 700;\n font-family: ${({ theme }) => theme.typography.fonts.base};\n transition: all 0.16s ease-in-out;\n text-decoration: none;\n\n &:hover {\n background-color: #0b94eb;\n }\n\n &:focus {\n box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.1);\n }\n`;\n","import React from \"react\";\nimport { styled } from \"@storybook/theming\";\nimport { TooltipRenderProps } from \"react-joyride\";\nimport { Button } from \"../../components/Button/Button\";\n\nconst TooltipBody = styled.div`\n background: #fff;\n width: 260px;\n padding: 15px;\n border-radius: 5px;\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n`;\n\nconst TooltipTitle = styled.div`\n font-size: 13px;\n font-weight: 700;\n color: ${({ theme }) => theme.color.darkest};\n`;\n\nconst TooltipContent = styled.p`\n font-size: 13px;\n text-align: start;\n color: ${({ theme }) => theme.color.mediumdark};\n margin: 0;\n margin-top: 5px;\n`;\n\nconst TooltipFooter = styled.div`\n display: flex;\n justify-content: flex-end;\n margin-top: 15px;\n`;\n\ntype TooltipProps = TooltipRenderProps & {\n step: TooltipRenderProps[\"step\"] & { hideNextButton?: boolean };\n};\n\nexport const Tooltip = ({ step, primaryProps, tooltipProps }: TooltipProps) => {\n return (\n <TooltipBody {...tooltipProps}>\n <Wrapper>\n {step.title && <TooltipTitle>{step.title}</TooltipTitle>}\n <TooltipContent>{step.content}</TooltipContent>\n </Wrapper>\n {!step.hideNextButton && (\n <TooltipFooter id=\"buttonNext\">\n <Button {...primaryProps}>Next</Button>\n </TooltipFooter>\n )}\n </TooltipBody>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport Joyride, { CallBackProps, STATUS, Step } from \"react-joyride\";\n\nimport { PulsatingEffect } from \"../../components/PulsatingEffect/PulsatingEffect\";\nimport { Confetti } from \"../../components/Confetti/Confetti\";\nimport { API } from \"@storybook/manager-api\";\nimport { STORY_ARGS_UPDATED } from \"@storybook/core-events\";\nimport { Tooltip } from \"./Tooltip\";\n\ntype GuidedTourStep = Step & { hideNextButton?: boolean };\n\nexport function GuidedTour({\n api,\n isFinalStep,\n onFirstTourDone,\n}: {\n api: API;\n isFinalStep?: boolean;\n onFirstTourDone: () => void;\n}) {\n const [stepIndex, setStepIndex] = useState<number>();\n\n useEffect(() => {\n api.once(STORY_ARGS_UPDATED, () => {\n setStepIndex(3);\n });\n }, []);\n\n const steps: GuidedTourStep[] = isFinalStep\n ? [\n {\n target: \"#configure-your-project--docs\",\n title: \"Continue setting up your project\",\n content:\n \"You nailed the basics. Now get started writing stories for your own components.\",\n placement: \"right\",\n disableOverlay: true,\n disableBeacon: true,\n floaterProps: {\n disableAnimation: true,\n },\n hideNextButton: true,\n },\n ]\n : [\n {\n target: \"#storybook-explorer-tree > div\",\n title: \"Storybook is built from stories\",\n content:\n \"Storybook uses stories to represent the key states supported by each of your components. For example: this Button component has four stories.\",\n placement: \"right\",\n disableBeacon: true,\n styles: {\n spotlight: {\n transform: \"translateY(30px)\",\n },\n },\n floaterProps: {\n disableAnimation: true,\n },\n },\n {\n target: \"#storybook-preview-iframe\",\n title: \"Storybook previews are interactive\",\n content:\n \"Whenever you modify code or stories, Storybook automatically updates how it previews your components.\",\n placement: \"bottom\",\n },\n {\n target: \"#root div[role=main]\",\n title: \"Interactive story playground\",\n content: (\n <>\n See how a story renders with different data and state without\n touching code.\n <br />\n <br />\n Try it out by pressing this button.\n <PulsatingEffect targetSelector=\"#control-primary\" />\n </>\n ),\n placement: \"right\",\n spotlightClicks: true,\n floaterProps: {\n target: \"#control-primary\",\n },\n hideNextButton: true,\n },\n {\n target: \"#control-primary\",\n title: \"Congratulations!\",\n content: (\n <>\n You've learned how to control your stories interactively. Now:\n let's explore how to write your first story.\n <Confetti numberOfPieces={100} />\n </>\n ),\n placement: \"right\",\n disableOverlay: true,\n },\n ];\n\n return (\n <Joyride\n steps={steps}\n continuous\n stepIndex={stepIndex}\n spotlightPadding={0}\n hideBackButton\n disableCloseOnEsc\n disableOverlayClose\n disableScrolling\n hideCloseButton\n callback={(data: CallBackProps) => {\n if (!isFinalStep && data.status === STATUS.FINISHED) {\n onFirstTourDone();\n }\n }}\n floaterProps={{\n styles: {\n floater: {\n padding: 0,\n paddingLeft: 8,\n paddingTop: 8,\n filter:\n \"drop-shadow(0px 5px 5px rgba(0,0,0,0.05)) drop-shadow(0 1px 3px rgba(0,0,0,0.1))\",\n },\n },\n }}\n tooltipComponent={Tooltip}\n styles={{\n spotlight: {\n border: \"solid 2px #004c7c\",\n },\n overlay: {\n backgroundColor: \"rgba(0, 0, 0, 0.48)\",\n },\n options: {\n zIndex: 10000,\n primaryColor: \"#029CFD\",\n },\n }}\n />\n );\n}\n","import { css, styled } from \"@storybook/theming\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport React from \"react\";\nimport { motion } from \"framer-motion\";\nimport { animate, exit, initial } from \"./Modal\";\n\nexport const StyledOverlay = styled(motion.div)`\n background-color: rgba(27, 28, 29, 0.48);\n position: fixed;\n inset: 0px;\n width: 100%;\n height: 100%;\n`;\n\nexport const StyledContent = styled(motion.div)<{\n width: number;\n height: number;\n}>(\n ({ width, height }) => css`\n background-color: white;\n border-radius: 6px;\n box-shadow: rgba(14, 18, 22, 0.35) 0px 10px 38px -10px;\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: ${width ?? 740}px;\n height: ${height ? `${height}px` : \"auto\"};\n max-width: calc(100% - 40px);\n max-height: 85vh;\n overflow: hidden;\n `\n);\n\nexport const ContentWrapper = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof StyledContent> &\n React.ComponentProps<typeof Dialog.Content>\n>(({ width, height, children, ...contentProps }, ref) => (\n <Dialog.Content ref={ref} asChild {...contentProps}>\n <StyledContent\n width={width}\n height={height}\n initial={initial}\n animate={animate}\n exit={exit}\n >\n {children}\n </StyledContent>\n </Dialog.Content>\n));\n","import React from \"react\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport { ContentWrapper, StyledOverlay } from \"./Modal.styled\";\nimport { AnimatePresence } from \"framer-motion\";\n\ntype ContentProps = React.ComponentProps<typeof ContentWrapper>;\n\ninterface ModalProps {\n width?: number;\n height?: number;\n isOpen?: boolean;\n setOpen?: (open: boolean) => void;\n children: (props: {\n Title: typeof Dialog.Title;\n Description: typeof Dialog.Description;\n Close: typeof Dialog.Close;\n }) => React.ReactNode;\n onEscapeKeyDown?: ContentProps[\"onEscapeKeyDown\"];\n onInteractOutside?: ContentProps[\"onInteractOutside\"];\n}\n\nexport const initial = { opacity: 0 };\nexport const animate = { opacity: 1, transition: { duration: 0.3 } };\nexport const exit = { opacity: 0, transition: { duration: 0.3 } };\n\nexport function Modal({\n children,\n width,\n height,\n isOpen,\n setOpen,\n onEscapeKeyDown,\n onInteractOutside = (ev) => ev.preventDefault(),\n}: ModalProps) {\n return (\n <Dialog.Root open={isOpen} onOpenChange={setOpen}>\n <AnimatePresence>\n {isOpen && (\n <Dialog.Portal forceMount>\n <Dialog.Overlay asChild>\n <StyledOverlay initial={initial} animate={animate} exit={exit} />\n </Dialog.Overlay>\n <ContentWrapper\n width={width}\n height={height}\n onInteractOutside={onInteractOutside}\n onEscapeKeyDown={onEscapeKeyDown}\n >\n {children({\n Title: Dialog.Title,\n Description: Dialog.Description,\n Close: Dialog.Close,\n })}\n </ContentWrapper>\n </Dialog.Portal>\n )}\n </AnimatePresence>\n </Dialog.Root>\n );\n}\n","import React from \"react\";\n\nexport function StorybookLogo() {\n return (\n <svg\n width=\"32px\"\n height=\"40px\"\n viewBox=\"0 0 256 319\"\n preserveAspectRatio=\"xMidYMid\"\n >\n <defs>\n <path\n d=\"M9.87245893,293.324145 L0.0114611411,30.5732167 C-0.314208957,21.8955842 6.33948896,14.5413918 15.0063196,13.9997149 L238.494389,0.0317105427 C247.316188,-0.519651867 254.914637,6.18486163 255.466,15.0066607 C255.486773,15.339032 255.497167,15.6719708 255.497167,16.0049907 L255.497167,302.318596 C255.497167,311.157608 248.331732,318.323043 239.492719,318.323043 C239.253266,318.323043 239.013844,318.317669 238.774632,318.306926 L25.1475605,308.712253 C16.8276309,308.338578 10.1847994,301.646603 9.87245893,293.324145 L9.87245893,293.324145 Z\"\n id=\"path-1\"\n ></path>\n </defs>\n <g>\n <mask id=\"mask-2\" fill=\"white\">\n <use xlinkHref=\"#path-1\"></use>\n </mask>\n <use fill=\"#FF4785\" fillRule=\"nonzero\" xlinkHref=\"#path-1\"></use>\n <path\n d=\"M188.665358,39.126973 L190.191903,2.41148534 L220.883535,0 L222.205755,37.8634126 C222.251771,39.1811466 221.22084,40.2866846 219.903106,40.3327009 C219.338869,40.3524045 218.785907,40.1715096 218.342409,39.8221376 L206.506729,30.4984116 L192.493574,41.1282444 C191.443077,41.9251106 189.945493,41.7195021 189.148627,40.6690048 C188.813185,40.2267976 188.6423,39.6815326 188.665358,39.126973 Z M149.413703,119.980309 C149.413703,126.206975 191.355678,123.222696 196.986019,118.848893 C196.986019,76.4467826 174.234041,54.1651411 132.57133,54.1651411 C90.9086182,54.1651411 67.5656805,76.7934542 67.5656805,110.735941 C67.5656805,169.85244 147.345341,170.983856 147.345341,203.229219 C147.345341,212.280549 142.913138,217.654777 133.162291,217.654777 C120.456641,217.654777 115.433477,211.165914 116.024438,189.103298 C116.024438,184.317101 67.5656805,182.824962 66.0882793,189.103298 C62.3262146,242.56887 95.6363019,257.990394 133.753251,257.990394 C170.688279,257.990394 199.645341,238.303123 199.645341,202.663511 C199.645341,139.304202 118.683759,141.001326 118.683759,109.604526 C118.683759,96.8760922 128.139127,95.178968 133.753251,95.178968 C139.662855,95.178968 150.300143,96.2205679 149.413703,119.980309 Z\"\n fill=\"#FFFFFF\"\n fillRule=\"nonzero\"\n mask=\"url(#mask-2)\"\n ></path>\n </g>\n </svg>\n );\n}\n","import { Icons } from \"@storybook/components\";\nimport { keyframes, styled } from \"@storybook/theming\";\n\nexport const ModalContentWrapper = styled.div`\n border-radius: 5px;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: space-between;\n`;\n\nexport const TopContent = styled.div`\n display: flex;\n flex: 1;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nexport const Title = styled.h1`\n margin: 0;\n margin-top: 20px;\n margin-bottom: 5px;\n color: ${({ theme }) => theme.color.darkest};\n font-weight: ${({ theme }) => theme.typography.weight.bold};\n font-size: ${({ theme }) => theme.typography.size.m1}px;\n line-height: ${({ theme }) => theme.typography.size.m3}px;\n`;\n\nexport const Description = styled.p`\n margin: 0;\n margin-bottom: 20px;\n max-width: 320px;\n text-align: center;\n font-size: ${({ theme }) => theme.typography.size.s2}px;\n font-weight: ${({ theme }) => theme.typography.weight.regular};\n line-height: ${({ theme }) => theme.typography.size.m1}px;\n color: ${({ theme }) => theme.color.darker};\n`;\n\nexport const SkipButton = styled.button`\n all: unset;\n cursor: pointer;\n font-size: 13px;\n color: #798186;\n padding-bottom: 20px;\n\n &:focus-visible {\n outline: auto;\n }\n`;\n\nexport const StyledIcon = styled(Icons)`\n margin-left: 2px;\n height: 10px;\n`;\n\nexport const Background = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n overflow: hidden;\n`;\n\nexport const circle1Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(-200px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle1 = styled.div`\n position: absolute;\n width: 1200px;\n height: 1200px;\n left: -200px;\n top: -900px;\n background: radial-gradient(\n circle at center,\n rgba(253, 255, 147, 1) 0%,\n rgba(253, 255, 147, 0) 70%\n );\n animation: ${circle1Anim} 4s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 3;\n`;\n\nexport const circle2Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(400px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle2 = styled.div`\n position: absolute;\n width: 1200px;\n height: 1200px;\n left: -600px;\n top: -840px;\n background: radial-gradient(\n circle at center,\n rgba(255, 119, 119, 1) 0%,\n rgba(255, 119, 119, 0) 70%\n );\n animation: ${circle2Anim} 6s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 2;\n`;\n\nexport const circle3Anim = keyframes`\n 0% { transform: translate(600px, -40px) }\n 50% { transform: translate(600px, -200px) }\n 100% { transform: translate(600px, -40px) }\n`;\n\nexport const Circle3 = styled.div`\n position: absolute;\n width: 1200px;\n height: 1200px;\n left: -600px;\n top: -840px;\n background: radial-gradient(\n circle at center,\n rgba(119, 255, 247, 0.8) 0%,\n rgba(119, 255, 247, 0) 70%\n );\n animation: ${circle3Anim} 4s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 4;\n`;\n\nexport const StyledTitle = styled.h2`\n color: #000;\n font-weight: 700;\n font-size: 20px;\n line-height: 20px;\n`;\nexport const StyledDescription = styled.p`\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n color: #454e54;\n`;\n","import React, { FC } from \"react\";\n\nimport { Button } from \"../../components/Button/Button\";\nimport { Modal } from \"../../components/Modal/Modal\";\nimport { StorybookLogo } from \"./StorybookLogo\";\nimport {\n ModalContentWrapper,\n SkipButton,\n StyledIcon,\n Title,\n Description,\n Background,\n Circle1,\n Circle2,\n Circle3,\n TopContent,\n} from \"./WelcomeModal.styled\";\n\ninterface WelcomeModalProps {\n skipOnboarding: () => void;\n onProceed: () => void;\n isOpen: boolean;\n}\n\nexport const WelcomeModal: FC<WelcomeModalProps> = ({\n skipOnboarding,\n onProceed,\n isOpen,\n}) => {\n return (\n <Modal width={540} height={430} isOpen={isOpen} setOpen={skipOnboarding}>\n {({ Close }) => (\n <ModalContentWrapper data-chromatic=\"ignore\">\n <TopContent>\n <StorybookLogo />\n <Title>Welcome to Storybook</Title>\n <Description>\n Storybook helps you develop UI components. Learn the basics in a\n few simple steps.\n </Description>\n <Button style={{ marginTop: 4 }} onClick={onProceed}>\n Start your 3 minute tour\n </Button>\n </TopContent>\n <Close asChild>\n <SkipButton>\n Skip tour\n <StyledIcon icon=\"arrowright\" />\n </SkipButton>\n </Close>\n <Background>\n <Circle1 />\n <Circle2 />\n <Circle3 />\n </Background>\n </ModalContentWrapper>\n )}\n </Modal>\n );\n};\n","import { keyframes, styled } from \"@storybook/theming\";\n\nexport const ModalContent = styled.div`\n display: flex;\n flex-direction: row;\n height: 100%;\n max-height: 85vh;\n`;\n\nexport const Main = styled.div`\n position: relative;\n flex: 1;\n display: flex;\n flex-direction: column;\n font-family: ${({ theme }) => theme.typography.fonts.base};\n`;\n\nexport const Header = styled.div`\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 15px;\n border-bottom: 1px solid ${({ theme }) => theme.appBorderColor};\n height: 40px;\n`;\n\nexport const ModalTitle = styled.div`\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 13px;\n font-weight: bold;\n color: ${({ theme }) => theme.color.darkest};\n\n span {\n margin-top: 2px;\n }\n`;\n\nexport const Content = styled.div`\n font-size: 13px;\n padding: 15px;\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: space-between;\n color: ${({ theme }) => theme.color.darker};\n\n h3 {\n font-size: 13px;\n font-weight: bold;\n padding: 0;\n margin: 0;\n }\n`;\n\nexport const SpanHighlight = styled.span`\n color: ${({ theme }) => theme.color.secondary};\n display: inline-block;\n border-radius: 4px;\n padding: 0.2em 0.4em;\n opacity: 0.8;\n background-color: ${({ theme }) => theme.color.secondary}20;\n font-weight: bold;\n`;\n\nexport const Image = styled.img`\n max-width: 100%;\n margin-top: 1em;\n`;\n\nexport const Background = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n overflow: hidden;\n`;\n\nexport const circle1Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(120px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle1 = styled.div`\n position: absolute;\n width: 350px;\n height: 350px;\n left: -160px;\n top: -260px;\n background: radial-gradient(\n circle at center,\n rgba(255, 119, 119, 1) 0%,\n rgba(255, 119, 119, 0) 70%\n );\n animation: ${circle1Anim} 8s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 2;\n`;\n\nexport const circle2Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 33% { transform: translate(-64px, 0px) }\n 66% { transform: translate(120px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle2 = styled.div`\n position: absolute;\n width: 350px;\n height: 350px;\n left: -54px;\n top: -250px;\n background: radial-gradient(\n circle at center,\n rgba(253, 255, 147, 1) 0%,\n rgba(253, 255, 147, 0) 70%\n );\n animation: ${circle2Anim} 12s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 3;\n`;\n\nexport const circle3Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(-120px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle3 = styled.div`\n position: absolute;\n width: 350px;\n height: 350px;\n left: 150px;\n top: -220px;\n background: radial-gradient(\n circle at center,\n rgba(119, 255, 247, 0.8) 0%,\n rgba(119, 255, 247, 0) 70%\n );\n animation: ${circle3Anim} 4s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 4;\n`;\n","import { styled } from \"@storybook/theming\";\nimport { motion } from \"framer-motion\";\n\nexport const Code = styled(motion.div)`\n position: relative;\n z-index: 2;\n`;\n\nexport const Container = styled.div<{ width: number }>`\n position: relative;\n box-sizing: border-box;\n background: #171c23;\n width: ${({ width }) => width}px;\n height: 100%;\n overflow: hidden;\n padding-left: 15px;\n padding-right: 15px;\n padding-top: 6px;\n\n && {\n pre {\n background: transparent !important;\n margin: 0 !important;\n padding: 0 !important;\n }\n }\n`;\n\nexport const Backdrop = styled(motion.div)`\n background: #143046;\n position: absolute;\n z-index: 1;\n left: 0;\n width: 100%;\n height: 200px;\n`;\n","import { styled } from \"@storybook/theming\";\nimport { motion } from \"framer-motion\";\n\nexport const SnippetWrapper = styled(motion.div)<{ active?: boolean }>`\n position: relative;\n padding-top: 12px;\n padding-bottom: 12px;\n`;\n","import { motion } from \"framer-motion\";\nimport { Fragment, forwardRef } from \"react\";\nimport { SnippetWrapper } from \"./Snippet.styled\";\nimport React from \"react\";\nimport { SyntaxHighlighter as StorybookSyntaxHighlighter } from \"@storybook/components\";\nimport { ThemeProvider, ensure, themes } from \"@storybook/theming\";\n\ninterface Props {\n content: { code: string; toggle?: boolean }[];\n active: boolean;\n open?: boolean;\n}\n\nconst wrapperVariants = {\n default: {\n filter: \"grayscale(1)\",\n opacity: 0.5,\n },\n active: {\n filter: \"grayscale(0)\",\n opacity: 1,\n },\n};\n\nexport const Snippet = forwardRef<HTMLDivElement, Props>(\n ({ active, content, open }, ref) => {\n const customStyle = {\n fontSize: \"0.8125rem\",\n lineHeight: \"1.1875rem\",\n };\n\n return (\n <ThemeProvider theme={ensure(themes.dark)}>\n <SnippetWrapper\n ref={ref}\n initial=\"default\"\n animate={active ? \"active\" : \"default\"}\n aria-hidden={!active}\n variants={wrapperVariants}\n transition={{ ease: \"easeInOut\", duration: 0.6 }}\n >\n {content.map(({ toggle, code }, i) => (\n <Fragment key={i}>\n {toggle === undefined && (\n <StorybookSyntaxHighlighter\n language=\"javascript\"\n customStyle={customStyle}\n >\n {code}\n </StorybookSyntaxHighlighter>\n )}\n\n {toggle && !open && (\n <StorybookSyntaxHighlighter\n language=\"javascript\"\n customStyle={customStyle}\n >\n {` // ...`}\n </StorybookSyntaxHighlighter>\n )}\n\n {toggle && open && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.4 }}\n >\n <StorybookSyntaxHighlighter\n language=\"javascript\"\n customStyle={customStyle}\n codeTagProps={{ style: { paddingLeft: \"15px\" } }}\n >\n {code}\n </StorybookSyntaxHighlighter>\n </motion.div>\n )}\n </Fragment>\n ))}\n </SnippetWrapper>\n </ThemeProvider>\n );\n }\n);\n","import React, {\n createRef,\n useCallback,\n useLayoutEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Backdrop, Code, Container } from \"./SyntaxHighlighter.styled\";\nimport { Snippet } from \"./Snippet/Snippet\";\n\ntype SyntaxHighlighterProps = {\n data: { code: string; toggle?: boolean }[][];\n activeStep: number;\n width: number;\n};\n\ntype StepsProps = {\n yPos: number;\n backdropHeight: number;\n index: number;\n open: boolean;\n};\n\nconst OFFSET = 49;\n\nexport const SyntaxHighlighter = ({\n activeStep,\n data,\n width,\n}: SyntaxHighlighterProps) => {\n const [steps, setSteps] = useState<StepsProps[]>([]);\n\n const refs = useMemo(\n () => data.map(() => createRef<HTMLDivElement>()),\n [data]\n );\n\n const getYPos = (idx: number) => {\n let yPos = 0;\n for (let i = 0; i < idx; i++) {\n yPos -= refs[i].current!.getBoundingClientRect().height;\n }\n return yPos;\n };\n\n const setNewSteps = useCallback(() => {\n const newSteps = data.flatMap((content, i) => {\n const backdropHeight = refs[i].current!.getBoundingClientRect().height;\n const finalSteps = [\n {\n yPos: getYPos(i) + OFFSET - 7,\n backdropHeight,\n index: i,\n open: false,\n },\n ];\n\n if (content.length > 1) {\n finalSteps.push({\n yPos: getYPos(i) + OFFSET - 7,\n backdropHeight,\n index: i,\n open: true,\n });\n }\n\n return finalSteps;\n });\n\n setSteps(newSteps);\n }, [data]);\n\n useLayoutEffect(() => {\n // Call setNewSteps every time height of the refs elements changes\n const resizeObserver = new ResizeObserver(() => {\n setNewSteps();\n });\n\n refs.forEach((ref) => {\n resizeObserver.observe(ref.current!);\n });\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n return (\n <Container width={width}>\n <Code\n animate={{ y: steps[activeStep]?.yPos ?? 0 }}\n transition={{ ease: \"easeInOut\", duration: 0.6 }}\n >\n {data.map((content, idx: number) => (\n <Snippet\n key={idx}\n ref={refs[idx]}\n active={steps[activeStep]?.index === idx}\n open={\n steps[activeStep]?.index > idx\n ? true\n : steps[activeStep]?.open ?? false\n }\n content={content}\n />\n ))}\n </Code>\n <Backdrop\n animate={{ height: steps[activeStep]?.backdropHeight ?? 0 }}\n transition={{ ease: \"easeInOut\", duration: 0.6 }}\n style={{ top: OFFSET }}\n className=\"syntax-highlighter-backdrop\"\n />\n </Container>\n );\n};\n","import { styled } from \"@storybook/theming\";\n\nexport const ListWrapper = styled.ul(() => ({\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: 16,\n padding: 0,\n margin: 0,\n}));\n","import React from \"react\";\nimport { ListWrapper } from \"./List.styled\";\n\ninterface ListProps {\n children: React.ReactNode;\n}\n\nexport const List = ({ children }: ListProps) => {\n return <ListWrapper>{children}</ListWrapper>;\n};\n","import { styled } from \"@storybook/theming\";\n\nexport const ListItemWrapper = styled.li(() => ({\n display: \"flex\",\n alignItems: \"flex-start\",\n columnGap: 12,\n}));\n\nexport const ListItemContentWrapper = styled.div(({ theme }) => ({\n fontFamily: theme.typography.fonts.base,\n color: theme.color.darker,\n fontSize: \"13px\",\n}));\n\nexport const ListItemIndexWrapper = styled.div<{ isCompleted: boolean }>(\n ({ isCompleted, theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: !isCompleted && `1px solid ${theme.color.medium}`,\n minWidth: 20,\n width: 20,\n height: 20,\n borderRadius: \"50%\",\n backgroundColor: isCompleted ? theme.color.green : \"white\",\n fontFamily: theme.typography.fonts.base,\n fontSize: 10,\n fontWeight: 600,\n color: theme.color.dark,\n })\n);\n","import React from \"react\";\nimport { Icons } from \"@storybook/components\";\nimport {\n ListItemContentWrapper,\n ListItemIndexWrapper,\n ListItemWrapper,\n} from \"./ListItem.styled\";\n\ninterface ListItemProps {\n children: React.ReactNode;\n index: number;\n isCompleted?: boolean;\n}\n\nexport const ListItem = ({ children, index, isCompleted }: ListItemProps) => {\n return (\n <ListItemWrapper>\n <ListItemIndexWrapper\n aria-label={isCompleted ? \"complete\" : \"not complete\"}\n isCompleted={isCompleted}\n >\n {isCompleted ? (\n <Icons width={10} height={10} icon=\"check\" color=\"white\" />\n ) : (\n index\n )}\n </ListItemIndexWrapper>\n <ListItemContentWrapper>{children}</ListItemContentWrapper>\n </ListItemWrapper>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { Response } from \"../../../types/response\";\n\nexport function useGetButtonPath() {\n const [buttonPath, setButtonPath] = useState<Response<string>>(null);\n\n useEffect(() => {\n const getButtonPath = async () => {\n try {\n const response = await fetch(\"/index.json\");\n const json = await response.json();\n const buttonPath = json.entries[\"example-button--primary\"].importPath;\n setButtonPath({\n data: buttonPath,\n error: null,\n });\n } catch (e) {\n setButtonPath({\n data: null,\n error: e,\n });\n }\n };\n getButtonPath();\n }, []);\n\n return buttonPath;\n}\n","import { useState, useEffect } from \"react\";\nimport { Response } from \"../../../types/response\";\nimport { API, AddonStore } from \"@storybook/manager-api\";\nimport {\n STORY_INDEX_INVALIDATED,\n STORY_RENDERED,\n} from \"@storybook/core-events\";\n\nexport const useGetWarningButtonStatus = (\n active: boolean,\n api: API,\n addonsStore: AddonStore\n) => {\n const [status, setStatus] = useState<Response<boolean>>(null);\n\n useEffect(() => {\n if (active) {\n const getWarningButtonStatus = () => {\n addonsStore.getChannel().once(STORY_RENDERED, () => {\n const out = api.getData(\"example-button--warning\");\n\n if (out) {\n setStatus({ data: true, error: null });\n }\n });\n };\n\n addonsStore\n .getServerChannel()\n .on(STORY_INDEX_INVALIDATED, getWarningButtonStatus);\n\n return () => {\n addonsStore\n .getServerChannel()\n .off(STORY_INDEX_INVALIDATED, getWarningButtonStatus);\n };\n }\n }, [active]);\n\n return status;\n};\n","import { useEffect, useState } from \"react\";\n\n// get an element and return its boundary. It accepts a classname as argument\nexport const useGetBackdropBoundary = (className: string, active: boolean) => {\n const [boundary, setBoundary] = useState<{\n top: number;\n left: number;\n height: number;\n width: number;\n } | null>(null);\n\n const element = document.querySelector(`.${className}`) as HTMLElement;\n\n // setBoundary if element changes sized. use resize observer\n useEffect(() => {\n if (active) {\n const resizeObserver = new ResizeObserver(() => {\n if (element) {\n setBoundary({\n top: element.offsetTop,\n left: element.offsetLeft,\n height: element.offsetHeight,\n width: element.offsetWidth,\n });\n }\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, [className, active]);\n\n return boundary;\n};\n","export default [\n [\n {\n code: `// Button.stories.jsx`,\n },\n ],\n [\n {\n code: `import { Button } from './Button';`,\n },\n ],\n [\n {\n code: `const meta = {\n title: 'Example/Button',\n component: Button,\n // ...\n };\n \n export default meta;`,\n },\n ],\n [\n { code: `export const Primary = {` },\n {\n code: `args: {\n primary: true,\n label: 'Click',\n background: 'red'\n }`,\n toggle: true,\n },\n { code: `};` },\n ],\n [\n {\n code: `// Copy the code below\nexport const Warning = {\n args: {\n primary: true,\n backgroundColor: 'red',\n label: 'Delete now'\n }\n};`,\n },\n ],\n];\n","export default [\n [\n {\n code: `// Button.stories.tsx`,\n },\n ],\n [\n {\n code: `import type { Meta, StoryObj } from '@storybook/react';\n \n import { Button } from './Button';`,\n },\n ],\n [\n {\n code: `const meta: Meta<typeof Button> = {\n title: 'Example/Button',\n component: Button,\n // ...\n };\n \n export default meta;`,\n },\n ],\n [\n { code: `export const Primary: Story = {` },\n {\n code: `args: {\n primary: true,\n label: 'Click',\n background: 'red'\n }`,\n toggle: true,\n },\n { code: `};` },\n ],\n [\n {\n code: `// Copy the code below\nexport const Warning: Story = {\n args: {\n primary: true,\n backgroundColor: 'red',\n label: 'Delete now'\n }\n};`,\n },\n ],\n];\n","export default [\n [\n {\n code: `// Button.stories.tsx`,\n },\n ],\n [\n {\n code: `import type { Meta, StoryObj } from '@storybook/nextjs';\n \n import { Button } from './Button';`,\n },\n ],\n [\n {\n code: `const meta: Meta<typeof Button> = {\n title: 'Example/Button',\n component: Button,\n // ...\n };\n \n export default meta;`,\n },\n ],\n [\n { code: `export const Primary: Story = {` },\n {\n code: `args: {\n primary: true,\n label: 'Click',\n background: 'red'\n }`,\n toggle: true,\n },\n { code: `};` },\n ],\n [\n {\n code: `// Copy the code below\nexport const Warning: Story = {\n args: {\n primary: true,\n backgroundColor: 'red',\n label: 'Delete now'\n }\n};`,\n },\n ],\n];\n","// fetch project.json and read `framework.name` from it and return it\n\nimport { useEffect, useState } from \"react\";\nimport { Response } from \"../../../types/response\";\n\ntype Project = {\n language: \"javascript\" | \"typescript\";\n framework: {\n name: string;\n };\n};\n\nexport function useGetProject() {\n const [project, setProject] = useState<Response<Project>>(null);\n\n useEffect(() => {\n const getProject = async () => {\n try {\n const response = await fetch(\"/project.json\");\n const json = await response.json();\n\n setProject({\n data: json,\n error: null,\n });\n } catch (e) {\n setProject({\n data: null,\n error: e,\n });\n }\n };\n getProject();\n }, []);\n\n return project;\n}\n","import React, { FC, useState } from \"react\";\nimport { Button } from \"../../components/Button/Button\";\nimport { Modal } from \"../../components/Modal/Modal\";\nimport { Icons } from \"@storybook/components\";\nimport useMeasure from \"react-use-measure\";\nimport {\n Background,\n Circle1,\n Circle2,\n Circle3,\n Content,\n Header,\n Image,\n Main,\n ModalContent,\n ModalTitle,\n SpanHighlight,\n} from \"./WriteStoriesModal.styled\";\nimport { SyntaxHighlighter } from \"../../components/SyntaxHighlighter/SyntaxHighlighter\";\nimport { List } from \"../../components/List/List\";\nimport { ListItem } from \"../../components/List/ListItem/ListItem\";\nimport { useGetButtonPath } from \"./hooks/useGetButtonPath\";\nimport { useGetWarningButtonStatus } from \"./hooks/useGetWarningButtonStatus\";\nimport { useGetBackdropBoundary } from \"./hooks/useGetBackdropBoundary\";\nimport titleSidebarImg from \"./assets/01-title-sidebar.png\";\nimport storyNameSidebarImg from \"./assets/02-story-name-sidebar.png\";\nimport argsImg from \"./assets/03-args.png\";\nimport dataJavascript from \"./code/javascript\";\nimport dataTypescript from \"./code/typescript\";\nimport dataTypescriptNextjs from \"./code/nextjs-typescript\";\nimport { useGetProject } from \"./hooks/useGetFrameworkName\";\nimport { API, AddonStore } from \"@storybook/manager-api\";\n\n// TODO: Add warning if backdropBoundary && !warningButtonStatus?.data is not true.\n// backdropBoundary && !warningButtonStatus?.data\n\ninterface WriteStoriesModalProps {\n onFinish: () => void;\n api: API;\n addonsStore: AddonStore;\n skipOnboarding: () => void;\n isOpen: boolean;\n}\n\nexport const WriteStoriesModal: FC<WriteStoriesModalProps> = ({\n onFinish,\n api,\n addonsStore,\n skipOnboarding,\n isOpen,\n}) => {\n const [step, setStep] = useState<\n \"imports\" | \"meta\" | \"story\" | \"args\" | \"customStory\"\n >(\"imports\");\n\n const stepIndex = {\n imports: 1,\n meta: 2,\n story: 3,\n args: 4,\n customStory: 5,\n };\n\n const [isWarningStoryCopied, setWarningStoryCopied] = useState(false);\n\n const [clipboardButtonRef, clipboardButtonBounds] = useMeasure();\n\n const buttonPath = useGetButtonPath();\n const warningButtonStatus = useGetWarningButtonStatus(\n step === \"customStory\",\n api,\n addonsStore\n );\n const backdropBoundary = useGetBackdropBoundary(\n \"syntax-highlighter-backdrop\",\n step === \"customStory\"\n );\n\n const project = useGetProject();\n const isJavascript = project?.data?.language === \"javascript\";\n\n const data = isJavascript\n ? dataJavascript\n : project?.data?.framework.name === \"@storybook/nextjs\"\n ? dataTypescriptNextjs\n : dataTypescript;\n\n const copyWarningStory = () => {\n const warningContent = data[4][0].code;\n navigator.clipboard.writeText(\n warningContent.replace(\"// Copy the code below\", \"\")\n );\n setWarningStoryCopied(true);\n };\n\n return (\n <Modal width={740} height={430} isOpen={isOpen} setOpen={skipOnboarding}>\n {({ Title, Description, Close }) => (\n <ModalContent>\n {data ? (\n <SyntaxHighlighter\n activeStep={stepIndex[step] || 1}\n data={data}\n width={480}\n />\n ) : null}\n {backdropBoundary && !warningButtonStatus?.data && (\n <Button\n ref={clipboardButtonRef}\n onClick={() => {\n copyWarningStory();\n }}\n style={{\n position: \"absolute\",\n top: backdropBoundary.top + backdropBoundary.height - 45,\n left:\n backdropBoundary.left +\n backdropBoundary.width -\n (clipboardButtonBounds.width ?? 0) -\n 10,\n zIndex: 1000,\n }}\n >\n {isWarningStoryCopied ? \"Copied to clipboard\" : \"Copy code\"}\n </Button>\n )}\n <Main>\n <Header>\n <Title asChild>\n <ModalTitle>\n <Icons icon=\"bookmarkhollow\" width={13} />\n <span>How to write a story</span>\n </ModalTitle>\n </Title>\n <Close asChild>\n <Icons style={{ cursor: \"pointer\" }} icon=\"cross\" width={13} />\n </Close>\n </Header>\n <Description asChild>\n <Content>\n {step === \"imports\" && (\n <>\n <div>\n <h3>Imports</h3>\n <p>\n First, import Meta and StoryObj for type safety and\n autocompletion in TypeScript stories.\n </p>\n <p>\n Next, import a component. In this case, the Button\n component.\n </p>\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"meta\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"meta\" && (\n <>\n <div>\n <h3>Meta</h3>\n <p>\n The default export, Meta, contains metadata about this\n component's stories. The title field controls where\n stories appear in the sidebar.\n </p>\n <Image\n width=\"204\"\n alt=\"Title property pointing to Storybook's sidebar\"\n src={titleSidebarImg}\n />\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"story\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"story\" && (\n <>\n <div>\n <h3>Story</h3>\n <p>\n Each named export is a story. Its contents specify how\n the story is rendered in addition to other configuration\n options.\n </p>\n <Image\n width=\"190\"\n alt=\"Story export pointing to the sidebar entry of the story\"\n src={storyNameSidebarImg}\n />\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"args\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"args\" && (\n <>\n <div>\n <h3>Args</h3>\n <p>\n Args are inputs that are passed to the component, which\n Storybook uses to render the component in different\n states. In React, args = props. They also specify the\n initial control settings for the story.\n </p>\n <Image\n alt=\"Args mapped to their controls in Storybook\"\n width=\"253\"\n src={argsImg}\n />\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"customStory\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"customStory\" &&\n (!warningButtonStatus?.error ? (\n <>\n <div>\n <h3>Create your first story</h3>\n <p>\n Now it's your turn. See how easy it is to create your\n first story by following these steps below.\n </p>\n <List>\n <ListItem\n isCompleted={\n isWarningStoryCopied || warningButtonStatus?.data\n }\n index={1}\n >\n Copy the Warning story\n </ListItem>\n <ListItem\n isCompleted={warningButtonStatus?.data}\n index={2}\n >\n Open{\" \"}\n {buttonPath?.data ? (\n <SpanHighlight>{buttonPath.data}</SpanHighlight>\n ) : (\n <>the Button Story</>\n )}{\" \"}\n in your current working directory\n </ListItem>\n <ListItem\n isCompleted={warningButtonStatus?.data}\n index={3}\n >\n Paste it at the bottom of the file\n </ListItem>\n </List>\n </div>\n {warningButtonStatus?.data ? (\n <Button\n onClick={() => {\n onFinish();\n }}\n >\n Go to story\n </Button>\n ) : null}\n </>\n ) : null)}\n </Content>\n </Description>\n <Background>\n <Circle1 />\n <Circle2 />\n <Circle3 />\n </Background>\n </Main>\n </ModalContent>\n )}\n </Modal>\n );\n};\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { ThemeProvider, ensure, themes } from \"@storybook/theming\";\nimport { STORY_CHANGED, CURRENT_STORY_WAS_SET } from \"@storybook/core-events\";\nimport { addons, type API } from \"@storybook/manager-api\";\n\nimport { GuidedTour } from \"./features/GuidedTour/GuidedTour\";\nimport { WelcomeModal } from \"./features/WelcomeModal/WelcomeModal\";\nimport { WriteStoriesModal } from \"./features/WriteStoriesModal/WriteStoriesModal\";\nimport { Confetti } from \"./components/Confetti/Confetti\";\n\ntype Step =\n | \"1:Welcome\"\n | \"2:StorybookTour\"\n | \"3:WriteYourStory\"\n | \"4:VisitNewStory\"\n | \"5:ConfigureYourProject\";\n\nconst theme = ensure(themes.light);\n\nexport default function App({ api }: { api: API }) {\n const [enabled, setEnabled] = useState(true);\n const [showConfetti, setShowConfetti] = useState(false);\n const [step, setStep] = useState<Step>(\"1:Welcome\");\n\n const skipOnboarding = useCallback(() => {\n // remove onboarding query parameter from current url\n const url = new URL(window.location.href);\n url.searchParams.delete(\"onboarding\");\n const path = decodeURIComponent(url.searchParams.get(\"path\"));\n url.search = `?path=${path}`;\n history.replaceState({}, \"\", url.href);\n setEnabled(false);\n }, [setEnabled]);\n\n useEffect(() => {\n let stepTimeout: number;\n if (step === \"4:VisitNewStory\") {\n setShowConfetti(true);\n stepTimeout = window.setTimeout(() => {\n setStep(\"5:ConfigureYourProject\");\n }, 2000);\n }\n\n return () => {\n clearTimeout(stepTimeout);\n };\n }, [step]);\n\n useEffect(() => {\n api.once(CURRENT_STORY_WAS_SET, ({ storyId }) => {\n api.setQueryParams({ onboarding: \"true\" });\n // make sure the initial state is set correctly:\n // 1. Selected story is primary button\n // 2. The addon panel is opened, in the bottom and the controls tab is selected\n if (storyId !== \"example-button--primary\") {\n api.selectStory(\"example-button--primary\", undefined, {\n ref: undefined,\n });\n }\n api.togglePanel(true);\n api.togglePanelPosition(\"bottom\");\n api.setSelectedPanel(\"addon-controls\");\n });\n }, []);\n\n useEffect(() => {\n const onStoryChanged = (storyId: string) => {\n if (storyId === \"configure-your-project--docs\") {\n skipOnboarding();\n }\n };\n\n api.on(STORY_CHANGED, onStoryChanged);\n\n return () => {\n api.off(STORY_CHANGED, onStoryChanged);\n };\n }, []);\n\n return (\n <ThemeProvider theme={theme}>\n {showConfetti && (\n <Confetti\n numberOfPieces={1000}\n initialVelocityY={3}\n recycle={false}\n onConfettiComplete={(confetti) => {\n confetti.reset();\n setShowConfetti(false);\n }}\n />\n )}\n <WelcomeModal\n onProceed={() => setStep(\"2:StorybookTour\")}\n isOpen={enabled && step === \"1:Welcome\"}\n skipOnboarding={skipOnboarding}\n />\n {(step === \"2:StorybookTour\" || step === \"5:ConfigureYourProject\") && (\n <GuidedTour\n api={api}\n isFinalStep={step === \"5:ConfigureYourProject\"}\n onFirstTourDone={() => {\n setStep(\"3:WriteYourStory\");\n }}\n />\n )}\n <WriteStoriesModal\n api={api}\n addonsStore={addons}\n onFinish={() => {\n api.selectStory(\"example-button--warning\");\n setStep(\"4:VisitNewStory\");\n }}\n isOpen={enabled && step === \"3:WriteYourStory\"}\n skipOnboarding={skipOnboarding}\n />\n </ThemeProvider>\n );\n}\n","import ReactDOM from \"react-dom\";\nimport React, { lazy, Suspense } from \"react\";\nimport { addons } from \"@storybook/manager-api\";\n\nconst App = lazy(() => import(\"./App\"));\n\n// The addon is enabled only when:\n// 1. The onboarding query parameter is present\n// 2. The example button stories are present\naddons.register(\"@storybook/addon-onboarding\", async (api) => {\n const urlState = api.getUrlState();\n const isOnboarding = urlState.path === '/onboarding' || urlState.queryParams.onboarding === 'true';\n\n if (!isOnboarding) {\n return;\n }\n\n let hasButtonStories = false;\n try {\n const response = await fetch(\"./index.json\");\n const index = await response.json();\n hasButtonStories = !!index.entries[\"example-button--primary\"];\n } catch (e) {}\n\n if (hasButtonStories) {\n // Add a new DOM element to document.body, where we will bootstrap our React app\n const domNode = document.createElement(\"div\");\n\n domNode.id = \"addon-onboarding\";\n // Append the new DOM element to document.body\n document.body.appendChild(domNode);\n\n // Render the React app\n ReactDOM.render(\n <Suspense fallback={<div>Loading...</div>}>\n <App api={api} />\n </Suspense>,\n domNode\n );\n }\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/PulsatingEffect/PulsatingEffect.tsx","../src/components/Confetti/Confetti.tsx","../src/components/Button/Button.tsx","../src/features/GuidedTour/Tooltip.tsx","../src/features/GuidedTour/GuidedTour.tsx","../src/components/Modal/Modal.styled.tsx","../src/components/Modal/Modal.tsx","../src/features/WelcomeModal/StorybookLogo.tsx","../src/features/WelcomeModal/WelcomeModal.styled.tsx","../src/features/WelcomeModal/WelcomeModal.tsx","../src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx","../src/components/SyntaxHighlighter/SyntaxHighlighter.styled.tsx","../src/components/SyntaxHighlighter/Snippet/Snippet.styled.tsx","../src/components/SyntaxHighlighter/Snippet/Snippet.tsx","../src/components/SyntaxHighlighter/SyntaxHighlighter.tsx","../src/components/List/List.styled.tsx","../src/components/List/List.tsx","../src/components/List/ListItem/ListItem.styled.tsx","../src/components/List/ListItem/ListItem.tsx","../src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx","../src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx","../src/features/WriteStoriesModal/hooks/useGetBackdropBoundary.tsx","../src/features/WriteStoriesModal/code/javascript.tsx","../src/features/WriteStoriesModal/code/typescript.tsx","../src/features/WriteStoriesModal/code/nextjs-typescript.tsx","../src/features/WriteStoriesModal/hooks/useGetFrameworkName.tsx","../src/features/WriteStoriesModal/WriteStoriesModal.tsx","../src/App.tsx","../src/manager.tsx"],"names":["useEffect","PulsatingEffect","targetSelector","element","keyframes","style","styleElement","init_PulsatingEffect","__esmMin","ReactConfetti","React","styled","createPortal","useState","Confetti","top","left","width","height","confettiProps","confettiContainer","container","Wrapper","init_Confetti","Button","init_Button","theme","TooltipBody","TooltipTitle","TooltipContent","TooltipFooter","Tooltip","init_Tooltip","step","primaryProps","tooltipProps","Joyride","STATUS","STORY_ARGS_UPDATED","GuidedTour","api","isFinalStep","onFirstTourDone","stepIndex","setStepIndex","data","init_GuidedTour","css","Dialog","motion","StyledOverlay","StyledContent","ContentWrapper","init_Modal_styled","init_Modal","children","contentProps","ref","initial","animate","exit","AnimatePresence","Modal","isOpen","setOpen","onEscapeKeyDown","onInteractOutside","ev","StorybookLogo","init_StorybookLogo","Icons","ModalContentWrapper","TopContent","Title","Description","SkipButton","StyledIcon","Background","circle1Anim","Circle1","circle2Anim","Circle2","circle3Anim","Circle3","StyledTitle","StyledDescription","init_WelcomeModal_styled","WelcomeModal","init_WelcomeModal","skipOnboarding","onProceed","Close","ModalContent","Main","Header","ModalTitle","Content","SpanHighlight","Image","init_WriteStoriesModal_styled","Code","Container","Backdrop","init_SyntaxHighlighter_styled","SnippetWrapper","init_Snippet_styled","Fragment","forwardRef","StorybookSyntaxHighlighter","ThemeProvider","ensure","themes","wrapperVariants","Snippet","init_Snippet","active","content","open","customStyle","toggle","code","i","createRef","useCallback","useLayoutEffect","useMemo","OFFSET","SyntaxHighlighter","init_SyntaxHighlighter","activeStep","steps","setSteps","refs","getYPos","idx","yPos","setNewSteps","newSteps","backdropHeight","finalSteps","resizeObserver","ListWrapper","init_List_styled","List","init_List","ListItemWrapper","ListItemContentWrapper","ListItemIndexWrapper","init_ListItem_styled","isCompleted","ListItem","init_ListItem","index","useGetButtonPath","buttonPath","setButtonPath","e","init_useGetButtonPath","STORY_INDEX_INVALIDATED","STORY_RENDERED","useGetWarningButtonStatus","init_useGetWarningButtonStatus","addonsStore","status","setStatus","getWarningButtonStatus","useGetBackdropBoundary","init_useGetBackdropBoundary","className","boundary","setBoundary","javascript_default","init_javascript","typescript_default","init_typescript","nextjs_typescript_default","init_nextjs_typescript","useGetProject","project","setProject","json","init_useGetFrameworkName","useMeasure","WriteStoriesModal","init_WriteStoriesModal","init_title_sidebar","init_story_name_sidebar","init_args","onFinish","setStep","isWarningStoryCopied","setWarningStoryCopied","clipboardButtonRef","clipboardButtonBounds","warningButtonStatus","backdropBoundary","copyWarningStory","warningContent","title_sidebar_default","story_name_sidebar_default","args_default","App_exports","__export","App","STORY_CHANGED","CURRENT_STORY_WAS_SET","addons","enabled","setEnabled","showConfetti","setShowConfetti","url","path","stepTimeout","storyId","onStoryChanged","confetti","init_App","ReactDOM","lazy","Suspense","urlState","hasButtonStories","domNode"],"mappings":"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","sourcesContent":["import { useEffect } from \"react\";\n\nexport function PulsatingEffect({\n targetSelector,\n}: {\n targetSelector: string;\n}): JSX.Element {\n useEffect(() => {\n const element = document.querySelector<HTMLElement>(targetSelector);\n\n if (element) {\n element.style.animation = \"pulsate 3s infinite\";\n element.style.transformOrigin = \"center\";\n element.style.animationTimingFunction = \"ease-in-out\";\n\n const keyframes = `\n @keyframes pulsate {\n 0% {\n box-shadow: 0 0 0 0 rgba(2, 156, 253, 0.7), 0 0 0 0 rgba(2, 156, 253, 0.4);\n }\n 50% {\n box-shadow: 0 0 0 20px rgba(2, 156, 253, 0), 0 0 0 40px rgba(2, 156, 253, 0);\n }\n 100% {\n box-shadow: 0 0 0 0 rgba(2, 156, 253, 0), 0 0 0 0 rgba(2, 156, 253, 0);\n }\n }\n `;\n const style = document.createElement(\"style\");\n style.id = \"sb-onboarding-pulsating-effect\";\n style.innerHTML = keyframes;\n document.head.appendChild(style);\n }\n\n return () => {\n const styleElement = document.querySelector(\n \"#sb-onboarding-pulsating-effect\"\n );\n\n if (styleElement) {\n styleElement.remove();\n }\n\n if (element) {\n element.style.animation = \"auto\";\n }\n };\n }, [targetSelector]);\n\n return null;\n}\n","import ReactConfetti from \"react-confetti\";\nimport React, { useEffect } from \"react\";\nimport { styled } from \"@storybook/theming\";\nimport { createPortal } from \"react-dom\";\nimport { useState } from \"react\";\n\ninterface ConfettiProps\n extends Omit<React.ComponentProps<typeof ReactConfetti>, \"drawShape\"> {\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n}\n\nconst Wrapper = styled.div<{\n width: number;\n height: number;\n top: number;\n left: number;\n}>(({ width, height, left, top }) => ({\n width: `${width}px`,\n height: `${height}px`,\n left: `${left}px`,\n top: `${top}px`,\n position: \"relative\",\n overflow: \"hidden\",\n}));\n\nexport function Confetti({\n top = 0,\n left = 0,\n width = window.innerWidth,\n height = window.innerHeight,\n ...confettiProps\n}: ConfettiProps): React.ReactPortal {\n const [confettiContainer] = useState(() => {\n const container = document.createElement(\"div\");\n container.setAttribute(\"id\", \"confetti-container\");\n container.setAttribute(\n \"style\",\n \"position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999;\"\n );\n\n return container;\n });\n\n useEffect(() => {\n document.body.appendChild(confettiContainer);\n\n return () => {\n document.body.removeChild(confettiContainer);\n };\n }, []);\n\n return createPortal(\n <Wrapper top={top} left={left} width={width} height={height}>\n <ReactConfetti {...confettiProps} />\n </Wrapper>,\n confettiContainer\n );\n}\n","import { styled } from \"@storybook/theming\";\nimport React, { FC, forwardRef } from \"react\";\n\nexport interface ButtonProps {\n children: string;\n onClick?: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n}\n\nexport const Button = styled.button`\n all: unset;\n border: 0;\n border-radius: 0.25rem;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.75rem;\n background: ${({ theme }) => theme.color.secondary};\n color: ${({ theme }) => theme.color.lightest};\n height: 32px;\n font-size: 0.8125rem;\n font-weight: 700;\n font-family: ${({ theme }) => theme.typography.fonts.base};\n transition: all 0.16s ease-in-out;\n text-decoration: none;\n\n &:hover {\n background-color: #0b94eb;\n }\n\n &:focus {\n box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.1);\n }\n`;\n","import React from \"react\";\nimport { styled } from \"@storybook/theming\";\nimport { TooltipRenderProps } from \"react-joyride\";\nimport { Button } from \"../../components/Button/Button\";\n\nconst TooltipBody = styled.div`\n background: #fff;\n width: 260px;\n padding: 15px;\n border-radius: 5px;\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n`;\n\nconst TooltipTitle = styled.div`\n font-size: 13px;\n font-weight: 700;\n color: ${({ theme }) => theme.color.darkest};\n`;\n\nconst TooltipContent = styled.p`\n font-size: 13px;\n text-align: start;\n color: ${({ theme }) => theme.color.mediumdark};\n margin: 0;\n margin-top: 5px;\n`;\n\nconst TooltipFooter = styled.div`\n display: flex;\n justify-content: flex-end;\n margin-top: 15px;\n`;\n\ntype TooltipProps = TooltipRenderProps & {\n step: TooltipRenderProps[\"step\"] & { hideNextButton?: boolean };\n};\n\nexport const Tooltip = ({ step, primaryProps, tooltipProps }: TooltipProps) => {\n return (\n <TooltipBody {...tooltipProps}>\n <Wrapper>\n {step.title && <TooltipTitle>{step.title}</TooltipTitle>}\n <TooltipContent>{step.content}</TooltipContent>\n </Wrapper>\n {!step.hideNextButton && (\n <TooltipFooter id=\"buttonNext\">\n <Button {...primaryProps}>Next</Button>\n </TooltipFooter>\n )}\n </TooltipBody>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport Joyride, { CallBackProps, STATUS, Step } from \"react-joyride\";\n\nimport { PulsatingEffect } from \"../../components/PulsatingEffect/PulsatingEffect\";\nimport { Confetti } from \"../../components/Confetti/Confetti\";\nimport { API } from \"@storybook/manager-api\";\nimport { STORY_ARGS_UPDATED } from \"@storybook/core-events\";\nimport { Tooltip } from \"./Tooltip\";\n\ntype GuidedTourStep = Step & { hideNextButton?: boolean };\n\nexport function GuidedTour({\n api,\n isFinalStep,\n onFirstTourDone,\n}: {\n api: API;\n isFinalStep?: boolean;\n onFirstTourDone: () => void;\n}) {\n const [stepIndex, setStepIndex] = useState<number>();\n\n useEffect(() => {\n api.once(STORY_ARGS_UPDATED, () => {\n setStepIndex(3);\n });\n }, []);\n\n const steps: GuidedTourStep[] = isFinalStep\n ? [\n {\n target: \"#configure-your-project--docs\",\n title: \"Continue setting up your project\",\n content:\n \"You nailed the basics. Now get started writing stories for your own components.\",\n placement: \"right\",\n disableOverlay: true,\n disableBeacon: true,\n floaterProps: {\n disableAnimation: true,\n },\n hideNextButton: true,\n },\n ]\n : [\n {\n target: \"#storybook-explorer-tree > div\",\n title: \"Storybook is built from stories\",\n content:\n \"Storybook uses stories to represent the key states supported by each of your components. For example: this Button component has four stories.\",\n placement: \"right\",\n disableBeacon: true,\n styles: {\n spotlight: {\n transform: \"translateY(30px)\",\n },\n },\n floaterProps: {\n disableAnimation: true,\n },\n },\n {\n target: \"#storybook-preview-iframe\",\n title: \"Storybook previews are interactive\",\n content:\n \"Whenever you modify code or stories, Storybook automatically updates how it previews your components.\",\n placement: \"bottom\",\n },\n {\n target: \"#root div[role=main]\",\n title: \"Interactive story playground\",\n content: (\n <>\n See how a story renders with different data and state without\n touching code.\n <br />\n <br />\n Try it out by pressing this button.\n <PulsatingEffect targetSelector=\"#control-primary\" />\n </>\n ),\n placement: \"right\",\n spotlightClicks: true,\n floaterProps: {\n target: \"#control-primary\",\n },\n hideNextButton: true,\n },\n {\n target: \"#control-primary\",\n title: \"Congratulations!\",\n content: (\n <>\n You've learned how to control your stories interactively. Now:\n let's explore how to write your first story.\n <Confetti numberOfPieces={100} />\n </>\n ),\n placement: \"right\",\n disableOverlay: true,\n },\n ];\n\n return (\n <Joyride\n steps={steps}\n continuous\n stepIndex={stepIndex}\n spotlightPadding={0}\n hideBackButton\n disableCloseOnEsc\n disableOverlayClose\n disableScrolling\n hideCloseButton\n callback={(data: CallBackProps) => {\n if (!isFinalStep && data.status === STATUS.FINISHED) {\n onFirstTourDone();\n }\n }}\n floaterProps={{\n styles: {\n floater: {\n padding: 0,\n paddingLeft: 8,\n paddingTop: 8,\n filter:\n \"drop-shadow(0px 5px 5px rgba(0,0,0,0.05)) drop-shadow(0 1px 3px rgba(0,0,0,0.1))\",\n },\n },\n }}\n tooltipComponent={Tooltip}\n styles={{\n spotlight: {\n border: \"solid 2px #004c7c\",\n },\n overlay: {\n backgroundColor: \"rgba(0, 0, 0, 0.48)\",\n },\n options: {\n zIndex: 10000,\n primaryColor: \"#029CFD\",\n },\n }}\n />\n );\n}\n","import { css, styled } from \"@storybook/theming\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport React from \"react\";\nimport { motion } from \"framer-motion\";\nimport { animate, exit, initial } from \"./Modal\";\n\nexport const StyledOverlay = styled(motion.div)`\n background-color: rgba(27, 28, 29, 0.48);\n position: fixed;\n inset: 0px;\n width: 100%;\n height: 100%;\n`;\n\nexport const StyledContent = styled(motion.div)<{\n width: number;\n height: number;\n}>(\n ({ width, height }) => css`\n background-color: white;\n border-radius: 6px;\n box-shadow: rgba(14, 18, 22, 0.35) 0px 10px 38px -10px;\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: ${width ?? 740}px;\n height: ${height ? `${height}px` : \"auto\"};\n max-width: calc(100% - 40px);\n max-height: 85vh;\n overflow: hidden;\n `\n);\n\nexport const ContentWrapper = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof StyledContent> &\n React.ComponentProps<typeof Dialog.Content>\n>(({ width, height, children, ...contentProps }, ref) => (\n <Dialog.Content ref={ref} asChild {...contentProps}>\n <StyledContent\n width={width}\n height={height}\n initial={initial}\n animate={animate}\n exit={exit}\n >\n {children}\n </StyledContent>\n </Dialog.Content>\n));\n","import React from \"react\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport { ContentWrapper, StyledOverlay } from \"./Modal.styled\";\nimport { AnimatePresence } from \"framer-motion\";\n\ntype ContentProps = React.ComponentProps<typeof ContentWrapper>;\n\ninterface ModalProps {\n width?: number;\n height?: number;\n isOpen?: boolean;\n setOpen?: (open: boolean) => void;\n children: (props: {\n Title: typeof Dialog.Title;\n Description: typeof Dialog.Description;\n Close: typeof Dialog.Close;\n }) => React.ReactNode;\n onEscapeKeyDown?: ContentProps[\"onEscapeKeyDown\"];\n onInteractOutside?: ContentProps[\"onInteractOutside\"];\n}\n\nexport const initial = { opacity: 0 };\nexport const animate = { opacity: 1, transition: { duration: 0.3 } };\nexport const exit = { opacity: 0, transition: { duration: 0.3 } };\n\nexport function Modal({\n children,\n width,\n height,\n isOpen,\n setOpen,\n onEscapeKeyDown,\n onInteractOutside = (ev) => ev.preventDefault(),\n}: ModalProps) {\n return (\n <Dialog.Root open={isOpen} onOpenChange={setOpen}>\n <AnimatePresence>\n {isOpen && (\n <Dialog.Portal forceMount>\n <Dialog.Overlay asChild>\n <StyledOverlay initial={initial} animate={animate} exit={exit} />\n </Dialog.Overlay>\n <ContentWrapper\n width={width}\n height={height}\n onInteractOutside={onInteractOutside}\n onEscapeKeyDown={onEscapeKeyDown}\n >\n {children({\n Title: Dialog.Title,\n Description: Dialog.Description,\n Close: Dialog.Close,\n })}\n </ContentWrapper>\n </Dialog.Portal>\n )}\n </AnimatePresence>\n </Dialog.Root>\n );\n}\n","import React from \"react\";\n\nexport function StorybookLogo() {\n return (\n <svg\n width=\"32px\"\n height=\"40px\"\n viewBox=\"0 0 256 319\"\n preserveAspectRatio=\"xMidYMid\"\n >\n <defs>\n <path\n d=\"M9.87245893,293.324145 L0.0114611411,30.5732167 C-0.314208957,21.8955842 6.33948896,14.5413918 15.0063196,13.9997149 L238.494389,0.0317105427 C247.316188,-0.519651867 254.914637,6.18486163 255.466,15.0066607 C255.486773,15.339032 255.497167,15.6719708 255.497167,16.0049907 L255.497167,302.318596 C255.497167,311.157608 248.331732,318.323043 239.492719,318.323043 C239.253266,318.323043 239.013844,318.317669 238.774632,318.306926 L25.1475605,308.712253 C16.8276309,308.338578 10.1847994,301.646603 9.87245893,293.324145 L9.87245893,293.324145 Z\"\n id=\"path-1\"\n ></path>\n </defs>\n <g>\n <mask id=\"mask-2\" fill=\"white\">\n <use xlinkHref=\"#path-1\"></use>\n </mask>\n <use fill=\"#FF4785\" fillRule=\"nonzero\" xlinkHref=\"#path-1\"></use>\n <path\n d=\"M188.665358,39.126973 L190.191903,2.41148534 L220.883535,0 L222.205755,37.8634126 C222.251771,39.1811466 221.22084,40.2866846 219.903106,40.3327009 C219.338869,40.3524045 218.785907,40.1715096 218.342409,39.8221376 L206.506729,30.4984116 L192.493574,41.1282444 C191.443077,41.9251106 189.945493,41.7195021 189.148627,40.6690048 C188.813185,40.2267976 188.6423,39.6815326 188.665358,39.126973 Z M149.413703,119.980309 C149.413703,126.206975 191.355678,123.222696 196.986019,118.848893 C196.986019,76.4467826 174.234041,54.1651411 132.57133,54.1651411 C90.9086182,54.1651411 67.5656805,76.7934542 67.5656805,110.735941 C67.5656805,169.85244 147.345341,170.983856 147.345341,203.229219 C147.345341,212.280549 142.913138,217.654777 133.162291,217.654777 C120.456641,217.654777 115.433477,211.165914 116.024438,189.103298 C116.024438,184.317101 67.5656805,182.824962 66.0882793,189.103298 C62.3262146,242.56887 95.6363019,257.990394 133.753251,257.990394 C170.688279,257.990394 199.645341,238.303123 199.645341,202.663511 C199.645341,139.304202 118.683759,141.001326 118.683759,109.604526 C118.683759,96.8760922 128.139127,95.178968 133.753251,95.178968 C139.662855,95.178968 150.300143,96.2205679 149.413703,119.980309 Z\"\n fill=\"#FFFFFF\"\n fillRule=\"nonzero\"\n mask=\"url(#mask-2)\"\n ></path>\n </g>\n </svg>\n );\n}\n","import { Icons } from \"@storybook/components\";\nimport { keyframes, styled } from \"@storybook/theming\";\n\nexport const ModalContentWrapper = styled.div`\n border-radius: 5px;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: space-between;\n`;\n\nexport const TopContent = styled.div`\n display: flex;\n flex: 1;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nexport const Title = styled.h1`\n margin: 0;\n margin-top: 20px;\n margin-bottom: 5px;\n color: ${({ theme }) => theme.color.darkest};\n font-weight: ${({ theme }) => theme.typography.weight.bold};\n font-size: ${({ theme }) => theme.typography.size.m1}px;\n line-height: ${({ theme }) => theme.typography.size.m3}px;\n`;\n\nexport const Description = styled.p`\n margin: 0;\n margin-bottom: 20px;\n max-width: 320px;\n text-align: center;\n font-size: ${({ theme }) => theme.typography.size.s2}px;\n font-weight: ${({ theme }) => theme.typography.weight.regular};\n line-height: ${({ theme }) => theme.typography.size.m1}px;\n color: ${({ theme }) => theme.color.darker};\n`;\n\nexport const SkipButton = styled.button`\n all: unset;\n cursor: pointer;\n font-size: 13px;\n color: #798186;\n padding-bottom: 20px;\n\n &:focus-visible {\n outline: auto;\n }\n`;\n\nexport const StyledIcon = styled(Icons)`\n margin-left: 2px;\n height: 10px;\n`;\n\nexport const Background = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n overflow: hidden;\n`;\n\nexport const circle1Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(-200px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle1 = styled.div`\n position: absolute;\n width: 1200px;\n height: 1200px;\n left: -200px;\n top: -900px;\n background: radial-gradient(\n circle at center,\n rgba(253, 255, 147, 1) 0%,\n rgba(253, 255, 147, 0) 70%\n );\n animation: ${circle1Anim} 4s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 3;\n`;\n\nexport const circle2Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(400px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle2 = styled.div`\n position: absolute;\n width: 1200px;\n height: 1200px;\n left: -600px;\n top: -840px;\n background: radial-gradient(\n circle at center,\n rgba(255, 119, 119, 1) 0%,\n rgba(255, 119, 119, 0) 70%\n );\n animation: ${circle2Anim} 6s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 2;\n`;\n\nexport const circle3Anim = keyframes`\n 0% { transform: translate(600px, -40px) }\n 50% { transform: translate(600px, -200px) }\n 100% { transform: translate(600px, -40px) }\n`;\n\nexport const Circle3 = styled.div`\n position: absolute;\n width: 1200px;\n height: 1200px;\n left: -600px;\n top: -840px;\n background: radial-gradient(\n circle at center,\n rgba(119, 255, 247, 0.8) 0%,\n rgba(119, 255, 247, 0) 70%\n );\n animation: ${circle3Anim} 4s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 4;\n`;\n\nexport const StyledTitle = styled.h2`\n color: #000;\n font-weight: 700;\n font-size: 20px;\n line-height: 20px;\n`;\nexport const StyledDescription = styled.p`\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n color: #454e54;\n`;\n","import React, { FC } from \"react\";\n\nimport { Button } from \"../../components/Button/Button\";\nimport { Modal } from \"../../components/Modal/Modal\";\nimport { StorybookLogo } from \"./StorybookLogo\";\nimport {\n ModalContentWrapper,\n SkipButton,\n StyledIcon,\n Title,\n Description,\n Background,\n Circle1,\n Circle2,\n Circle3,\n TopContent,\n} from \"./WelcomeModal.styled\";\n\ninterface WelcomeModalProps {\n skipOnboarding: () => void;\n onProceed: () => void;\n isOpen: boolean;\n}\n\nexport const WelcomeModal: FC<WelcomeModalProps> = ({\n skipOnboarding,\n onProceed,\n isOpen,\n}) => {\n return (\n <Modal width={540} height={430} isOpen={isOpen} setOpen={skipOnboarding}>\n {({ Close }) => (\n <ModalContentWrapper data-chromatic=\"ignore\">\n <TopContent>\n <StorybookLogo />\n <Title>Welcome to Storybook</Title>\n <Description>\n Storybook helps you develop UI components. Learn the basics in a\n few simple steps.\n </Description>\n <Button style={{ marginTop: 4 }} onClick={onProceed}>\n Start your 3 minute tour\n </Button>\n </TopContent>\n <Close asChild>\n <SkipButton>\n Skip tour\n <StyledIcon icon=\"arrowright\" />\n </SkipButton>\n </Close>\n <Background>\n <Circle1 />\n <Circle2 />\n <Circle3 />\n </Background>\n </ModalContentWrapper>\n )}\n </Modal>\n );\n};\n","import { keyframes, styled } from \"@storybook/theming\";\n\nexport const ModalContent = styled.div`\n display: flex;\n flex-direction: row;\n height: 100%;\n max-height: 85vh;\n`;\n\nexport const Main = styled.div`\n position: relative;\n flex: 1;\n display: flex;\n flex-direction: column;\n font-family: ${({ theme }) => theme.typography.fonts.base};\n`;\n\nexport const Header = styled.div`\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 15px;\n border-bottom: 1px solid ${({ theme }) => theme.appBorderColor};\n height: 40px;\n`;\n\nexport const ModalTitle = styled.div`\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 13px;\n font-weight: bold;\n color: ${({ theme }) => theme.color.darkest};\n\n span {\n margin-top: 2px;\n }\n`;\n\nexport const Content = styled.div`\n font-size: 13px;\n padding: 15px;\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: space-between;\n color: ${({ theme }) => theme.color.darker};\n\n h3 {\n font-size: 13px;\n font-weight: bold;\n padding: 0;\n margin: 0;\n }\n`;\n\nexport const SpanHighlight = styled.span`\n color: ${({ theme }) => theme.color.secondary};\n display: inline-block;\n border-radius: 4px;\n padding: 0.2em 0.4em;\n opacity: 0.8;\n background-color: ${({ theme }) => theme.color.secondary}20;\n font-weight: bold;\n`;\n\nexport const Image = styled.img`\n max-width: 100%;\n margin-top: 1em;\n`;\n\nexport const Background = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n overflow: hidden;\n`;\n\nexport const circle1Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(120px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle1 = styled.div`\n position: absolute;\n width: 350px;\n height: 350px;\n left: -160px;\n top: -260px;\n background: radial-gradient(\n circle at center,\n rgba(255, 119, 119, 1) 0%,\n rgba(255, 119, 119, 0) 70%\n );\n animation: ${circle1Anim} 8s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 2;\n`;\n\nexport const circle2Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 33% { transform: translate(-64px, 0px) }\n 66% { transform: translate(120px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle2 = styled.div`\n position: absolute;\n width: 350px;\n height: 350px;\n left: -54px;\n top: -250px;\n background: radial-gradient(\n circle at center,\n rgba(253, 255, 147, 1) 0%,\n rgba(253, 255, 147, 0) 70%\n );\n animation: ${circle2Anim} 12s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 3;\n`;\n\nexport const circle3Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(-120px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle3 = styled.div`\n position: absolute;\n width: 350px;\n height: 350px;\n left: 150px;\n top: -220px;\n background: radial-gradient(\n circle at center,\n rgba(119, 255, 247, 0.8) 0%,\n rgba(119, 255, 247, 0) 70%\n );\n animation: ${circle3Anim} 4s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 4;\n`;\n","import { styled } from \"@storybook/theming\";\nimport { motion } from \"framer-motion\";\n\nexport const Code = styled(motion.div)`\n position: relative;\n z-index: 2;\n`;\n\nexport const Container = styled.div<{ width: number }>`\n position: relative;\n box-sizing: border-box;\n background: #171c23;\n width: ${({ width }) => width}px;\n height: 100%;\n overflow: hidden;\n padding-left: 15px;\n padding-right: 15px;\n padding-top: 6px;\n\n && {\n pre {\n background: transparent !important;\n margin: 0 !important;\n padding: 0 !important;\n }\n }\n`;\n\nexport const Backdrop = styled(motion.div)`\n background: #143046;\n position: absolute;\n z-index: 1;\n left: 0;\n width: 100%;\n height: 200px;\n`;\n","import { styled } from \"@storybook/theming\";\nimport { motion } from \"framer-motion\";\n\nexport const SnippetWrapper = styled(motion.div)<{ active?: boolean }>`\n position: relative;\n padding-top: 12px;\n padding-bottom: 12px;\n`;\n","import { motion } from \"framer-motion\";\nimport { Fragment, forwardRef } from \"react\";\nimport { SnippetWrapper } from \"./Snippet.styled\";\nimport React from \"react\";\nimport { SyntaxHighlighter as StorybookSyntaxHighlighter } from \"@storybook/components\";\nimport { ThemeProvider, ensure, themes } from \"@storybook/theming\";\n\ninterface Props {\n content: { code: string; toggle?: boolean }[];\n active: boolean;\n open?: boolean;\n}\n\nconst wrapperVariants = {\n default: {\n filter: \"grayscale(1)\",\n opacity: 0.5,\n },\n active: {\n filter: \"grayscale(0)\",\n opacity: 1,\n },\n};\n\nexport const Snippet = forwardRef<HTMLDivElement, Props>(\n ({ active, content, open }, ref) => {\n const customStyle = {\n fontSize: \"0.8125rem\",\n lineHeight: \"1.1875rem\",\n };\n\n return (\n <ThemeProvider theme={ensure(themes.dark)}>\n <SnippetWrapper\n ref={ref}\n initial=\"default\"\n animate={active ? \"active\" : \"default\"}\n aria-hidden={!active}\n variants={wrapperVariants}\n transition={{ ease: \"easeInOut\", duration: 0.6 }}\n >\n {content.map(({ toggle, code }, i) => (\n <Fragment key={i}>\n {toggle === undefined && (\n <StorybookSyntaxHighlighter\n language=\"javascript\"\n customStyle={customStyle}\n >\n {code}\n </StorybookSyntaxHighlighter>\n )}\n\n {toggle && !open && (\n <StorybookSyntaxHighlighter\n language=\"javascript\"\n customStyle={customStyle}\n >\n {` // ...`}\n </StorybookSyntaxHighlighter>\n )}\n\n {toggle && open && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.4 }}\n >\n <StorybookSyntaxHighlighter\n language=\"javascript\"\n customStyle={customStyle}\n codeTagProps={{ style: { paddingLeft: \"15px\" } }}\n >\n {code}\n </StorybookSyntaxHighlighter>\n </motion.div>\n )}\n </Fragment>\n ))}\n </SnippetWrapper>\n </ThemeProvider>\n );\n }\n);\n","import React, {\n createRef,\n useCallback,\n useLayoutEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Backdrop, Code, Container } from \"./SyntaxHighlighter.styled\";\nimport { Snippet } from \"./Snippet/Snippet\";\n\ntype SyntaxHighlighterProps = {\n data: { code: string; toggle?: boolean }[][];\n activeStep: number;\n width: number;\n};\n\ntype StepsProps = {\n yPos: number;\n backdropHeight: number;\n index: number;\n open: boolean;\n};\n\nconst OFFSET = 49;\n\nexport const SyntaxHighlighter = ({\n activeStep,\n data,\n width,\n}: SyntaxHighlighterProps) => {\n const [steps, setSteps] = useState<StepsProps[]>([]);\n\n const refs = useMemo(\n () => data.map(() => createRef<HTMLDivElement>()),\n [data]\n );\n\n const getYPos = (idx: number) => {\n let yPos = 0;\n for (let i = 0; i < idx; i++) {\n yPos -= refs[i].current!.getBoundingClientRect().height;\n }\n return yPos;\n };\n\n const setNewSteps = useCallback(() => {\n const newSteps = data.flatMap((content, i) => {\n const backdropHeight = refs[i].current!.getBoundingClientRect().height;\n const finalSteps = [\n {\n yPos: getYPos(i) + OFFSET - 7,\n backdropHeight,\n index: i,\n open: false,\n },\n ];\n\n if (content.length > 1) {\n finalSteps.push({\n yPos: getYPos(i) + OFFSET - 7,\n backdropHeight,\n index: i,\n open: true,\n });\n }\n\n return finalSteps;\n });\n\n setSteps(newSteps);\n }, [data]);\n\n useLayoutEffect(() => {\n // Call setNewSteps every time height of the refs elements changes\n const resizeObserver = new ResizeObserver(() => {\n setNewSteps();\n });\n\n refs.forEach((ref) => {\n resizeObserver.observe(ref.current!);\n });\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n return (\n <Container width={width}>\n <Code\n animate={{ y: steps[activeStep]?.yPos ?? 0 }}\n transition={{ ease: \"easeInOut\", duration: 0.6 }}\n >\n {data.map((content, idx: number) => (\n <Snippet\n key={idx}\n ref={refs[idx]}\n active={steps[activeStep]?.index === idx}\n open={\n steps[activeStep]?.index > idx\n ? true\n : steps[activeStep]?.open ?? false\n }\n content={content}\n />\n ))}\n </Code>\n <Backdrop\n animate={{ height: steps[activeStep]?.backdropHeight ?? 0 }}\n transition={{ ease: \"easeInOut\", duration: 0.6 }}\n style={{ top: OFFSET }}\n className=\"syntax-highlighter-backdrop\"\n />\n </Container>\n );\n};\n","import { styled } from \"@storybook/theming\";\n\nexport const ListWrapper = styled.ul(() => ({\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: 16,\n padding: 0,\n margin: 0,\n}));\n","import React from \"react\";\nimport { ListWrapper } from \"./List.styled\";\n\ninterface ListProps {\n children: React.ReactNode;\n}\n\nexport const List = ({ children }: ListProps) => {\n return <ListWrapper>{children}</ListWrapper>;\n};\n","import { styled } from \"@storybook/theming\";\n\nexport const ListItemWrapper = styled.li(() => ({\n display: \"flex\",\n alignItems: \"flex-start\",\n columnGap: 12,\n}));\n\nexport const ListItemContentWrapper = styled.div(({ theme }) => ({\n fontFamily: theme.typography.fonts.base,\n color: theme.color.darker,\n fontSize: \"13px\",\n}));\n\nexport const ListItemIndexWrapper = styled.div<{ isCompleted: boolean }>(\n ({ isCompleted, theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: !isCompleted && `1px solid ${theme.color.medium}`,\n minWidth: 20,\n width: 20,\n height: 20,\n borderRadius: \"50%\",\n backgroundColor: isCompleted ? theme.color.green : \"white\",\n fontFamily: theme.typography.fonts.base,\n fontSize: 10,\n fontWeight: 600,\n color: theme.color.dark,\n })\n);\n","import React from \"react\";\nimport { Icons } from \"@storybook/components\";\nimport {\n ListItemContentWrapper,\n ListItemIndexWrapper,\n ListItemWrapper,\n} from \"./ListItem.styled\";\n\ninterface ListItemProps {\n children: React.ReactNode;\n index: number;\n isCompleted?: boolean;\n}\n\nexport const ListItem = ({ children, index, isCompleted }: ListItemProps) => {\n return (\n <ListItemWrapper>\n <ListItemIndexWrapper\n aria-label={isCompleted ? \"complete\" : \"not complete\"}\n isCompleted={isCompleted}\n >\n {isCompleted ? (\n <Icons width={10} height={10} icon=\"check\" color=\"white\" />\n ) : (\n index\n )}\n </ListItemIndexWrapper>\n <ListItemContentWrapper>{children}</ListItemContentWrapper>\n </ListItemWrapper>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { Response } from \"../../../types/response\";\n\nexport function useGetButtonPath() {\n const [buttonPath, setButtonPath] = useState<Response<string>>(null);\n\n useEffect(() => {\n const getButtonPath = async () => {\n try {\n const response = await fetch(\"/index.json\");\n const json = await response.json();\n const buttonPath = json.entries[\"example-button--primary\"].importPath;\n setButtonPath({\n data: buttonPath,\n error: null,\n });\n } catch (e) {\n setButtonPath({\n data: null,\n error: e,\n });\n }\n };\n getButtonPath();\n }, []);\n\n return buttonPath;\n}\n","import { useState, useEffect } from \"react\";\nimport { Response } from \"../../../types/response\";\nimport { API, AddonStore } from \"@storybook/manager-api\";\nimport {\n STORY_INDEX_INVALIDATED,\n STORY_RENDERED,\n} from \"@storybook/core-events\";\n\nexport const useGetWarningButtonStatus = (\n active: boolean,\n api: API,\n addonsStore: AddonStore\n) => {\n const [status, setStatus] = useState<Response<boolean>>(null);\n\n useEffect(() => {\n if (active) {\n const getWarningButtonStatus = () => {\n addonsStore.getChannel().once(STORY_RENDERED, () => {\n const out = api.getData(\"example-button--warning\");\n\n if (out) {\n setStatus({ data: true, error: null });\n }\n });\n };\n\n addonsStore\n .getServerChannel()\n .on(STORY_INDEX_INVALIDATED, getWarningButtonStatus);\n\n return () => {\n addonsStore\n .getServerChannel()\n .off(STORY_INDEX_INVALIDATED, getWarningButtonStatus);\n };\n }\n }, [active]);\n\n return status;\n};\n","import { useEffect, useState } from \"react\";\n\n// get an element and return its boundary. It accepts a classname as argument\nexport const useGetBackdropBoundary = (className: string, active: boolean) => {\n const [boundary, setBoundary] = useState<{\n top: number;\n left: number;\n height: number;\n width: number;\n } | null>(null);\n\n const element = document.querySelector(`.${className}`) as HTMLElement;\n\n // setBoundary if element changes sized. use resize observer\n useEffect(() => {\n if (active) {\n const resizeObserver = new ResizeObserver(() => {\n if (element) {\n setBoundary({\n top: element.offsetTop,\n left: element.offsetLeft,\n height: element.offsetHeight,\n width: element.offsetWidth,\n });\n }\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, [className, active]);\n\n return boundary;\n};\n","export default [\n [\n {\n code: `// Button.stories.jsx`,\n },\n ],\n [\n {\n code: `import { Button } from './Button';`,\n },\n ],\n [\n {\n code: `export default {\n title: 'Example/Button',\n component: Button,\n // ...\n };`,\n },\n ],\n [\n { code: `export const Primary = {` },\n {\n code: `args: {\n primary: true,\n label: 'Click',\n background: 'red'\n }`,\n toggle: true,\n },\n { code: `};` },\n ],\n [\n {\n code: `// Copy the code below\nexport const Warning = {\n args: {\n primary: true,\n backgroundColor: 'red',\n label: 'Delete now'\n }\n};`,\n },\n ],\n];\n","export default [\n [\n {\n code: `// Button.stories.tsx`,\n },\n ],\n [\n {\n code: `import type { Meta, StoryObj } from '@storybook/react';\n \n import { Button } from './Button';`,\n },\n ],\n [\n {\n code: `const meta: Meta<typeof Button> = {\n title: 'Example/Button',\n component: Button,\n // ...\n };\n \n export default meta;`,\n },\n ],\n [\n { code: `export const Primary: Story = {` },\n {\n code: `args: {\n primary: true,\n label: 'Click',\n background: 'red'\n }`,\n toggle: true,\n },\n { code: `};` },\n ],\n [\n {\n code: `// Copy the code below\nexport const Warning: Story = {\n args: {\n primary: true,\n backgroundColor: 'red',\n label: 'Delete now'\n }\n};`,\n },\n ],\n];\n","export default [\n [\n {\n code: `// Button.stories.tsx`,\n },\n ],\n [\n {\n code: `import type { Meta, StoryObj } from '@storybook/nextjs';\n \n import { Button } from './Button';`,\n },\n ],\n [\n {\n code: `const meta: Meta<typeof Button> = {\n title: 'Example/Button',\n component: Button,\n // ...\n };\n \n export default meta;`,\n },\n ],\n [\n { code: `export const Primary: Story = {` },\n {\n code: `args: {\n primary: true,\n label: 'Click',\n background: 'red'\n }`,\n toggle: true,\n },\n { code: `};` },\n ],\n [\n {\n code: `// Copy the code below\nexport const Warning: Story = {\n args: {\n primary: true,\n backgroundColor: 'red',\n label: 'Delete now'\n }\n};`,\n },\n ],\n];\n","// fetch project.json and read `framework.name` from it and return it\n\nimport { useEffect, useState } from \"react\";\nimport { Response } from \"../../../types/response\";\n\ntype Project = {\n language: \"javascript\" | \"typescript\";\n framework: {\n name: string;\n };\n};\n\nexport function useGetProject() {\n const [project, setProject] = useState<Response<Project>>(null);\n\n useEffect(() => {\n const getProject = async () => {\n try {\n const response = await fetch(\"/project.json\");\n const json = await response.json();\n\n setProject({\n data: json,\n error: null,\n });\n } catch (e) {\n setProject({\n data: null,\n error: e,\n });\n }\n };\n getProject();\n }, []);\n\n return project;\n}\n","import React, { FC, useState } from \"react\";\nimport { Button } from \"../../components/Button/Button\";\nimport { Modal } from \"../../components/Modal/Modal\";\nimport { Icons } from \"@storybook/components\";\nimport useMeasure from \"react-use-measure\";\nimport {\n Background,\n Circle1,\n Circle2,\n Circle3,\n Content,\n Header,\n Image,\n Main,\n ModalContent,\n ModalTitle,\n SpanHighlight,\n} from \"./WriteStoriesModal.styled\";\nimport { SyntaxHighlighter } from \"../../components/SyntaxHighlighter/SyntaxHighlighter\";\nimport { List } from \"../../components/List/List\";\nimport { ListItem } from \"../../components/List/ListItem/ListItem\";\nimport { useGetButtonPath } from \"./hooks/useGetButtonPath\";\nimport { useGetWarningButtonStatus } from \"./hooks/useGetWarningButtonStatus\";\nimport { useGetBackdropBoundary } from \"./hooks/useGetBackdropBoundary\";\nimport titleSidebarImg from \"./assets/01-title-sidebar.png\";\nimport storyNameSidebarImg from \"./assets/02-story-name-sidebar.png\";\nimport argsImg from \"./assets/03-args.png\";\nimport dataJavascript from \"./code/javascript\";\nimport dataTypescript from \"./code/typescript\";\nimport dataTypescriptNextjs from \"./code/nextjs-typescript\";\nimport { useGetProject } from \"./hooks/useGetFrameworkName\";\nimport { API, AddonStore } from \"@storybook/manager-api\";\n\n// TODO: Add warning if backdropBoundary && !warningButtonStatus?.data is not true.\n// backdropBoundary && !warningButtonStatus?.data\n\ninterface WriteStoriesModalProps {\n onFinish: () => void;\n api: API;\n addonsStore: AddonStore;\n skipOnboarding: () => void;\n isOpen: boolean;\n}\n\nexport const WriteStoriesModal: FC<WriteStoriesModalProps> = ({\n onFinish,\n api,\n addonsStore,\n skipOnboarding,\n isOpen,\n}) => {\n const [step, setStep] = useState<\n \"imports\" | \"meta\" | \"story\" | \"args\" | \"customStory\"\n >(\"imports\");\n\n const stepIndex = {\n imports: 1,\n meta: 2,\n story: 3,\n args: 4,\n customStory: 5,\n };\n\n const [isWarningStoryCopied, setWarningStoryCopied] = useState(false);\n\n const [clipboardButtonRef, clipboardButtonBounds] = useMeasure();\n\n const buttonPath = useGetButtonPath();\n const warningButtonStatus = useGetWarningButtonStatus(\n step === \"customStory\",\n api,\n addonsStore\n );\n const backdropBoundary = useGetBackdropBoundary(\n \"syntax-highlighter-backdrop\",\n step === \"customStory\"\n );\n\n const project = useGetProject();\n const isJavascript = project?.data?.language === \"javascript\";\n\n const data = isJavascript\n ? dataJavascript\n : project?.data?.framework.name === \"@storybook/nextjs\"\n ? dataTypescriptNextjs\n : dataTypescript;\n\n const copyWarningStory = () => {\n const warningContent = data[4][0].code;\n navigator.clipboard.writeText(\n warningContent.replace(\"// Copy the code below\", \"\")\n );\n setWarningStoryCopied(true);\n };\n\n return (\n <Modal width={740} height={430} isOpen={isOpen} setOpen={skipOnboarding}>\n {({ Title, Description, Close }) => (\n <ModalContent>\n {data ? (\n <SyntaxHighlighter\n activeStep={stepIndex[step] || 1}\n data={data}\n width={480}\n />\n ) : null}\n {backdropBoundary && !warningButtonStatus?.data && (\n <Button\n ref={clipboardButtonRef}\n onClick={() => {\n copyWarningStory();\n }}\n style={{\n position: \"absolute\",\n top: backdropBoundary.top + backdropBoundary.height - 45,\n left:\n backdropBoundary.left +\n backdropBoundary.width -\n (clipboardButtonBounds.width ?? 0) -\n 10,\n zIndex: 1000,\n }}\n >\n {isWarningStoryCopied ? \"Copied to clipboard\" : \"Copy code\"}\n </Button>\n )}\n <Main>\n <Header>\n <Title asChild>\n <ModalTitle>\n <Icons icon=\"bookmarkhollow\" width={13} />\n <span>How to write a story</span>\n </ModalTitle>\n </Title>\n <Close asChild>\n <Icons style={{ cursor: \"pointer\" }} icon=\"cross\" width={13} />\n </Close>\n </Header>\n <Description asChild>\n <Content>\n {step === \"imports\" && (\n <>\n <div>\n <h3>Imports</h3>\n <p>\n First, import Meta and StoryObj for type safety and\n autocompletion in TypeScript stories.\n </p>\n <p>\n Next, import a component. In this case, the Button\n component.\n </p>\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"meta\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"meta\" && (\n <>\n <div>\n <h3>Meta</h3>\n <p>\n The default export, Meta, contains metadata about this\n component's stories. The title field controls where\n stories appear in the sidebar.\n </p>\n <Image\n width=\"204\"\n alt=\"Title property pointing to Storybook's sidebar\"\n src={titleSidebarImg}\n />\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"story\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"story\" && (\n <>\n <div>\n <h3>Story</h3>\n <p>\n Each named export is a story. Its contents specify how\n the story is rendered in addition to other configuration\n options.\n </p>\n <Image\n width=\"190\"\n alt=\"Story export pointing to the sidebar entry of the story\"\n src={storyNameSidebarImg}\n />\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"args\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"args\" && (\n <>\n <div>\n <h3>Args</h3>\n <p>\n Args are inputs that are passed to the component, which\n Storybook uses to render the component in different\n states. In React, args = props. They also specify the\n initial control settings for the story.\n </p>\n <Image\n alt=\"Args mapped to their controls in Storybook\"\n width=\"253\"\n src={argsImg}\n />\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"customStory\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"customStory\" &&\n (!warningButtonStatus?.error ? (\n <>\n <div>\n <h3>Create your first story</h3>\n <p>\n Now it's your turn. See how easy it is to create your\n first story by following these steps below.\n </p>\n <List>\n <ListItem\n isCompleted={\n isWarningStoryCopied || warningButtonStatus?.data\n }\n index={1}\n >\n Copy the Warning story\n </ListItem>\n <ListItem\n isCompleted={warningButtonStatus?.data}\n index={2}\n >\n Open{\" \"}\n {buttonPath?.data ? (\n <SpanHighlight>{buttonPath.data}</SpanHighlight>\n ) : (\n <>the Button Story</>\n )}{\" \"}\n in your current working directory\n </ListItem>\n <ListItem\n isCompleted={warningButtonStatus?.data}\n index={3}\n >\n Paste it at the bottom of the file\n </ListItem>\n </List>\n </div>\n {warningButtonStatus?.data ? (\n <Button\n onClick={() => {\n onFinish();\n }}\n >\n Go to story\n </Button>\n ) : null}\n </>\n ) : null)}\n </Content>\n </Description>\n <Background>\n <Circle1 />\n <Circle2 />\n <Circle3 />\n </Background>\n </Main>\n </ModalContent>\n )}\n </Modal>\n );\n};\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { ThemeProvider, ensure, themes } from \"@storybook/theming\";\nimport { STORY_CHANGED, CURRENT_STORY_WAS_SET } from \"@storybook/core-events\";\nimport { addons, type API } from \"@storybook/manager-api\";\n\nimport { GuidedTour } from \"./features/GuidedTour/GuidedTour\";\nimport { WelcomeModal } from \"./features/WelcomeModal/WelcomeModal\";\nimport { WriteStoriesModal } from \"./features/WriteStoriesModal/WriteStoriesModal\";\nimport { Confetti } from \"./components/Confetti/Confetti\";\n\ntype Step =\n | \"1:Welcome\"\n | \"2:StorybookTour\"\n | \"3:WriteYourStory\"\n | \"4:VisitNewStory\"\n | \"5:ConfigureYourProject\";\n\nconst theme = ensure(themes.light);\n\nexport default function App({ api }: { api: API }) {\n const [enabled, setEnabled] = useState(true);\n const [showConfetti, setShowConfetti] = useState(false);\n const [step, setStep] = useState<Step>(\"1:Welcome\");\n\n const skipOnboarding = useCallback(() => {\n // remove onboarding query parameter from current url\n const url = new URL(window.location.href);\n url.searchParams.delete(\"onboarding\");\n const path = decodeURIComponent(url.searchParams.get(\"path\"));\n url.search = `?path=${path}`;\n history.replaceState({}, \"\", url.href);\n setEnabled(false);\n }, [setEnabled]);\n\n useEffect(() => {\n let stepTimeout: number;\n if (step === \"4:VisitNewStory\") {\n setShowConfetti(true);\n stepTimeout = window.setTimeout(() => {\n setStep(\"5:ConfigureYourProject\");\n }, 2000);\n }\n\n return () => {\n clearTimeout(stepTimeout);\n };\n }, [step]);\n\n useEffect(() => {\n api.once(CURRENT_STORY_WAS_SET, ({ storyId }) => {\n api.setQueryParams({ onboarding: \"true\" });\n // make sure the initial state is set correctly:\n // 1. Selected story is primary button\n // 2. The addon panel is opened, in the bottom and the controls tab is selected\n if (storyId !== \"example-button--primary\") {\n api.selectStory(\"example-button--primary\", undefined, {\n ref: undefined,\n });\n }\n api.togglePanel(true);\n api.togglePanelPosition(\"bottom\");\n api.setSelectedPanel(\"addon-controls\");\n });\n }, []);\n\n useEffect(() => {\n const onStoryChanged = (storyId: string) => {\n if (storyId === \"configure-your-project--docs\") {\n skipOnboarding();\n }\n };\n\n api.on(STORY_CHANGED, onStoryChanged);\n\n return () => {\n api.off(STORY_CHANGED, onStoryChanged);\n };\n }, []);\n\n return (\n <ThemeProvider theme={theme}>\n {showConfetti && (\n <Confetti\n numberOfPieces={1000}\n initialVelocityY={3}\n recycle={false}\n onConfettiComplete={(confetti) => {\n confetti.reset();\n setShowConfetti(false);\n }}\n />\n )}\n <WelcomeModal\n onProceed={() => setStep(\"2:StorybookTour\")}\n isOpen={enabled && step === \"1:Welcome\"}\n skipOnboarding={skipOnboarding}\n />\n {(step === \"2:StorybookTour\" || step === \"5:ConfigureYourProject\") && (\n <GuidedTour\n api={api}\n isFinalStep={step === \"5:ConfigureYourProject\"}\n onFirstTourDone={() => {\n setStep(\"3:WriteYourStory\");\n }}\n />\n )}\n <WriteStoriesModal\n api={api}\n addonsStore={addons}\n onFinish={() => {\n api.selectStory(\"example-button--warning\");\n setStep(\"4:VisitNewStory\");\n }}\n isOpen={enabled && step === \"3:WriteYourStory\"}\n skipOnboarding={skipOnboarding}\n />\n </ThemeProvider>\n );\n}\n","import ReactDOM from \"react-dom\";\nimport React, { lazy, Suspense } from \"react\";\nimport { addons } from \"@storybook/manager-api\";\n\nconst App = lazy(() => import(\"./App\"));\n\n// The addon is enabled only when:\n// 1. The onboarding query parameter is present\n// 2. The example button stories are present\naddons.register(\"@storybook/addon-onboarding\", async (api) => {\n const urlState = api.getUrlState();\n const isOnboarding = urlState.path === '/onboarding' || urlState.queryParams.onboarding === 'true';\n\n if (!isOnboarding) {\n return;\n }\n\n let hasButtonStories = false;\n try {\n const response = await fetch(\"./index.json\");\n const index = await response.json();\n hasButtonStories = !!index.entries[\"example-button--primary\"];\n } catch (e) {}\n\n if (hasButtonStories) {\n // Add a new DOM element to document.body, where we will bootstrap our React app\n const domNode = document.createElement(\"div\");\n\n domNode.id = \"addon-onboarding\";\n // Append the new DOM element to document.body\n document.body.appendChild(domNode);\n\n // Render the React app\n ReactDOM.render(\n <Suspense fallback={<div>Loading...</div>}>\n <App api={api} />\n </Suspense>,\n domNode\n );\n }\n});\n"]}
|
package/dist/manager.mjs
CHANGED
|
@@ -356,13 +356,11 @@ var Ao=Object.defineProperty;var a=(t,o)=>()=>(t&&(o=t(t=0)),o);var $o=(t,o)=>{f
|
|
|
356
356
|
position: relative;
|
|
357
357
|
padding-top: 12px;
|
|
358
358
|
padding-bottom: 12px;
|
|
359
|
-
`;});var we,Vt,Qt=a(()=>{Ut();we={default:{filter:"grayscale(1)",opacity:.5},active:{filter:"grayscale(0)",opacity:1}},Vt=forwardRef(({active:t,content:o,open:r},n)=>{let s={fontSize:"0.8125rem",lineHeight:"1.1875rem"};return e.createElement(ThemeProvider,{theme:ensure(themes.dark)},e.createElement(Ht,{ref:n,initial:"default",animate:t?"active":"default","aria-hidden":!t,variants:we,transition:{ease:"easeInOut",duration:.6}},o.map(({toggle:i,code:l},f)=>e.createElement(Fragment,{key:f},i===void 0&&e.createElement(SyntaxHighlighter,{language:"javascript",customStyle:s},l),i&&!r&&e.createElement(SyntaxHighlighter,{language:"javascript",customStyle:s}," // ..."),i&&r&&e.createElement(motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.4}},e.createElement(SyntaxHighlighter,{language:"javascript",customStyle:s,codeTagProps:{style:{paddingLeft:"15px"}}},l))))))});});var Z,Zt,Xt=a(()=>{Ft();Qt();Z=49,Zt=({activeStep:t,data:o,width:r})=>{let[n,s]=useState([]),i=useMemo(()=>o.map(()=>createRef()),[o]),l=p=>{let d=0;for(let g=0;g<p;g++)d-=i[g].current.getBoundingClientRect().height;return d},f=useCallback(()=>{let p=o.flatMap((d,g)=>{let z=i[g].current.getBoundingClientRect().height,k=[{yPos:l(g)+Z-7,backdropHeight:z,index:g,open:!1}];return d.length>1&&k.push({yPos:l(g)+Z-7,backdropHeight:z,index:g,open:!0}),k});s(p);},[o]);return useLayoutEffect(()=>{let p=new ResizeObserver(()=>{f();});return i.forEach(d=>{p.observe(d.current);}),()=>{p.disconnect();}},[]),e.createElement(Gt,{width:r},e.createElement(_t,{animate:{y:n[t]?.yPos??0},transition:{ease:"easeInOut",duration:.6}},o.map((p,d)=>e.createElement(Vt,{key:d,ref:i[d],active:n[t]?.index===d,open:n[t]?.index>d?!0:n[t]?.open??!1,content:p}))),e.createElement(Yt,{animate:{height:n[t]?.backdropHeight??0},transition:{ease:"easeInOut",duration:.6},style:{top:Z},className:"syntax-highlighter-backdrop"}))};});var Kt,qt=a(()=>{Kt=styled.ul(()=>({display:"flex",flexDirection:"column",rowGap:16,padding:0,margin:0}));});var Jt,Rt=a(()=>{qt();Jt=({children:t})=>e.createElement(Kt,null,t);});var to,oo,eo,ro=a(()=>{to=styled.li(()=>({display:"flex",alignItems:"flex-start",columnGap:12})),oo=styled.div(({theme:t})=>({fontFamily:t.typography.fonts.base,color:t.color.darker,fontSize:"13px"})),eo=styled.div(({isCompleted:t,theme:o})=>({display:"flex",alignItems:"center",justifyContent:"center",border:!t&&`1px solid ${o.color.medium}`,minWidth:20,width:20,height:20,borderRadius:"50%",backgroundColor:t?o.color.green:"white",fontFamily:o.typography.fonts.base,fontSize:10,fontWeight:600,color:o.color.dark}));});var N,no=a(()=>{ro();N=({children:t,index:o,isCompleted:r})=>e.createElement(to,null,e.createElement(eo,{"aria-label":r?"complete":"not complete",isCompleted:r},r?e.createElement(Icons,{width:10,height:10,icon:"check",color:"white"}):o),e.createElement(oo,null,t));});function io(){let[t,o]=useState(null);return useEffect(()=>{(async()=>{try{let i=(await(await fetch("/index.json")).json()).entries["example-button--primary"].importPath;o({data:i,error:null});}catch(n){o({data:null,error:n});}})();},[]),t}var so=a(()=>{});var po,lo=a(()=>{po=(t,o,r)=>{let[n,s]=useState(null);return useEffect(()=>{if(t){let i=()=>{r.getChannel().once(STORY_RENDERED,()=>{o.getData("example-button--warning")&&s({data:!0,error:null});});};return r.getServerChannel().on(STORY_INDEX_INVALIDATED,i),()=>{r.getServerChannel().off(STORY_INDEX_INVALIDATED,i);}}},[t]),n};});var mo,co=a(()=>{mo=(t,o)=>{let[r,n]=useState(null),s=document.querySelector(`.${t}`);return useEffect(()=>{if(o){let i=new ResizeObserver(()=>{s&&n({top:s.offsetTop,left:s.offsetLeft,height:s.offsetHeight,width:s.offsetWidth});});return i.observe(s),()=>{i.disconnect();}}},[t,o]),r};});var fo,uo=a(()=>{fo="data:image/png;base64,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";});var ho,go=a(()=>{ho="data:image/png;base64,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";});var yo,xo=a(()=>{yo="data:image/png;base64,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";});var bo,Co=a(()=>{bo=[[{code:"// Button.stories.jsx"}],[{code:"import { Button } from './Button';"}],[{code:`const meta = {
|
|
359
|
+
`;});var we,Vt,Qt=a(()=>{Ut();we={default:{filter:"grayscale(1)",opacity:.5},active:{filter:"grayscale(0)",opacity:1}},Vt=forwardRef(({active:t,content:o,open:r},n)=>{let s={fontSize:"0.8125rem",lineHeight:"1.1875rem"};return e.createElement(ThemeProvider,{theme:ensure(themes.dark)},e.createElement(Ht,{ref:n,initial:"default",animate:t?"active":"default","aria-hidden":!t,variants:we,transition:{ease:"easeInOut",duration:.6}},o.map(({toggle:i,code:l},f)=>e.createElement(Fragment,{key:f},i===void 0&&e.createElement(SyntaxHighlighter,{language:"javascript",customStyle:s},l),i&&!r&&e.createElement(SyntaxHighlighter,{language:"javascript",customStyle:s}," // ..."),i&&r&&e.createElement(motion.div,{initial:{opacity:0},animate:{opacity:1},transition:{delay:.4}},e.createElement(SyntaxHighlighter,{language:"javascript",customStyle:s,codeTagProps:{style:{paddingLeft:"15px"}}},l))))))});});var Z,Zt,Xt=a(()=>{Ft();Qt();Z=49,Zt=({activeStep:t,data:o,width:r})=>{let[n,s]=useState([]),i=useMemo(()=>o.map(()=>createRef()),[o]),l=p=>{let d=0;for(let g=0;g<p;g++)d-=i[g].current.getBoundingClientRect().height;return d},f=useCallback(()=>{let p=o.flatMap((d,g)=>{let z=i[g].current.getBoundingClientRect().height,k=[{yPos:l(g)+Z-7,backdropHeight:z,index:g,open:!1}];return d.length>1&&k.push({yPos:l(g)+Z-7,backdropHeight:z,index:g,open:!0}),k});s(p);},[o]);return useLayoutEffect(()=>{let p=new ResizeObserver(()=>{f();});return i.forEach(d=>{p.observe(d.current);}),()=>{p.disconnect();}},[]),e.createElement(Gt,{width:r},e.createElement(_t,{animate:{y:n[t]?.yPos??0},transition:{ease:"easeInOut",duration:.6}},o.map((p,d)=>e.createElement(Vt,{key:d,ref:i[d],active:n[t]?.index===d,open:n[t]?.index>d?!0:n[t]?.open??!1,content:p}))),e.createElement(Yt,{animate:{height:n[t]?.backdropHeight??0},transition:{ease:"easeInOut",duration:.6},style:{top:Z},className:"syntax-highlighter-backdrop"}))};});var Kt,qt=a(()=>{Kt=styled.ul(()=>({display:"flex",flexDirection:"column",rowGap:16,padding:0,margin:0}));});var Jt,Rt=a(()=>{qt();Jt=({children:t})=>e.createElement(Kt,null,t);});var to,oo,eo,ro=a(()=>{to=styled.li(()=>({display:"flex",alignItems:"flex-start",columnGap:12})),oo=styled.div(({theme:t})=>({fontFamily:t.typography.fonts.base,color:t.color.darker,fontSize:"13px"})),eo=styled.div(({isCompleted:t,theme:o})=>({display:"flex",alignItems:"center",justifyContent:"center",border:!t&&`1px solid ${o.color.medium}`,minWidth:20,width:20,height:20,borderRadius:"50%",backgroundColor:t?o.color.green:"white",fontFamily:o.typography.fonts.base,fontSize:10,fontWeight:600,color:o.color.dark}));});var N,no=a(()=>{ro();N=({children:t,index:o,isCompleted:r})=>e.createElement(to,null,e.createElement(eo,{"aria-label":r?"complete":"not complete",isCompleted:r},r?e.createElement(Icons,{width:10,height:10,icon:"check",color:"white"}):o),e.createElement(oo,null,t));});function io(){let[t,o]=useState(null);return useEffect(()=>{(async()=>{try{let i=(await(await fetch("/index.json")).json()).entries["example-button--primary"].importPath;o({data:i,error:null});}catch(n){o({data:null,error:n});}})();},[]),t}var so=a(()=>{});var po,lo=a(()=>{po=(t,o,r)=>{let[n,s]=useState(null);return useEffect(()=>{if(t){let i=()=>{r.getChannel().once(STORY_RENDERED,()=>{o.getData("example-button--warning")&&s({data:!0,error:null});});};return r.getServerChannel().on(STORY_INDEX_INVALIDATED,i),()=>{r.getServerChannel().off(STORY_INDEX_INVALIDATED,i);}}},[t]),n};});var mo,co=a(()=>{mo=(t,o)=>{let[r,n]=useState(null),s=document.querySelector(`.${t}`);return useEffect(()=>{if(o){let i=new ResizeObserver(()=>{s&&n({top:s.offsetTop,left:s.offsetLeft,height:s.offsetHeight,width:s.offsetWidth});});return i.observe(s),()=>{i.disconnect();}}},[t,o]),r};});var fo,uo=a(()=>{fo="data:image/png;base64,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";});var ho,go=a(()=>{ho="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXwAAAEICAMAAABrir8vAAAB3VBMVEUAAABzgo3d5enp8fNzgox+ipjt9Pl0hItzgozf6Ovp8fZygoze5urs9Prf5+ve5ut0g4xzgoze5uve5urf5erf5uvd5+rd5erf5Or////3+vzs9Pne5urq7/L7/PxzgowuNDigZsaEkprmlk3V1tfl5ubLzM18gIKWmZu5wcX6+/vs5/Xh1e/y8vNITVHc4OLWw+jvyKTt7/Gws7TLsOH19farec22i9P39/jq6uvoo2Psu47f4OHx1br17ebz4dBBtf2WoanY2dnRueXy8fnBndrL0NPqr3nt+P/m6OljZ2r9/f47QUXa8f/U7v+Azf58ipPU2dtiZ2q/5v/Gp97a29y7lNfM6//L0NSnsbfl9f/Andqlb8k31dPDyc6lcMqkpqjnnFjz+//v8PG1i9Ob6unj4+SJjI9VWl4CnP3m+vnn3vL29PHczOtp396NmaIiqf3MsOGxgtC+v8FS29m9v8Dwzq+NmqG07+/059uxs7TtwppvdHbx9PTl7O/t7e25wMb28/GXmpvg9P+g2v/y28Wxub7rtYRcv/47QUQSo/1E19afqbDm5+iQ1P7h1e7Antqwub9wdHfpqW5wx/4xr/33+fna9/fN9fSo7eyP5+brtYPm9f+w4P/A8vFZOmLPAAAAGXRSTlMA34AghxXvOu86s2bfv3/PyqXv759wn59gUVCBVgAAD1BJREFUeNrsmT+Lo0AUwBcOrji4L/BSPV45FgqioKiFil8gpLmACOkSi6RYCKlShJR7sOV92Xszo8luJnvrwf6R7PyKxJl5M+7+5vmMyd3dt5/fJ5an/Ph290F8s+oNvn+U/R+TCVieMZn8vPsYrHuTyffrrqz8D2Ayue7Kyjex8m8JK384Vv4tYeUPx8q/Jaz84Vj5t4SVPxwr/5aw8odj5X8caSbZwnWi6uvKd0L3vdfySBHdwzUo+rryXfTfey2PqiS5j4mu2vfurfx3lR8Ds6MGnnEDNd8tw+5q9/0CGOHnstsv3FlYClAU61k4c0HT+kK2pwKWvj/D0Pd5hokz5fndnPw0vfBdyOXkPijkEdl46NdyX5C/Ikrlm5dAFlfHRA0xOvO33nZXJeBV8Ypb+2R3lCGazNvuvWO1SznqAIrESz9fvthgHdQYFNIQlsDMUKoMsUQemC9VVMBRiFNQ/EI3QMYHFzsCMFhzb8BBUviTkwhchBjw2DmoVkE+dixekA9EW35NqfJIorqYSNukKCI6Ng3tuFWRakarboH7iJgYVvQIkpSiEWT+DKeF/MfDk/a1dhwiOgC5lhSgr3Yg7+QHCx5z3X+VnTUGjhzO1YSwAPiNoZKPm0Ku1cpdwUDI9HeHlJ0t0Up7I28PaQyak/wYMmr20Mi2l+xVofK6BR6jDCDjVkWZ7kk+X76DG9CqhXQRzIWQCaozX785MirQwWEv//WaH6CAHtSrz7Fg+bqR41StOBtc89OIKmDS/sZ7KT+BVEYcCXpW3ZhHUQqaA+2AiSj9fPlTnDqSEl1glrgJagG99V6S30lhe1p+/qowBxfG8QxdKX+j+0qQjbkYIr+JVBFJtfwGrsrPYCXlx9rrfptlWdOcd0+zapoVQEZ/RnDDDbHHB+0a835kqX2Uqsifs1k2nVeE6Xk9Lc66nc5VzT/L51KEm9IVQ+T/4Vqj5VcvyQeKO/lpRZq+5kPPTh7HdBiF/NzRaAHrs3wtuu3l91fDcPnGsY/+pXxwFzXivB1QdpjB8tOI4gNnfkRwWeEzqjj9ozF81FRazwgMuOwbmc8p+xaZzycz5DPLXzh/Y/lJN4NM+VDRiofHIF+W9DOC7TqnG25+qu+5NiWkJFN+CQYq1jjeoGPI7zf1TeX3trNr8u/Jqygdg/xi3iV6V0/8036EGHbbwVGootZYmvKXKs4kxLUeV8etigzgQn4h9B+B/SUSvo18FgzM0ZCvb7lUjeMJN8egbN11iEru7JzzIdZh6270TkwxyNsp1sKUDwHOjCdcvW1l2+YbX5meT9t1je6lfKcuc4dPUvapINdyh8tPPM+jhl8Oz+SzYIqzpIrMms/siJJxyAf9sFpPVcEXStt8vpTyH+TIb1D4yATcbcoXi9p4wtX9as7D6SR1DpfyxUafvHi61mK4/Io64ufy4RBxZ5VelZ9RsxqJfICl44hrZUOA4xTQUTjOEv4T8WRhnl7AFQo18A68/ANAQvFovlg7Ycq/TSrKrPxPYZvt6HE8Xyl/LfkVUZSOXr7jFnCDZMlhP6IfUyxW/v9g5d8SVv5fdu4YBWEgiqLohATBYKYQwcJxq1m7jQTEwl/IRD/nLOHy6hcnfibix4mfifhx4mfSLf5B/P3iL6b/3n4un7h8efrfy5cyzjde0i9jAQAAAAAA4PdNU2Evw1AIEj8T8ePEz0T8OPEzET9O/EzEjxM/ky/FP15Ojc35OvaLX1tb72zW1mqv+LU92LFjF7dhKI7jQ6dCt5bCg9z94G3uItDkVUsgm7xJi8euN97UkClTlvuPa1t2zrKvOUET4yjvS8ggnAQ+UZ5F9s8kjXreN/qL4H/Z7EmatN98XQT/50b2/aznzY9F8L/Lxv+g/bdF8DdPJM162gh+aoKfU4KfnuDnlOCnJ/g5JfjpCX5OCX56gp9Tgp+e4OeU4Kcn+Dkl+Ok9Br7h0JFC+oUP1FYzV9Q1rCsad+Ka+l54R0Pc9eo1DSlmTVHcV9O/ewh8ho3wqQZUiw0caJQDDI0zsGX0ihBgmW3zvDvjAxN84Cb47nh/+FuK8+CyXefplwQV4Q/fjuYYf9v9TmAu4Su6fo5P/u7xS27g3sCRmIMp4Cf4trukwByftrAL4zvW5P2949POopF1k8uq0qKM8Bm+m09s5/gVsCR+sKdGf6X4v6tzf8aqp6Jt7FMjGvgdIBP5aNGg7tA9HM/wy9PlseOLtpKulwmfcazWif+rLvpUtKVD47XSTr0MXKtoy/HStm6ENZhi/FdjjAWqS/ghTZ+U0Wln0FcU4ftt2xjiDZOjjQ5QBocIn16gPFyMHzKKLuEftm2Xdn5u+L2++mzmO6Cw0YjxADdZ2BhfwYJpgl9rrTvW/5v5ueF3+oo+wdcNfHx21zjnInwy3WXzmU+L42vqKvVq8Rt9RZfxhxP+aXTW9MMQKmBifAVPCfhKt90Sv2RHTZpXesP9OEbIvw98q4fTfkgz3PlOrCL8phT8kJrecAu6Xppd97TesZPw307FXAczZjcsvVLfkT31ea7e3+Mdn2d7b8d96nb/7QT95rHimZ91mq1b8w0377Ra9WnngRP89AQ/pwQ/PcHPKcH/yw4d0wAAADAM8u96FnY3IIGf/BL5P/kl8n/yS+T/5JfI/8kvkf+TXyL/J79E/k9+ifyf/BL5P/kl8seOHauoDkRhHH+OrzvNZGYvzNwiLxCs1jAgTF4gXZJOkDTibdQi18Ji2S3vu96TUdEECRvYZUfJvzAcZ2x+kSHk8034z1SI+FmTXGp2uE1EPoHn6Ofxf6HXrmr2+/17xR/HZPmKmxSdsoXGE/Tz+PPf6NY04LLKD4d9Fz+OuJUkh165E+Ait8LDFAD+S08/WVzxeejiC/gkRegmT0sxxXiYQsBn/bH4MeUT/pfgs/5Y/BWtAKEicFrViFVJhVK5eqON4hkQWyljvztSQvMQ4E0JA7+jnzQZd6yyto/7+M4KViUFTpCENJaMMY4v1pgC2JItUzIz/6PcmtSQRGgFgv/y5wb/sOQO1bKt6uHnMVcYO0MHv3/sxFRqQJi/GlBENYCUIgRWIPjzzx475zZiGD/l6bJD+XWsKEdghYE/H3fm67UxYhCfHHxUAoqiy40IrCDw5xiF7yWLAXz/lc+YCX8Yf47R+LBuCF/TBj47/fOH8Xv2WCRX/N0hu49PV/yoj89ZgzZBmwl/1Lud1+UySZKPKuEO77iLv6WipXXg3jx+cSEuThvX4CStJ/wWf0T/FueOGXDnUVM5MgJASjKqnSPpbU1e19CWijqGNlREtaQCE/4A/qgU+WypNDiR8uBmHh/KEJXAjC9WQ8h2n8KE7/G/JS30dRDifNGnpeBf+z84/mP3n537d00eCAM4TkCJ4KLjTXe8cCYdkqEunR1DlmYXQkEMDm8HlYo4Obwgbu/SH8P7t753Z/AhtbVPGzzk8nyhoU3O5UNIIvWR8PERvksRPj7CdynCx0f4LkX4+AjfpQgfH+G7FOHjI3yXInx8hO9ShF8jC/i9DuFDlvH7vE34kF38LvcJH7KL7/MW4ess4kOdDuFDlvFb3Cd8yC5+u9Ozi3/754592MOq7B9zIYWPOfW7VvHv+dPH+pP94tCYuRAKv+1x3yY+u/lEf/KbmWaAX5mOHlV2Xv2nphQ+Ir/jta3hgz4ePxCH0i2D4usbBELiV+tyz7eHD/p4/HygWhcigJ1J7Aa+0ucta/igj8fXztc59obAR1z3va49fNDH41/p2FsNfNBvce61/LYlfNDH45cfBB+Fo2i7mbN5GDG9GQTZVLIoDzbD6LBoutmoPaphztRRs1IXhWtmJcBH8/c9znnH+0G/fhLnT9/GH4q1+gnTNF6rnVIfCcw4tCzSJBaZFo5FnCRiNzK3BT0tHeUiLF99tfgqv9XvWcR//C6+jIVUhMJ8JUyJX6htLoqN2vXXLJvqjUwzjb8zN+Uo3R2HF60F+PgsXnYe7/D4WaDKUhEyhR8wBvhrrSuEfHdHKLR3IpYMplf0aN3ZGoNv7PH4sSnQhkNNDPij4zkNo0GRlIkw+OXfIitfcL6G4Jf2p/iz1blr/nEcFPDle/xllgoV4JtfIiYRJ34j8Ev7U/znxf6tHv5QFANp3AHfHBl+/R6hEfil/Sn+aj+ZLRYvdfDNhQjwy5Idiwv2ZQ3AB/tqk/H4lbHZYl8L36yVooqfiy3mOdN9/Huwr/a6f2G6txr4ahMPZB5nVfwoFYjnzAbg39589s+UB3bouQY+m+s56WUA+KYQMyTdAPyLJyU7KcE8ZxL+JcI9ZxL+BcK+wSL8ixTFG8QqwncnwsdH+C5F+PgI36UIHx/huxTh4yN8lyL8/+3cMYvbMBTA8XBHhysHBy0HfeBmeloEHgU2aNJkI+xNGDLGoG+Rerg56039sJUcx40TSEV65/OJ9xsU2ZaWf4JIloSj+DGh+OEofkwofjiKHxOKH47ix4Tih6P4MaH44Sh+TJYYf1vVRy9rOMWFnk6vExks2sfH1xftm01RFC9N4cd68jhHAQOGHP4FJSzax8fnGUxVL4e3ALy6oPjvGT/NzuJvxvj+guK/a/w0o/gTs8ZPs5vj89zKkoMnSitZCj3BJBPH+C2Ttu3v5pyXVsBSLCP+pH5VFc7vpvDq6/FbpVhplN9uUVlrsDs8VExi3sfnEmVpcd9v3yslKf5Z/J0+id/UTuNGpzmLz/KB9PE5Wr9RGje2fVSp/BSZG7np41uVgb/V+u3YwYIsI/5Ohx47J/h49ggUMOjQpTZquC39sAdPSr99WX9/tIj4O33jma8M72EOnua8cyvWw1nfv+aYco8pP1/OkbOU+K79jfFx4ONnVqEngCODnpF+3RHFv8Rd+5vjWzjiyqQcoD2NjxKg9Ot6FP8S1zC1qfUYf91sr8WXCo5S7MYVyoCX+fgtthQfgum6qapqGDZwLX4+HPbCRe6n2vgV5SE48/HXymhwdEbxg2yLoy1cjQ8SWSpaiRmsjWpFKqVfwQ0yd9cY2X/JNJ1oS2Up/v/pzFhvbzg4uUFEKQ4/plB1qennzM2tlhaGB6hy7bdT/LeluR5n8BfX04sl+vzxPzGKH47ix4Tih6P4MaH44Sh+TCh+OIofE4ofjuLHhOKHo/gxofjhKH5MKH44ih+TmeI/JUAu/HpazeEu2QE5I5Ifqzl8eUw4kAmePN6vZvHwPfn5uiaj113y7WE1k/unhEx8vV/N5+H5joye+4/9H9E5eAp4eScvAAAAAElFTkSuQmCC";});var yo,xo=a(()=>{yo="data:image/png;base64,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";});var bo,Co=a(()=>{bo=[[{code:"// Button.stories.jsx"}],[{code:"import { Button } from './Button';"}],[{code:`export default {
|
|
360
360
|
title: 'Example/Button',
|
|
361
361
|
component: Button,
|
|
362
362
|
// ...
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
export default meta;`}],[{code:"export const Primary = {"},{code:`args: {
|
|
363
|
+
};`}],[{code:"export const Primary = {"},{code:`args: {
|
|
366
364
|
primary: true,
|
|
367
365
|
label: 'Click',
|
|
368
366
|
background: 'red'
|
package/dist/manager.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/PulsatingEffect/PulsatingEffect.tsx","../src/components/Confetti/Confetti.tsx","../src/components/Button/Button.tsx","../src/features/GuidedTour/Tooltip.tsx","../src/features/GuidedTour/GuidedTour.tsx","../src/components/Modal/Modal.styled.tsx","../src/components/Modal/Modal.tsx","../src/features/WelcomeModal/StorybookLogo.tsx","../src/features/WelcomeModal/WelcomeModal.styled.tsx","../src/features/WelcomeModal/WelcomeModal.tsx","../src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx","../src/components/SyntaxHighlighter/SyntaxHighlighter.styled.tsx","../src/components/SyntaxHighlighter/Snippet/Snippet.styled.tsx","../src/components/SyntaxHighlighter/Snippet/Snippet.tsx","../src/components/SyntaxHighlighter/SyntaxHighlighter.tsx","../src/components/List/List.styled.tsx","../src/components/List/List.tsx","../src/components/List/ListItem/ListItem.styled.tsx","../src/components/List/ListItem/ListItem.tsx","../src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx","../src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx","../src/features/WriteStoriesModal/hooks/useGetBackdropBoundary.tsx","../src/features/WriteStoriesModal/code/javascript.tsx","../src/features/WriteStoriesModal/code/typescript.tsx","../src/features/WriteStoriesModal/code/nextjs-typescript.tsx","../src/features/WriteStoriesModal/hooks/useGetFrameworkName.tsx","../src/features/WriteStoriesModal/WriteStoriesModal.tsx","../src/App.tsx","../src/manager.tsx"],"names":["useEffect","PulsatingEffect","targetSelector","element","keyframes","style","styleElement","init_PulsatingEffect","__esmMin","ReactConfetti","React","styled","createPortal","useState","Confetti","top","left","width","height","confettiProps","confettiContainer","container","Wrapper","init_Confetti","Button","init_Button","theme","TooltipBody","TooltipTitle","TooltipContent","TooltipFooter","Tooltip","init_Tooltip","step","primaryProps","tooltipProps","Joyride","STATUS","STORY_ARGS_UPDATED","GuidedTour","api","isFinalStep","onFirstTourDone","stepIndex","setStepIndex","data","init_GuidedTour","css","Dialog","motion","StyledOverlay","StyledContent","ContentWrapper","init_Modal_styled","init_Modal","children","contentProps","ref","initial","animate","exit","AnimatePresence","Modal","isOpen","setOpen","onEscapeKeyDown","onInteractOutside","ev","StorybookLogo","init_StorybookLogo","Icons","ModalContentWrapper","TopContent","Title","Description","SkipButton","StyledIcon","Background","circle1Anim","Circle1","circle2Anim","Circle2","circle3Anim","Circle3","StyledTitle","StyledDescription","init_WelcomeModal_styled","WelcomeModal","init_WelcomeModal","skipOnboarding","onProceed","Close","ModalContent","Main","Header","ModalTitle","Content","SpanHighlight","Image","init_WriteStoriesModal_styled","Code","Container","Backdrop","init_SyntaxHighlighter_styled","SnippetWrapper","init_Snippet_styled","Fragment","forwardRef","StorybookSyntaxHighlighter","ThemeProvider","ensure","themes","wrapperVariants","Snippet","init_Snippet","active","content","open","customStyle","toggle","code","i","createRef","useCallback","useLayoutEffect","useMemo","OFFSET","SyntaxHighlighter","init_SyntaxHighlighter","activeStep","steps","setSteps","refs","getYPos","idx","yPos","setNewSteps","newSteps","backdropHeight","finalSteps","resizeObserver","ListWrapper","init_List_styled","List","init_List","ListItemWrapper","ListItemContentWrapper","ListItemIndexWrapper","init_ListItem_styled","isCompleted","ListItem","init_ListItem","index","useGetButtonPath","buttonPath","setButtonPath","e","init_useGetButtonPath","STORY_INDEX_INVALIDATED","STORY_RENDERED","useGetWarningButtonStatus","init_useGetWarningButtonStatus","addonsStore","status","setStatus","getWarningButtonStatus","useGetBackdropBoundary","init_useGetBackdropBoundary","className","boundary","setBoundary","javascript_default","init_javascript","typescript_default","init_typescript","nextjs_typescript_default","init_nextjs_typescript","useGetProject","project","setProject","json","init_useGetFrameworkName","useMeasure","WriteStoriesModal","init_WriteStoriesModal","init_title_sidebar","init_story_name_sidebar","init_args","onFinish","setStep","isWarningStoryCopied","setWarningStoryCopied","clipboardButtonRef","clipboardButtonBounds","warningButtonStatus","backdropBoundary","copyWarningStory","warningContent","title_sidebar_default","story_name_sidebar_default","args_default","App_exports","__export","App","STORY_CHANGED","CURRENT_STORY_WAS_SET","addons","enabled","setEnabled","showConfetti","setShowConfetti","url","path","stepTimeout","storyId","onStoryChanged","confetti","init_App","ReactDOM","lazy","Suspense","urlState","hasButtonStories","domNode"],"mappings":"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","sourcesContent":["import { useEffect } from \"react\";\n\nexport function PulsatingEffect({\n targetSelector,\n}: {\n targetSelector: string;\n}): JSX.Element {\n useEffect(() => {\n const element = document.querySelector<HTMLElement>(targetSelector);\n\n if (element) {\n element.style.animation = \"pulsate 3s infinite\";\n element.style.transformOrigin = \"center\";\n element.style.animationTimingFunction = \"ease-in-out\";\n\n const keyframes = `\n @keyframes pulsate {\n 0% {\n box-shadow: 0 0 0 0 rgba(2, 156, 253, 0.7), 0 0 0 0 rgba(2, 156, 253, 0.4);\n }\n 50% {\n box-shadow: 0 0 0 20px rgba(2, 156, 253, 0), 0 0 0 40px rgba(2, 156, 253, 0);\n }\n 100% {\n box-shadow: 0 0 0 0 rgba(2, 156, 253, 0), 0 0 0 0 rgba(2, 156, 253, 0);\n }\n }\n `;\n const style = document.createElement(\"style\");\n style.id = \"sb-onboarding-pulsating-effect\";\n style.innerHTML = keyframes;\n document.head.appendChild(style);\n }\n\n return () => {\n const styleElement = document.querySelector(\n \"#sb-onboarding-pulsating-effect\"\n );\n\n if (styleElement) {\n styleElement.remove();\n }\n\n if (element) {\n element.style.animation = \"auto\";\n }\n };\n }, [targetSelector]);\n\n return null;\n}\n","import ReactConfetti from \"react-confetti\";\nimport React, { useEffect } from \"react\";\nimport { styled } from \"@storybook/theming\";\nimport { createPortal } from \"react-dom\";\nimport { useState } from \"react\";\n\ninterface ConfettiProps\n extends Omit<React.ComponentProps<typeof ReactConfetti>, \"drawShape\"> {\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n}\n\nconst Wrapper = styled.div<{\n width: number;\n height: number;\n top: number;\n left: number;\n}>(({ width, height, left, top }) => ({\n width: `${width}px`,\n height: `${height}px`,\n left: `${left}px`,\n top: `${top}px`,\n position: \"relative\",\n overflow: \"hidden\",\n}));\n\nexport function Confetti({\n top = 0,\n left = 0,\n width = window.innerWidth,\n height = window.innerHeight,\n ...confettiProps\n}: ConfettiProps): React.ReactPortal {\n const [confettiContainer] = useState(() => {\n const container = document.createElement(\"div\");\n container.setAttribute(\"id\", \"confetti-container\");\n container.setAttribute(\n \"style\",\n \"position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999;\"\n );\n\n return container;\n });\n\n useEffect(() => {\n document.body.appendChild(confettiContainer);\n\n return () => {\n document.body.removeChild(confettiContainer);\n };\n }, []);\n\n return createPortal(\n <Wrapper top={top} left={left} width={width} height={height}>\n <ReactConfetti {...confettiProps} />\n </Wrapper>,\n confettiContainer\n );\n}\n","import { styled } from \"@storybook/theming\";\nimport React, { FC, forwardRef } from \"react\";\n\nexport interface ButtonProps {\n children: string;\n onClick?: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n}\n\nexport const Button = styled.button`\n all: unset;\n border: 0;\n border-radius: 0.25rem;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.75rem;\n background: ${({ theme }) => theme.color.secondary};\n color: ${({ theme }) => theme.color.lightest};\n height: 32px;\n font-size: 0.8125rem;\n font-weight: 700;\n font-family: ${({ theme }) => theme.typography.fonts.base};\n transition: all 0.16s ease-in-out;\n text-decoration: none;\n\n &:hover {\n background-color: #0b94eb;\n }\n\n &:focus {\n box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.1);\n }\n`;\n","import React from \"react\";\nimport { styled } from \"@storybook/theming\";\nimport { TooltipRenderProps } from \"react-joyride\";\nimport { Button } from \"../../components/Button/Button\";\n\nconst TooltipBody = styled.div`\n background: #fff;\n width: 260px;\n padding: 15px;\n border-radius: 5px;\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n`;\n\nconst TooltipTitle = styled.div`\n font-size: 13px;\n font-weight: 700;\n color: ${({ theme }) => theme.color.darkest};\n`;\n\nconst TooltipContent = styled.p`\n font-size: 13px;\n text-align: start;\n color: ${({ theme }) => theme.color.mediumdark};\n margin: 0;\n margin-top: 5px;\n`;\n\nconst TooltipFooter = styled.div`\n display: flex;\n justify-content: flex-end;\n margin-top: 15px;\n`;\n\ntype TooltipProps = TooltipRenderProps & {\n step: TooltipRenderProps[\"step\"] & { hideNextButton?: boolean };\n};\n\nexport const Tooltip = ({ step, primaryProps, tooltipProps }: TooltipProps) => {\n return (\n <TooltipBody {...tooltipProps}>\n <Wrapper>\n {step.title && <TooltipTitle>{step.title}</TooltipTitle>}\n <TooltipContent>{step.content}</TooltipContent>\n </Wrapper>\n {!step.hideNextButton && (\n <TooltipFooter id=\"buttonNext\">\n <Button {...primaryProps}>Next</Button>\n </TooltipFooter>\n )}\n </TooltipBody>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport Joyride, { CallBackProps, STATUS, Step } from \"react-joyride\";\n\nimport { PulsatingEffect } from \"../../components/PulsatingEffect/PulsatingEffect\";\nimport { Confetti } from \"../../components/Confetti/Confetti\";\nimport { API } from \"@storybook/manager-api\";\nimport { STORY_ARGS_UPDATED } from \"@storybook/core-events\";\nimport { Tooltip } from \"./Tooltip\";\n\ntype GuidedTourStep = Step & { hideNextButton?: boolean };\n\nexport function GuidedTour({\n api,\n isFinalStep,\n onFirstTourDone,\n}: {\n api: API;\n isFinalStep?: boolean;\n onFirstTourDone: () => void;\n}) {\n const [stepIndex, setStepIndex] = useState<number>();\n\n useEffect(() => {\n api.once(STORY_ARGS_UPDATED, () => {\n setStepIndex(3);\n });\n }, []);\n\n const steps: GuidedTourStep[] = isFinalStep\n ? [\n {\n target: \"#configure-your-project--docs\",\n title: \"Continue setting up your project\",\n content:\n \"You nailed the basics. Now get started writing stories for your own components.\",\n placement: \"right\",\n disableOverlay: true,\n disableBeacon: true,\n floaterProps: {\n disableAnimation: true,\n },\n hideNextButton: true,\n },\n ]\n : [\n {\n target: \"#storybook-explorer-tree > div\",\n title: \"Storybook is built from stories\",\n content:\n \"Storybook uses stories to represent the key states supported by each of your components. For example: this Button component has four stories.\",\n placement: \"right\",\n disableBeacon: true,\n styles: {\n spotlight: {\n transform: \"translateY(30px)\",\n },\n },\n floaterProps: {\n disableAnimation: true,\n },\n },\n {\n target: \"#storybook-preview-iframe\",\n title: \"Storybook previews are interactive\",\n content:\n \"Whenever you modify code or stories, Storybook automatically updates how it previews your components.\",\n placement: \"bottom\",\n },\n {\n target: \"#root div[role=main]\",\n title: \"Interactive story playground\",\n content: (\n <>\n See how a story renders with different data and state without\n touching code.\n <br />\n <br />\n Try it out by pressing this button.\n <PulsatingEffect targetSelector=\"#control-primary\" />\n </>\n ),\n placement: \"right\",\n spotlightClicks: true,\n floaterProps: {\n target: \"#control-primary\",\n },\n hideNextButton: true,\n },\n {\n target: \"#control-primary\",\n title: \"Congratulations!\",\n content: (\n <>\n You've learned how to control your stories interactively. Now:\n let's explore how to write your first story.\n <Confetti numberOfPieces={100} />\n </>\n ),\n placement: \"right\",\n disableOverlay: true,\n },\n ];\n\n return (\n <Joyride\n steps={steps}\n continuous\n stepIndex={stepIndex}\n spotlightPadding={0}\n hideBackButton\n disableCloseOnEsc\n disableOverlayClose\n disableScrolling\n hideCloseButton\n callback={(data: CallBackProps) => {\n if (!isFinalStep && data.status === STATUS.FINISHED) {\n onFirstTourDone();\n }\n }}\n floaterProps={{\n styles: {\n floater: {\n padding: 0,\n paddingLeft: 8,\n paddingTop: 8,\n filter:\n \"drop-shadow(0px 5px 5px rgba(0,0,0,0.05)) drop-shadow(0 1px 3px rgba(0,0,0,0.1))\",\n },\n },\n }}\n tooltipComponent={Tooltip}\n styles={{\n spotlight: {\n border: \"solid 2px #004c7c\",\n },\n overlay: {\n backgroundColor: \"rgba(0, 0, 0, 0.48)\",\n },\n options: {\n zIndex: 10000,\n primaryColor: \"#029CFD\",\n },\n }}\n />\n );\n}\n","import { css, styled } from \"@storybook/theming\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport React from \"react\";\nimport { motion } from \"framer-motion\";\nimport { animate, exit, initial } from \"./Modal\";\n\nexport const StyledOverlay = styled(motion.div)`\n background-color: rgba(27, 28, 29, 0.48);\n position: fixed;\n inset: 0px;\n width: 100%;\n height: 100%;\n`;\n\nexport const StyledContent = styled(motion.div)<{\n width: number;\n height: number;\n}>(\n ({ width, height }) => css`\n background-color: white;\n border-radius: 6px;\n box-shadow: rgba(14, 18, 22, 0.35) 0px 10px 38px -10px;\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: ${width ?? 740}px;\n height: ${height ? `${height}px` : \"auto\"};\n max-width: calc(100% - 40px);\n max-height: 85vh;\n overflow: hidden;\n `\n);\n\nexport const ContentWrapper = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof StyledContent> &\n React.ComponentProps<typeof Dialog.Content>\n>(({ width, height, children, ...contentProps }, ref) => (\n <Dialog.Content ref={ref} asChild {...contentProps}>\n <StyledContent\n width={width}\n height={height}\n initial={initial}\n animate={animate}\n exit={exit}\n >\n {children}\n </StyledContent>\n </Dialog.Content>\n));\n","import React from \"react\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport { ContentWrapper, StyledOverlay } from \"./Modal.styled\";\nimport { AnimatePresence } from \"framer-motion\";\n\ntype ContentProps = React.ComponentProps<typeof ContentWrapper>;\n\ninterface ModalProps {\n width?: number;\n height?: number;\n isOpen?: boolean;\n setOpen?: (open: boolean) => void;\n children: (props: {\n Title: typeof Dialog.Title;\n Description: typeof Dialog.Description;\n Close: typeof Dialog.Close;\n }) => React.ReactNode;\n onEscapeKeyDown?: ContentProps[\"onEscapeKeyDown\"];\n onInteractOutside?: ContentProps[\"onInteractOutside\"];\n}\n\nexport const initial = { opacity: 0 };\nexport const animate = { opacity: 1, transition: { duration: 0.3 } };\nexport const exit = { opacity: 0, transition: { duration: 0.3 } };\n\nexport function Modal({\n children,\n width,\n height,\n isOpen,\n setOpen,\n onEscapeKeyDown,\n onInteractOutside = (ev) => ev.preventDefault(),\n}: ModalProps) {\n return (\n <Dialog.Root open={isOpen} onOpenChange={setOpen}>\n <AnimatePresence>\n {isOpen && (\n <Dialog.Portal forceMount>\n <Dialog.Overlay asChild>\n <StyledOverlay initial={initial} animate={animate} exit={exit} />\n </Dialog.Overlay>\n <ContentWrapper\n width={width}\n height={height}\n onInteractOutside={onInteractOutside}\n onEscapeKeyDown={onEscapeKeyDown}\n >\n {children({\n Title: Dialog.Title,\n Description: Dialog.Description,\n Close: Dialog.Close,\n })}\n </ContentWrapper>\n </Dialog.Portal>\n )}\n </AnimatePresence>\n </Dialog.Root>\n );\n}\n","import React from \"react\";\n\nexport function StorybookLogo() {\n return (\n <svg\n width=\"32px\"\n height=\"40px\"\n viewBox=\"0 0 256 319\"\n preserveAspectRatio=\"xMidYMid\"\n >\n <defs>\n <path\n d=\"M9.87245893,293.324145 L0.0114611411,30.5732167 C-0.314208957,21.8955842 6.33948896,14.5413918 15.0063196,13.9997149 L238.494389,0.0317105427 C247.316188,-0.519651867 254.914637,6.18486163 255.466,15.0066607 C255.486773,15.339032 255.497167,15.6719708 255.497167,16.0049907 L255.497167,302.318596 C255.497167,311.157608 248.331732,318.323043 239.492719,318.323043 C239.253266,318.323043 239.013844,318.317669 238.774632,318.306926 L25.1475605,308.712253 C16.8276309,308.338578 10.1847994,301.646603 9.87245893,293.324145 L9.87245893,293.324145 Z\"\n id=\"path-1\"\n ></path>\n </defs>\n <g>\n <mask id=\"mask-2\" fill=\"white\">\n <use xlinkHref=\"#path-1\"></use>\n </mask>\n <use fill=\"#FF4785\" fillRule=\"nonzero\" xlinkHref=\"#path-1\"></use>\n <path\n d=\"M188.665358,39.126973 L190.191903,2.41148534 L220.883535,0 L222.205755,37.8634126 C222.251771,39.1811466 221.22084,40.2866846 219.903106,40.3327009 C219.338869,40.3524045 218.785907,40.1715096 218.342409,39.8221376 L206.506729,30.4984116 L192.493574,41.1282444 C191.443077,41.9251106 189.945493,41.7195021 189.148627,40.6690048 C188.813185,40.2267976 188.6423,39.6815326 188.665358,39.126973 Z M149.413703,119.980309 C149.413703,126.206975 191.355678,123.222696 196.986019,118.848893 C196.986019,76.4467826 174.234041,54.1651411 132.57133,54.1651411 C90.9086182,54.1651411 67.5656805,76.7934542 67.5656805,110.735941 C67.5656805,169.85244 147.345341,170.983856 147.345341,203.229219 C147.345341,212.280549 142.913138,217.654777 133.162291,217.654777 C120.456641,217.654777 115.433477,211.165914 116.024438,189.103298 C116.024438,184.317101 67.5656805,182.824962 66.0882793,189.103298 C62.3262146,242.56887 95.6363019,257.990394 133.753251,257.990394 C170.688279,257.990394 199.645341,238.303123 199.645341,202.663511 C199.645341,139.304202 118.683759,141.001326 118.683759,109.604526 C118.683759,96.8760922 128.139127,95.178968 133.753251,95.178968 C139.662855,95.178968 150.300143,96.2205679 149.413703,119.980309 Z\"\n fill=\"#FFFFFF\"\n fillRule=\"nonzero\"\n mask=\"url(#mask-2)\"\n ></path>\n </g>\n </svg>\n );\n}\n","import { Icons } from \"@storybook/components\";\nimport { keyframes, styled } from \"@storybook/theming\";\n\nexport const ModalContentWrapper = styled.div`\n border-radius: 5px;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: space-between;\n`;\n\nexport const TopContent = styled.div`\n display: flex;\n flex: 1;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nexport const Title = styled.h1`\n margin: 0;\n margin-top: 20px;\n margin-bottom: 5px;\n color: ${({ theme }) => theme.color.darkest};\n font-weight: ${({ theme }) => theme.typography.weight.bold};\n font-size: ${({ theme }) => theme.typography.size.m1}px;\n line-height: ${({ theme }) => theme.typography.size.m3}px;\n`;\n\nexport const Description = styled.p`\n margin: 0;\n margin-bottom: 20px;\n max-width: 320px;\n text-align: center;\n font-size: ${({ theme }) => theme.typography.size.s2}px;\n font-weight: ${({ theme }) => theme.typography.weight.regular};\n line-height: ${({ theme }) => theme.typography.size.m1}px;\n color: ${({ theme }) => theme.color.darker};\n`;\n\nexport const SkipButton = styled.button`\n all: unset;\n cursor: pointer;\n font-size: 13px;\n color: #798186;\n padding-bottom: 20px;\n\n &:focus-visible {\n outline: auto;\n }\n`;\n\nexport const StyledIcon = styled(Icons)`\n margin-left: 2px;\n height: 10px;\n`;\n\nexport const Background = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n overflow: hidden;\n`;\n\nexport const circle1Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(-200px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle1 = styled.div`\n position: absolute;\n width: 1200px;\n height: 1200px;\n left: -200px;\n top: -900px;\n background: radial-gradient(\n circle at center,\n rgba(253, 255, 147, 1) 0%,\n rgba(253, 255, 147, 0) 70%\n );\n animation: ${circle1Anim} 4s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 3;\n`;\n\nexport const circle2Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(400px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle2 = styled.div`\n position: absolute;\n width: 1200px;\n height: 1200px;\n left: -600px;\n top: -840px;\n background: radial-gradient(\n circle at center,\n rgba(255, 119, 119, 1) 0%,\n rgba(255, 119, 119, 0) 70%\n );\n animation: ${circle2Anim} 6s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 2;\n`;\n\nexport const circle3Anim = keyframes`\n 0% { transform: translate(600px, -40px) }\n 50% { transform: translate(600px, -200px) }\n 100% { transform: translate(600px, -40px) }\n`;\n\nexport const Circle3 = styled.div`\n position: absolute;\n width: 1200px;\n height: 1200px;\n left: -600px;\n top: -840px;\n background: radial-gradient(\n circle at center,\n rgba(119, 255, 247, 0.8) 0%,\n rgba(119, 255, 247, 0) 70%\n );\n animation: ${circle3Anim} 4s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 4;\n`;\n\nexport const StyledTitle = styled.h2`\n color: #000;\n font-weight: 700;\n font-size: 20px;\n line-height: 20px;\n`;\nexport const StyledDescription = styled.p`\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n color: #454e54;\n`;\n","import React, { FC } from \"react\";\n\nimport { Button } from \"../../components/Button/Button\";\nimport { Modal } from \"../../components/Modal/Modal\";\nimport { StorybookLogo } from \"./StorybookLogo\";\nimport {\n ModalContentWrapper,\n SkipButton,\n StyledIcon,\n Title,\n Description,\n Background,\n Circle1,\n Circle2,\n Circle3,\n TopContent,\n} from \"./WelcomeModal.styled\";\n\ninterface WelcomeModalProps {\n skipOnboarding: () => void;\n onProceed: () => void;\n isOpen: boolean;\n}\n\nexport const WelcomeModal: FC<WelcomeModalProps> = ({\n skipOnboarding,\n onProceed,\n isOpen,\n}) => {\n return (\n <Modal width={540} height={430} isOpen={isOpen} setOpen={skipOnboarding}>\n {({ Close }) => (\n <ModalContentWrapper data-chromatic=\"ignore\">\n <TopContent>\n <StorybookLogo />\n <Title>Welcome to Storybook</Title>\n <Description>\n Storybook helps you develop UI components. Learn the basics in a\n few simple steps.\n </Description>\n <Button style={{ marginTop: 4 }} onClick={onProceed}>\n Start your 3 minute tour\n </Button>\n </TopContent>\n <Close asChild>\n <SkipButton>\n Skip tour\n <StyledIcon icon=\"arrowright\" />\n </SkipButton>\n </Close>\n <Background>\n <Circle1 />\n <Circle2 />\n <Circle3 />\n </Background>\n </ModalContentWrapper>\n )}\n </Modal>\n );\n};\n","import { keyframes, styled } from \"@storybook/theming\";\n\nexport const ModalContent = styled.div`\n display: flex;\n flex-direction: row;\n height: 100%;\n max-height: 85vh;\n`;\n\nexport const Main = styled.div`\n position: relative;\n flex: 1;\n display: flex;\n flex-direction: column;\n font-family: ${({ theme }) => theme.typography.fonts.base};\n`;\n\nexport const Header = styled.div`\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 15px;\n border-bottom: 1px solid ${({ theme }) => theme.appBorderColor};\n height: 40px;\n`;\n\nexport const ModalTitle = styled.div`\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 13px;\n font-weight: bold;\n color: ${({ theme }) => theme.color.darkest};\n\n span {\n margin-top: 2px;\n }\n`;\n\nexport const Content = styled.div`\n font-size: 13px;\n padding: 15px;\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: space-between;\n color: ${({ theme }) => theme.color.darker};\n\n h3 {\n font-size: 13px;\n font-weight: bold;\n padding: 0;\n margin: 0;\n }\n`;\n\nexport const SpanHighlight = styled.span`\n color: ${({ theme }) => theme.color.secondary};\n display: inline-block;\n border-radius: 4px;\n padding: 0.2em 0.4em;\n opacity: 0.8;\n background-color: ${({ theme }) => theme.color.secondary}20;\n font-weight: bold;\n`;\n\nexport const Image = styled.img`\n max-width: 100%;\n margin-top: 1em;\n`;\n\nexport const Background = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n overflow: hidden;\n`;\n\nexport const circle1Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(120px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle1 = styled.div`\n position: absolute;\n width: 350px;\n height: 350px;\n left: -160px;\n top: -260px;\n background: radial-gradient(\n circle at center,\n rgba(255, 119, 119, 1) 0%,\n rgba(255, 119, 119, 0) 70%\n );\n animation: ${circle1Anim} 8s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 2;\n`;\n\nexport const circle2Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 33% { transform: translate(-64px, 0px) }\n 66% { transform: translate(120px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle2 = styled.div`\n position: absolute;\n width: 350px;\n height: 350px;\n left: -54px;\n top: -250px;\n background: radial-gradient(\n circle at center,\n rgba(253, 255, 147, 1) 0%,\n rgba(253, 255, 147, 0) 70%\n );\n animation: ${circle2Anim} 12s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 3;\n`;\n\nexport const circle3Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(-120px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle3 = styled.div`\n position: absolute;\n width: 350px;\n height: 350px;\n left: 150px;\n top: -220px;\n background: radial-gradient(\n circle at center,\n rgba(119, 255, 247, 0.8) 0%,\n rgba(119, 255, 247, 0) 70%\n );\n animation: ${circle3Anim} 4s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 4;\n`;\n","import { styled } from \"@storybook/theming\";\nimport { motion } from \"framer-motion\";\n\nexport const Code = styled(motion.div)`\n position: relative;\n z-index: 2;\n`;\n\nexport const Container = styled.div<{ width: number }>`\n position: relative;\n box-sizing: border-box;\n background: #171c23;\n width: ${({ width }) => width}px;\n height: 100%;\n overflow: hidden;\n padding-left: 15px;\n padding-right: 15px;\n padding-top: 6px;\n\n && {\n pre {\n background: transparent !important;\n margin: 0 !important;\n padding: 0 !important;\n }\n }\n`;\n\nexport const Backdrop = styled(motion.div)`\n background: #143046;\n position: absolute;\n z-index: 1;\n left: 0;\n width: 100%;\n height: 200px;\n`;\n","import { styled } from \"@storybook/theming\";\nimport { motion } from \"framer-motion\";\n\nexport const SnippetWrapper = styled(motion.div)<{ active?: boolean }>`\n position: relative;\n padding-top: 12px;\n padding-bottom: 12px;\n`;\n","import { motion } from \"framer-motion\";\nimport { Fragment, forwardRef } from \"react\";\nimport { SnippetWrapper } from \"./Snippet.styled\";\nimport React from \"react\";\nimport { SyntaxHighlighter as StorybookSyntaxHighlighter } from \"@storybook/components\";\nimport { ThemeProvider, ensure, themes } from \"@storybook/theming\";\n\ninterface Props {\n content: { code: string; toggle?: boolean }[];\n active: boolean;\n open?: boolean;\n}\n\nconst wrapperVariants = {\n default: {\n filter: \"grayscale(1)\",\n opacity: 0.5,\n },\n active: {\n filter: \"grayscale(0)\",\n opacity: 1,\n },\n};\n\nexport const Snippet = forwardRef<HTMLDivElement, Props>(\n ({ active, content, open }, ref) => {\n const customStyle = {\n fontSize: \"0.8125rem\",\n lineHeight: \"1.1875rem\",\n };\n\n return (\n <ThemeProvider theme={ensure(themes.dark)}>\n <SnippetWrapper\n ref={ref}\n initial=\"default\"\n animate={active ? \"active\" : \"default\"}\n aria-hidden={!active}\n variants={wrapperVariants}\n transition={{ ease: \"easeInOut\", duration: 0.6 }}\n >\n {content.map(({ toggle, code }, i) => (\n <Fragment key={i}>\n {toggle === undefined && (\n <StorybookSyntaxHighlighter\n language=\"javascript\"\n customStyle={customStyle}\n >\n {code}\n </StorybookSyntaxHighlighter>\n )}\n\n {toggle && !open && (\n <StorybookSyntaxHighlighter\n language=\"javascript\"\n customStyle={customStyle}\n >\n {` // ...`}\n </StorybookSyntaxHighlighter>\n )}\n\n {toggle && open && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.4 }}\n >\n <StorybookSyntaxHighlighter\n language=\"javascript\"\n customStyle={customStyle}\n codeTagProps={{ style: { paddingLeft: \"15px\" } }}\n >\n {code}\n </StorybookSyntaxHighlighter>\n </motion.div>\n )}\n </Fragment>\n ))}\n </SnippetWrapper>\n </ThemeProvider>\n );\n }\n);\n","import React, {\n createRef,\n useCallback,\n useLayoutEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Backdrop, Code, Container } from \"./SyntaxHighlighter.styled\";\nimport { Snippet } from \"./Snippet/Snippet\";\n\ntype SyntaxHighlighterProps = {\n data: { code: string; toggle?: boolean }[][];\n activeStep: number;\n width: number;\n};\n\ntype StepsProps = {\n yPos: number;\n backdropHeight: number;\n index: number;\n open: boolean;\n};\n\nconst OFFSET = 49;\n\nexport const SyntaxHighlighter = ({\n activeStep,\n data,\n width,\n}: SyntaxHighlighterProps) => {\n const [steps, setSteps] = useState<StepsProps[]>([]);\n\n const refs = useMemo(\n () => data.map(() => createRef<HTMLDivElement>()),\n [data]\n );\n\n const getYPos = (idx: number) => {\n let yPos = 0;\n for (let i = 0; i < idx; i++) {\n yPos -= refs[i].current!.getBoundingClientRect().height;\n }\n return yPos;\n };\n\n const setNewSteps = useCallback(() => {\n const newSteps = data.flatMap((content, i) => {\n const backdropHeight = refs[i].current!.getBoundingClientRect().height;\n const finalSteps = [\n {\n yPos: getYPos(i) + OFFSET - 7,\n backdropHeight,\n index: i,\n open: false,\n },\n ];\n\n if (content.length > 1) {\n finalSteps.push({\n yPos: getYPos(i) + OFFSET - 7,\n backdropHeight,\n index: i,\n open: true,\n });\n }\n\n return finalSteps;\n });\n\n setSteps(newSteps);\n }, [data]);\n\n useLayoutEffect(() => {\n // Call setNewSteps every time height of the refs elements changes\n const resizeObserver = new ResizeObserver(() => {\n setNewSteps();\n });\n\n refs.forEach((ref) => {\n resizeObserver.observe(ref.current!);\n });\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n return (\n <Container width={width}>\n <Code\n animate={{ y: steps[activeStep]?.yPos ?? 0 }}\n transition={{ ease: \"easeInOut\", duration: 0.6 }}\n >\n {data.map((content, idx: number) => (\n <Snippet\n key={idx}\n ref={refs[idx]}\n active={steps[activeStep]?.index === idx}\n open={\n steps[activeStep]?.index > idx\n ? true\n : steps[activeStep]?.open ?? false\n }\n content={content}\n />\n ))}\n </Code>\n <Backdrop\n animate={{ height: steps[activeStep]?.backdropHeight ?? 0 }}\n transition={{ ease: \"easeInOut\", duration: 0.6 }}\n style={{ top: OFFSET }}\n className=\"syntax-highlighter-backdrop\"\n />\n </Container>\n );\n};\n","import { styled } from \"@storybook/theming\";\n\nexport const ListWrapper = styled.ul(() => ({\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: 16,\n padding: 0,\n margin: 0,\n}));\n","import React from \"react\";\nimport { ListWrapper } from \"./List.styled\";\n\ninterface ListProps {\n children: React.ReactNode;\n}\n\nexport const List = ({ children }: ListProps) => {\n return <ListWrapper>{children}</ListWrapper>;\n};\n","import { styled } from \"@storybook/theming\";\n\nexport const ListItemWrapper = styled.li(() => ({\n display: \"flex\",\n alignItems: \"flex-start\",\n columnGap: 12,\n}));\n\nexport const ListItemContentWrapper = styled.div(({ theme }) => ({\n fontFamily: theme.typography.fonts.base,\n color: theme.color.darker,\n fontSize: \"13px\",\n}));\n\nexport const ListItemIndexWrapper = styled.div<{ isCompleted: boolean }>(\n ({ isCompleted, theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: !isCompleted && `1px solid ${theme.color.medium}`,\n minWidth: 20,\n width: 20,\n height: 20,\n borderRadius: \"50%\",\n backgroundColor: isCompleted ? theme.color.green : \"white\",\n fontFamily: theme.typography.fonts.base,\n fontSize: 10,\n fontWeight: 600,\n color: theme.color.dark,\n })\n);\n","import React from \"react\";\nimport { Icons } from \"@storybook/components\";\nimport {\n ListItemContentWrapper,\n ListItemIndexWrapper,\n ListItemWrapper,\n} from \"./ListItem.styled\";\n\ninterface ListItemProps {\n children: React.ReactNode;\n index: number;\n isCompleted?: boolean;\n}\n\nexport const ListItem = ({ children, index, isCompleted }: ListItemProps) => {\n return (\n <ListItemWrapper>\n <ListItemIndexWrapper\n aria-label={isCompleted ? \"complete\" : \"not complete\"}\n isCompleted={isCompleted}\n >\n {isCompleted ? (\n <Icons width={10} height={10} icon=\"check\" color=\"white\" />\n ) : (\n index\n )}\n </ListItemIndexWrapper>\n <ListItemContentWrapper>{children}</ListItemContentWrapper>\n </ListItemWrapper>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { Response } from \"../../../types/response\";\n\nexport function useGetButtonPath() {\n const [buttonPath, setButtonPath] = useState<Response<string>>(null);\n\n useEffect(() => {\n const getButtonPath = async () => {\n try {\n const response = await fetch(\"/index.json\");\n const json = await response.json();\n const buttonPath = json.entries[\"example-button--primary\"].importPath;\n setButtonPath({\n data: buttonPath,\n error: null,\n });\n } catch (e) {\n setButtonPath({\n data: null,\n error: e,\n });\n }\n };\n getButtonPath();\n }, []);\n\n return buttonPath;\n}\n","import { useState, useEffect } from \"react\";\nimport { Response } from \"../../../types/response\";\nimport { API, AddonStore } from \"@storybook/manager-api\";\nimport {\n STORY_INDEX_INVALIDATED,\n STORY_RENDERED,\n} from \"@storybook/core-events\";\n\nexport const useGetWarningButtonStatus = (\n active: boolean,\n api: API,\n addonsStore: AddonStore\n) => {\n const [status, setStatus] = useState<Response<boolean>>(null);\n\n useEffect(() => {\n if (active) {\n const getWarningButtonStatus = () => {\n addonsStore.getChannel().once(STORY_RENDERED, () => {\n const out = api.getData(\"example-button--warning\");\n\n if (out) {\n setStatus({ data: true, error: null });\n }\n });\n };\n\n addonsStore\n .getServerChannel()\n .on(STORY_INDEX_INVALIDATED, getWarningButtonStatus);\n\n return () => {\n addonsStore\n .getServerChannel()\n .off(STORY_INDEX_INVALIDATED, getWarningButtonStatus);\n };\n }\n }, [active]);\n\n return status;\n};\n","import { useEffect, useState } from \"react\";\n\n// get an element and return its boundary. It accepts a classname as argument\nexport const useGetBackdropBoundary = (className: string, active: boolean) => {\n const [boundary, setBoundary] = useState<{\n top: number;\n left: number;\n height: number;\n width: number;\n } | null>(null);\n\n const element = document.querySelector(`.${className}`) as HTMLElement;\n\n // setBoundary if element changes sized. use resize observer\n useEffect(() => {\n if (active) {\n const resizeObserver = new ResizeObserver(() => {\n if (element) {\n setBoundary({\n top: element.offsetTop,\n left: element.offsetLeft,\n height: element.offsetHeight,\n width: element.offsetWidth,\n });\n }\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, [className, active]);\n\n return boundary;\n};\n","export default [\n [\n {\n code: `// Button.stories.jsx`,\n },\n ],\n [\n {\n code: `import { Button } from './Button';`,\n },\n ],\n [\n {\n code: `const meta = {\n title: 'Example/Button',\n component: Button,\n // ...\n };\n \n export default meta;`,\n },\n ],\n [\n { code: `export const Primary = {` },\n {\n code: `args: {\n primary: true,\n label: 'Click',\n background: 'red'\n }`,\n toggle: true,\n },\n { code: `};` },\n ],\n [\n {\n code: `// Copy the code below\nexport const Warning = {\n args: {\n primary: true,\n backgroundColor: 'red',\n label: 'Delete now'\n }\n};`,\n },\n ],\n];\n","export default [\n [\n {\n code: `// Button.stories.tsx`,\n },\n ],\n [\n {\n code: `import type { Meta, StoryObj } from '@storybook/react';\n \n import { Button } from './Button';`,\n },\n ],\n [\n {\n code: `const meta: Meta<typeof Button> = {\n title: 'Example/Button',\n component: Button,\n // ...\n };\n \n export default meta;`,\n },\n ],\n [\n { code: `export const Primary: Story = {` },\n {\n code: `args: {\n primary: true,\n label: 'Click',\n background: 'red'\n }`,\n toggle: true,\n },\n { code: `};` },\n ],\n [\n {\n code: `// Copy the code below\nexport const Warning: Story = {\n args: {\n primary: true,\n backgroundColor: 'red',\n label: 'Delete now'\n }\n};`,\n },\n ],\n];\n","export default [\n [\n {\n code: `// Button.stories.tsx`,\n },\n ],\n [\n {\n code: `import type { Meta, StoryObj } from '@storybook/nextjs';\n \n import { Button } from './Button';`,\n },\n ],\n [\n {\n code: `const meta: Meta<typeof Button> = {\n title: 'Example/Button',\n component: Button,\n // ...\n };\n \n export default meta;`,\n },\n ],\n [\n { code: `export const Primary: Story = {` },\n {\n code: `args: {\n primary: true,\n label: 'Click',\n background: 'red'\n }`,\n toggle: true,\n },\n { code: `};` },\n ],\n [\n {\n code: `// Copy the code below\nexport const Warning: Story = {\n args: {\n primary: true,\n backgroundColor: 'red',\n label: 'Delete now'\n }\n};`,\n },\n ],\n];\n","// fetch project.json and read `framework.name` from it and return it\n\nimport { useEffect, useState } from \"react\";\nimport { Response } from \"../../../types/response\";\n\ntype Project = {\n language: \"javascript\" | \"typescript\";\n framework: {\n name: string;\n };\n};\n\nexport function useGetProject() {\n const [project, setProject] = useState<Response<Project>>(null);\n\n useEffect(() => {\n const getProject = async () => {\n try {\n const response = await fetch(\"/project.json\");\n const json = await response.json();\n\n setProject({\n data: json,\n error: null,\n });\n } catch (e) {\n setProject({\n data: null,\n error: e,\n });\n }\n };\n getProject();\n }, []);\n\n return project;\n}\n","import React, { FC, useState } from \"react\";\nimport { Button } from \"../../components/Button/Button\";\nimport { Modal } from \"../../components/Modal/Modal\";\nimport { Icons } from \"@storybook/components\";\nimport useMeasure from \"react-use-measure\";\nimport {\n Background,\n Circle1,\n Circle2,\n Circle3,\n Content,\n Header,\n Image,\n Main,\n ModalContent,\n ModalTitle,\n SpanHighlight,\n} from \"./WriteStoriesModal.styled\";\nimport { SyntaxHighlighter } from \"../../components/SyntaxHighlighter/SyntaxHighlighter\";\nimport { List } from \"../../components/List/List\";\nimport { ListItem } from \"../../components/List/ListItem/ListItem\";\nimport { useGetButtonPath } from \"./hooks/useGetButtonPath\";\nimport { useGetWarningButtonStatus } from \"./hooks/useGetWarningButtonStatus\";\nimport { useGetBackdropBoundary } from \"./hooks/useGetBackdropBoundary\";\nimport titleSidebarImg from \"./assets/01-title-sidebar.png\";\nimport storyNameSidebarImg from \"./assets/02-story-name-sidebar.png\";\nimport argsImg from \"./assets/03-args.png\";\nimport dataJavascript from \"./code/javascript\";\nimport dataTypescript from \"./code/typescript\";\nimport dataTypescriptNextjs from \"./code/nextjs-typescript\";\nimport { useGetProject } from \"./hooks/useGetFrameworkName\";\nimport { API, AddonStore } from \"@storybook/manager-api\";\n\n// TODO: Add warning if backdropBoundary && !warningButtonStatus?.data is not true.\n// backdropBoundary && !warningButtonStatus?.data\n\ninterface WriteStoriesModalProps {\n onFinish: () => void;\n api: API;\n addonsStore: AddonStore;\n skipOnboarding: () => void;\n isOpen: boolean;\n}\n\nexport const WriteStoriesModal: FC<WriteStoriesModalProps> = ({\n onFinish,\n api,\n addonsStore,\n skipOnboarding,\n isOpen,\n}) => {\n const [step, setStep] = useState<\n \"imports\" | \"meta\" | \"story\" | \"args\" | \"customStory\"\n >(\"imports\");\n\n const stepIndex = {\n imports: 1,\n meta: 2,\n story: 3,\n args: 4,\n customStory: 5,\n };\n\n const [isWarningStoryCopied, setWarningStoryCopied] = useState(false);\n\n const [clipboardButtonRef, clipboardButtonBounds] = useMeasure();\n\n const buttonPath = useGetButtonPath();\n const warningButtonStatus = useGetWarningButtonStatus(\n step === \"customStory\",\n api,\n addonsStore\n );\n const backdropBoundary = useGetBackdropBoundary(\n \"syntax-highlighter-backdrop\",\n step === \"customStory\"\n );\n\n const project = useGetProject();\n const isJavascript = project?.data?.language === \"javascript\";\n\n const data = isJavascript\n ? dataJavascript\n : project?.data?.framework.name === \"@storybook/nextjs\"\n ? dataTypescriptNextjs\n : dataTypescript;\n\n const copyWarningStory = () => {\n const warningContent = data[4][0].code;\n navigator.clipboard.writeText(\n warningContent.replace(\"// Copy the code below\", \"\")\n );\n setWarningStoryCopied(true);\n };\n\n return (\n <Modal width={740} height={430} isOpen={isOpen} setOpen={skipOnboarding}>\n {({ Title, Description, Close }) => (\n <ModalContent>\n {data ? (\n <SyntaxHighlighter\n activeStep={stepIndex[step] || 1}\n data={data}\n width={480}\n />\n ) : null}\n {backdropBoundary && !warningButtonStatus?.data && (\n <Button\n ref={clipboardButtonRef}\n onClick={() => {\n copyWarningStory();\n }}\n style={{\n position: \"absolute\",\n top: backdropBoundary.top + backdropBoundary.height - 45,\n left:\n backdropBoundary.left +\n backdropBoundary.width -\n (clipboardButtonBounds.width ?? 0) -\n 10,\n zIndex: 1000,\n }}\n >\n {isWarningStoryCopied ? \"Copied to clipboard\" : \"Copy code\"}\n </Button>\n )}\n <Main>\n <Header>\n <Title asChild>\n <ModalTitle>\n <Icons icon=\"bookmarkhollow\" width={13} />\n <span>How to write a story</span>\n </ModalTitle>\n </Title>\n <Close asChild>\n <Icons style={{ cursor: \"pointer\" }} icon=\"cross\" width={13} />\n </Close>\n </Header>\n <Description asChild>\n <Content>\n {step === \"imports\" && (\n <>\n <div>\n <h3>Imports</h3>\n <p>\n First, import Meta and StoryObj for type safety and\n autocompletion in TypeScript stories.\n </p>\n <p>\n Next, import a component. In this case, the Button\n component.\n </p>\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"meta\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"meta\" && (\n <>\n <div>\n <h3>Meta</h3>\n <p>\n The default export, Meta, contains metadata about this\n component's stories. The title field controls where\n stories appear in the sidebar.\n </p>\n <Image\n width=\"204\"\n alt=\"Title property pointing to Storybook's sidebar\"\n src={titleSidebarImg}\n />\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"story\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"story\" && (\n <>\n <div>\n <h3>Story</h3>\n <p>\n Each named export is a story. Its contents specify how\n the story is rendered in addition to other configuration\n options.\n </p>\n <Image\n width=\"190\"\n alt=\"Story export pointing to the sidebar entry of the story\"\n src={storyNameSidebarImg}\n />\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"args\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"args\" && (\n <>\n <div>\n <h3>Args</h3>\n <p>\n Args are inputs that are passed to the component, which\n Storybook uses to render the component in different\n states. In React, args = props. They also specify the\n initial control settings for the story.\n </p>\n <Image\n alt=\"Args mapped to their controls in Storybook\"\n width=\"253\"\n src={argsImg}\n />\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"customStory\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"customStory\" &&\n (!warningButtonStatus?.error ? (\n <>\n <div>\n <h3>Create your first story</h3>\n <p>\n Now it's your turn. See how easy it is to create your\n first story by following these steps below.\n </p>\n <List>\n <ListItem\n isCompleted={\n isWarningStoryCopied || warningButtonStatus?.data\n }\n index={1}\n >\n Copy the Warning story\n </ListItem>\n <ListItem\n isCompleted={warningButtonStatus?.data}\n index={2}\n >\n Open{\" \"}\n {buttonPath?.data ? (\n <SpanHighlight>{buttonPath.data}</SpanHighlight>\n ) : (\n <>the Button Story</>\n )}{\" \"}\n in your current working directory\n </ListItem>\n <ListItem\n isCompleted={warningButtonStatus?.data}\n index={3}\n >\n Paste it at the bottom of the file\n </ListItem>\n </List>\n </div>\n {warningButtonStatus?.data ? (\n <Button\n onClick={() => {\n onFinish();\n }}\n >\n Go to story\n </Button>\n ) : null}\n </>\n ) : null)}\n </Content>\n </Description>\n <Background>\n <Circle1 />\n <Circle2 />\n <Circle3 />\n </Background>\n </Main>\n </ModalContent>\n )}\n </Modal>\n );\n};\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { ThemeProvider, ensure, themes } from \"@storybook/theming\";\nimport { STORY_CHANGED, CURRENT_STORY_WAS_SET } from \"@storybook/core-events\";\nimport { addons, type API } from \"@storybook/manager-api\";\n\nimport { GuidedTour } from \"./features/GuidedTour/GuidedTour\";\nimport { WelcomeModal } from \"./features/WelcomeModal/WelcomeModal\";\nimport { WriteStoriesModal } from \"./features/WriteStoriesModal/WriteStoriesModal\";\nimport { Confetti } from \"./components/Confetti/Confetti\";\n\ntype Step =\n | \"1:Welcome\"\n | \"2:StorybookTour\"\n | \"3:WriteYourStory\"\n | \"4:VisitNewStory\"\n | \"5:ConfigureYourProject\";\n\nconst theme = ensure(themes.light);\n\nexport default function App({ api }: { api: API }) {\n const [enabled, setEnabled] = useState(true);\n const [showConfetti, setShowConfetti] = useState(false);\n const [step, setStep] = useState<Step>(\"1:Welcome\");\n\n const skipOnboarding = useCallback(() => {\n // remove onboarding query parameter from current url\n const url = new URL(window.location.href);\n url.searchParams.delete(\"onboarding\");\n const path = decodeURIComponent(url.searchParams.get(\"path\"));\n url.search = `?path=${path}`;\n history.replaceState({}, \"\", url.href);\n setEnabled(false);\n }, [setEnabled]);\n\n useEffect(() => {\n let stepTimeout: number;\n if (step === \"4:VisitNewStory\") {\n setShowConfetti(true);\n stepTimeout = window.setTimeout(() => {\n setStep(\"5:ConfigureYourProject\");\n }, 2000);\n }\n\n return () => {\n clearTimeout(stepTimeout);\n };\n }, [step]);\n\n useEffect(() => {\n api.once(CURRENT_STORY_WAS_SET, ({ storyId }) => {\n api.setQueryParams({ onboarding: \"true\" });\n // make sure the initial state is set correctly:\n // 1. Selected story is primary button\n // 2. The addon panel is opened, in the bottom and the controls tab is selected\n if (storyId !== \"example-button--primary\") {\n api.selectStory(\"example-button--primary\", undefined, {\n ref: undefined,\n });\n }\n api.togglePanel(true);\n api.togglePanelPosition(\"bottom\");\n api.setSelectedPanel(\"addon-controls\");\n });\n }, []);\n\n useEffect(() => {\n const onStoryChanged = (storyId: string) => {\n if (storyId === \"configure-your-project--docs\") {\n skipOnboarding();\n }\n };\n\n api.on(STORY_CHANGED, onStoryChanged);\n\n return () => {\n api.off(STORY_CHANGED, onStoryChanged);\n };\n }, []);\n\n return (\n <ThemeProvider theme={theme}>\n {showConfetti && (\n <Confetti\n numberOfPieces={1000}\n initialVelocityY={3}\n recycle={false}\n onConfettiComplete={(confetti) => {\n confetti.reset();\n setShowConfetti(false);\n }}\n />\n )}\n <WelcomeModal\n onProceed={() => setStep(\"2:StorybookTour\")}\n isOpen={enabled && step === \"1:Welcome\"}\n skipOnboarding={skipOnboarding}\n />\n {(step === \"2:StorybookTour\" || step === \"5:ConfigureYourProject\") && (\n <GuidedTour\n api={api}\n isFinalStep={step === \"5:ConfigureYourProject\"}\n onFirstTourDone={() => {\n setStep(\"3:WriteYourStory\");\n }}\n />\n )}\n <WriteStoriesModal\n api={api}\n addonsStore={addons}\n onFinish={() => {\n api.selectStory(\"example-button--warning\");\n setStep(\"4:VisitNewStory\");\n }}\n isOpen={enabled && step === \"3:WriteYourStory\"}\n skipOnboarding={skipOnboarding}\n />\n </ThemeProvider>\n );\n}\n","import ReactDOM from \"react-dom\";\nimport React, { lazy, Suspense } from \"react\";\nimport { addons } from \"@storybook/manager-api\";\n\nconst App = lazy(() => import(\"./App\"));\n\n// The addon is enabled only when:\n// 1. The onboarding query parameter is present\n// 2. The example button stories are present\naddons.register(\"@storybook/addon-onboarding\", async (api) => {\n const urlState = api.getUrlState();\n const isOnboarding = urlState.path === '/onboarding' || urlState.queryParams.onboarding === 'true';\n\n if (!isOnboarding) {\n return;\n }\n\n let hasButtonStories = false;\n try {\n const response = await fetch(\"./index.json\");\n const index = await response.json();\n hasButtonStories = !!index.entries[\"example-button--primary\"];\n } catch (e) {}\n\n if (hasButtonStories) {\n // Add a new DOM element to document.body, where we will bootstrap our React app\n const domNode = document.createElement(\"div\");\n\n domNode.id = \"addon-onboarding\";\n // Append the new DOM element to document.body\n document.body.appendChild(domNode);\n\n // Render the React app\n ReactDOM.render(\n <Suspense fallback={<div>Loading...</div>}>\n <App api={api} />\n </Suspense>,\n domNode\n );\n }\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/PulsatingEffect/PulsatingEffect.tsx","../src/components/Confetti/Confetti.tsx","../src/components/Button/Button.tsx","../src/features/GuidedTour/Tooltip.tsx","../src/features/GuidedTour/GuidedTour.tsx","../src/components/Modal/Modal.styled.tsx","../src/components/Modal/Modal.tsx","../src/features/WelcomeModal/StorybookLogo.tsx","../src/features/WelcomeModal/WelcomeModal.styled.tsx","../src/features/WelcomeModal/WelcomeModal.tsx","../src/features/WriteStoriesModal/WriteStoriesModal.styled.tsx","../src/components/SyntaxHighlighter/SyntaxHighlighter.styled.tsx","../src/components/SyntaxHighlighter/Snippet/Snippet.styled.tsx","../src/components/SyntaxHighlighter/Snippet/Snippet.tsx","../src/components/SyntaxHighlighter/SyntaxHighlighter.tsx","../src/components/List/List.styled.tsx","../src/components/List/List.tsx","../src/components/List/ListItem/ListItem.styled.tsx","../src/components/List/ListItem/ListItem.tsx","../src/features/WriteStoriesModal/hooks/useGetButtonPath.tsx","../src/features/WriteStoriesModal/hooks/useGetWarningButtonStatus.tsx","../src/features/WriteStoriesModal/hooks/useGetBackdropBoundary.tsx","../src/features/WriteStoriesModal/code/javascript.tsx","../src/features/WriteStoriesModal/code/typescript.tsx","../src/features/WriteStoriesModal/code/nextjs-typescript.tsx","../src/features/WriteStoriesModal/hooks/useGetFrameworkName.tsx","../src/features/WriteStoriesModal/WriteStoriesModal.tsx","../src/App.tsx","../src/manager.tsx"],"names":["useEffect","PulsatingEffect","targetSelector","element","keyframes","style","styleElement","init_PulsatingEffect","__esmMin","ReactConfetti","React","styled","createPortal","useState","Confetti","top","left","width","height","confettiProps","confettiContainer","container","Wrapper","init_Confetti","Button","init_Button","theme","TooltipBody","TooltipTitle","TooltipContent","TooltipFooter","Tooltip","init_Tooltip","step","primaryProps","tooltipProps","Joyride","STATUS","STORY_ARGS_UPDATED","GuidedTour","api","isFinalStep","onFirstTourDone","stepIndex","setStepIndex","data","init_GuidedTour","css","Dialog","motion","StyledOverlay","StyledContent","ContentWrapper","init_Modal_styled","init_Modal","children","contentProps","ref","initial","animate","exit","AnimatePresence","Modal","isOpen","setOpen","onEscapeKeyDown","onInteractOutside","ev","StorybookLogo","init_StorybookLogo","Icons","ModalContentWrapper","TopContent","Title","Description","SkipButton","StyledIcon","Background","circle1Anim","Circle1","circle2Anim","Circle2","circle3Anim","Circle3","StyledTitle","StyledDescription","init_WelcomeModal_styled","WelcomeModal","init_WelcomeModal","skipOnboarding","onProceed","Close","ModalContent","Main","Header","ModalTitle","Content","SpanHighlight","Image","init_WriteStoriesModal_styled","Code","Container","Backdrop","init_SyntaxHighlighter_styled","SnippetWrapper","init_Snippet_styled","Fragment","forwardRef","StorybookSyntaxHighlighter","ThemeProvider","ensure","themes","wrapperVariants","Snippet","init_Snippet","active","content","open","customStyle","toggle","code","i","createRef","useCallback","useLayoutEffect","useMemo","OFFSET","SyntaxHighlighter","init_SyntaxHighlighter","activeStep","steps","setSteps","refs","getYPos","idx","yPos","setNewSteps","newSteps","backdropHeight","finalSteps","resizeObserver","ListWrapper","init_List_styled","List","init_List","ListItemWrapper","ListItemContentWrapper","ListItemIndexWrapper","init_ListItem_styled","isCompleted","ListItem","init_ListItem","index","useGetButtonPath","buttonPath","setButtonPath","e","init_useGetButtonPath","STORY_INDEX_INVALIDATED","STORY_RENDERED","useGetWarningButtonStatus","init_useGetWarningButtonStatus","addonsStore","status","setStatus","getWarningButtonStatus","useGetBackdropBoundary","init_useGetBackdropBoundary","className","boundary","setBoundary","javascript_default","init_javascript","typescript_default","init_typescript","nextjs_typescript_default","init_nextjs_typescript","useGetProject","project","setProject","json","init_useGetFrameworkName","useMeasure","WriteStoriesModal","init_WriteStoriesModal","init_title_sidebar","init_story_name_sidebar","init_args","onFinish","setStep","isWarningStoryCopied","setWarningStoryCopied","clipboardButtonRef","clipboardButtonBounds","warningButtonStatus","backdropBoundary","copyWarningStory","warningContent","title_sidebar_default","story_name_sidebar_default","args_default","App_exports","__export","App","STORY_CHANGED","CURRENT_STORY_WAS_SET","addons","enabled","setEnabled","showConfetti","setShowConfetti","url","path","stepTimeout","storyId","onStoryChanged","confetti","init_App","ReactDOM","lazy","Suspense","urlState","hasButtonStories","domNode"],"mappings":"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","sourcesContent":["import { useEffect } from \"react\";\n\nexport function PulsatingEffect({\n targetSelector,\n}: {\n targetSelector: string;\n}): JSX.Element {\n useEffect(() => {\n const element = document.querySelector<HTMLElement>(targetSelector);\n\n if (element) {\n element.style.animation = \"pulsate 3s infinite\";\n element.style.transformOrigin = \"center\";\n element.style.animationTimingFunction = \"ease-in-out\";\n\n const keyframes = `\n @keyframes pulsate {\n 0% {\n box-shadow: 0 0 0 0 rgba(2, 156, 253, 0.7), 0 0 0 0 rgba(2, 156, 253, 0.4);\n }\n 50% {\n box-shadow: 0 0 0 20px rgba(2, 156, 253, 0), 0 0 0 40px rgba(2, 156, 253, 0);\n }\n 100% {\n box-shadow: 0 0 0 0 rgba(2, 156, 253, 0), 0 0 0 0 rgba(2, 156, 253, 0);\n }\n }\n `;\n const style = document.createElement(\"style\");\n style.id = \"sb-onboarding-pulsating-effect\";\n style.innerHTML = keyframes;\n document.head.appendChild(style);\n }\n\n return () => {\n const styleElement = document.querySelector(\n \"#sb-onboarding-pulsating-effect\"\n );\n\n if (styleElement) {\n styleElement.remove();\n }\n\n if (element) {\n element.style.animation = \"auto\";\n }\n };\n }, [targetSelector]);\n\n return null;\n}\n","import ReactConfetti from \"react-confetti\";\nimport React, { useEffect } from \"react\";\nimport { styled } from \"@storybook/theming\";\nimport { createPortal } from \"react-dom\";\nimport { useState } from \"react\";\n\ninterface ConfettiProps\n extends Omit<React.ComponentProps<typeof ReactConfetti>, \"drawShape\"> {\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n}\n\nconst Wrapper = styled.div<{\n width: number;\n height: number;\n top: number;\n left: number;\n}>(({ width, height, left, top }) => ({\n width: `${width}px`,\n height: `${height}px`,\n left: `${left}px`,\n top: `${top}px`,\n position: \"relative\",\n overflow: \"hidden\",\n}));\n\nexport function Confetti({\n top = 0,\n left = 0,\n width = window.innerWidth,\n height = window.innerHeight,\n ...confettiProps\n}: ConfettiProps): React.ReactPortal {\n const [confettiContainer] = useState(() => {\n const container = document.createElement(\"div\");\n container.setAttribute(\"id\", \"confetti-container\");\n container.setAttribute(\n \"style\",\n \"position: fixed; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; z-index: 9999;\"\n );\n\n return container;\n });\n\n useEffect(() => {\n document.body.appendChild(confettiContainer);\n\n return () => {\n document.body.removeChild(confettiContainer);\n };\n }, []);\n\n return createPortal(\n <Wrapper top={top} left={left} width={width} height={height}>\n <ReactConfetti {...confettiProps} />\n </Wrapper>,\n confettiContainer\n );\n}\n","import { styled } from \"@storybook/theming\";\nimport React, { FC, forwardRef } from \"react\";\n\nexport interface ButtonProps {\n children: string;\n onClick?: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n}\n\nexport const Button = styled.button`\n all: unset;\n border: 0;\n border-radius: 0.25rem;\n cursor: pointer;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.75rem;\n background: ${({ theme }) => theme.color.secondary};\n color: ${({ theme }) => theme.color.lightest};\n height: 32px;\n font-size: 0.8125rem;\n font-weight: 700;\n font-family: ${({ theme }) => theme.typography.fonts.base};\n transition: all 0.16s ease-in-out;\n text-decoration: none;\n\n &:hover {\n background-color: #0b94eb;\n }\n\n &:focus {\n box-shadow: inset 0 0 0 2px rgba(0, 0, 0, 0.1);\n }\n`;\n","import React from \"react\";\nimport { styled } from \"@storybook/theming\";\nimport { TooltipRenderProps } from \"react-joyride\";\nimport { Button } from \"../../components/Button/Button\";\n\nconst TooltipBody = styled.div`\n background: #fff;\n width: 260px;\n padding: 15px;\n border-radius: 5px;\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n`;\n\nconst TooltipTitle = styled.div`\n font-size: 13px;\n font-weight: 700;\n color: ${({ theme }) => theme.color.darkest};\n`;\n\nconst TooltipContent = styled.p`\n font-size: 13px;\n text-align: start;\n color: ${({ theme }) => theme.color.mediumdark};\n margin: 0;\n margin-top: 5px;\n`;\n\nconst TooltipFooter = styled.div`\n display: flex;\n justify-content: flex-end;\n margin-top: 15px;\n`;\n\ntype TooltipProps = TooltipRenderProps & {\n step: TooltipRenderProps[\"step\"] & { hideNextButton?: boolean };\n};\n\nexport const Tooltip = ({ step, primaryProps, tooltipProps }: TooltipProps) => {\n return (\n <TooltipBody {...tooltipProps}>\n <Wrapper>\n {step.title && <TooltipTitle>{step.title}</TooltipTitle>}\n <TooltipContent>{step.content}</TooltipContent>\n </Wrapper>\n {!step.hideNextButton && (\n <TooltipFooter id=\"buttonNext\">\n <Button {...primaryProps}>Next</Button>\n </TooltipFooter>\n )}\n </TooltipBody>\n );\n};\n","import React, { useEffect, useState } from \"react\";\nimport Joyride, { CallBackProps, STATUS, Step } from \"react-joyride\";\n\nimport { PulsatingEffect } from \"../../components/PulsatingEffect/PulsatingEffect\";\nimport { Confetti } from \"../../components/Confetti/Confetti\";\nimport { API } from \"@storybook/manager-api\";\nimport { STORY_ARGS_UPDATED } from \"@storybook/core-events\";\nimport { Tooltip } from \"./Tooltip\";\n\ntype GuidedTourStep = Step & { hideNextButton?: boolean };\n\nexport function GuidedTour({\n api,\n isFinalStep,\n onFirstTourDone,\n}: {\n api: API;\n isFinalStep?: boolean;\n onFirstTourDone: () => void;\n}) {\n const [stepIndex, setStepIndex] = useState<number>();\n\n useEffect(() => {\n api.once(STORY_ARGS_UPDATED, () => {\n setStepIndex(3);\n });\n }, []);\n\n const steps: GuidedTourStep[] = isFinalStep\n ? [\n {\n target: \"#configure-your-project--docs\",\n title: \"Continue setting up your project\",\n content:\n \"You nailed the basics. Now get started writing stories for your own components.\",\n placement: \"right\",\n disableOverlay: true,\n disableBeacon: true,\n floaterProps: {\n disableAnimation: true,\n },\n hideNextButton: true,\n },\n ]\n : [\n {\n target: \"#storybook-explorer-tree > div\",\n title: \"Storybook is built from stories\",\n content:\n \"Storybook uses stories to represent the key states supported by each of your components. For example: this Button component has four stories.\",\n placement: \"right\",\n disableBeacon: true,\n styles: {\n spotlight: {\n transform: \"translateY(30px)\",\n },\n },\n floaterProps: {\n disableAnimation: true,\n },\n },\n {\n target: \"#storybook-preview-iframe\",\n title: \"Storybook previews are interactive\",\n content:\n \"Whenever you modify code or stories, Storybook automatically updates how it previews your components.\",\n placement: \"bottom\",\n },\n {\n target: \"#root div[role=main]\",\n title: \"Interactive story playground\",\n content: (\n <>\n See how a story renders with different data and state without\n touching code.\n <br />\n <br />\n Try it out by pressing this button.\n <PulsatingEffect targetSelector=\"#control-primary\" />\n </>\n ),\n placement: \"right\",\n spotlightClicks: true,\n floaterProps: {\n target: \"#control-primary\",\n },\n hideNextButton: true,\n },\n {\n target: \"#control-primary\",\n title: \"Congratulations!\",\n content: (\n <>\n You've learned how to control your stories interactively. Now:\n let's explore how to write your first story.\n <Confetti numberOfPieces={100} />\n </>\n ),\n placement: \"right\",\n disableOverlay: true,\n },\n ];\n\n return (\n <Joyride\n steps={steps}\n continuous\n stepIndex={stepIndex}\n spotlightPadding={0}\n hideBackButton\n disableCloseOnEsc\n disableOverlayClose\n disableScrolling\n hideCloseButton\n callback={(data: CallBackProps) => {\n if (!isFinalStep && data.status === STATUS.FINISHED) {\n onFirstTourDone();\n }\n }}\n floaterProps={{\n styles: {\n floater: {\n padding: 0,\n paddingLeft: 8,\n paddingTop: 8,\n filter:\n \"drop-shadow(0px 5px 5px rgba(0,0,0,0.05)) drop-shadow(0 1px 3px rgba(0,0,0,0.1))\",\n },\n },\n }}\n tooltipComponent={Tooltip}\n styles={{\n spotlight: {\n border: \"solid 2px #004c7c\",\n },\n overlay: {\n backgroundColor: \"rgba(0, 0, 0, 0.48)\",\n },\n options: {\n zIndex: 10000,\n primaryColor: \"#029CFD\",\n },\n }}\n />\n );\n}\n","import { css, styled } from \"@storybook/theming\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport React from \"react\";\nimport { motion } from \"framer-motion\";\nimport { animate, exit, initial } from \"./Modal\";\n\nexport const StyledOverlay = styled(motion.div)`\n background-color: rgba(27, 28, 29, 0.48);\n position: fixed;\n inset: 0px;\n width: 100%;\n height: 100%;\n`;\n\nexport const StyledContent = styled(motion.div)<{\n width: number;\n height: number;\n}>(\n ({ width, height }) => css`\n background-color: white;\n border-radius: 6px;\n box-shadow: rgba(14, 18, 22, 0.35) 0px 10px 38px -10px;\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: ${width ?? 740}px;\n height: ${height ? `${height}px` : \"auto\"};\n max-width: calc(100% - 40px);\n max-height: 85vh;\n overflow: hidden;\n `\n);\n\nexport const ContentWrapper = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof StyledContent> &\n React.ComponentProps<typeof Dialog.Content>\n>(({ width, height, children, ...contentProps }, ref) => (\n <Dialog.Content ref={ref} asChild {...contentProps}>\n <StyledContent\n width={width}\n height={height}\n initial={initial}\n animate={animate}\n exit={exit}\n >\n {children}\n </StyledContent>\n </Dialog.Content>\n));\n","import React from \"react\";\nimport * as Dialog from \"@radix-ui/react-dialog\";\nimport { ContentWrapper, StyledOverlay } from \"./Modal.styled\";\nimport { AnimatePresence } from \"framer-motion\";\n\ntype ContentProps = React.ComponentProps<typeof ContentWrapper>;\n\ninterface ModalProps {\n width?: number;\n height?: number;\n isOpen?: boolean;\n setOpen?: (open: boolean) => void;\n children: (props: {\n Title: typeof Dialog.Title;\n Description: typeof Dialog.Description;\n Close: typeof Dialog.Close;\n }) => React.ReactNode;\n onEscapeKeyDown?: ContentProps[\"onEscapeKeyDown\"];\n onInteractOutside?: ContentProps[\"onInteractOutside\"];\n}\n\nexport const initial = { opacity: 0 };\nexport const animate = { opacity: 1, transition: { duration: 0.3 } };\nexport const exit = { opacity: 0, transition: { duration: 0.3 } };\n\nexport function Modal({\n children,\n width,\n height,\n isOpen,\n setOpen,\n onEscapeKeyDown,\n onInteractOutside = (ev) => ev.preventDefault(),\n}: ModalProps) {\n return (\n <Dialog.Root open={isOpen} onOpenChange={setOpen}>\n <AnimatePresence>\n {isOpen && (\n <Dialog.Portal forceMount>\n <Dialog.Overlay asChild>\n <StyledOverlay initial={initial} animate={animate} exit={exit} />\n </Dialog.Overlay>\n <ContentWrapper\n width={width}\n height={height}\n onInteractOutside={onInteractOutside}\n onEscapeKeyDown={onEscapeKeyDown}\n >\n {children({\n Title: Dialog.Title,\n Description: Dialog.Description,\n Close: Dialog.Close,\n })}\n </ContentWrapper>\n </Dialog.Portal>\n )}\n </AnimatePresence>\n </Dialog.Root>\n );\n}\n","import React from \"react\";\n\nexport function StorybookLogo() {\n return (\n <svg\n width=\"32px\"\n height=\"40px\"\n viewBox=\"0 0 256 319\"\n preserveAspectRatio=\"xMidYMid\"\n >\n <defs>\n <path\n d=\"M9.87245893,293.324145 L0.0114611411,30.5732167 C-0.314208957,21.8955842 6.33948896,14.5413918 15.0063196,13.9997149 L238.494389,0.0317105427 C247.316188,-0.519651867 254.914637,6.18486163 255.466,15.0066607 C255.486773,15.339032 255.497167,15.6719708 255.497167,16.0049907 L255.497167,302.318596 C255.497167,311.157608 248.331732,318.323043 239.492719,318.323043 C239.253266,318.323043 239.013844,318.317669 238.774632,318.306926 L25.1475605,308.712253 C16.8276309,308.338578 10.1847994,301.646603 9.87245893,293.324145 L9.87245893,293.324145 Z\"\n id=\"path-1\"\n ></path>\n </defs>\n <g>\n <mask id=\"mask-2\" fill=\"white\">\n <use xlinkHref=\"#path-1\"></use>\n </mask>\n <use fill=\"#FF4785\" fillRule=\"nonzero\" xlinkHref=\"#path-1\"></use>\n <path\n d=\"M188.665358,39.126973 L190.191903,2.41148534 L220.883535,0 L222.205755,37.8634126 C222.251771,39.1811466 221.22084,40.2866846 219.903106,40.3327009 C219.338869,40.3524045 218.785907,40.1715096 218.342409,39.8221376 L206.506729,30.4984116 L192.493574,41.1282444 C191.443077,41.9251106 189.945493,41.7195021 189.148627,40.6690048 C188.813185,40.2267976 188.6423,39.6815326 188.665358,39.126973 Z M149.413703,119.980309 C149.413703,126.206975 191.355678,123.222696 196.986019,118.848893 C196.986019,76.4467826 174.234041,54.1651411 132.57133,54.1651411 C90.9086182,54.1651411 67.5656805,76.7934542 67.5656805,110.735941 C67.5656805,169.85244 147.345341,170.983856 147.345341,203.229219 C147.345341,212.280549 142.913138,217.654777 133.162291,217.654777 C120.456641,217.654777 115.433477,211.165914 116.024438,189.103298 C116.024438,184.317101 67.5656805,182.824962 66.0882793,189.103298 C62.3262146,242.56887 95.6363019,257.990394 133.753251,257.990394 C170.688279,257.990394 199.645341,238.303123 199.645341,202.663511 C199.645341,139.304202 118.683759,141.001326 118.683759,109.604526 C118.683759,96.8760922 128.139127,95.178968 133.753251,95.178968 C139.662855,95.178968 150.300143,96.2205679 149.413703,119.980309 Z\"\n fill=\"#FFFFFF\"\n fillRule=\"nonzero\"\n mask=\"url(#mask-2)\"\n ></path>\n </g>\n </svg>\n );\n}\n","import { Icons } from \"@storybook/components\";\nimport { keyframes, styled } from \"@storybook/theming\";\n\nexport const ModalContentWrapper = styled.div`\n border-radius: 5px;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n justify-content: space-between;\n`;\n\nexport const TopContent = styled.div`\n display: flex;\n flex: 1;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nexport const Title = styled.h1`\n margin: 0;\n margin-top: 20px;\n margin-bottom: 5px;\n color: ${({ theme }) => theme.color.darkest};\n font-weight: ${({ theme }) => theme.typography.weight.bold};\n font-size: ${({ theme }) => theme.typography.size.m1}px;\n line-height: ${({ theme }) => theme.typography.size.m3}px;\n`;\n\nexport const Description = styled.p`\n margin: 0;\n margin-bottom: 20px;\n max-width: 320px;\n text-align: center;\n font-size: ${({ theme }) => theme.typography.size.s2}px;\n font-weight: ${({ theme }) => theme.typography.weight.regular};\n line-height: ${({ theme }) => theme.typography.size.m1}px;\n color: ${({ theme }) => theme.color.darker};\n`;\n\nexport const SkipButton = styled.button`\n all: unset;\n cursor: pointer;\n font-size: 13px;\n color: #798186;\n padding-bottom: 20px;\n\n &:focus-visible {\n outline: auto;\n }\n`;\n\nexport const StyledIcon = styled(Icons)`\n margin-left: 2px;\n height: 10px;\n`;\n\nexport const Background = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n overflow: hidden;\n`;\n\nexport const circle1Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(-200px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle1 = styled.div`\n position: absolute;\n width: 1200px;\n height: 1200px;\n left: -200px;\n top: -900px;\n background: radial-gradient(\n circle at center,\n rgba(253, 255, 147, 1) 0%,\n rgba(253, 255, 147, 0) 70%\n );\n animation: ${circle1Anim} 4s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 3;\n`;\n\nexport const circle2Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(400px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle2 = styled.div`\n position: absolute;\n width: 1200px;\n height: 1200px;\n left: -600px;\n top: -840px;\n background: radial-gradient(\n circle at center,\n rgba(255, 119, 119, 1) 0%,\n rgba(255, 119, 119, 0) 70%\n );\n animation: ${circle2Anim} 6s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 2;\n`;\n\nexport const circle3Anim = keyframes`\n 0% { transform: translate(600px, -40px) }\n 50% { transform: translate(600px, -200px) }\n 100% { transform: translate(600px, -40px) }\n`;\n\nexport const Circle3 = styled.div`\n position: absolute;\n width: 1200px;\n height: 1200px;\n left: -600px;\n top: -840px;\n background: radial-gradient(\n circle at center,\n rgba(119, 255, 247, 0.8) 0%,\n rgba(119, 255, 247, 0) 70%\n );\n animation: ${circle3Anim} 4s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 4;\n`;\n\nexport const StyledTitle = styled.h2`\n color: #000;\n font-weight: 700;\n font-size: 20px;\n line-height: 20px;\n`;\nexport const StyledDescription = styled.p`\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n color: #454e54;\n`;\n","import React, { FC } from \"react\";\n\nimport { Button } from \"../../components/Button/Button\";\nimport { Modal } from \"../../components/Modal/Modal\";\nimport { StorybookLogo } from \"./StorybookLogo\";\nimport {\n ModalContentWrapper,\n SkipButton,\n StyledIcon,\n Title,\n Description,\n Background,\n Circle1,\n Circle2,\n Circle3,\n TopContent,\n} from \"./WelcomeModal.styled\";\n\ninterface WelcomeModalProps {\n skipOnboarding: () => void;\n onProceed: () => void;\n isOpen: boolean;\n}\n\nexport const WelcomeModal: FC<WelcomeModalProps> = ({\n skipOnboarding,\n onProceed,\n isOpen,\n}) => {\n return (\n <Modal width={540} height={430} isOpen={isOpen} setOpen={skipOnboarding}>\n {({ Close }) => (\n <ModalContentWrapper data-chromatic=\"ignore\">\n <TopContent>\n <StorybookLogo />\n <Title>Welcome to Storybook</Title>\n <Description>\n Storybook helps you develop UI components. Learn the basics in a\n few simple steps.\n </Description>\n <Button style={{ marginTop: 4 }} onClick={onProceed}>\n Start your 3 minute tour\n </Button>\n </TopContent>\n <Close asChild>\n <SkipButton>\n Skip tour\n <StyledIcon icon=\"arrowright\" />\n </SkipButton>\n </Close>\n <Background>\n <Circle1 />\n <Circle2 />\n <Circle3 />\n </Background>\n </ModalContentWrapper>\n )}\n </Modal>\n );\n};\n","import { keyframes, styled } from \"@storybook/theming\";\n\nexport const ModalContent = styled.div`\n display: flex;\n flex-direction: row;\n height: 100%;\n max-height: 85vh;\n`;\n\nexport const Main = styled.div`\n position: relative;\n flex: 1;\n display: flex;\n flex-direction: column;\n font-family: ${({ theme }) => theme.typography.fonts.base};\n`;\n\nexport const Header = styled.div`\n box-sizing: border-box;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 0 15px;\n border-bottom: 1px solid ${({ theme }) => theme.appBorderColor};\n height: 40px;\n`;\n\nexport const ModalTitle = styled.div`\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 13px;\n font-weight: bold;\n color: ${({ theme }) => theme.color.darkest};\n\n span {\n margin-top: 2px;\n }\n`;\n\nexport const Content = styled.div`\n font-size: 13px;\n padding: 15px;\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n justify-content: space-between;\n color: ${({ theme }) => theme.color.darker};\n\n h3 {\n font-size: 13px;\n font-weight: bold;\n padding: 0;\n margin: 0;\n }\n`;\n\nexport const SpanHighlight = styled.span`\n color: ${({ theme }) => theme.color.secondary};\n display: inline-block;\n border-radius: 4px;\n padding: 0.2em 0.4em;\n opacity: 0.8;\n background-color: ${({ theme }) => theme.color.secondary}20;\n font-weight: bold;\n`;\n\nexport const Image = styled.img`\n max-width: 100%;\n margin-top: 1em;\n`;\n\nexport const Background = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: -1;\n overflow: hidden;\n`;\n\nexport const circle1Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(120px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle1 = styled.div`\n position: absolute;\n width: 350px;\n height: 350px;\n left: -160px;\n top: -260px;\n background: radial-gradient(\n circle at center,\n rgba(255, 119, 119, 1) 0%,\n rgba(255, 119, 119, 0) 70%\n );\n animation: ${circle1Anim} 8s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 2;\n`;\n\nexport const circle2Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 33% { transform: translate(-64px, 0px) }\n 66% { transform: translate(120px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle2 = styled.div`\n position: absolute;\n width: 350px;\n height: 350px;\n left: -54px;\n top: -250px;\n background: radial-gradient(\n circle at center,\n rgba(253, 255, 147, 1) 0%,\n rgba(253, 255, 147, 0) 70%\n );\n animation: ${circle2Anim} 12s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 3;\n`;\n\nexport const circle3Anim = keyframes`\n 0% { transform: translate(0px, 0px) }\n 50% { transform: translate(-120px, 0px) }\n 100% { transform: translate(0px, 0px) }\n`;\n\nexport const Circle3 = styled.div`\n position: absolute;\n width: 350px;\n height: 350px;\n left: 150px;\n top: -220px;\n background: radial-gradient(\n circle at center,\n rgba(119, 255, 247, 0.8) 0%,\n rgba(119, 255, 247, 0) 70%\n );\n animation: ${circle3Anim} 4s linear infinite;\n animation-timing-function: ease-in-out;\n z-index: 4;\n`;\n","import { styled } from \"@storybook/theming\";\nimport { motion } from \"framer-motion\";\n\nexport const Code = styled(motion.div)`\n position: relative;\n z-index: 2;\n`;\n\nexport const Container = styled.div<{ width: number }>`\n position: relative;\n box-sizing: border-box;\n background: #171c23;\n width: ${({ width }) => width}px;\n height: 100%;\n overflow: hidden;\n padding-left: 15px;\n padding-right: 15px;\n padding-top: 6px;\n\n && {\n pre {\n background: transparent !important;\n margin: 0 !important;\n padding: 0 !important;\n }\n }\n`;\n\nexport const Backdrop = styled(motion.div)`\n background: #143046;\n position: absolute;\n z-index: 1;\n left: 0;\n width: 100%;\n height: 200px;\n`;\n","import { styled } from \"@storybook/theming\";\nimport { motion } from \"framer-motion\";\n\nexport const SnippetWrapper = styled(motion.div)<{ active?: boolean }>`\n position: relative;\n padding-top: 12px;\n padding-bottom: 12px;\n`;\n","import { motion } from \"framer-motion\";\nimport { Fragment, forwardRef } from \"react\";\nimport { SnippetWrapper } from \"./Snippet.styled\";\nimport React from \"react\";\nimport { SyntaxHighlighter as StorybookSyntaxHighlighter } from \"@storybook/components\";\nimport { ThemeProvider, ensure, themes } from \"@storybook/theming\";\n\ninterface Props {\n content: { code: string; toggle?: boolean }[];\n active: boolean;\n open?: boolean;\n}\n\nconst wrapperVariants = {\n default: {\n filter: \"grayscale(1)\",\n opacity: 0.5,\n },\n active: {\n filter: \"grayscale(0)\",\n opacity: 1,\n },\n};\n\nexport const Snippet = forwardRef<HTMLDivElement, Props>(\n ({ active, content, open }, ref) => {\n const customStyle = {\n fontSize: \"0.8125rem\",\n lineHeight: \"1.1875rem\",\n };\n\n return (\n <ThemeProvider theme={ensure(themes.dark)}>\n <SnippetWrapper\n ref={ref}\n initial=\"default\"\n animate={active ? \"active\" : \"default\"}\n aria-hidden={!active}\n variants={wrapperVariants}\n transition={{ ease: \"easeInOut\", duration: 0.6 }}\n >\n {content.map(({ toggle, code }, i) => (\n <Fragment key={i}>\n {toggle === undefined && (\n <StorybookSyntaxHighlighter\n language=\"javascript\"\n customStyle={customStyle}\n >\n {code}\n </StorybookSyntaxHighlighter>\n )}\n\n {toggle && !open && (\n <StorybookSyntaxHighlighter\n language=\"javascript\"\n customStyle={customStyle}\n >\n {` // ...`}\n </StorybookSyntaxHighlighter>\n )}\n\n {toggle && open && (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.4 }}\n >\n <StorybookSyntaxHighlighter\n language=\"javascript\"\n customStyle={customStyle}\n codeTagProps={{ style: { paddingLeft: \"15px\" } }}\n >\n {code}\n </StorybookSyntaxHighlighter>\n </motion.div>\n )}\n </Fragment>\n ))}\n </SnippetWrapper>\n </ThemeProvider>\n );\n }\n);\n","import React, {\n createRef,\n useCallback,\n useLayoutEffect,\n useMemo,\n useState,\n} from \"react\";\nimport { Backdrop, Code, Container } from \"./SyntaxHighlighter.styled\";\nimport { Snippet } from \"./Snippet/Snippet\";\n\ntype SyntaxHighlighterProps = {\n data: { code: string; toggle?: boolean }[][];\n activeStep: number;\n width: number;\n};\n\ntype StepsProps = {\n yPos: number;\n backdropHeight: number;\n index: number;\n open: boolean;\n};\n\nconst OFFSET = 49;\n\nexport const SyntaxHighlighter = ({\n activeStep,\n data,\n width,\n}: SyntaxHighlighterProps) => {\n const [steps, setSteps] = useState<StepsProps[]>([]);\n\n const refs = useMemo(\n () => data.map(() => createRef<HTMLDivElement>()),\n [data]\n );\n\n const getYPos = (idx: number) => {\n let yPos = 0;\n for (let i = 0; i < idx; i++) {\n yPos -= refs[i].current!.getBoundingClientRect().height;\n }\n return yPos;\n };\n\n const setNewSteps = useCallback(() => {\n const newSteps = data.flatMap((content, i) => {\n const backdropHeight = refs[i].current!.getBoundingClientRect().height;\n const finalSteps = [\n {\n yPos: getYPos(i) + OFFSET - 7,\n backdropHeight,\n index: i,\n open: false,\n },\n ];\n\n if (content.length > 1) {\n finalSteps.push({\n yPos: getYPos(i) + OFFSET - 7,\n backdropHeight,\n index: i,\n open: true,\n });\n }\n\n return finalSteps;\n });\n\n setSteps(newSteps);\n }, [data]);\n\n useLayoutEffect(() => {\n // Call setNewSteps every time height of the refs elements changes\n const resizeObserver = new ResizeObserver(() => {\n setNewSteps();\n });\n\n refs.forEach((ref) => {\n resizeObserver.observe(ref.current!);\n });\n\n return () => {\n resizeObserver.disconnect();\n };\n }, []);\n\n return (\n <Container width={width}>\n <Code\n animate={{ y: steps[activeStep]?.yPos ?? 0 }}\n transition={{ ease: \"easeInOut\", duration: 0.6 }}\n >\n {data.map((content, idx: number) => (\n <Snippet\n key={idx}\n ref={refs[idx]}\n active={steps[activeStep]?.index === idx}\n open={\n steps[activeStep]?.index > idx\n ? true\n : steps[activeStep]?.open ?? false\n }\n content={content}\n />\n ))}\n </Code>\n <Backdrop\n animate={{ height: steps[activeStep]?.backdropHeight ?? 0 }}\n transition={{ ease: \"easeInOut\", duration: 0.6 }}\n style={{ top: OFFSET }}\n className=\"syntax-highlighter-backdrop\"\n />\n </Container>\n );\n};\n","import { styled } from \"@storybook/theming\";\n\nexport const ListWrapper = styled.ul(() => ({\n display: \"flex\",\n flexDirection: \"column\",\n rowGap: 16,\n padding: 0,\n margin: 0,\n}));\n","import React from \"react\";\nimport { ListWrapper } from \"./List.styled\";\n\ninterface ListProps {\n children: React.ReactNode;\n}\n\nexport const List = ({ children }: ListProps) => {\n return <ListWrapper>{children}</ListWrapper>;\n};\n","import { styled } from \"@storybook/theming\";\n\nexport const ListItemWrapper = styled.li(() => ({\n display: \"flex\",\n alignItems: \"flex-start\",\n columnGap: 12,\n}));\n\nexport const ListItemContentWrapper = styled.div(({ theme }) => ({\n fontFamily: theme.typography.fonts.base,\n color: theme.color.darker,\n fontSize: \"13px\",\n}));\n\nexport const ListItemIndexWrapper = styled.div<{ isCompleted: boolean }>(\n ({ isCompleted, theme }) => ({\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n border: !isCompleted && `1px solid ${theme.color.medium}`,\n minWidth: 20,\n width: 20,\n height: 20,\n borderRadius: \"50%\",\n backgroundColor: isCompleted ? theme.color.green : \"white\",\n fontFamily: theme.typography.fonts.base,\n fontSize: 10,\n fontWeight: 600,\n color: theme.color.dark,\n })\n);\n","import React from \"react\";\nimport { Icons } from \"@storybook/components\";\nimport {\n ListItemContentWrapper,\n ListItemIndexWrapper,\n ListItemWrapper,\n} from \"./ListItem.styled\";\n\ninterface ListItemProps {\n children: React.ReactNode;\n index: number;\n isCompleted?: boolean;\n}\n\nexport const ListItem = ({ children, index, isCompleted }: ListItemProps) => {\n return (\n <ListItemWrapper>\n <ListItemIndexWrapper\n aria-label={isCompleted ? \"complete\" : \"not complete\"}\n isCompleted={isCompleted}\n >\n {isCompleted ? (\n <Icons width={10} height={10} icon=\"check\" color=\"white\" />\n ) : (\n index\n )}\n </ListItemIndexWrapper>\n <ListItemContentWrapper>{children}</ListItemContentWrapper>\n </ListItemWrapper>\n );\n};\n","import { useEffect, useState } from \"react\";\nimport { Response } from \"../../../types/response\";\n\nexport function useGetButtonPath() {\n const [buttonPath, setButtonPath] = useState<Response<string>>(null);\n\n useEffect(() => {\n const getButtonPath = async () => {\n try {\n const response = await fetch(\"/index.json\");\n const json = await response.json();\n const buttonPath = json.entries[\"example-button--primary\"].importPath;\n setButtonPath({\n data: buttonPath,\n error: null,\n });\n } catch (e) {\n setButtonPath({\n data: null,\n error: e,\n });\n }\n };\n getButtonPath();\n }, []);\n\n return buttonPath;\n}\n","import { useState, useEffect } from \"react\";\nimport { Response } from \"../../../types/response\";\nimport { API, AddonStore } from \"@storybook/manager-api\";\nimport {\n STORY_INDEX_INVALIDATED,\n STORY_RENDERED,\n} from \"@storybook/core-events\";\n\nexport const useGetWarningButtonStatus = (\n active: boolean,\n api: API,\n addonsStore: AddonStore\n) => {\n const [status, setStatus] = useState<Response<boolean>>(null);\n\n useEffect(() => {\n if (active) {\n const getWarningButtonStatus = () => {\n addonsStore.getChannel().once(STORY_RENDERED, () => {\n const out = api.getData(\"example-button--warning\");\n\n if (out) {\n setStatus({ data: true, error: null });\n }\n });\n };\n\n addonsStore\n .getServerChannel()\n .on(STORY_INDEX_INVALIDATED, getWarningButtonStatus);\n\n return () => {\n addonsStore\n .getServerChannel()\n .off(STORY_INDEX_INVALIDATED, getWarningButtonStatus);\n };\n }\n }, [active]);\n\n return status;\n};\n","import { useEffect, useState } from \"react\";\n\n// get an element and return its boundary. It accepts a classname as argument\nexport const useGetBackdropBoundary = (className: string, active: boolean) => {\n const [boundary, setBoundary] = useState<{\n top: number;\n left: number;\n height: number;\n width: number;\n } | null>(null);\n\n const element = document.querySelector(`.${className}`) as HTMLElement;\n\n // setBoundary if element changes sized. use resize observer\n useEffect(() => {\n if (active) {\n const resizeObserver = new ResizeObserver(() => {\n if (element) {\n setBoundary({\n top: element.offsetTop,\n left: element.offsetLeft,\n height: element.offsetHeight,\n width: element.offsetWidth,\n });\n }\n });\n\n resizeObserver.observe(element);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, [className, active]);\n\n return boundary;\n};\n","export default [\n [\n {\n code: `// Button.stories.jsx`,\n },\n ],\n [\n {\n code: `import { Button } from './Button';`,\n },\n ],\n [\n {\n code: `export default {\n title: 'Example/Button',\n component: Button,\n // ...\n };`,\n },\n ],\n [\n { code: `export const Primary = {` },\n {\n code: `args: {\n primary: true,\n label: 'Click',\n background: 'red'\n }`,\n toggle: true,\n },\n { code: `};` },\n ],\n [\n {\n code: `// Copy the code below\nexport const Warning = {\n args: {\n primary: true,\n backgroundColor: 'red',\n label: 'Delete now'\n }\n};`,\n },\n ],\n];\n","export default [\n [\n {\n code: `// Button.stories.tsx`,\n },\n ],\n [\n {\n code: `import type { Meta, StoryObj } from '@storybook/react';\n \n import { Button } from './Button';`,\n },\n ],\n [\n {\n code: `const meta: Meta<typeof Button> = {\n title: 'Example/Button',\n component: Button,\n // ...\n };\n \n export default meta;`,\n },\n ],\n [\n { code: `export const Primary: Story = {` },\n {\n code: `args: {\n primary: true,\n label: 'Click',\n background: 'red'\n }`,\n toggle: true,\n },\n { code: `};` },\n ],\n [\n {\n code: `// Copy the code below\nexport const Warning: Story = {\n args: {\n primary: true,\n backgroundColor: 'red',\n label: 'Delete now'\n }\n};`,\n },\n ],\n];\n","export default [\n [\n {\n code: `// Button.stories.tsx`,\n },\n ],\n [\n {\n code: `import type { Meta, StoryObj } from '@storybook/nextjs';\n \n import { Button } from './Button';`,\n },\n ],\n [\n {\n code: `const meta: Meta<typeof Button> = {\n title: 'Example/Button',\n component: Button,\n // ...\n };\n \n export default meta;`,\n },\n ],\n [\n { code: `export const Primary: Story = {` },\n {\n code: `args: {\n primary: true,\n label: 'Click',\n background: 'red'\n }`,\n toggle: true,\n },\n { code: `};` },\n ],\n [\n {\n code: `// Copy the code below\nexport const Warning: Story = {\n args: {\n primary: true,\n backgroundColor: 'red',\n label: 'Delete now'\n }\n};`,\n },\n ],\n];\n","// fetch project.json and read `framework.name` from it and return it\n\nimport { useEffect, useState } from \"react\";\nimport { Response } from \"../../../types/response\";\n\ntype Project = {\n language: \"javascript\" | \"typescript\";\n framework: {\n name: string;\n };\n};\n\nexport function useGetProject() {\n const [project, setProject] = useState<Response<Project>>(null);\n\n useEffect(() => {\n const getProject = async () => {\n try {\n const response = await fetch(\"/project.json\");\n const json = await response.json();\n\n setProject({\n data: json,\n error: null,\n });\n } catch (e) {\n setProject({\n data: null,\n error: e,\n });\n }\n };\n getProject();\n }, []);\n\n return project;\n}\n","import React, { FC, useState } from \"react\";\nimport { Button } from \"../../components/Button/Button\";\nimport { Modal } from \"../../components/Modal/Modal\";\nimport { Icons } from \"@storybook/components\";\nimport useMeasure from \"react-use-measure\";\nimport {\n Background,\n Circle1,\n Circle2,\n Circle3,\n Content,\n Header,\n Image,\n Main,\n ModalContent,\n ModalTitle,\n SpanHighlight,\n} from \"./WriteStoriesModal.styled\";\nimport { SyntaxHighlighter } from \"../../components/SyntaxHighlighter/SyntaxHighlighter\";\nimport { List } from \"../../components/List/List\";\nimport { ListItem } from \"../../components/List/ListItem/ListItem\";\nimport { useGetButtonPath } from \"./hooks/useGetButtonPath\";\nimport { useGetWarningButtonStatus } from \"./hooks/useGetWarningButtonStatus\";\nimport { useGetBackdropBoundary } from \"./hooks/useGetBackdropBoundary\";\nimport titleSidebarImg from \"./assets/01-title-sidebar.png\";\nimport storyNameSidebarImg from \"./assets/02-story-name-sidebar.png\";\nimport argsImg from \"./assets/03-args.png\";\nimport dataJavascript from \"./code/javascript\";\nimport dataTypescript from \"./code/typescript\";\nimport dataTypescriptNextjs from \"./code/nextjs-typescript\";\nimport { useGetProject } from \"./hooks/useGetFrameworkName\";\nimport { API, AddonStore } from \"@storybook/manager-api\";\n\n// TODO: Add warning if backdropBoundary && !warningButtonStatus?.data is not true.\n// backdropBoundary && !warningButtonStatus?.data\n\ninterface WriteStoriesModalProps {\n onFinish: () => void;\n api: API;\n addonsStore: AddonStore;\n skipOnboarding: () => void;\n isOpen: boolean;\n}\n\nexport const WriteStoriesModal: FC<WriteStoriesModalProps> = ({\n onFinish,\n api,\n addonsStore,\n skipOnboarding,\n isOpen,\n}) => {\n const [step, setStep] = useState<\n \"imports\" | \"meta\" | \"story\" | \"args\" | \"customStory\"\n >(\"imports\");\n\n const stepIndex = {\n imports: 1,\n meta: 2,\n story: 3,\n args: 4,\n customStory: 5,\n };\n\n const [isWarningStoryCopied, setWarningStoryCopied] = useState(false);\n\n const [clipboardButtonRef, clipboardButtonBounds] = useMeasure();\n\n const buttonPath = useGetButtonPath();\n const warningButtonStatus = useGetWarningButtonStatus(\n step === \"customStory\",\n api,\n addonsStore\n );\n const backdropBoundary = useGetBackdropBoundary(\n \"syntax-highlighter-backdrop\",\n step === \"customStory\"\n );\n\n const project = useGetProject();\n const isJavascript = project?.data?.language === \"javascript\";\n\n const data = isJavascript\n ? dataJavascript\n : project?.data?.framework.name === \"@storybook/nextjs\"\n ? dataTypescriptNextjs\n : dataTypescript;\n\n const copyWarningStory = () => {\n const warningContent = data[4][0].code;\n navigator.clipboard.writeText(\n warningContent.replace(\"// Copy the code below\", \"\")\n );\n setWarningStoryCopied(true);\n };\n\n return (\n <Modal width={740} height={430} isOpen={isOpen} setOpen={skipOnboarding}>\n {({ Title, Description, Close }) => (\n <ModalContent>\n {data ? (\n <SyntaxHighlighter\n activeStep={stepIndex[step] || 1}\n data={data}\n width={480}\n />\n ) : null}\n {backdropBoundary && !warningButtonStatus?.data && (\n <Button\n ref={clipboardButtonRef}\n onClick={() => {\n copyWarningStory();\n }}\n style={{\n position: \"absolute\",\n top: backdropBoundary.top + backdropBoundary.height - 45,\n left:\n backdropBoundary.left +\n backdropBoundary.width -\n (clipboardButtonBounds.width ?? 0) -\n 10,\n zIndex: 1000,\n }}\n >\n {isWarningStoryCopied ? \"Copied to clipboard\" : \"Copy code\"}\n </Button>\n )}\n <Main>\n <Header>\n <Title asChild>\n <ModalTitle>\n <Icons icon=\"bookmarkhollow\" width={13} />\n <span>How to write a story</span>\n </ModalTitle>\n </Title>\n <Close asChild>\n <Icons style={{ cursor: \"pointer\" }} icon=\"cross\" width={13} />\n </Close>\n </Header>\n <Description asChild>\n <Content>\n {step === \"imports\" && (\n <>\n <div>\n <h3>Imports</h3>\n <p>\n First, import Meta and StoryObj for type safety and\n autocompletion in TypeScript stories.\n </p>\n <p>\n Next, import a component. In this case, the Button\n component.\n </p>\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"meta\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"meta\" && (\n <>\n <div>\n <h3>Meta</h3>\n <p>\n The default export, Meta, contains metadata about this\n component's stories. The title field controls where\n stories appear in the sidebar.\n </p>\n <Image\n width=\"204\"\n alt=\"Title property pointing to Storybook's sidebar\"\n src={titleSidebarImg}\n />\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"story\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"story\" && (\n <>\n <div>\n <h3>Story</h3>\n <p>\n Each named export is a story. Its contents specify how\n the story is rendered in addition to other configuration\n options.\n </p>\n <Image\n width=\"190\"\n alt=\"Story export pointing to the sidebar entry of the story\"\n src={storyNameSidebarImg}\n />\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"args\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"args\" && (\n <>\n <div>\n <h3>Args</h3>\n <p>\n Args are inputs that are passed to the component, which\n Storybook uses to render the component in different\n states. In React, args = props. They also specify the\n initial control settings for the story.\n </p>\n <Image\n alt=\"Args mapped to their controls in Storybook\"\n width=\"253\"\n src={argsImg}\n />\n </div>\n <Button\n style={{ marginTop: 4 }}\n onClick={() => {\n setStep(\"customStory\");\n }}\n >\n Next\n </Button>\n </>\n )}\n {step === \"customStory\" &&\n (!warningButtonStatus?.error ? (\n <>\n <div>\n <h3>Create your first story</h3>\n <p>\n Now it's your turn. See how easy it is to create your\n first story by following these steps below.\n </p>\n <List>\n <ListItem\n isCompleted={\n isWarningStoryCopied || warningButtonStatus?.data\n }\n index={1}\n >\n Copy the Warning story\n </ListItem>\n <ListItem\n isCompleted={warningButtonStatus?.data}\n index={2}\n >\n Open{\" \"}\n {buttonPath?.data ? (\n <SpanHighlight>{buttonPath.data}</SpanHighlight>\n ) : (\n <>the Button Story</>\n )}{\" \"}\n in your current working directory\n </ListItem>\n <ListItem\n isCompleted={warningButtonStatus?.data}\n index={3}\n >\n Paste it at the bottom of the file\n </ListItem>\n </List>\n </div>\n {warningButtonStatus?.data ? (\n <Button\n onClick={() => {\n onFinish();\n }}\n >\n Go to story\n </Button>\n ) : null}\n </>\n ) : null)}\n </Content>\n </Description>\n <Background>\n <Circle1 />\n <Circle2 />\n <Circle3 />\n </Background>\n </Main>\n </ModalContent>\n )}\n </Modal>\n );\n};\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { ThemeProvider, ensure, themes } from \"@storybook/theming\";\nimport { STORY_CHANGED, CURRENT_STORY_WAS_SET } from \"@storybook/core-events\";\nimport { addons, type API } from \"@storybook/manager-api\";\n\nimport { GuidedTour } from \"./features/GuidedTour/GuidedTour\";\nimport { WelcomeModal } from \"./features/WelcomeModal/WelcomeModal\";\nimport { WriteStoriesModal } from \"./features/WriteStoriesModal/WriteStoriesModal\";\nimport { Confetti } from \"./components/Confetti/Confetti\";\n\ntype Step =\n | \"1:Welcome\"\n | \"2:StorybookTour\"\n | \"3:WriteYourStory\"\n | \"4:VisitNewStory\"\n | \"5:ConfigureYourProject\";\n\nconst theme = ensure(themes.light);\n\nexport default function App({ api }: { api: API }) {\n const [enabled, setEnabled] = useState(true);\n const [showConfetti, setShowConfetti] = useState(false);\n const [step, setStep] = useState<Step>(\"1:Welcome\");\n\n const skipOnboarding = useCallback(() => {\n // remove onboarding query parameter from current url\n const url = new URL(window.location.href);\n url.searchParams.delete(\"onboarding\");\n const path = decodeURIComponent(url.searchParams.get(\"path\"));\n url.search = `?path=${path}`;\n history.replaceState({}, \"\", url.href);\n setEnabled(false);\n }, [setEnabled]);\n\n useEffect(() => {\n let stepTimeout: number;\n if (step === \"4:VisitNewStory\") {\n setShowConfetti(true);\n stepTimeout = window.setTimeout(() => {\n setStep(\"5:ConfigureYourProject\");\n }, 2000);\n }\n\n return () => {\n clearTimeout(stepTimeout);\n };\n }, [step]);\n\n useEffect(() => {\n api.once(CURRENT_STORY_WAS_SET, ({ storyId }) => {\n api.setQueryParams({ onboarding: \"true\" });\n // make sure the initial state is set correctly:\n // 1. Selected story is primary button\n // 2. The addon panel is opened, in the bottom and the controls tab is selected\n if (storyId !== \"example-button--primary\") {\n api.selectStory(\"example-button--primary\", undefined, {\n ref: undefined,\n });\n }\n api.togglePanel(true);\n api.togglePanelPosition(\"bottom\");\n api.setSelectedPanel(\"addon-controls\");\n });\n }, []);\n\n useEffect(() => {\n const onStoryChanged = (storyId: string) => {\n if (storyId === \"configure-your-project--docs\") {\n skipOnboarding();\n }\n };\n\n api.on(STORY_CHANGED, onStoryChanged);\n\n return () => {\n api.off(STORY_CHANGED, onStoryChanged);\n };\n }, []);\n\n return (\n <ThemeProvider theme={theme}>\n {showConfetti && (\n <Confetti\n numberOfPieces={1000}\n initialVelocityY={3}\n recycle={false}\n onConfettiComplete={(confetti) => {\n confetti.reset();\n setShowConfetti(false);\n }}\n />\n )}\n <WelcomeModal\n onProceed={() => setStep(\"2:StorybookTour\")}\n isOpen={enabled && step === \"1:Welcome\"}\n skipOnboarding={skipOnboarding}\n />\n {(step === \"2:StorybookTour\" || step === \"5:ConfigureYourProject\") && (\n <GuidedTour\n api={api}\n isFinalStep={step === \"5:ConfigureYourProject\"}\n onFirstTourDone={() => {\n setStep(\"3:WriteYourStory\");\n }}\n />\n )}\n <WriteStoriesModal\n api={api}\n addonsStore={addons}\n onFinish={() => {\n api.selectStory(\"example-button--warning\");\n setStep(\"4:VisitNewStory\");\n }}\n isOpen={enabled && step === \"3:WriteYourStory\"}\n skipOnboarding={skipOnboarding}\n />\n </ThemeProvider>\n );\n}\n","import ReactDOM from \"react-dom\";\nimport React, { lazy, Suspense } from \"react\";\nimport { addons } from \"@storybook/manager-api\";\n\nconst App = lazy(() => import(\"./App\"));\n\n// The addon is enabled only when:\n// 1. The onboarding query parameter is present\n// 2. The example button stories are present\naddons.register(\"@storybook/addon-onboarding\", async (api) => {\n const urlState = api.getUrlState();\n const isOnboarding = urlState.path === '/onboarding' || urlState.queryParams.onboarding === 'true';\n\n if (!isOnboarding) {\n return;\n }\n\n let hasButtonStories = false;\n try {\n const response = await fetch(\"./index.json\");\n const index = await response.json();\n hasButtonStories = !!index.entries[\"example-button--primary\"];\n } catch (e) {}\n\n if (hasButtonStories) {\n // Add a new DOM element to document.body, where we will bootstrap our React app\n const domNode = document.createElement(\"div\");\n\n domNode.id = \"addon-onboarding\";\n // Append the new DOM element to document.body\n document.body.appendChild(domNode);\n\n // Render the React app\n ReactDOM.render(\n <Suspense fallback={<div>Loading...</div>}>\n <App api={api} />\n </Suspense>,\n domNode\n );\n }\n});\n"]}
|
package/package.json
CHANGED