(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4013,0],{4112:function(e,t,a){"use strict";a.d(t,{Z:function(){return d}});var r=a(7294),l=a(6010),n=a(2511),s="sidebar_2ahu",c="sidebarItemTitle_2hhb",i="sidebarItemList_2xAf",o="sidebarItem_2UVv",m="sidebarItemLink_1RT6",u="sidebarItemLinkActive_12pM",f=a(7130);function d(e){var t=e.sidebar;return 0===t.items.length?null:r.createElement("nav",{className:(0,l.Z)(s,"thin-scrollbar"),"aria-label":(0,f.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},r.createElement("div",{className:(0,l.Z)(c,"margin-bottom--md")},t.title),r.createElement("ul",{className:i},t.items.map((function(e){return r.createElement("li",{key:e.permalink,className:o},r.createElement(n.Z,{isNavLink:!0,to:e.permalink,className:m,activeClassName:u},e.title))}))))}},9488:function(e,t,a){"use strict";a.r(t);var r=a(7294),l=a(6265),n=a(2511),s=a(4112),c=a(7130),i=a(2433);t.default=function(e){var t=e.tags,a=e.sidebar,o=(0,c.I)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"}),m={};Object.keys(t).forEach((function(e){var t=function(e){return e[0].toUpperCase()}(e);m[t]=m[t]||[],m[t].push(e)}));var u=Object.entries(m).sort((function(e,t){var a=e[0],r=t[0];return a.localeCompare(r)})).map((function(e){var a=e[0],l=e[1];return r.createElement("article",{key:a},r.createElement("h2",null,a),l.map((function(e){return r.createElement(n.Z,{className:"padding-right--md",href:t[e].permalink,key:e},t[e].name," (",t[e].count,")")})),r.createElement("hr",null))})).filter((function(e){return null!=e}));return r.createElement(l.Z,{title:o,wrapperClassName:i.kM.wrapper.blogPages,pageClassName:i.kM.page.blogTagsListPage,searchMetadatas:{tag:"blog_tags_list"}},r.createElement("div",{className:"container margin-vert--lg"},r.createElement("div",{className:"row"},r.createElement("aside",{className:"col col--3"},r.createElement(s.Z,{sidebar:a})),r.createElement("main",{className:"col col--7"},r.createElement("h1",null,o),r.createElement("section",{className:"margin-vert--lg"},u)))))}},283:function(e,t,a){"use strict";a.d(t,{Z:function(){return p}});var r=a(2122),l=a(9756),n=a(7294),s=a(6010),c=a(2511),i=a(2433),o=a(9524),m="footerLogoLink_qW4Z",u="footerCopyright_2yvt",f=a(4087),d=["to","href","label","prependBaseUrlToHref"];function g(e){var t=e.to,a=e.href,s=e.label,i=e.prependBaseUrlToHref,m=(0,l.Z)(e,d),u=(0,o.Z)(t),f=(0,o.Z)(a,{forcePrependBaseUrl:!0});return n.createElement(c.Z,(0,r.Z)({className:"footer__link-item"},a?{href:i?f:a}:{to:u},m),s)}var h=function(e){var t=e.sources,a=e.alt;return n.createElement(f.Z,{className:"footer__logo",alt:a,sources:t})};var p=function(){var e=(0,i.LU)().footer,t=e||{},a=t.copyright,r=t.links,l=void 0===r?[]:r,f=t.logo,d=void 0===f?{}:f,p={light:(0,o.Z)(d.src),dark:(0,o.Z)(d.srcDark||d.src)};return e?n.createElement("footer",{className:(0,s.Z)("footer",{"footer--dark":"dark"===e.style})},n.createElement("div",{className:"container"},l&&l.length>0&&n.createElement("div",{className:"row footer__links"},l.map((function(e,t){return n.createElement("div",{key:t,className:"col footer__col"},null!=e.title?n.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?n.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?n.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):n.createElement("li",{key:e.href||e.to,className:"footer__item"},n.createElement(g,e))}))):null)}))),(d||a)&&n.createElement("div",{className:"footer__bottom text--center"},d&&(d.src||d.srcDark)&&n.createElement("div",{className:"margin-bottom--sm"},d.href?n.createElement(c.Z,{href:d.href,className:m},n.createElement(h,{alt:d.alt,sources:p})):n.createElement(h,{alt:d.alt,sources:p})),a?n.createElement("div",{className:u,dangerouslySetInnerHTML:{__html:a}}):null))):null}}}]);