mirror of
https://github.com/facebook/docusaurus.git
synced 2025-06-01 02:12:36 +02:00
1 line
No EOL
22 KiB
JavaScript
1 line
No EOL
22 KiB
JavaScript
"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([["23265"],{14150:function(e,n,t){t.d(n,{Z:function(){return r}});let r=t.p+"assets/images/social-card-7e038d19ea67c686e90e1f599f7256d0.png"},41550:function(e,n,t){t.d(n,{Z:function(){return r}});let r=t.p+"assets/images/social-card-7e038d19ea67c686e90e1f599f7256d0.png"},35122:function(e,n,t){t.r(n),t.d(n,{assets:function(){return d},contentTitle:function(){return c},default:function(){return g},frontMatter:function(){return u},metadata:function(){return r},toc:function(){return h}});var r=t(28878),a=t(24246),s=t(80980),o=t(14522),i=t(15398),l=t(58636);let u={title:"Docusaurus 2.3",authors:["slorber"],tags:["release"],image:"./img/social-card.png",date:new Date("2023-01-27T00:00:00.000Z")},c=void 0,d={image:t(14150).Z,authorsImageUrls:[void 0]},h=[{value:"Highlights",id:"highlights",level:2},{value:"Google Tag Manager plugin",id:"google-tag-manager-plugin",level:3},{value:"Tabs Query String Support",id:"tabs-query-string-support",level:3},{value:"Nested admonitions",id:"nested-admonitions",level:3},{value:"Blog <code>createFeedItems</code>",id:"blog-createfeeditems",level:3},{value:"Translations",id:"translations",level:3},{value:"Other changes",id:"other-changes",level:2}];function p(e){let n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(n.p,{children:["We are happy to announce ",(0,a.jsx)(n.strong,{children:"Docusaurus 2.3"}),"."]}),"\n",(0,a.jsxs)(n.p,{children:["The upgrade should be easy: as explained in our ",(0,a.jsx)(n.a,{href:"/community/release-process",children:"release process documentation"}),", minor versions respect ",(0,a.jsx)(n.a,{href:"https://semver.org/",children:"Semantic Versioning"}),"."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"Docusaurus 2.2 social card",src:t(41550).Z+"",width:"1200",height:"600"})}),"\n",(0,a.jsx)(n.h2,{id:"highlights",children:"Highlights"}),"\n",(0,a.jsx)(n.h3,{id:"google-tag-manager-plugin",children:"Google Tag Manager plugin"}),"\n",(0,a.jsx)(n.p,{children:"Google Tag Manager is a tag management system that allows great flexibility. It enables analytics and marketing teams to easily load other third-party trackers and fire analytics tags."}),"\n",(0,a.jsxs)(n.p,{children:["We now have a ",(0,a.jsx)(n.a,{href:"/docs/api/plugins/@docusaurus/plugin-google-tag-manager/",children:(0,a.jsx)(n.code,{children:"@docusaurus/plugin-google-tag-manager"})})," package that you can use alongside or as an alternative to the existing ",(0,a.jsx)(n.a,{href:"/docs/api/plugins/@docusaurus/plugin-google-gtag/",children:"gtag.js plugin"})," (refer to ",(0,a.jsx)(n.a,{href:"https://support.google.com/tagmanager/answer/7582054",children:"this doc"})," to understand when to use which solution)."]}),"\n",(0,a.jsxs)(n.admonition,{title:"Google is sunsetting Universal Analytics",type:"warning",children:[(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.a,{href:"https://blog.google/products/marketingplatform/analytics/prepare-for-future-with-google-analytics-4/",children:"Google will sunset its Universal Analytics"})," on ",(0,a.jsx)(n.strong,{children:"July 1, 2023"}),", and ask users to migrate to ",(0,a.jsx)(n.strong,{children:"Google Analytics 4"}),"."]}),(0,a.jsxs)(n.p,{children:["Therefore, we are also ",(0,a.jsxs)(n.strong,{children:["deprecating our existing ",(0,a.jsx)(n.a,{href:"/docs/api/plugins/@docusaurus/plugin-google-analytics",children:(0,a.jsx)(n.code,{children:"@docusaurus/plugin-google-analytics"})})]})," package. Docusaurus users should create a new Google Analytics 4 property, and migrate to the ",(0,a.jsx)(n.a,{href:"/docs/api/plugins/@docusaurus/plugin-google-gtag/",children:"gtag.js plugin"}),", or the ",(0,a.jsx)(n.a,{href:"/docs/api/plugins/@docusaurus/plugin-google-tag-manager/",children:"Google Tag Manager plugin"}),". Refer to the ",(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/issues/7221",children:"dedicated Docusaurus issue"})," for details and questions."]})]}),"\n",(0,a.jsx)(n.h3,{id:"tabs-query-string-support",children:"Tabs Query String Support"}),"\n",(0,a.jsxs)(n.p,{children:["It is now possible to link a selected tab to a query string parameter. When a tab is selected, it will be stored in your browser URL as a ",(0,a.jsx)(n.code,{children:"?qs-param=tab-value"})," search parameter."]}),"\n",(0,a.jsx)(n.p,{children:"This feature allows deep-linking to a specific documentation tab that will pre-selected on page load."}),"\n",(0,a.jsxs)(n.p,{children:["When used alongside the ",(0,a.jsx)(n.code,{children:"groupId"})," prop, the query string tab value takes precedence over the ",(0,a.jsx)(n.code,{children:"localStorage"})," value."]}),"\n",(0,a.jsxs)(n.p,{children:["Make sure to check the ",(0,a.jsx)(n.a,{href:"/docs/markdown-features/tabs#query-string",children:"documentation"})," and the demo below to understand how it works:"]}),"\n","\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-tsx",children:'<Tabs groupId="current-os" queryString>\n <TabItem value="android" label="Android">\n Android\n </TabItem>\n <TabItem value="ios" label="iOS">\n iOS\n </TabItem>\n</Tabs>\n'})}),"\n",(0,a.jsx)(o.Z,{children:(0,a.jsxs)(i.Z,{groupId:"current-os",queryString:!0,children:[(0,a.jsx)(l.Z,{value:"android",label:"Android",children:(0,a.jsx)(n.p,{children:"Android"})}),(0,a.jsx)(l.Z,{value:"ios",label:"iOS",children:(0,a.jsx)(n.p,{children:"iOS"})})]})}),"\n",(0,a.jsx)(n.h3,{id:"nested-admonitions",children:"Nested admonitions"}),"\n",(0,a.jsx)(n.p,{children:"It is now possible to nest one admonition within another by adding extra colons for the outer/enclosing admonition:"}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-md",children:"::::tip[nested admonitions]\n\nYou can now nest one admonition within another!\n\n:::danger\n\nUse this sparingly when it makes sense.\n\n:::\n\n::::\n"})}),"\n",(0,a.jsxs)(n.admonition,{title:"nested admonitions",type:"tip",children:[(0,a.jsx)(n.p,{children:"You can now nest one admonition within another!"}),(0,a.jsx)(n.admonition,{type:"danger",children:(0,a.jsx)(n.p,{children:"Use this sparingly when it makes sense."})})]}),"\n",(0,a.jsxs)(n.h3,{id:"blog-createfeeditems",children:["Blog ",(0,a.jsx)(n.code,{children:"createFeedItems"})]}),"\n",(0,a.jsxs)(n.p,{children:["A new blog plugin option ",(0,a.jsx)(n.a,{href:"/docs/api/plugins/@docusaurus/plugin-content-blog/#CreateFeedItemsFn",children:(0,a.jsx)(n.code,{children:"feedOptions.createFeedItems"})})," gives you more control over the RSS/Atom feed generation. It is now possible to transform/filter/limit feed items through a new callback."]}),"\n",(0,a.jsx)(n.pre,{children:(0,a.jsx)(n.code,{className:"language-tsx",metastring:'title="docusaurus.config.js"',children:"[\n '@docusaurus/preset-classic',\n {\n blog: {\n feedOptions: {\n // highlight-start\n createFeedItems: async (params) => {\n const {blogPosts, defaultCreateFeedItems, ...rest} = params;\n return defaultCreateFeedItems({\n // keep only the 10 most recent blog posts in the feed\n blogPosts: blogPosts.filter((item, index) => index < 10),\n ...rest,\n });\n },\n // highlight-end\n },\n },\n },\n];\n"})}),"\n",(0,a.jsx)(n.h3,{id:"translations",children:"Translations"}),"\n",(0,a.jsx)(n.p,{children:"We added or completed the default theme translation support for multiple languages:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["\uD83C\uDDF8\uD83C\uDDEE ",(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/pull/8541",children:"#8541"})," Slovenian"]}),"\n",(0,a.jsxs)(n.li,{children:["\uD83C\uDDF9\uD83C\uDDF7 ",(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/pull/8289",children:"#8289"})," Turkish"]}),"\n",(0,a.jsxs)(n.li,{children:["\uD83C\uDDEE\uD83C\uDDF7 ",(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/pull/8406",children:"#8406"})," Farsi"]}),"\n",(0,a.jsxs)(n.li,{children:["\uD83C\uDDF5\uD83C\uDDF1 ",(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/pull/8525",children:"#8525"})," Polish"]}),"\n",(0,a.jsxs)(n.li,{children:["\uD83C\uDDE8\uD83C\uDDF3 ",(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/pull/8423",children:"#8423"})," Chinese"]}),"\n",(0,a.jsxs)(n.li,{children:["\uD83C\uDDF8\uD83C\uDDEA ",(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/pull/8312",children:"#8312"})," Swedish"]}),"\n",(0,a.jsxs)(n.li,{children:["\uD83C\uDDFB\uD83C\uDDF3 ",(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/pull/8450",children:"#8450"})," Vietnamese"]}),"\n"]}),"\n",(0,a.jsx)(n.admonition,{type:"tip",children:(0,a.jsxs)(n.p,{children:["Completing theme translations is an ",(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/issues/3526",children:"ongoing effort"})," and an easy way to contribute to Docusaurus. We add new theme features regularly, for which we often ",(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/issues/3526",children:"need new translations"}),"."]})}),"\n",(0,a.jsx)(n.h2,{id:"other-changes",children:"Other changes"}),"\n",(0,a.jsx)(n.p,{children:"Other notable changes include:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/pull/8463",children:"#8463"})," and ",(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/pull/8328",children:"#8328"}),": fix some annoying Docusaurus layout issues"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/pull/8539",children:"#8539"}),": Algolia plugin ",(0,a.jsx)(n.code,{children:"options.searchPagePath"})," should be correctly applied to search modal footer"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/pull/8462",children:"#8462"}),": Algolia plugin now makes it easier to transform displayed search results with custom logic"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.a,{href:"https://github.com/facebook/docusaurus/pull/8397",children:"#8397"}),": the ",(0,a.jsx)(n.code,{children:"deploy"})," CLI now understands git url ",(0,a.jsx)(n.code,{children:"insteadOf"})," config"]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["Check the ",(0,a.jsx)(n.strong,{children:(0,a.jsx)(n.a,{href:"/changelog/2.3.0",children:"2.3.0 changelog entry"})})," for an exhaustive list of changes."]})]})}function g(e={}){let{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(p,{...e})}):p(e)}},58636:function(e,n,t){t.d(n,{Z:()=>o});var r=t("24246");t("27378");var a=t("90496");let s="tabItem_pnkT";function o(e){var n=e.children,t=e.hidden,o=e.className;return(0,r.jsx)("div",{role:"tabpanel",className:(0,a.Z)(s,o),hidden:t,children:n})}},15398:function(e,n,t){t.d(n,{Z:()=>k});var r=t("24246"),a=t("27378"),s=t("90496"),o=t("54947"),i=t("3620"),l=t("844"),u=t("97486"),c=t("32263"),d=t("16971");function h(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=Array(n);t<n;t++)r[t]=e[t];return r}function p(e,n){return function(e){if(Array.isArray(e))return e}(e)||function(e,n){var t,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var s=[],o=!0,i=!1;try{for(a=a.call(e);!(o=(t=a.next()).done)&&(s.push(t.value),!n||s.length!==n);o=!0);}catch(e){i=!0,r=e}finally{try{!o&&null!=a.return&&a.return()}finally{if(i)throw r}}return s}}(e,n)||function(e,n){if(e){if("string"==typeof e)return h(e,n);var t=Object.prototype.toString.call(e).slice(8,-1);if("Object"===t&&e.constructor&&(t=e.constructor.name),"Map"===t||"Set"===t)return Array.from(t);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return h(e,n)}}(e,n)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function g(e){var n,t;return null!==(t=null===(n=a.Children.toArray(e).filter(function(e){return"\n"!==e}).map(function(e){var n,t;if(!e||(0,a.isValidElement)(e)&&(n=e.props)&&(void 0===n?"undefined":(t=n)&&"undefined"!=typeof Symbol&&t.constructor===Symbol?"symbol":typeof t)=="object"&&"value"in n)return e;throw Error("Docusaurus error: Bad <Tabs> child <".concat("string"==typeof e.type?e.type:e.type.name,'>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.'))}))||void 0===n?void 0:n.filter(Boolean))&&void 0!==t?t:[]}function f(e){var n=e.value;return e.tabValues.some(function(e){return e.value===n})}var b=t("71607");let m="tabList_Qoir",j="tabItem_AQgk";function y(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(n){var r,a,s;r=e,a=n,s=t[n],a in r?Object.defineProperty(r,a,{value:s,enumerable:!0,configurable:!0,writable:!0}):r[a]=s})}return e}function v(e,n){return n=null!=n?n:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):(function(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}),e}function x(e){var n=e.className,t=e.block,a=e.selectedValue,i=e.selectValue,l=e.tabValues,u=[],c=(0,o.o5)().blockElementScrollPositionUntilNextRender,d=function(e){var n=e.currentTarget,t=l[u.indexOf(n)].value;t!==a&&(c(n),i(t))},h=function(e){var n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":var t,r=u.indexOf(e.currentTarget)+1;n=null!==(t=u[r])&&void 0!==t?t:u[0];break;case"ArrowLeft":var a,s=u.indexOf(e.currentTarget)-1;n=null!==(a=u[s])&&void 0!==a?a:u[u.length-1]}null==n||n.focus()};return(0,r.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.Z)("tabs",{"tabs--block":t},n),children:l.map(function(e){var n=e.value,t=e.label,o=e.attributes;return(0,r.jsx)("li",v(y({role:"tab",tabIndex:a===n?0:-1,"aria-selected":a===n,ref:function(e){return u.push(e)},onKeyDown:h,onClick:d},o),{className:(0,s.Z)("tabs__item",j,null==o?void 0:o.className,{"tabs__item--active":a===n}),children:null!=t?t:n}),n)})})}function w(e){var n=e.lazy,t=e.children,o=e.selectedValue,i=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){var l=i.find(function(e){return e.props.value===o});return l?(0,a.cloneElement)(l,{className:(0,s.Z)("margin-top--md",l.props.className)}):null}return(0,r.jsx)("div",{className:"margin-top--md",children:i.map(function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==o})})})}function O(e){var n=function(e){var n,t,r,s,o,h,b,m,j,y,v,x,w,O,k=e.defaultValue,S=e.queryString,P=e.groupId;var I=(t=(n=e).values,r=n.children,(0,a.useMemo)(function(){var e=null!=t?t:g(r).map(function(e){var n=e.props;return{value:n.value,label:n.label,attributes:n.attributes,default:n.default}});return!function(e){var n=(0,c.lx)(e,function(e,n){return e.value===n.value});if(n.length>0)throw Error('Docusaurus error: Duplicate values "'.concat(n.map(function(e){return e.value}).join(", "),'" found in <Tabs>. Every value needs to be unique.'))}(e),e},[t,r])),T=p((0,a.useState)(function(){return function(e){var n,t=e.defaultValue,r=e.tabValues;if(0===r.length)throw Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(t){if(!f({value:t,tabValues:r}))throw Error('Docusaurus error: The <Tabs> has a defaultValue "'.concat(t,'" but none of its children has the corresponding value. Available values are: ').concat(r.map(function(e){return e.value}).join(", "),". If you intend to show no default tab, use defaultValue={null} instead."));return t}var a=null!==(n=r.find(function(e){return e.default}))&&void 0!==n?n:r[0];if(!a)throw Error("Unexpected error: 0 tabValues");return a.value}({defaultValue:k,tabValues:I})}),2),D=T[0],N=T[1];var A=p((o=(s={queryString:void 0!==S&&S,groupId:P}).queryString,h=s.groupId,b=(0,i.k6)(),m=function(e){var n=e.queryString,t=void 0!==n&&n,r=e.groupId;if("string"==typeof t)return t;if(!1===t)return null;if(!0===t&&!r)throw Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return null!=r?r:null}({queryString:void 0!==o&&o,groupId:h}),[(0,u._X)(m),(0,a.useCallback)(function(e){if(!!m){var n,t,r=new URLSearchParams(b.location.search);r.set(m,e),b.replace((n=function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(n){var r,a,s;r=e,a=n,s=t[n],a in r?Object.defineProperty(r,a,{value:s,enumerable:!0,configurable:!0,writable:!0}):r[a]=s})}return e}({},b.location),t=(t={search:r.toString()},t),Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):(function(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}),n))}},[m,b])]),2),V=A[0],Z=A[1];var E=p((y=(j=({groupId:P}).groupId)?"docusaurus.tab.".concat(j):null,x=(v=p((0,d.Nk)(y),2))[0],w=v[1],[x,(0,a.useCallback)(function(e){if(!!y)w.set(e)},[y,w])]),2),q=E[0],C=E[1];var _=f({value:O=null!=V?V:q,tabValues:I})?O:null;return(0,l.Z)(function(){_&&N(_)},[_]),{selectedValue:D,selectValue:(0,a.useCallback)(function(e){if(!f({value:e,tabValues:I}))throw Error("Can't select invalid tab value=".concat(e));N(e),Z(e),C(e)},[Z,C,I]),tabValues:I}}(e);return(0,r.jsxs)("div",{className:(0,s.Z)("tabs-container",m),children:[(0,r.jsx)(x,y({},n,e)),(0,r.jsx)(w,y({},n,e))]})}function k(e){var n=(0,b.Z)();return(0,r.jsx)(O,v(y({},e),{children:g(e.children)}),String(n))}},14522:function(e,n,t){t.d(n,{Z:()=>p});var r=t("24246");t("27378");var a=t("90496");let s="browserWindow_my1Q",o="browserWindowHeader_jXSR",i="buttons_uHc7",l="browserWindowAddressBar_Pd8y",u="dot_giz1",c="browserWindowMenuIcon_Vhuh",d="bar_rrRL",h="browserWindowBody_Idgs";function p(e){var n,t,p=e.children,g=e.minHeight,f=e.url,b=e.style,m=e.bodyStyle;return(0,r.jsxs)("div",{className:s,style:(n=function(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{},r=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(t).filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.forEach(function(n){var r,a,s;r=e,a=n,s=t[n],a in r?Object.defineProperty(r,a,{value:s,enumerable:!0,configurable:!0,writable:!0}):r[a]=s})}return e}({},b),t=(t={minHeight:g},t),Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):(function(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t.push.apply(t,r)}return t})(Object(t)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}),n),children:[(0,r.jsxs)("div",{className:o,children:[(0,r.jsxs)("div",{className:i,children:[(0,r.jsx)("span",{className:u,style:{background:"#f25f58"}}),(0,r.jsx)("span",{className:u,style:{background:"#fbbe3c"}}),(0,r.jsx)("span",{className:u,style:{background:"#58cb42"}})]}),(0,r.jsx)("div",{className:(0,a.Z)(l,"text--truncate"),children:void 0===f?"http://localhost:3000":f}),(0,r.jsx)("div",{className:c,children:(0,r.jsxs)("div",{children:[(0,r.jsx)("span",{className:d}),(0,r.jsx)("span",{className:d}),(0,r.jsx)("span",{className:d})]})})]}),(0,r.jsx)("div",{className:h,style:m,children:p})]})}},80980:function(e,n,t){t.d(n,{Z:function(){return i},a:function(){return o}});var r=t(27378);let a={},s=r.createContext(a);function o(e){let n=r.useContext(s);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function i(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(a):e.components||a:o(e.components),r.createElement(s.Provider,{value:n},e.children)}},28878:function(e){e.exports=JSON.parse('{"permalink":"/blog/releases/2.3","editUrl":"https://github.com/facebook/docusaurus/edit/main/website/blog/releases/2.3/index.mdx","source":"@site/blog/releases/2.3/index.mdx","title":"Docusaurus 2.3","description":"We are happy to announce Docusaurus 2.3.","date":"2023-01-27T00:00:00.000Z","tags":[{"inline":false,"label":"Release","permalink":"/blog/tags/release","description":"Blog posts about Docusaurus\' new releases"}],"readingTime":2.89,"hasTruncateMarker":true,"authors":[{"name":"S\xe9bastien Lorber","title":"Docusaurus maintainer, This Week In React editor","url":"https://thisweekinreact.com","page":{"permalink":"/blog/authors/slorber"},"description":"A freelance React and React-Native developer near Paris and Docusaurus maintainer. Also runs ThisWeekInReact.com, a newsletter to stay updated with the React ecosystem.\\n","socials":{"x":"https://x.com/sebastienlorber","linkedin":"https://www.linkedin.com/in/sebastienlorber/","github":"https://github.com/slorber","newsletter":"https://thisweekinreact.com"},"imageURL":"https://github.com/slorber.png","key":"slorber"}],"frontMatter":{"title":"Docusaurus 2.3","authors":["slorber"],"tags":["release"],"image":"./img/social-card.png","date":"2023-01-27T00:00:00.000Z"},"unlisted":false,"lastUpdatedAt":1729614878000,"lastUpdatedBy":"S\xe9bastien Lorber","prevItem":{"title":"Docusaurus 2.4","permalink":"/blog/releases/2.4"},"nextItem":{"title":"Docusaurus 2.2","permalink":"/blog/releases/2.2"}}')}}]); |