{"id":4200,"date":"2024-04-13T13:17:20","date_gmt":"2024-04-13T11:17:20","guid":{"rendered":"https:\/\/juannunezblasco.es\/como-crear-libreria-componentes-react-storybook\/"},"modified":"2024-05-08T20:59:16","modified_gmt":"2024-05-08T18:59:16","slug":"como-crear-libreria-componentes-react-storybook","status":"publish","type":"post","link":"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/","title":{"rendered":"How to create a component library with React and StoryBook [REPO]"},"content":{"rendered":"\n<p>In the next post, we are going to do a step-by-step tutorial to implement a component library for React using Storybook and Rollup. I have deployed the project on GitHub Pages to share the final result with you:<\/p>\n\n<p><a href=\"https:\/\/juannunezblasco.github.io\/react-rollup-storybook-library-starter\/\">https:\/\/juannunezblasco.github.io\/react-rollup-storybook-library-starter\/<\/a><\/p>\n\n<p>We will cover everything from initial setup to publishing and distribution of the library. If you&#8217;re looking for a complete guide to creating and maintaining your own React component library, you&#8217;re in the right place.<\/p>\n\n<p>You can see the complete project on GitHub:<\/p>\n\n<p><a href=\"https:\/\/github.com\/juannunezblasco\/react-rollup-storybook-library-starter\">https:\/\/github.com\/juannunezblasco\/react-rollup-storybook-library-starter<\/a><\/p>\n\n<h2 id=\"que-es-storybooks\">What is Storybooks<\/h2>\n\n<p>Storybook is a tool that allows developers to build components in isolation, making it easy to evaluate and test each component individually.<\/p>\n\n<p>It also allows the creation of interactive, visual documentation for components, making it easier for other developers (and yourself later) to understand how each component works.<\/p>\n\n<p>Additionally, Storybook offers a large number of plugins to expand its functionality, so it can be customized to meet the specific needs of your project.<\/p>\n\n<p>The ultimate goal is to have a library of components that all members of your team use.<\/p>\n\n<p>This will increase the productivity of your company, while improving the consistency of your application design.<\/p>\n\n<h2 id=\"componentes-a-crear-en-nuestra-libreria\">Components to create in our library<\/h2>\n\n<p>We will create two simple components as a test that every application needs: a button and a form input.<\/p>\n\n<pre class=\"wp-block-code lang-tsx\"><code>\/\/ Button.tsx\n\nimport React from \"react\";\nimport \".\/Button.scss\";\n\nexport interface ButtonProps extends React.DetailedHTMLProps&lt;React.ButtonHTMLAttributes&lt;HTMLButtonElement&gt;, HTMLButtonElement&gt;{\n  label: string;\n}\n\nconst Button = ({label, ...others}: ButtonProps) =&gt; {\n  return &lt;button {...others}&gt;{label}&lt;\/button&gt;;\n};\n\nexport default Button;\n<\/code><\/pre>\n\n<pre class=\"wp-block-code lang-tsx\"><code>\/\/ Input.tsx\n\nimport React from \"react\";\nimport \".\/Input.scss\";\nimport { Input, InputProps } from \"antd\";\n\nexport interface InputTextProps extends InputProps {\n    \/**\n     * \n     *\/\n}\n\nconst InputText:React.FC&lt;InputTextProps&gt; = (props: InputTextProps) =&gt; {\n  return &lt;Input type=\"text\" {...props} \/&gt;;\n};\n\nexport default InputText;\n<\/code><\/pre>\n\n<p>Each of our components will have the same folder structure:<\/p>\n\n<ul><li>\/tests : files with our tests<\/li><li>Button.css: styles we apply<\/li><li>Button.stories.tsx \u2013 StoryBook-specific implementation<\/li><li>Button.tsx \u2013 React native component<\/li><li>index.ts: barrel file where we export the component.<\/li><\/ul>\n\n<p>We are going to analyze the file with the StoryBook implementation because the rest is not much of a mystery.<\/p>\n\n<pre class=\"wp-block-code lang-tsx\"><code>\/\/ Button.stories.tsx\n\nimport { StoryFn, Meta } from \"@storybook\/react\";\nimport React from \"react\";\nimport Button, { ButtonProps } from \".\/Button\";\n\n\/\/ More on default export: &lt;https:\/\/storybook.js.org\/docs\/react\/writing-stories\/introduction#default-export&gt;\nconst ExportDefault: Meta&lt;typeof Button&gt; = {\n  title: \"ReactComponentLibrary\/Button\",\n  component: Button,\n};\n\n\/\/ More on component templates: &lt;https:\/\/storybook.js.org\/docs\/react\/writing-stories\/introduction#using-args&gt;\nconst Template: StoryFn&lt;typeof Button&gt; = (args) =&gt; &lt;Button {...args} \/&gt;;\n\nexport const HelloWorld: StoryFn&lt;ButtonProps&gt; = Template.bind({});\n\/\/ More on args: &lt;https:\/\/storybook.js.org\/docs\/react\/writing-stories\/args&gt;\nHelloWorld.args = {\n  label: \"Save\",\n};\n\nexport const ClickMe: StoryFn&lt;ButtonProps&gt; = Template.bind({});\nClickMe.args = {\n  label: \"Click me!\",\n};\n\nexport default ExportDefault;\n\n<\/code><\/pre>\n\n<p>The ExportDefault constant is where we include the title and component itself. We type it with the StoryBook interface including our component as a generic.<\/p>\n\n<p>Then we create a template of our components by passing the properties to the component with the spread operator.<\/p>\n\n<p>Based on this template we will build all the variations of our components by modifying their arguments. These will be the ones that we will see reflected in our component library.<\/p>\n\n<h2 id=\"configuracion-rollup-js\">Rollup.js Configuration<\/h2>\n\n<p>Rollup.js is a JavaScript module bundling tool that compiles small pieces of code into something larger and more complex, like a library or application.<\/p>\n\n<p>It allows us to create JavaScript modules that can be imported and used in other projects.<\/p>\n\n<p>Rollup.js is especially useful for use with libraries and frameworks like React due to its effectiveness in removing dead code and its efficiency in loading modules.<\/p>\n\n<pre class=\"wp-block-code lang-tsx\"><code>\/\/ rollup.config.js\nimport terser from '@rollup\/plugin-terser';\nimport resolve from \"@rollup\/plugin-node-resolve\";\nimport commonjs from \"@rollup\/plugin-commonjs\";\nimport typescript from \"@rollup\/plugin-typescript\";\nimport dts from \"rollup-plugin-dts\";\nimport postcss from \"rollup-plugin-postcss\";\nimport peerDepsExternal from 'rollup-plugin-peer-deps-external';\n\nimport pkg from \".\/package.json\" assert { type: 'json' };\n\nexport default &#91;\n\t{\n\t\tinput: 'src\/index.ts',\n\t\toutput: &#91;\n\t\t\t{\n\t\t\t\tfile: pkg.main,\n\t\t\t\tformat: 'cjs',\n\t\t\t\tsourcemap: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tfile: pkg.module,\n\t\t\t\tformat: \"esm\",\n\t\t\t\tsourcemap: true,\n\t\t\t},\n\t\t\t\/* {\n\t\t\t\tfile: 'dist\/bundle.min.js',\n\t\t\t\tformat: 'iife',\n\t\t\t\tname: 'version',\n\t\t\t\tplugins: &#91;terser()]\n\t\t\t} *\/\n\t\t],\n\t\tplugins: &#91;\n\t\t\tpeerDepsExternal(),\n\t\t\tresolve(),\n\t\t\tcommonjs(),\n\t\t\ttypescript({ tsconfig: \".\/tsconfig.json\" }),\n\t\t\tpostcss(),\n\t\t\tterser()\n\t\t]\n\t},\n\t{\n\t\tinput: \"dist\/esm\/types\/index.d.ts\",\n\t\toutput: &#91;{ file: \"dist\/index.d.ts\", format: \"esm\" }],\n\t\tplugins: &#91;dts()],\n\t\texternal: &#91;\/\\\\.(css|less|scss)$\/],\n\t},\n];\n<\/code><\/pre>\n\n<p>For example, in this case we make a configuration so that the library supports the implementation using CommonJS and the modern Javascript standard ES6 and later.<\/p>\n\n<p>The commented object would generate a version of the package that can be run directly in a browser without the need for a loaded module. Lo incluyo para que lo tengas en cuenta, pero para el caso que nos ocupa no nos interesa.<\/p>\n\n<h2 id=\"publicacion-del-paquete-en-npm-para-compartirlo-con-tu-equipo\">I include it so that you take it into account, but for the case at hand we are not interested.<\/h2>\n\n<p>First of all we have to configure the package.json.<\/p>\n\n<pre class=\"wp-block-code lang-json\"><code>{\n  \"name\": \"@juannunezblasco\/react-rollup-storybook-library-starter\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Template and quick-starter to create modern React libraries using Rollup.\",\n  \"main\": \"dist\/cjs\/bundle.js\",\n  \"module\": \"dist\/esm\/bundle.js\",\n  \"types\": \"dist\/index.d.ts\",\n  \"files\": &#91;\n    \"dist\"\n  ],\n  \"scripts\": {\n    \"build\": \"rimraf dist &amp;&amp; rollup -c\",\n    \"dev\": \"rollup -c -w\",\n    \"test\": \"jest\",\n    \"lint\": \"eslint src\",\n    \"storybook\": \"storybook dev -p 6006\",\n    \"build-storybook\": \"storybook build\",\n    \"predeploy-storybook\": \"npm run build-storybook\",\n    \"deploy-storybook\": \"gh-pages -d storybook-static\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https:\/\/github.com\/juannunezblasco\/react-rollup-storybook-library-starter.git\"\n  },\n  \"author\": \"juannunezblasco\",\n  \"license\": \"MIT\",\n  \"keywords\": &#91;\n    \"react-template\",\n    \"react-library\",\n    \"typescript\",\n    \"react\",\n    \"template\"\n  ],\n  \"bugs\": {\n    \"url\": \"&lt;https:\/\/github.com\/juannunezblasco\/react-rollup-storybook-library-starter\/issues&gt;\"\n  },\n  \"homepage\": \"&lt;https:\/\/juannunezblasco.github.io\/react-rollup-storybook-library-starter&gt;\",\n  \"peerDependencies\": {\n    \"antd\": \"^5.4.0\",\n    \"react\": \"&gt;=16.8.0\",\n    \"react-dom\": \"&gt;=16.8.0\"\n  },\n  \"devDependencies\": {\n    ...\n  }\n}\n<\/code><\/pre>\n\n<p>We include all the information related to our package:<\/p>\n\n<ul><li>Name<\/li><li>Description<\/li><li>Repository<\/li><li>Routes<\/li><li>Keywords: relevant if it is a public package.<\/li><li>etc.<\/li><\/ul>\n\n<p>Like peerDependencies, which represent the dependencies that we expect to find in the application that will use our package.<\/p>\n\n<p>Once our configuration is finished we can publish our package to npm:<\/p>\n\n<pre class=\"wp-block-code lang-markup\"><code>npm publish\n<\/code><\/pre>\n\n<h2 id=\"conclusiones\">Conclusions<\/h2>\n\n<p>I recommend you follow the instructions that I have left in the README.dm to clone the repository and test the implementation.<\/p>\n\n<p>If it has been helpful to you, share it on your social networks.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the next post, we are going to do a step-by-step tutorial to implement a component library for React using Storybook and Rollup. I have [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4115,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[75,74],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to create a component library with React and StoryBook [REPO] | J - Desarrollo Aplicaciones Web<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to create a component library with React and StoryBook [REPO] | J - Desarrollo Aplicaciones Web\" \/>\n<meta property=\"og:description\" content=\"In the next post, we are going to do a step-by-step tutorial to implement a component library for React using Storybook and Rollup. I have [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/\" \/>\n<meta property=\"og:site_name\" content=\"J - Desarrollo Aplicaciones Web\" \/>\n<meta property=\"article:published_time\" content=\"2024-04-13T11:17:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-08T18:59:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/juannunezblasco.es\/content\/uploads\/2024\/04\/react-design-system.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1260\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Juan N\u00fa\u00f1ez Blaco\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https:\/\/juannunezblasco.es\/#organization\",\"name\":\"J - Desarrollo Aplicaciones Web\",\"url\":\"https:\/\/juannunezblasco.es\/\",\"sameAs\":[],\"logo\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/juannunezblasco.es\/#logo\",\"inLanguage\":\"en-US\",\"url\":\"http:\/\/juannunezblasco.local\/content\/uploads\/2022\/02\/logo-jnb-positivo.png\",\"contentUrl\":\"http:\/\/juannunezblasco.local\/content\/uploads\/2022\/02\/logo-jnb-positivo.png\",\"width\":512,\"height\":513,\"caption\":\"J - Desarrollo Aplicaciones Web\"},\"image\":{\"@id\":\"https:\/\/juannunezblasco.es\/#logo\"}},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/juannunezblasco.es\/#website\",\"url\":\"https:\/\/juannunezblasco.es\/\",\"name\":\"J - Desarrollo Aplicaciones Web\",\"description\":\"Dise\u00f1o y desarrollos de productos digitales a medida\",\"publisher\":{\"@id\":\"https:\/\/juannunezblasco.es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/juannunezblasco.es\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/juannunezblasco.es\/content\/uploads\/2024\/04\/react-design-system.jpg\",\"contentUrl\":\"https:\/\/juannunezblasco.es\/content\/uploads\/2024\/04\/react-design-system.jpg\",\"width\":1260,\"height\":630,\"caption\":\"How to create a component library with React and StoryBook\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#webpage\",\"url\":\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/\",\"name\":\"How to create a component library with React and StoryBook [REPO] | J - Desarrollo Aplicaciones Web\",\"isPartOf\":{\"@id\":\"https:\/\/juannunezblasco.es\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#primaryimage\"},\"datePublished\":\"2024-04-13T11:17:20+00:00\",\"dateModified\":\"2024-05-08T18:59:16+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/juannunezblasco.es\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to create a component library with React and StoryBook [REPO]\"}]},{\"@type\":\"Article\",\"@id\":\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#webpage\"},\"author\":{\"@id\":\"https:\/\/juannunezblasco.es\/#\/schema\/person\/31582cd4a29af7055b4c3b0508601b29\"},\"headline\":\"How to create a component library with React and StoryBook [REPO]\",\"datePublished\":\"2024-04-13T11:17:20+00:00\",\"dateModified\":\"2024-05-08T18:59:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#webpage\"},\"wordCount\":621,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/juannunezblasco.es\/#organization\"},\"image\":{\"@id\":\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/juannunezblasco.es\/content\/uploads\/2024\/04\/react-design-system.jpg\",\"articleSection\":[\"Design System\",\"React\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#respond\"]}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/juannunezblasco.es\/#\/schema\/person\/31582cd4a29af7055b4c3b0508601b29\",\"name\":\"Juan N\u00fa\u00f1ez Blaco\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/juannunezblasco.es\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/23b8417ac4b489153038755511de438e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/23b8417ac4b489153038755511de438e?s=96&d=mm&r=g\",\"caption\":\"Juan N\u00fa\u00f1ez Blaco\"},\"description\":\"Full Stack Developer\",\"sameAs\":[\"https:\/\/juannunezblasco.es\"],\"url\":\"https:\/\/juannunezblasco.es\/en\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to create a component library with React and StoryBook [REPO] | J - Desarrollo Aplicaciones Web","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/","og_locale":"en_US","og_type":"article","og_title":"How to create a component library with React and StoryBook [REPO] | J - Desarrollo Aplicaciones Web","og_description":"In the next post, we are going to do a step-by-step tutorial to implement a component library for React using Storybook and Rollup. I have [&hellip;]","og_url":"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/","og_site_name":"J - Desarrollo Aplicaciones Web","article_published_time":"2024-04-13T11:17:20+00:00","article_modified_time":"2024-05-08T18:59:16+00:00","og_image":[{"width":1260,"height":630,"url":"https:\/\/juannunezblasco.es\/content\/uploads\/2024\/04\/react-design-system.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Written by":"Juan N\u00fa\u00f1ez Blaco","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Organization","@id":"https:\/\/juannunezblasco.es\/#organization","name":"J - Desarrollo Aplicaciones Web","url":"https:\/\/juannunezblasco.es\/","sameAs":[],"logo":{"@type":"ImageObject","@id":"https:\/\/juannunezblasco.es\/#logo","inLanguage":"en-US","url":"http:\/\/juannunezblasco.local\/content\/uploads\/2022\/02\/logo-jnb-positivo.png","contentUrl":"http:\/\/juannunezblasco.local\/content\/uploads\/2022\/02\/logo-jnb-positivo.png","width":512,"height":513,"caption":"J - Desarrollo Aplicaciones Web"},"image":{"@id":"https:\/\/juannunezblasco.es\/#logo"}},{"@type":"WebSite","@id":"https:\/\/juannunezblasco.es\/#website","url":"https:\/\/juannunezblasco.es\/","name":"J - Desarrollo Aplicaciones Web","description":"Dise\u00f1o y desarrollos de productos digitales a medida","publisher":{"@id":"https:\/\/juannunezblasco.es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/juannunezblasco.es\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","@id":"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#primaryimage","inLanguage":"en-US","url":"https:\/\/juannunezblasco.es\/content\/uploads\/2024\/04\/react-design-system.jpg","contentUrl":"https:\/\/juannunezblasco.es\/content\/uploads\/2024\/04\/react-design-system.jpg","width":1260,"height":630,"caption":"How to create a component library with React and StoryBook"},{"@type":"WebPage","@id":"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#webpage","url":"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/","name":"How to create a component library with React and StoryBook [REPO] | J - Desarrollo Aplicaciones Web","isPartOf":{"@id":"https:\/\/juannunezblasco.es\/#website"},"primaryImageOfPage":{"@id":"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#primaryimage"},"datePublished":"2024-04-13T11:17:20+00:00","dateModified":"2024-05-08T18:59:16+00:00","breadcrumb":{"@id":"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/juannunezblasco.es\/en\/"},{"@type":"ListItem","position":2,"name":"How to create a component library with React and StoryBook [REPO]"}]},{"@type":"Article","@id":"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#article","isPartOf":{"@id":"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#webpage"},"author":{"@id":"https:\/\/juannunezblasco.es\/#\/schema\/person\/31582cd4a29af7055b4c3b0508601b29"},"headline":"How to create a component library with React and StoryBook [REPO]","datePublished":"2024-04-13T11:17:20+00:00","dateModified":"2024-05-08T18:59:16+00:00","mainEntityOfPage":{"@id":"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#webpage"},"wordCount":621,"commentCount":0,"publisher":{"@id":"https:\/\/juannunezblasco.es\/#organization"},"image":{"@id":"https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#primaryimage"},"thumbnailUrl":"https:\/\/juannunezblasco.es\/content\/uploads\/2024\/04\/react-design-system.jpg","articleSection":["Design System","React"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/juannunezblasco.es\/en\/como-crear-libreria-componentes-react-storybook\/#respond"]}]},{"@type":"Person","@id":"https:\/\/juannunezblasco.es\/#\/schema\/person\/31582cd4a29af7055b4c3b0508601b29","name":"Juan N\u00fa\u00f1ez Blaco","image":{"@type":"ImageObject","@id":"https:\/\/juannunezblasco.es\/#personlogo","inLanguage":"en-US","url":"https:\/\/secure.gravatar.com\/avatar\/23b8417ac4b489153038755511de438e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/23b8417ac4b489153038755511de438e?s=96&d=mm&r=g","caption":"Juan N\u00fa\u00f1ez Blaco"},"description":"Full Stack Developer","sameAs":["https:\/\/juannunezblasco.es"],"url":"https:\/\/juannunezblasco.es\/en\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/juannunezblasco.es\/en\/wp-json\/wp\/v2\/posts\/4200"}],"collection":[{"href":"https:\/\/juannunezblasco.es\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/juannunezblasco.es\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/juannunezblasco.es\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/juannunezblasco.es\/en\/wp-json\/wp\/v2\/comments?post=4200"}],"version-history":[{"count":2,"href":"https:\/\/juannunezblasco.es\/en\/wp-json\/wp\/v2\/posts\/4200\/revisions"}],"predecessor-version":[{"id":4213,"href":"https:\/\/juannunezblasco.es\/en\/wp-json\/wp\/v2\/posts\/4200\/revisions\/4213"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/juannunezblasco.es\/en\/wp-json\/wp\/v2\/media\/4115"}],"wp:attachment":[{"href":"https:\/\/juannunezblasco.es\/en\/wp-json\/wp\/v2\/media?parent=4200"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/juannunezblasco.es\/en\/wp-json\/wp\/v2\/categories?post=4200"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/juannunezblasco.es\/en\/wp-json\/wp\/v2\/tags?post=4200"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}