@zanichelli/zanichelli-it-frontend-kit 0.1.2 → 0.1.3

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.
Files changed (107) hide show
  1. package/dist/types/components/menubar/menu/menu.d.ts +2 -2
  2. package/dist/types/components/menubar/menubar.d.ts +4 -1
  3. package/dist/types/components/menubar/mobile-menubar/mobile-menubar.d.ts +4 -3
  4. package/dist/types/components.d.ts +8 -8
  5. package/dist/zanichelli-it-frontend-kit/index-BQ_orCyU.js +4170 -0
  6. package/dist/zanichelli-it-frontend-kit/index-BQ_orCyU.js.map +1 -0
  7. package/dist/zanichelli-it-frontend-kit/index.esm.js +10 -0
  8. package/dist/zanichelli-it-frontend-kit/index.esm.js.map +1 -1
  9. package/dist/zanichelli-it-frontend-kit/menu-Cd2leC2L.js +46 -0
  10. package/dist/zanichelli-it-frontend-kit/menu-Cd2leC2L.js.map +1 -0
  11. package/dist/{collection/utils/utils.js → zanichelli-it-frontend-kit/utils-CaxAWyZI.js} +7 -3
  12. package/dist/zanichelli-it-frontend-kit/utils-CaxAWyZI.js.map +1 -0
  13. package/dist/zanichelli-it-frontend-kit/zanichelli-it-frontend-kit.css +993 -1
  14. package/dist/zanichelli-it-frontend-kit/zanichelli-it-frontend-kit.esm.js +49 -1
  15. package/dist/zanichelli-it-frontend-kit/zanichelli-it-frontend-kit.esm.js.map +1 -1
  16. package/dist/zanichelli-it-frontend-kit/zanit-menubar.entry.esm.js.map +1 -0
  17. package/dist/{components/zanit-menubar.js → zanichelli-it-frontend-kit/zanit-menubar.entry.js} +36 -60
  18. package/dist/zanichelli-it-frontend-kit/zanit-menubar.entry.js.map +1 -0
  19. package/dist/zanichelli-it-frontend-kit/zanit-mobile-menubar.entry.esm.js.map +1 -0
  20. package/dist/{components/p-CWNmI_TK.js → zanichelli-it-frontend-kit/zanit-mobile-menubar.entry.js} +31 -96
  21. package/dist/zanichelli-it-frontend-kit/zanit-mobile-menubar.entry.js.map +1 -0
  22. package/dist/zanichelli-it-frontend-kit/zanit-search-form.entry.esm.js.map +1 -0
  23. package/dist/{components/p-Cphl7FvH.js → zanichelli-it-frontend-kit/zanit-search-form.entry.js} +13 -53
  24. package/dist/zanichelli-it-frontend-kit/zanit-search-form.entry.js.map +1 -0
  25. package/package.json +1 -1
  26. package/www/build/index-BQ_orCyU.js +4170 -0
  27. package/www/build/index-BQ_orCyU.js.map +1 -0
  28. package/www/build/index.esm.js +10 -0
  29. package/www/build/index.esm.js.map +1 -1
  30. package/www/build/menu-Cd2leC2L.js +46 -0
  31. package/www/build/menu-Cd2leC2L.js.map +1 -0
  32. package/www/build/utils-CaxAWyZI.js +21 -0
  33. package/www/build/utils-CaxAWyZI.js.map +1 -0
  34. package/www/build/zanichelli-it-frontend-kit.css +993 -1
  35. package/www/build/zanichelli-it-frontend-kit.esm.js +49 -1
  36. package/www/build/zanichelli-it-frontend-kit.esm.js.map +1 -1
  37. package/www/build/zanit-menubar.entry.esm.js.map +1 -0
  38. package/{dist/collection/components/menubar/menubar.js → www/build/zanit-menubar.entry.js} +46 -177
  39. package/www/build/zanit-menubar.entry.js.map +1 -0
  40. package/www/build/zanit-mobile-menubar.entry.esm.js.map +1 -0
  41. package/www/build/zanit-mobile-menubar.entry.js +159 -0
  42. package/www/build/zanit-mobile-menubar.entry.js.map +1 -0
  43. package/www/build/zanit-search-form.entry.esm.js.map +1 -0
  44. package/{dist/collection/components/menubar/search-form/search-form.js → www/build/zanit-search-form.entry.js} +23 -101
  45. package/www/build/zanit-search-form.entry.js.map +1 -0
  46. package/www/index.html +185 -37
  47. package/dist/cjs/index-C45Wd3rZ.js +0 -1535
  48. package/dist/cjs/index-C45Wd3rZ.js.map +0 -1
  49. package/dist/cjs/index.cjs.js +0 -5
  50. package/dist/cjs/index.cjs.js.map +0 -1
  51. package/dist/cjs/loader.cjs.js +0 -15
  52. package/dist/cjs/loader.cjs.js.map +0 -1
  53. package/dist/cjs/zanichelli-it-frontend-kit.cjs.js +0 -27
  54. package/dist/cjs/zanichelli-it-frontend-kit.cjs.js.map +0 -1
  55. package/dist/cjs/zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.cjs.js.map +0 -1
  56. package/dist/cjs/zanit-menubar_3.cjs.entry.js +0 -648
  57. package/dist/cjs/zanit-menubar_3.cjs.entry.js.map +0 -1
  58. package/dist/collection/collection-manifest.json +0 -14
  59. package/dist/collection/components/menubar/menu/menu.css +0 -98
  60. package/dist/collection/components/menubar/menu/menu.js +0 -34
  61. package/dist/collection/components/menubar/menu/menu.js.map +0 -1
  62. package/dist/collection/components/menubar/menubar.css +0 -171
  63. package/dist/collection/components/menubar/menubar.js.map +0 -1
  64. package/dist/collection/components/menubar/mobile-menubar/mobile-menubar.css +0 -114
  65. package/dist/collection/components/menubar/mobile-menubar/mobile-menubar.js +0 -280
  66. package/dist/collection/components/menubar/mobile-menubar/mobile-menubar.js.map +0 -1
  67. package/dist/collection/components/menubar/search-form/search-form.css +0 -147
  68. package/dist/collection/components/menubar/search-form/search-form.js.map +0 -1
  69. package/dist/collection/index.js +0 -11
  70. package/dist/collection/index.js.map +0 -1
  71. package/dist/collection/utils/types.js +0 -2
  72. package/dist/collection/utils/types.js.map +0 -1
  73. package/dist/collection/utils/utils.js.map +0 -1
  74. package/dist/components/index.js +0 -1293
  75. package/dist/components/index.js.map +0 -1
  76. package/dist/components/p-CWNmI_TK.js.map +0 -1
  77. package/dist/components/p-Cphl7FvH.js.map +0 -1
  78. package/dist/components/zanit-menubar.js.map +0 -1
  79. package/dist/components/zanit-mobile-menubar.js +0 -9
  80. package/dist/components/zanit-mobile-menubar.js.map +0 -1
  81. package/dist/components/zanit-search-form.js +0 -9
  82. package/dist/components/zanit-search-form.js.map +0 -1
  83. package/dist/esm/index-BGwuI2U_.js +0 -1507
  84. package/dist/esm/index-BGwuI2U_.js.map +0 -1
  85. package/dist/esm/index.js +0 -4
  86. package/dist/esm/index.js.map +0 -1
  87. package/dist/esm/loader.js +0 -13
  88. package/dist/esm/loader.js.map +0 -1
  89. package/dist/esm/zanichelli-it-frontend-kit.js +0 -23
  90. package/dist/esm/zanichelli-it-frontend-kit.js.map +0 -1
  91. package/dist/esm/zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.js.map +0 -1
  92. package/dist/esm/zanit-menubar_3.entry.js +0 -644
  93. package/dist/esm/zanit-menubar_3.entry.js.map +0 -1
  94. package/dist/index.cjs.js +0 -1
  95. package/dist/index.js +0 -1
  96. package/dist/zanichelli-it-frontend-kit/p-BGwuI2U_.js +0 -3
  97. package/dist/zanichelli-it-frontend-kit/p-BGwuI2U_.js.map +0 -1
  98. package/dist/zanichelli-it-frontend-kit/p-b064a657.entry.js +0 -2
  99. package/dist/zanichelli-it-frontend-kit/p-b064a657.entry.js.map +0 -1
  100. package/dist/zanichelli-it-frontend-kit/zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.esm.js.map +0 -1
  101. package/www/build/p-984b8fa6.css +0 -1
  102. package/www/build/p-BGwuI2U_.js +0 -3
  103. package/www/build/p-BGwuI2U_.js.map +0 -1
  104. package/www/build/p-b064a657.entry.js +0 -2
  105. package/www/build/p-b064a657.entry.js.map +0 -1
  106. package/www/build/p-ff7fd122.js +0 -2
  107. package/www/build/zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.esm.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import{h as e,r as t,a as r,F as i,c as a}from"./p-BGwuI2U_.js";const n=(e,t)=>t.composedPath().filter((e=>e!==document&&e!==window.window)).some((t=>e.contains(t)));const o=(e,t)=>{e.tabIndex=-1;t.tabIndex=0;t.focus()};const s="default";const l={id:s,label:s};const h=e=>{const t=e.reduce(((e,t)=>{const r=e.find((({group:e})=>e.id===(t.group?.id||l.id)));if(!r){e.push({group:t.group??l,items:[t]})}else{r.items.push(t)}return e}),[]);return t.sort(((e,t)=>e.group.id===s?1:t.group.id===s?-1:0))};const u=({controlledBy:t,items:r,current:i,onItemKeyDown:a})=>{if(!r?.length){return null}const n=h(r);return e("div",{class:"menu-wrapper",role:"none"},e("div",{class:"menu","aria-labelledby":t??undefined,role:"menu"},n.map((({group:t,items:r})=>e("div",{class:{group:true,highlight:r.some((e=>e.highlight))}},t.id!==s?e("div",{class:"group-name",id:t.id},t.label):n.length>1?e("div",{class:"group-name"}):null,e("ul",{class:"menu-list",role:"group","aria-labelledby":t.id!==s?t.id:undefined},r.map((t=>e("li",{role:"none"},t.href&&e("a",{class:{"menu-item":true,active:i===t.id},href:t.href,role:"menuitem",tabIndex:-1,"aria-current":i===t.id?"page":"false",onKeyDown:e=>a(e)},t.label))))))))))};const c=":host{position:relative;z-index:2;display:flex;width:100%;background-color:#fff;color:var(--gray900);font-family:var(--font-family-sans)}:host,*,::before,::after{box-sizing:border-box}*:focus:focus-visible{box-shadow:var(--shadow-focus-primary);outline:none}ul{padding:0;margin:0;list-style:none}a{color:var(--gray900);cursor:pointer;text-decoration:none}button{all:unset;cursor:pointer}:host nav{width:100%}.shadow-wrapper{position:relative;z-index:1;display:flex;width:100%}.shadow-wrapper::after{position:absolute;top:0;right:0;width:100%;height:100%;background:transparent;box-shadow:var(--shadow-1);content:'';pointer-events:none}.width-limiter{position:relative;display:flex;width:100%;max-width:var(--zanit-menubar-max-width, 1366px);margin:0 auto}.shadow-wrapper+.shadow-wrapper{z-index:0}.sub-menubar>ul{gap:28px}.width-limiter>ul,.sub-menubar>ul{position:relative;display:flex;width:100%;align-items:center;padding:0 var(--grid-margin);margin-right:auto;margin-left:auto;gap:20px}.shadow-wrapper>.width-limiter,.shadow-wrapper>ul{width:100%;max-width:var(--zanit-menubar-max-width, 1366px)}ul.menubar{padding-right:0}.menubar z-ghost-loading{display:block;width:120px;height:1.25rem}.menubar>li[role='separator']{width:1px;height:1.25rem;background-color:#000}.menubar-item{position:relative;display:flex;align-items:center;padding:14px 0;font-size:1rem;gap:8px;line-height:1.25rem}.menubar .menubar-item{text-transform:uppercase}.menubar-item [data-text]{display:flex;flex-direction:column}.menubar-item.active>[data-text],.menubar-item:hover>[data-text],.menubar-item:focus:focus-visible>[data-text]{font-weight:var(--font-bd)}.menubar-item>[data-text]::after{height:0;content:attr(data-text) / '';font-weight:var(--font-bd);letter-spacing:normal;pointer-events:none;user-select:none;visibility:hidden}.sub-menubar:not(.visible){display:none}.sub-menubar .menubar-item.active::after{position:absolute;z-index:-1;bottom:0;left:-4px;width:calc(100% + 8px);height:4px;background-color:var(--red500);content:''}zanit-search-form{margin-left:auto}";const d=".menu-wrapper{width:100%;background-color:#fff}.menu{position:relative;display:flex;width:100%;flex-direction:column;gap:32px 0}.menu .group{display:flex;flex-direction:column}.menu .group .group-name{border-bottom:1px solid currentcolor;margin-bottom:4px;color:var(--red500);font-size:0.875rem;font-weight:var(--font-rg)}.menu .group .menu-list{display:flex;flex-direction:column;gap:4px}.menu .group .menu-list .menu-item{border-bottom:2px solid transparent;font-size:0.875rem;font-weight:var(--font-md)}.menu .menu-list .menu-item.active,.menu .menu-list .menu-item:hover{border-bottom-color:var(--red500)}.menu .group.highlight .menu-list .menu-item{font-size:1rem}@media (width >= 768px){.menu-wrapper{position:absolute;top:100%;left:0;display:flex;justify-content:center;box-shadow:var(--shadow-1)}.menu{display:grid;width:100%;max-width:var(--zanit-menubar-max-width, 1366px);padding:16px var(--grid-margin);gap:0 24px;grid-auto-columns:minmax(0, max-content);grid-auto-flow:column;grid-template-rows:minmax(0, max-content) max-content}.menu .group{display:grid;grid-row:1 / -1;grid-template-columns:1fr;grid-template-rows:subgrid}@supports not (grid-template-rows: subgrid){.menu .group{grid-template-rows:repeat(auto-fit, minmax(0, max-content))}}.menu .group .group-name{border:none;margin-bottom:16px}.menu .group .menu-list .menu-item{font-size:1rem}.menu .group.highlight .menu-list .menu-item{font-size:1.5rem}.menu .group.highlight .menu-list{gap:24px}}";const m=class{constructor(e){t(this,e)}get host(){return r(this)}items=[];openMenu=undefined;openNavbar=undefined;isMobile=false;loading=false;data;current=undefined;mouseOutTimeout=1e3;searchQuery=undefined;timerId;async parseData(e){if(!e){return}if(e instanceof URL){this.items=await this.fetchData(e)}else if(e instanceof Promise){this.loading=true;this.items=await e;this.loading=false}else if(typeof e==="string"){try{this.items=JSON.parse(e);if(!Array.isArray(this.items)||!this.items?.every((e=>e))){throw new Error("Expected an array of MenubarItem objects.")}}catch{let t;try{t=new URL(e)}catch{throw new Error("Invalid string provided for `data` property: not a valid url or JSON.")}this.items=await this.fetchData(t)}}else if(Array.isArray(e)&&e.every((e=>e))){this.items=e}else{throw new Error("Invalid `data` property value. Expected an url, a JSON or an array/promise of MenubarItem objects.")}}onItemsChange(){this.initTabindex()}async connectedCallback(){const e=window.matchMedia("(width < 768px)");this.isMobile=e.matches;e.onchange=e=>{this.isMobile=e.matches;this.initTabindex();this.openMenu=undefined};await this.parseData(this.data);this.initTabindex()}handleOutsideClick(e){if(!this.openMenu||n(this.host,e)){return}this.openMenu=undefined}handleKeydown(e){switch(e.key){case"Escape":case"Tab":this.openMenu=undefined;break}}handleMouseover(){clearTimeout(this.timerId)}handleMouseout(e){this.timerId=window.setTimeout((()=>{if(!this.openMenu||n(this.host,e)){return}this.openMenu=undefined}),this.mouseOutTimeout)}handleFocusout(e){const t=e.relatedTarget;if(!this.openMenu||this.host.shadowRoot.querySelector(".menu")?.contains(t)){return}this.openMenu=undefined}async fetchData(e){try{this.loading=true;const t=await(await fetch(e)).json();this.loading=false;if(!Array.isArray(t)||!t.every((e=>e))){throw new Error("Invalid data structure. Expected an array of MenuItem objects.")}return t}catch(e){this.loading=false;console.error("Error fetching menubar data:",e);throw new Error("Failed to fetch menubar data from the provided URL.",{cause:e})}}initTabindex(){setTimeout((()=>{this.host.shadowRoot.querySelectorAll('[role="menubar"]')?.forEach((e=>{e.querySelectorAll('[role="menuitem"]')?.forEach(((e,t)=>e.setAttribute("tabindex",t===0?"0":"-1")))}))}),100)}isActive(e){if(e.id===this.current){return true}if(e.menuItems?.length){return e.menuItems.some((e=>e.id===this.current))}if(e.navbarItems?.length){const t=e.navbarItems.some((e=>this.isActive(e)));if(t){return true}}return false}showMenu(e){if(!e.menuItems?.length){return}this.openMenu=e.id}getParentMenubarElements(e){return Array.from(e?.closest('[role="menubar"]')?.querySelectorAll(':scope > li a[role="menuitem"]')??[])}focusPreviousItem(e){const t=this.getParentMenubarElements(e);e.tabIndex=-1;const r=t.indexOf(e);const i=t[(r-1+t.length)%t.length];i.tabIndex=0;i.focus();if(i.ariaHasPopup==="true"&&this.openMenu){this.openMenu=i.id}}focusNextItem(e){const t=this.getParentMenubarElements(e);e.tabIndex=-1;const r=t.indexOf(e);const i=t[(r+1)%t.length];i.tabIndex=0;i.focus();if(i.ariaHasPopup==="true"&&this.openMenu){this.openMenu=i.id}}handleItemKeydown(e,t){const r=e.target;switch(e.key){case"Home":{e.preventDefault();e.stopPropagation();const t=this.getParentMenubarElements(r)[0];o(r,t);break}case"End":{e.preventDefault();e.stopPropagation();const t=this.getParentMenubarElements(r).pop();o(r,t);break}case"ArrowUp":{if(!t.menuItems?.length){break}e.preventDefault();e.stopPropagation();this.openMenu=t.id;setTimeout((()=>{const e=Array.from(this.host.shadowRoot.querySelectorAll(`[aria-labelledby=${t.id}] [role="menuitem"]`));o(r,e[e.length-1])}),100);break}case"ArrowRight":{e.preventDefault();e.stopPropagation();this.focusNextItem(r);break}case"ArrowDown":{if(!t.menuItems?.length){break}this.openMenu=t.id;setTimeout((()=>{const e=this.host.shadowRoot.querySelector(`[aria-labelledby=${t.id}] [role="menuitem"]`);e.tabIndex=0;e.focus()}),100);break}case"ArrowLeft":{e.preventDefault();e.stopPropagation();this.focusPreviousItem(r);break}}}getPreviousGroup(e){const t=Array.from(e?.closest('[role="menu"]')?.querySelectorAll('[role="group"]')??[]);const r=t.indexOf(e);return t[r-1]}getNextGroup(e){const t=Array.from(e?.closest('[role="menu"]')?.querySelectorAll('[role="group"]')??[]);const r=t.indexOf(e);return t[r+1]}handleMenuKeydown(e){const t=e.target;const r=Array.from(t.closest('[role="menu"]')?.querySelectorAll('[role="menuitem"]')??[]);const i=r.indexOf(t);switch(e.key){case"ArrowUp":{e.preventDefault();e.stopPropagation();const a=r[i-1]||r[r.length-1];o(t,a);break}case"ArrowRight":{e.preventDefault();e.stopPropagation();const r=t.closest("[role=group]");const i=this.getNextGroup(r);if(!i){t.tabIndex=-1;const e=t.closest('[role="menu"][aria-labelledby]').getAttribute("aria-labelledby");const r=this.host.shadowRoot.getElementById(e);this.focusNextItem(r);break}const a=i.querySelectorAll('[role="menuitem"]')??[];o(t,a[0]);break}case"ArrowDown":{e.preventDefault();e.stopPropagation();const a=r[i+1]||r[0];o(t,a);break}case"ArrowLeft":{e.preventDefault();e.stopPropagation();const r=t.closest("[role=group]");const i=this.getPreviousGroup(r);if(!i){t.tabIndex=-1;const e=t.closest('[role="menu"][aria-labelledby]').getAttribute("aria-labelledby");const r=this.host.shadowRoot.getElementById(e);this.focusPreviousItem(r);break}const a=i.querySelectorAll('[role="menuitem"]')??[];o(t,a[0]);break}case"Home":e.preventDefault();e.stopPropagation();o(t,r[0]);break;case"End":e.preventDefault();e.stopPropagation();o(t,r[r.length-1]);break}}render(){if(this.isMobile){return e("zanit-mobile-menubar",{items:this.items,current:this.current,searchQuery:this.searchQuery,loading:this.loading})}return e("nav",{"aria-label":"Zanichelli.it"},e("div",{class:"shadow-wrapper"},e("div",{class:"width-limiter"},e("ul",{class:"menubar",role:"menubar","aria-label":"Zanichelli.it"},this.loading&&[...new Array(4)].map(((t,r)=>e(i,null,e("li",{role:"none"},e("div",{class:"menubar-item"},e("z-ghost-loading",null))),r<3&&e("li",{role:"separator"})))),this.items?.map(((t,r)=>e(i,null,e("li",{role:"none"},e("a",{class:{"menubar-item":true,active:this.isActive(t)},href:t.href,id:t.id,role:"menuitem",tabIndex:-1,"aria-expanded":t.menuItems?.length?this.openMenu===t.id?"true":"false":undefined,"aria-haspopup":t.menuItems?.length?"true":"false","aria-current":this.current===t.id?"page":"false",onPointerOver:()=>this.showMenu(t),onKeyDown:e=>this.handleItemKeydown(e,t)},e("span",{"data-text":t.label},t.label),t.menuItems?.length>0&&e("z-icon",{name:this.openMenu===t.id?"chevron-up":"chevron-down",width:"0.875rem",height:"0.875rem"}))),r<this.items?.length-1&&e("li",{role:"separator"}))))),e("zanit-search-form",{searchQuery:this.searchQuery,onResetSearch:()=>this.searchQuery=undefined})),this.items.map((t=>this.openMenu===t.id&&e(u,{controlledBy:t.id,items:t.menuItems,current:this.current,onItemKeyDown:e=>this.handleMenuKeydown(e)})))),this.items?.map((t=>t.navbarItems?.length&&e("nav",{class:{"sub-menubar":true,"shadow-wrapper":true,visible:this.isActive(t)}},e("ul",{role:"menubar"},t.navbarItems.map((r=>e(i,null,e("li",{role:"none"},e("a",{class:{"menubar-item":true,active:this.isActive(r)},href:r.href,id:r.id,role:"menuitem",tabIndex:-1,"aria-haspopup":r.menuItems?.length?"true":"false","aria-expanded":r.menuItems?.length?this.openMenu===r.id?"true":"false":undefined,"aria-current":this.current===t.id?"page":"false",onPointerOver:()=>this.showMenu(r),onKeyDown:e=>this.handleItemKeydown(e,r)},e("span",null,r.label),r.menuItems?.length>0&&e("z-icon",{name:this.openMenu===r.id?"chevron-up":"chevron-down",width:"0.75rem",height:"0.75rem"}))))))),t.navbarItems.map((t=>this.openMenu===t.id&&e(u,{controlledBy:t.id,items:t.menuItems,current:this.current,onItemKeyDown:e=>this.handleMenuKeydown(e)})))))))}static get watchers(){return{data:["parseData"],items:["onItemsChange"]}}};m.style=c+d;const p=":host{position:relative;z-index:2;display:block;width:100%;max-width:100%;background-color:#fff;color:var(--gray900);fill:var(--gray900);font-family:var(--font-family-sans)}:host,*,::before,::after{box-sizing:border-box}*:focus:focus-visible{box-shadow:var(--shadow-focus-primary);outline:none}ul{padding:0;margin:0;list-style:none}a{color:var(--gray900);cursor:pointer;text-decoration:none}button{all:unset;cursor:pointer}nav{display:flex;width:100%;align-items:center;padding:8px var(--grid-margin)}nav::after{position:absolute;top:0;right:0;width:100%;height:100%;background:transparent;box-shadow:var(--shadow-1);content:'';pointer-events:none}.burger-button{margin-left:auto}.mobile-menu{position:absolute;top:100%;left:0;display:flex;width:100%;flex-direction:column;padding:16px var(--grid-margin) 32px;background-color:#fff;box-shadow:var(--shadow-2);gap:8px}.mobile-menu li{width:100%}.mobile-menu .items-container{display:flex;min-height:256px;flex-direction:column;gap:8px}.mobile-menu .items-container z-ghost-loading{width:40%;height:1.2rem}.mobile-menu .items-container .menubar-item{display:block;width:100%;padding:8px 0;font-size:1rem;text-align:left}.mobile-menu .items-container li:not(:last-child) .menubar-item{border-bottom:1px solid #000}[role='menuitem'].parent{display:flex;width:fit-content;align-items:center;padding:0;border:none;font-size:0.875rem;gap:8px}";const b=".menu-wrapper{width:100%;background-color:#fff}.menu{position:relative;display:flex;width:100%;flex-direction:column;gap:32px 0}.menu .group{display:flex;flex-direction:column}.menu .group .group-name{border-bottom:1px solid currentcolor;margin-bottom:4px;color:var(--red500);font-size:0.875rem;font-weight:var(--font-rg)}.menu .group .menu-list{display:flex;flex-direction:column;gap:4px}.menu .group .menu-list .menu-item{border-bottom:2px solid transparent;font-size:0.875rem;font-weight:var(--font-md)}.menu .menu-list .menu-item.active,.menu .menu-list .menu-item:hover{border-bottom-color:var(--red500)}.menu .group.highlight .menu-list .menu-item{font-size:1rem}@media (width >= 768px){.menu-wrapper{position:absolute;top:100%;left:0;display:flex;justify-content:center;box-shadow:var(--shadow-1)}.menu{display:grid;width:100%;max-width:var(--zanit-menubar-max-width, 1366px);padding:16px var(--grid-margin);gap:0 24px;grid-auto-columns:minmax(0, max-content);grid-auto-flow:column;grid-template-rows:minmax(0, max-content) max-content}.menu .group{display:grid;grid-row:1 / -1;grid-template-columns:1fr;grid-template-rows:subgrid}@supports not (grid-template-rows: subgrid){.menu .group{grid-template-rows:repeat(auto-fit, minmax(0, max-content))}}.menu .group .group-name{border:none;margin-bottom:16px}.menu .group .menu-list .menu-item{font-size:1rem}.menu .group.highlight .menu-list .menu-item{font-size:1.5rem}.menu .group.highlight .menu-list{gap:24px}}";const f=class{constructor(e){t(this,e)}get host(){return r(this)}current=undefined;items=[];searchQuery=undefined;loading=false;parentItem=undefined;menuItems=undefined;menuType=undefined;open;onItemsChange(){this.setupData(this.items)}setupData(e,t){for(const r of e){if(r.id===this.current){const e=r.menuItems?.length?"menu":"menubar";this.parentItem=t;this.menuType=e;this.menuItems=r.menuItems||r.navbarItems;return true}if(r.menuItems?.some((({id:e})=>e===this.current))){this.parentItem=t;this.menuType="menu";this.menuItems=r.menuItems;return true}if(r.navbarItems?.length){return this.setupData(r.navbarItems,r)}}return false}get menuItemsElement(){return Array.from(this.host.shadowRoot.querySelectorAll('[role="menuitem"]'))}initTabindex(){this.menuItemsElement.forEach(((e,t)=>e.setAttribute("tabindex",t===0?"0":"-1")))}toggleMenu(){if(this.open){this.open=false}else{this.open=true;setTimeout((()=>{this.initTabindex();this.menuItemsElement[0]?.focus()}),200)}}handleItemKeydown(e){switch(e.key){case"ArrowUp":{e.preventDefault();e.stopPropagation();const t=this.menuItemsElement;const r=t.indexOf(e.target);const i=t[(r-1+t.length)%t.length];o(t[r],i);break}case"ArrowDown":{e.preventDefault();e.stopPropagation();const t=this.menuItemsElement;const r=t.indexOf(e.target);const i=t[(r+1)%t.length];o(t[r],i);break}case"Home":{e.preventDefault();e.stopPropagation();o(e.target,this.menuItemsElement[0]);break}case"End":{e.preventDefault();e.stopPropagation();o(e.target,this.menuItemsElement.pop());break}}}connectedCallback(){this.setupData(this.items)}handleOutsideClick(e){if(n(this.host,e)){return}this.open=false}handleKeydown(e){switch(e.key){case"Escape":this.open=false;break;case"Tab":if(n(this.host,e)){break}this.open=false;break}}handleFocusout(e){if(n(this.host,e)){return}this.open=false}render(){return e("nav",{key:"df6d04c4bb8343ec62fe69df3f01f6f47b4367cf","aria-label":"Zanichelli.it"},e("z-logo",{key:"3403d6548e16d131c4ce81c624e761e523b65562",imageAlt:"Logo Zanichelli",link:"/",height:32,width:126}),e("button",{key:"198db21866d9a2b86e9094ae0d6d84c48953f3a6",class:"burger-button",type:"button","aria-expanded":this.open?"true":"false","aria-controls":"mobile-menu","aria-label":this.open?"Chiudi menù":"Apri menù",onClick:()=>this.toggleMenu()},e("z-icon",{key:"549b5327194978ee9b23fb8a2839d73d06bfd6f8",name:this.open?"multiply":"burger-menu",width:"1.5rem",height:"1.5rem"})),this.open&&e("ul",{key:"27933ec0651b98039598a5e1d26d144ea7c3c73a",class:"mobile-menu",role:"menubar"},e("li",{key:"09f8dbe1534e0f97df17e34a6f9b075f8dce10dd",role:"none"},e("zanit-search-form",{key:"64e5fa4b8d9217646da95204583da333ec0f8f6d",searchQuery:this.searchQuery,onResetSearch:()=>this.searchQuery=undefined})),!this.loading&&this.current&&e("li",{key:"b5dcca1a67de785caa2f5247c850437abb20e5e2",role:"none"},e("a",{key:"14d386b83ef96ae92070e9e738fdf70e6e0e6ef2",class:"parent",href:this.parentItem?.href??"/",id:this.parentItem?.id??undefined,role:"menuitem",tabIndex:-1,onKeyDown:e=>this.handleItemKeydown(e)},e("z-icon",{key:"7851e7a47f5723029d9ce0bf85e4010025509caf",name:"arrow-left",width:"0.5rem",height:"0.5rem"}),e("span",{key:"ab158b0c1350eedbb4c4270b2d9d111ae732af95"},this.parentItem?.label??"Home"))),this.loading&&e("div",{key:"9d4a6b292cbf067a3f5b743daff5a26bfcfaf403",class:"items-container",role:"none"},[...new Array(4)].map((()=>e("li",{role:"none"},e("div",{class:"menubar-item",role:"none"},e("z-ghost-loading",null)))))),this.menuType==="menu"?e(u,{items:this.menuItems,current:this.current,onItemKeyDown:e=>this.handleItemKeydown(e)}):this.menuItems?.length&&e("div",{class:"items-container",role:"none"},this.menuItems.map((t=>e("li",{role:"none"},e("a",{class:{"menu-item":this.menuType==="menu","menubar-item":this.menuType==="menubar"},href:t.href,id:t.id,role:"menuitem","aria-current":this.current===t.id?"page":"false",tabIndex:-1,onKeyDown:e=>this.handleItemKeydown(e)},e("span",{"data-text":t.label},t.label))))))))}static get watchers(){return{items:["onItemsChange"],current:["onItemsChange"]}}};f.style=p+b;const g=":host,*,::before,::after{box-sizing:border-box}*:focus:focus-visible{box-shadow:var(--shadow-focus-primary);outline:none}button{all:unset;cursor:pointer}@media (width < 768px){.searchbar{display:flex;align-items:center;border:1px solid #000;border-radius:4px}.searchbar>*:first-child{border-bottom-left-radius:3px;border-top-left-radius:3px}.searchbar button[type='reset']{display:flex;padding:0 0 0 8px;cursor:pointer}.searchbar input{width:100%;height:100%;padding:4px 8px;border:none;background-color:#fff;font-family:var(--font-family-sans);font-size:1rem}.searchbar input[type='search']::-webkit-search-cancel-button,.searchbar input[type='search']::-webkit-search-decoration{appearance:none}.searchbar input::placeholder{color:var(--gray500)}.searchbar .searchbar-button{padding:4px 8px;border-left:1px solid #000;background:var(--zanit-accent-color);border-bottom-right-radius:3px;border-top-right-radius:3px}.searchbar input:focus:focus-visible,.searchbar .searchbar-button:focus:focus-visible{z-index:1}}@media (width >= 768px){.searchbar{display:flex;font-size:1.5rem}.searchbar.searchbar-open{position:absolute;width:100%;height:100%;inset:0}.searchbar .input-wrapper{display:none;width:100%;align-items:center;padding:0 0 0 var(--grid-margin);background-color:#fff;gap:14px}.searchbar .input-wrapper:not(.hide){display:flex}.searchbar button[type='reset']{display:flex;align-items:center;border-radius:4px;cursor:pointer}.searchbar input{z-index:1;width:100%;height:100%;padding:8px 14px 8px 0;border:none;background-color:#fff;font-family:var(--font-family-sans);font-size:inherit}.searchbar input[type='search']::-webkit-search-cancel-button,.searchbar input[type='search']::-webkit-search-decoration{appearance:none}.searchbar input::placeholder{color:var(--gray500)}.searchbar .searchbar-button{display:flex;align-items:center;padding:8px 16px;border-right:1px solid #000;border-left:1px solid #000;background:var(--zanit-accent-color);font-family:inherit;font-size:inherit;gap:64px;line-height:1}.searchbar input:focus:focus-visible,.searchbar .searchbar-button:focus:focus-visible{z-index:1}}@media (width >= 768px) and (width < 1152px){.searchbar .searchbar-button>.searchbar-button-label{display:none}}";const w=class{constructor(e){t(this,e);this.search=a(this,"search");this.resetSearch=a(this,"resetSearch")}formElement;get host(){return r(this)}isMobile=false;showSearchbar=false;_searchQuery=undefined;searchQuery=undefined;onSearchQueryChange(){this._searchQuery=this.searchQuery;if(this.searchQuery){this.showSearchbar=true}}onShowSearchbar(){if(!this.showSearchbar){return}setTimeout((()=>{const e=this.host.shadowRoot.querySelector("#searchbar-input");if(this.showSearchbar&&!this.searchQuery){e.focus()}}),100)}search;resetSearch;async connectedCallback(){this.showSearchbar=!!this.searchQuery;const e=window.matchMedia("(width < 768px)");this.isMobile=e.matches;e.onchange=e=>{this.isMobile=e.matches}}handleOutsideClick(e){if(this.showSearchbar&&this.formElement&&!n(this.formElement,e)){this.showSearchbar=false}}resetSearchQuery(){this.searchQuery=undefined;this.resetSearch.emit()}handleInputChange(e){this._searchQuery=e.target.value;if(!this._searchQuery){this.searchQuery=undefined}}onSearchSubmit(e){e.preventDefault();if(!this._searchQuery){return}this.showSearchbar=false;const t=this.search.emit({query:this._searchQuery});if(t.defaultPrevented){return}this.formElement.submit()}render(){if(this.isMobile){return e("form",{class:"searchbar",ref:e=>this.formElement=e,role:"search","aria-label":"Cerca",method:"get",action:"/ricerca",onSubmit:e=>this.onSearchSubmit(e),onReset:()=>this.resetSearchQuery()},this.searchQuery&&e("button",{type:"reset","aria-label":"Svuota campo di ricerca"},e("z-icon",{name:"multiply-circled",width:"1rem",height:"1rem"})),e("input",{id:"searchbar-input",name:"q",type:"search",placeholder:"Cerca per parola chiave o ISBN",onInput:e=>this.handleInputChange(e),value:this.searchQuery,required:true}),e("button",{class:"searchbar-button","aria-controls":"searchbar-input","aria-label":"Cerca",type:"submit"},e("z-icon",{name:"search",width:"1.25rem",height:"1.25rem"})))}return e("form",{class:{searchbar:true,"searchbar-open":this.showSearchbar},ref:e=>this.formElement=e,role:"search","aria-label":"Cerca",method:"get",action:"/ricerca",onSubmit:e=>this.onSearchSubmit(e),onReset:()=>this.resetSearchQuery()},e("div",{class:{hide:!this.showSearchbar,"input-wrapper":true},role:"none"},this.searchQuery&&e("button",{type:"reset","aria-label":"Svuota campo di ricerca"},e("z-icon",{name:"multiply-circled",width:"1.5rem",height:"1.5rem"})),e("input",{id:"searchbar-input",name:"q",type:"search",placeholder:"Cerca per parola chiave o ISBN",onInput:e=>this.handleInputChange(e),value:this.searchQuery,required:true})),e("button",{class:"searchbar-button","aria-label":"Cerca","aria-controls":"searchbar-input",type:this.showSearchbar?"submit":"button",onClick:()=>this.showSearchbar=true},this.showSearchbar?null:e("span",{class:"searchbar-button-label"},"Cerca"),e("z-icon",{name:"search",width:"2rem",height:"2rem"})))}static get watchers(){return{searchQuery:["onSearchQueryChange"],showSearchbar:["onShowSearchbar"]}}};w.style=g;export{m as zanit_menubar,f as zanit_mobile_menubar,w as zanit_search_form};
2
- //# sourceMappingURL=p-b064a657.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["containsTarget","ancestor","event","composedPath","filter","el","document","window","some","contains","moveFocus","current","next","tabIndex","focus","DEFAULT_GROUP_KEY","DEFAULT_GROUP","id","label","getGroupedItems","items","groups","reduce","grouped","item","itemGroup","find","group","push","sort","a","b","Menu","controlledBy","onItemKeyDown","length","h","class","role","undefined","map","highlight","href","active","onKeyDown","menubarCss","menuCss","ZanitMenubar","openMenu","openNavbar","isMobile","loading","data","mouseOutTimeout","searchQuery","timerId","parseData","URL","this","fetchData","Promise","JSON","parse","Array","isArray","every","Error","url","onItemsChange","initTabindex","connectedCallback","mobileMediaQuery","matchMedia","matches","onchange","mql","handleOutsideClick","host","handleKeydown","key","handleMouseover","clearTimeout","handleMouseout","setTimeout","handleFocusout","relatedTarget","shadowRoot","querySelector","fetch","json","error","console","cause","querySelectorAll","forEach","menubar","index","setAttribute","isActive","menuItems","menuItem","navbarItems","navbarItem","showMenu","getParentMenubarElements","itemEl","from","closest","focusPreviousItem","menubarElements","currentIndex","indexOf","prevItem","ariaHasPopup","focusNextItem","nextItem","handleItemKeydown","target","preventDefault","stopPropagation","firstItem","lastItem","pop","firsMenuItem","getPreviousGroup","groupContainer","getNextGroup","handleMenuKeydown","itemElement","currentGroup","nextGroup","menuTriggerId","getAttribute","focusedItem","getElementById","nextGroupItems","prevGroup","prevGroupItems","render","_","Fragment","onPointerOver","name","width","height","onResetSearch","visible","subitem","mobileMenubarCss","ZanitMobileMenubar","parentItem","menuType","open","setupData","parent","type","menuItemsElement","toggleMenu","imageAlt","link","onClick","searchFormCss","ZanitSearchForm","formElement","showSearchbar","_searchQuery","onSearchQueryChange","onShowSearchbar","searchbarInput","search","resetSearch","resetSearchQuery","emit","handleInputChange","value","onSearchSubmit","searchEv","query","defaultPrevented","submit","ref","method","action","onSubmit","onReset","placeholder","onInput","required","searchbar","hide"],"sources":["src/utils/utils.ts","src/components/menubar/menu/menu.tsx","src/components/menubar/menubar.css?tag=zanit-menubar&encapsulation=shadow","src/components/menubar/menu/menu.css?tag=zanit-menubar&encapsulation=shadow","src/components/menubar/menubar.tsx","src/components/menubar/mobile-menubar/mobile-menubar.css?tag=zanit-mobile-menubar&encapsulation=shadow","src/components/menubar/menu/menu.css?tag=zanit-mobile-menubar&encapsulation=shadow","src/components/menubar/mobile-menubar/mobile-menubar.tsx","src/components/menubar/search-form/search-form.css?tag=zanit-search-form&encapsulation=shadow","src/components/menubar/search-form/search-form.tsx"],"sourcesContent":["/**\n * Check if an element contains an event target by checking its composedPath.\n * Useful when an event target may come from a component's shadow DOM.\n */\nexport const containsTarget = (ancestor: HTMLElement, event: Event) => {\n return event\n .composedPath()\n .filter((el) => el !== document && el !== window.window)\n .some((el) => ancestor.contains(el as HTMLElement));\n};\n\n/** Move the focus to `next` element, set tabindex to 0 for `next` and -1 to `current`. */\nexport const moveFocus = (current: HTMLElement, next: HTMLElement) => {\n current.tabIndex = -1;\n next.tabIndex = 0;\n next.focus();\n};\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { MenuItem } from '../../../utils/types';\n\n/**\n * Menu of items that can be grouped.\n * @member {string} controlledBy - The HTML id of the element that controls the menu.\n * @member {MenuItem[]} items - The items to show in the menu.\n * @member {string} current - The id of the current active item.\n * @member {function} onItemKeyDown - The function to call when a key is pressed from a menuitem.\n */\nexport interface MenuProps {\n controlledBy?: string;\n items?: MenuItem[];\n current?: string;\n onItemKeyDown?: (event: KeyboardEvent) => void;\n}\n\nconst DEFAULT_GROUP_KEY = 'default';\nconst DEFAULT_GROUP = {\n id: DEFAULT_GROUP_KEY,\n label: DEFAULT_GROUP_KEY,\n};\n\n/** Get the items grouped by their group. */\nconst getGroupedItems = (items: MenuItem[]) => {\n const groups = items.reduce<{ group: MenuProps['items'][number]['group']; items: MenuItem[] }[]>((grouped, item) => {\n const itemGroup = grouped.find(({ group }) => group.id === (item.group?.id || DEFAULT_GROUP.id));\n if (!itemGroup) {\n grouped.push({ group: item.group ?? DEFAULT_GROUP, items: [item] });\n } else {\n itemGroup.items.push(item);\n }\n\n return grouped;\n }, []);\n\n // Sort to keep default group at the end\n return groups.sort((a, b) => (a.group.id === DEFAULT_GROUP_KEY ? 1 : b.group.id === DEFAULT_GROUP_KEY ? -1 : 0));\n};\n\n/**\n * Floating menu component. It shows a list of items that can be grouped.\n */\nexport const Menu: FunctionalComponent<MenuProps> = ({ controlledBy, items, current, onItemKeyDown }) => {\n if (!items?.length) {\n return null;\n }\n\n const groups = getGroupedItems(items);\n\n return (\n <div\n class=\"menu-wrapper\"\n role=\"none\"\n >\n <div\n class=\"menu\"\n aria-labelledby={controlledBy ?? undefined}\n role=\"menu\"\n >\n {groups.map(({ group, items }) => (\n <div class={{ group: true, highlight: items.some((item) => item.highlight) }}>\n {group.id !== DEFAULT_GROUP_KEY ? (\n <div\n class=\"group-name\"\n id={group.id}\n >\n {group.label}\n </div>\n ) : groups.length > 1 ? (\n // empty div to keep the same height as the other groups\n <div class=\"group-name\" />\n ) : null}\n <ul\n class=\"menu-list\"\n role=\"group\"\n aria-labelledby={group.id !== DEFAULT_GROUP_KEY ? group.id : undefined}\n >\n {items.map((item) => (\n <li role=\"none\">\n {item.href && (\n <a\n class={{ 'menu-item': true, 'active': current === item.id }}\n href={item.href}\n role=\"menuitem\"\n tabIndex={-1}\n aria-current={current === item.id ? 'page' : 'false'}\n onKeyDown={(event) => onItemKeyDown(event)}\n >\n {item.label}\n </a>\n )}\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </div>\n );\n};\n",":host {\n --zanit-menubar-max-width: ;\n\n position: relative;\n z-index: 2;\n display: flex;\n width: 100%;\n background-color: #fff;\n color: var(--gray900);\n font-family: var(--font-family-sans);\n}\n\n:host,\n*,\n::before,\n::after {\n box-sizing: border-box;\n}\n\n*:focus:focus-visible {\n box-shadow: var(--shadow-focus-primary);\n outline: none;\n}\n\nul {\n padding: 0;\n margin: 0;\n list-style: none;\n}\n\na {\n color: var(--gray900);\n cursor: pointer;\n text-decoration: none;\n}\n\nbutton {\n all: unset;\n cursor: pointer;\n}\n\n:host nav {\n width: 100%;\n}\n\n.shadow-wrapper {\n position: relative;\n z-index: 1;\n display: flex;\n width: 100%;\n}\n\n.shadow-wrapper::after {\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n height: 100%;\n background: transparent;\n box-shadow: var(--shadow-1);\n content: '';\n pointer-events: none;\n}\n\n.width-limiter {\n position: relative;\n display: flex;\n width: 100%;\n max-width: var(--zanit-menubar-max-width, 1366px);\n margin: 0 auto;\n}\n\n.shadow-wrapper + .shadow-wrapper {\n z-index: 0;\n}\n\n.sub-menubar > ul {\n gap: 28px;\n}\n\n.width-limiter > ul,\n.sub-menubar > ul {\n position: relative;\n display: flex;\n width: 100%;\n align-items: center;\n padding: 0 var(--grid-margin);\n margin-right: auto;\n margin-left: auto;\n gap: 20px;\n}\n\n.shadow-wrapper > .width-limiter,\n.shadow-wrapper > ul {\n width: 100%;\n max-width: var(--zanit-menubar-max-width, 1366px);\n}\n\nul.menubar {\n padding-right: 0;\n}\n\n.menubar z-ghost-loading {\n display: block;\n width: 120px;\n height: 1.25rem;\n}\n\n/* separator bar */\n.menubar > li[role='separator'] {\n width: 1px;\n height: 1.25rem;\n background-color: #000;\n}\n\n.menubar-item {\n position: relative;\n display: flex;\n align-items: center;\n padding: 14px 0;\n font-size: 1rem;\n gap: 8px;\n line-height: 1.25rem;\n}\n\n.menubar .menubar-item {\n text-transform: uppercase;\n}\n\n.menubar-item [data-text] {\n display: flex;\n flex-direction: column;\n}\n\n.menubar-item.active > [data-text],\n.menubar-item:hover > [data-text],\n.menubar-item:focus:focus-visible > [data-text] {\n font-weight: var(--font-bd);\n}\n\n/* To avoid size changes in the element, when it is hovered and becomes bold,\nwe put the same text already bold with height 0, so as to always occupy the maximum necessary width. */\n.menubar-item > [data-text]::after {\n height: 0;\n content: attr(data-text) / '';\n font-weight: var(--font-bd);\n letter-spacing: normal;\n pointer-events: none;\n user-select: none;\n visibility: hidden;\n}\n\n.sub-menubar:not(.visible) {\n display: none;\n}\n\n/* active item bottom border */\n.sub-menubar .menubar-item.active::after {\n position: absolute;\n z-index: -1;\n bottom: 0;\n left: -4px;\n width: calc(100% + 8px); /* the border is 4px per side larger than its container */\n height: 4px;\n background-color: var(--red500);\n content: '';\n}\n\nzanit-search-form {\n margin-left: auto;\n}\n",".menu-wrapper {\n width: 100%;\n background-color: #fff;\n}\n\n.menu {\n position: relative;\n display: flex;\n width: 100%;\n flex-direction: column;\n gap: 32px 0;\n}\n\n.menu .group {\n display: flex;\n flex-direction: column;\n}\n\n.menu .group .group-name {\n border-bottom: 1px solid currentcolor;\n margin-bottom: 4px;\n color: var(--red500);\n font-size: 0.875rem;\n font-weight: var(--font-rg);\n}\n\n.menu .group .menu-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.menu .group .menu-list .menu-item {\n border-bottom: 2px solid transparent;\n font-size: 0.875rem;\n font-weight: var(--font-md);\n}\n\n.menu .menu-list .menu-item.active,\n.menu .menu-list .menu-item:hover {\n border-bottom-color: var(--red500);\n}\n\n.menu .group.highlight .menu-list .menu-item {\n font-size: 1rem;\n}\n\n@media (width >= 768px) {\n .menu-wrapper {\n position: absolute;\n top: 100%;\n left: 0;\n display: flex;\n justify-content: center;\n box-shadow: var(--shadow-1);\n }\n\n .menu {\n display: grid;\n width: 100%;\n max-width: var(--zanit-menubar-max-width, 1366px);\n padding: 16px var(--grid-margin);\n gap: 0 24px;\n grid-auto-columns: minmax(0, max-content);\n grid-auto-flow: column;\n grid-template-rows: minmax(0, max-content) max-content;\n }\n\n .menu .group {\n display: grid;\n grid-row: 1 / -1;\n grid-template-columns: 1fr;\n grid-template-rows: subgrid;\n }\n\n @supports not (grid-template-rows: subgrid) {\n .menu .group {\n grid-template-rows: repeat(auto-fit, minmax(0, max-content));\n }\n }\n\n .menu .group .group-name {\n border: none;\n margin-bottom: 16px;\n }\n\n .menu .group .menu-list .menu-item {\n font-size: 1rem;\n }\n\n .menu .group.highlight .menu-list .menu-item {\n font-size: 1.5rem;\n }\n\n .menu .group.highlight .menu-list {\n gap: 24px;\n }\n}\n","import { Component, Element, Fragment, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { MenubarItem } from '../../utils/types';\nimport { containsTarget, moveFocus } from '../../utils/utils';\nimport { Menu } from './menu/menu';\n\n/**\n * Main menubar component. Each item can have a menu with subitems\n * When a main menubar item is the current active one, a sub-menubar is shown and each subitem can have a menu with subitems.\n * @cssprop {--zanit-menubar-max-width} Maximum width of the menubar.\n */\n@Component({\n tag: 'zanit-menubar',\n styleUrls: ['menubar.css', 'menu/menu.css'],\n shadow: true,\n})\nexport class ZanitMenubar {\n @Element() host: HTMLZanitMenubarElement;\n\n /** Menubar items extracted from `data`. */\n @State()\n items: MenubarItem[] = [];\n\n /** ID of the currently open menu. */\n @State()\n openMenu: string | undefined = undefined;\n\n /** ID of the item to show the subitems navbar for. */\n @State()\n openNavbar: string | undefined = undefined;\n\n @State()\n isMobile: boolean = false;\n\n @State()\n loading: boolean = false;\n\n /** The data to build the menu (as an array of `MenubarItem` or a JSON array) or the url to fetch to retrieve it. */\n @Prop()\n data: Promise<MenubarItem[]> | MenubarItem[] | URL | string;\n\n /** ID of the current active item. */\n @Prop()\n current: string | undefined = undefined;\n\n /**\n * Delay in milliseconds before closing the menu after a mouseout event.\n * Useful to avoid immediate closing when the pointer briefly leaves the component.\n */\n @Prop()\n mouseOutTimeout: number | undefined = 1000;\n\n /** Initial search query. */\n @Prop({ mutable: true })\n searchQuery: string | undefined = undefined;\n\n private timerId: number;\n\n /** Setup the list of items. */\n @Watch('data')\n async parseData(data: typeof this.data) {\n if (!data) {\n return;\n }\n\n if (data instanceof URL) {\n this.items = await this.fetchData(data);\n } else if (data instanceof Promise) {\n this.loading = true;\n this.items = await data;\n this.loading = false;\n } else if (typeof data === 'string') {\n try {\n this.items = JSON.parse(data);\n if (!Array.isArray(this.items) || !this.items?.every((item) => item satisfies MenubarItem)) {\n throw new Error('Expected an array of MenubarItem objects.');\n }\n } catch {\n let url: URL;\n try {\n url = new URL(data);\n } catch {\n throw new Error('Invalid string provided for `data` property: not a valid url or JSON.');\n }\n\n this.items = await this.fetchData(url);\n }\n } else if (Array.isArray(data) && data.every((item) => item satisfies MenubarItem)) {\n this.items = data;\n } else {\n throw new Error(\n 'Invalid `data` property value. Expected an url, a JSON or an array/promise of MenubarItem objects.'\n );\n }\n }\n\n @Watch('items')\n onItemsChange() {\n this.initTabindex();\n }\n\n async connectedCallback() {\n const mobileMediaQuery = window.matchMedia('(width < 768px)');\n this.isMobile = mobileMediaQuery.matches;\n mobileMediaQuery.onchange = (mql) => {\n this.isMobile = mql.matches;\n this.initTabindex();\n this.openMenu = undefined;\n };\n await this.parseData(this.data);\n this.initTabindex();\n }\n\n /** Close any open menu when clicking outside. */\n @Listen('click', { target: 'document', passive: true })\n handleOutsideClick(event: MouseEvent) {\n if (!this.openMenu || containsTarget(this.host, event)) {\n return;\n }\n\n this.openMenu = undefined;\n }\n\n /** Close any open menu when pressing Escape or Tab. */\n @Listen('keydown', { passive: true })\n handleKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Escape':\n case 'Tab':\n this.openMenu = undefined;\n break;\n }\n }\n\n @Listen('mouseover', { passive: true })\n handleMouseover() {\n clearTimeout(this.timerId);\n }\n\n @Listen('mouseout', { passive: true })\n handleMouseout(event: MouseEvent) {\n this.timerId = window.setTimeout(() => {\n if (!this.openMenu || containsTarget(this.host, event)) {\n return;\n }\n\n this.openMenu = undefined;\n }, this.mouseOutTimeout);\n }\n\n /** Close the menu when it loses focus. */\n @Listen('focusout', { passive: true })\n handleFocusout(event: FocusEvent) {\n const relatedTarget = event.relatedTarget as HTMLElement;\n if (!this.openMenu || this.host.shadowRoot.querySelector('.menu')?.contains(relatedTarget)) {\n return;\n }\n\n this.openMenu = undefined;\n }\n\n /** Fetch data from passed URL. */\n private async fetchData(url: URL) {\n try {\n this.loading = true;\n const data = await (await fetch(url)).json();\n this.loading = false;\n if (!Array.isArray(data) || !data.every((item) => item satisfies MenubarItem)) {\n throw new Error('Invalid data structure. Expected an array of MenuItem objects.');\n }\n\n return data as MenubarItem[];\n } catch (error) {\n this.loading = false;\n console.error('Error fetching menubar data:', error);\n throw new Error('Failed to fetch menubar data from the provided URL.', { cause: error });\n }\n }\n\n /** Initialize tabindex on menuitems of menubars, setting -1 to all but the first one. */\n private initTabindex() {\n setTimeout(() => {\n this.host.shadowRoot.querySelectorAll('[role=\"menubar\"]')?.forEach((menubar) => {\n menubar\n .querySelectorAll('[role=\"menuitem\"]')\n ?.forEach((item, index) => item.setAttribute('tabindex', index === 0 ? '0' : '-1'));\n });\n }, 100);\n }\n\n /** Indicates whether the element has to be highlighted by checking whether it is set as current or one of its descendants is. */\n private isActive(item: MenubarItem) {\n if (item.id === this.current) {\n return true;\n }\n\n if (item.menuItems?.length) {\n return item.menuItems.some((menuItem) => menuItem.id === this.current);\n }\n\n if (item.navbarItems?.length) {\n const isActive = item.navbarItems.some((navbarItem) => this.isActive(navbarItem));\n if (isActive) {\n return true;\n }\n }\n\n return false;\n }\n\n /** Opens the menu associated with the menubar `item`, if any. */\n private showMenu(item: MenubarItem) {\n if (!item.menuItems?.length) {\n return;\n }\n\n this.openMenu = item.id;\n }\n\n /** Get all elements with `menuitem` role inside parent's `menubar`. * */\n private getParentMenubarElements(itemEl: HTMLElement) {\n return Array.from(\n itemEl?.closest('[role=\"menubar\"]')?.querySelectorAll(':scope > li a[role=\"menuitem\"]') ?? []\n ) as HTMLElement[];\n }\n\n /** Move the focus to the previous menubar item, or the last one. Then open its menu if any other menu was open. */\n private focusPreviousItem(itemEl: HTMLElement) {\n const menubarElements = this.getParentMenubarElements(itemEl);\n itemEl.tabIndex = -1;\n const currentIndex = menubarElements.indexOf(itemEl);\n const prevItem = menubarElements[(currentIndex - 1 + menubarElements.length) % menubarElements.length]; // get previous item or last one\n prevItem.tabIndex = 0;\n prevItem.focus();\n // open the item's menu if any other menu was open\n if (prevItem.ariaHasPopup === 'true' && this.openMenu) {\n this.openMenu = prevItem.id;\n }\n }\n\n /** Move the focus to the next menubar item, or the first one. Then open its menu if any other menu was open. */\n private focusNextItem(itemEl: HTMLElement) {\n const menubarElements = this.getParentMenubarElements(itemEl);\n itemEl.tabIndex = -1;\n const currentIndex = menubarElements.indexOf(itemEl);\n const nextItem = menubarElements[(currentIndex + 1) % menubarElements.length]; // get next item or first one\n nextItem.tabIndex = 0;\n nextItem.focus();\n // open the item's menu if any other menu was open\n if (nextItem.ariaHasPopup === 'true' && this.openMenu) {\n this.openMenu = nextItem.id;\n }\n }\n\n /** Handles keyboard navigation on menubar items. */\n private handleItemKeydown(event: KeyboardEvent, item: MenubarItem) {\n const target = event.target as HTMLElement;\n switch (event.key) {\n case 'Home': {\n event.preventDefault();\n event.stopPropagation();\n const firstItem = this.getParentMenubarElements(target)[0];\n moveFocus(target, firstItem);\n break;\n }\n case 'End': {\n event.preventDefault();\n event.stopPropagation();\n const lastItem = this.getParentMenubarElements(target).pop();\n moveFocus(target, lastItem);\n break;\n }\n case 'ArrowUp': {\n if (!item.menuItems?.length) {\n break;\n }\n event.preventDefault();\n event.stopPropagation();\n this.openMenu = item.id;\n // focus last item of the menu\n setTimeout(() => {\n const menuItems = Array.from(\n this.host.shadowRoot.querySelectorAll(`[aria-labelledby=${item.id}] [role=\"menuitem\"]`)\n ) as HTMLElement[];\n moveFocus(target, menuItems[menuItems.length - 1]);\n }, 100);\n break;\n }\n case 'ArrowRight': {\n event.preventDefault();\n event.stopPropagation();\n this.focusNextItem(target);\n break;\n }\n case 'ArrowDown': {\n if (!item.menuItems?.length) {\n break;\n }\n this.openMenu = item.id;\n setTimeout(() => {\n // focus first item of the menu\n const firsMenuItem = this.host.shadowRoot.querySelector(\n `[aria-labelledby=${item.id}] [role=\"menuitem\"]`\n ) as HTMLElement;\n firsMenuItem.tabIndex = 0;\n firsMenuItem.focus();\n }, 100);\n break;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n event.stopPropagation();\n this.focusPreviousItem(target);\n break;\n }\n }\n }\n\n /** Get the previous element with `role=group`. */\n private getPreviousGroup(groupContainer: HTMLElement) {\n const groups = Array.from(\n groupContainer?.closest('[role=\"menu\"]')?.querySelectorAll('[role=\"group\"]') ?? []\n ) as HTMLElement[];\n const currentIndex = groups.indexOf(groupContainer);\n\n return groups[currentIndex - 1];\n }\n\n /** Get the next element with `role=group`. */\n private getNextGroup(groupContainer: HTMLElement) {\n const groups = Array.from(\n groupContainer?.closest('[role=\"menu\"]')?.querySelectorAll('[role=\"group\"]') ?? []\n ) as HTMLElement[];\n const currentIndex = groups.indexOf(groupContainer);\n\n return groups[currentIndex + 1];\n }\n\n /** Handles keyboard navigation events from `Menu` component. */\n private handleMenuKeydown(event: KeyboardEvent) {\n const itemElement = event.target as HTMLElement;\n const items = Array.from(\n itemElement.closest('[role=\"menu\"]')?.querySelectorAll('[role=\"menuitem\"]') ?? []\n ) as HTMLElement[];\n const currentIndex = items.indexOf(itemElement);\n switch (event.key) {\n case 'ArrowUp': {\n event.preventDefault();\n event.stopPropagation();\n const prevItem = items[currentIndex - 1] || items[items.length - 1];\n moveFocus(itemElement, prevItem);\n break;\n }\n // Move the focus to the first item of the next group if any, otherwise move it to the next menubar item\n case 'ArrowRight': {\n event.preventDefault();\n event.stopPropagation();\n const currentGroup = itemElement.closest('[role=group]') as HTMLElement;\n const nextGroup = this.getNextGroup(currentGroup);\n if (!nextGroup) {\n itemElement.tabIndex = -1;\n const menuTriggerId = itemElement.closest('[role=\"menu\"][aria-labelledby]').getAttribute('aria-labelledby');\n const focusedItem = this.host.shadowRoot.getElementById(menuTriggerId);\n this.focusNextItem(focusedItem);\n break;\n }\n\n const nextGroupItems = (nextGroup.querySelectorAll('[role=\"menuitem\"]') ?? []) as HTMLElement[];\n moveFocus(itemElement, nextGroupItems[0]);\n break;\n }\n case 'ArrowDown': {\n event.preventDefault();\n event.stopPropagation();\n const nextItem = items[currentIndex + 1] || items[0];\n moveFocus(itemElement, nextItem);\n break;\n }\n // Move the focus to the first item of the previous group if any, otherwise move it to the previous menubar item\n case 'ArrowLeft': {\n event.preventDefault();\n event.stopPropagation();\n const currentGroup = itemElement.closest('[role=group]') as HTMLElement;\n const prevGroup = this.getPreviousGroup(currentGroup);\n if (!prevGroup) {\n itemElement.tabIndex = -1;\n const menuTriggerId = itemElement.closest('[role=\"menu\"][aria-labelledby]').getAttribute('aria-labelledby');\n const focusedItem = this.host.shadowRoot.getElementById(menuTriggerId);\n this.focusPreviousItem(focusedItem);\n break;\n }\n\n const prevGroupItems = (prevGroup.querySelectorAll('[role=\"menuitem\"]') ?? []) as HTMLElement[];\n moveFocus(itemElement, prevGroupItems[0]);\n break;\n }\n case 'Home':\n // Move to the first menu item\n event.preventDefault();\n event.stopPropagation();\n moveFocus(itemElement, items[0]);\n break;\n case 'End':\n // Move to the last menu item\n event.preventDefault();\n event.stopPropagation();\n moveFocus(itemElement, items[items.length - 1]);\n break;\n }\n }\n\n render() {\n if (this.isMobile) {\n return (\n <zanit-mobile-menubar\n items={this.items}\n current={this.current}\n searchQuery={this.searchQuery}\n loading={this.loading}\n />\n );\n }\n\n return (\n <nav aria-label=\"Zanichelli.it\">\n <div class=\"shadow-wrapper\">\n <div class=\"width-limiter\">\n <ul\n class=\"menubar\"\n role=\"menubar\"\n aria-label=\"Zanichelli.it\"\n >\n {this.loading &&\n [...new Array(4)].map((_, index) => (\n <Fragment>\n <li role=\"none\">\n <div class=\"menubar-item\">\n <z-ghost-loading></z-ghost-loading>\n </div>\n </li>\n {index < 3 && <li role=\"separator\"></li>}\n </Fragment>\n ))}\n {this.items?.map((item, index) => (\n <Fragment>\n <li role=\"none\">\n <a\n class={{ 'menubar-item': true, 'active': this.isActive(item) }}\n href={item.href}\n id={item.id}\n role=\"menuitem\"\n tabIndex={-1}\n aria-expanded={\n item.menuItems?.length ? (this.openMenu === item.id ? 'true' : 'false') : undefined\n }\n aria-haspopup={item.menuItems?.length ? 'true' : 'false'}\n aria-current={this.current === item.id ? 'page' : 'false'}\n onPointerOver={() => this.showMenu(item)}\n onKeyDown={(event) => this.handleItemKeydown(event, item)}\n >\n <span data-text={item.label}>{item.label}</span>\n {item.menuItems?.length > 0 && (\n <z-icon\n name={this.openMenu === item.id ? 'chevron-up' : 'chevron-down'}\n width=\"0.875rem\"\n height=\"0.875rem\"\n />\n )}\n </a>\n </li>\n {index < this.items?.length - 1 && <li role=\"separator\"></li>}\n </Fragment>\n ))}\n </ul>\n <zanit-search-form\n searchQuery={this.searchQuery}\n onResetSearch={() => (this.searchQuery = undefined)}\n />\n </div>\n\n {this.items.map(\n (item) =>\n this.openMenu === item.id && (\n <Menu\n controlledBy={item.id}\n items={item.menuItems}\n current={this.current}\n onItemKeyDown={(event) => this.handleMenuKeydown(event)}\n />\n )\n )}\n </div>\n\n {this.items?.map(\n (item) =>\n item.navbarItems?.length && (\n <nav class={{ 'sub-menubar': true, 'shadow-wrapper': true, 'visible': this.isActive(item) }}>\n <ul role=\"menubar\">\n {item.navbarItems.map((subitem) => (\n <Fragment>\n <li role=\"none\">\n <a\n class={{ 'menubar-item': true, 'active': this.isActive(subitem) }}\n href={subitem.href}\n id={subitem.id}\n role=\"menuitem\"\n tabIndex={-1}\n aria-haspopup={subitem.menuItems?.length ? 'true' : 'false'}\n aria-expanded={\n subitem.menuItems?.length ? (this.openMenu === subitem.id ? 'true' : 'false') : undefined\n }\n aria-current={this.current === item.id ? 'page' : 'false'}\n onPointerOver={() => this.showMenu(subitem)}\n onKeyDown={(event) => this.handleItemKeydown(event, subitem)}\n >\n <span>{subitem.label}</span>\n {subitem.menuItems?.length > 0 && (\n <z-icon\n name={this.openMenu === subitem.id ? 'chevron-up' : 'chevron-down'}\n width=\"0.75rem\"\n height=\"0.75rem\"\n />\n )}\n </a>\n </li>\n </Fragment>\n ))}\n </ul>\n {item.navbarItems.map(\n (subitem) =>\n this.openMenu === subitem.id && (\n <Menu\n controlledBy={subitem.id}\n items={subitem.menuItems}\n current={this.current}\n onItemKeyDown={(event) => this.handleMenuKeydown(event)}\n />\n )\n )}\n </nav>\n )\n )}\n </nav>\n );\n }\n}\n",":host {\n position: relative;\n z-index: 2;\n display: block;\n width: 100%;\n max-width: 100%;\n background-color: #fff;\n color: var(--gray900);\n fill: var(--gray900);\n font-family: var(--font-family-sans);\n}\n\n:host,\n*,\n::before,\n::after {\n box-sizing: border-box;\n}\n\n*:focus:focus-visible {\n box-shadow: var(--shadow-focus-primary);\n outline: none;\n}\n\nul {\n padding: 0;\n margin: 0;\n list-style: none;\n}\n\na {\n color: var(--gray900);\n cursor: pointer;\n text-decoration: none;\n}\n\nbutton {\n all: unset;\n cursor: pointer;\n}\n\nnav {\n display: flex;\n width: 100%;\n align-items: center;\n padding: 8px var(--grid-margin);\n}\n\nnav::after {\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n height: 100%;\n background: transparent;\n box-shadow: var(--shadow-1);\n content: '';\n pointer-events: none;\n}\n\n.burger-button {\n margin-left: auto;\n}\n\n.mobile-menu {\n position: absolute;\n top: 100%;\n left: 0;\n display: flex;\n width: 100%;\n flex-direction: column;\n padding: 16px var(--grid-margin) 32px;\n background-color: #fff;\n box-shadow: var(--shadow-2);\n gap: 8px;\n}\n\n.mobile-menu li {\n width: 100%;\n}\n\n.mobile-menu .items-container {\n display: flex;\n min-height: 256px;\n flex-direction: column;\n gap: 8px;\n}\n\n.mobile-menu .items-container z-ghost-loading {\n width: 40%;\n height: 1.2rem;\n}\n\n.mobile-menu .items-container .menubar-item {\n display: block;\n width: 100%;\n padding: 8px 0;\n font-size: 1rem;\n text-align: left;\n}\n\n.mobile-menu .items-container li:not(:last-child) .menubar-item {\n border-bottom: 1px solid #000;\n}\n\n[role='menuitem'].parent {\n display: flex;\n width: fit-content;\n align-items: center;\n padding: 0;\n border: none;\n font-size: 0.875rem;\n gap: 8px;\n}\n",".menu-wrapper {\n width: 100%;\n background-color: #fff;\n}\n\n.menu {\n position: relative;\n display: flex;\n width: 100%;\n flex-direction: column;\n gap: 32px 0;\n}\n\n.menu .group {\n display: flex;\n flex-direction: column;\n}\n\n.menu .group .group-name {\n border-bottom: 1px solid currentcolor;\n margin-bottom: 4px;\n color: var(--red500);\n font-size: 0.875rem;\n font-weight: var(--font-rg);\n}\n\n.menu .group .menu-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.menu .group .menu-list .menu-item {\n border-bottom: 2px solid transparent;\n font-size: 0.875rem;\n font-weight: var(--font-md);\n}\n\n.menu .menu-list .menu-item.active,\n.menu .menu-list .menu-item:hover {\n border-bottom-color: var(--red500);\n}\n\n.menu .group.highlight .menu-list .menu-item {\n font-size: 1rem;\n}\n\n@media (width >= 768px) {\n .menu-wrapper {\n position: absolute;\n top: 100%;\n left: 0;\n display: flex;\n justify-content: center;\n box-shadow: var(--shadow-1);\n }\n\n .menu {\n display: grid;\n width: 100%;\n max-width: var(--zanit-menubar-max-width, 1366px);\n padding: 16px var(--grid-margin);\n gap: 0 24px;\n grid-auto-columns: minmax(0, max-content);\n grid-auto-flow: column;\n grid-template-rows: minmax(0, max-content) max-content;\n }\n\n .menu .group {\n display: grid;\n grid-row: 1 / -1;\n grid-template-columns: 1fr;\n grid-template-rows: subgrid;\n }\n\n @supports not (grid-template-rows: subgrid) {\n .menu .group {\n grid-template-rows: repeat(auto-fit, minmax(0, max-content));\n }\n }\n\n .menu .group .group-name {\n border: none;\n margin-bottom: 16px;\n }\n\n .menu .group .menu-list .menu-item {\n font-size: 1rem;\n }\n\n .menu .group.highlight .menu-list .menu-item {\n font-size: 1.5rem;\n }\n\n .menu .group.highlight .menu-list {\n gap: 24px;\n }\n}\n","import { Component, Element, h, Listen, Prop, State, Watch } from '@stencil/core';\nimport { MenubarItem, MenuItem } from '../../../utils/types';\nimport { containsTarget, moveFocus } from '../../../utils/utils';\nimport { Menu } from '../menu/menu';\n\n/** Mobile menubar component. */\n@Component({\n tag: 'zanit-mobile-menubar',\n styleUrls: ['mobile-menubar.css', '../menu/menu.css'],\n shadow: true,\n})\nexport class ZanitMobileMenubar {\n @Element() host: HTMLZanitMobileMenubarElement;\n\n /** ID of the current active item. */\n @Prop() current: string | undefined = undefined;\n\n /** Menubar items. */\n @Prop() items: MenubarItem[] = [];\n\n /** Initial search query. */\n @Prop({ mutable: true }) searchQuery: string | undefined = undefined;\n\n /** Whether the menubar is loading the data. */\n @Prop() loading: boolean = false;\n\n @State() parentItem: MenubarItem | undefined = undefined;\n @State() menuItems: MenubarItem[] | MenuItem[] | undefined = undefined;\n /** Whether the items to render come from a menubar or a menu. */\n @State() menuType: 'menubar' | 'menu' | undefined = undefined;\n @State() open: boolean;\n\n @Watch('items')\n @Watch('current')\n onItemsChange() {\n this.setupData(this.items);\n }\n\n /**\n * Find the current item and take its parent, `menuItems` or the `navbarItems`.\n * @returns True if an item matches the `current` prop, false otherwise.\n */\n private setupData(items: MenubarItem[], parent?: MenubarItem): boolean {\n for (const item of items) {\n if (item.id === this.current) {\n const type = item.menuItems?.length ? 'menu' : 'menubar';\n this.parentItem = parent;\n this.menuType = type;\n this.menuItems = item.menuItems || item.navbarItems;\n return true;\n }\n\n if (item.menuItems?.some(({ id }) => id === this.current)) {\n this.parentItem = parent;\n this.menuType = 'menu';\n this.menuItems = item.menuItems;\n return true;\n }\n\n if (item.navbarItems?.length) {\n return this.setupData(item.navbarItems, item);\n }\n }\n\n return false;\n }\n\n private get menuItemsElement() {\n return Array.from(this.host.shadowRoot.querySelectorAll('[role=\"menuitem\"]')) as HTMLElement[];\n }\n\n /** Initialize tabindex on menuitems, setting -1 to all but the first one. */\n private initTabindex() {\n this.menuItemsElement.forEach((item, index) => item.setAttribute('tabindex', index === 0 ? '0' : '-1'));\n }\n\n private toggleMenu() {\n if (this.open) {\n this.open = false;\n } else {\n this.open = true;\n setTimeout(() => {\n this.initTabindex();\n this.menuItemsElement[0]?.focus();\n }, 200);\n }\n }\n\n /** Handles keyboard navigation on mobile menu. */\n private handleItemKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'ArrowUp': {\n event.preventDefault();\n event.stopPropagation();\n const items = this.menuItemsElement;\n const currentIndex = items.indexOf(event.target as HTMLElement);\n const prevItem = items[(currentIndex - 1 + items.length) % items.length];\n moveFocus(items[currentIndex], prevItem);\n break;\n }\n case 'ArrowDown': {\n event.preventDefault();\n event.stopPropagation();\n const items = this.menuItemsElement;\n const currentIndex = items.indexOf(event.target as HTMLElement);\n const nextItem = items[(currentIndex + 1) % items.length];\n moveFocus(items[currentIndex], nextItem);\n break;\n }\n case 'Home': {\n event.preventDefault();\n event.stopPropagation();\n moveFocus(event.target as HTMLElement, this.menuItemsElement[0]);\n break;\n }\n case 'End': {\n event.preventDefault();\n event.stopPropagation();\n moveFocus(event.target as HTMLElement, this.menuItemsElement.pop());\n break;\n }\n }\n }\n\n connectedCallback() {\n this.setupData(this.items);\n }\n\n /** Close the menu when clicking outside. */\n @Listen('click', { target: 'document', passive: true })\n handleOutsideClick(event: MouseEvent) {\n if (containsTarget(this.host, event)) {\n return;\n }\n\n this.open = false;\n }\n\n /** Close the menu when pressing Escape or Tab. */\n @Listen('keydown', { passive: true })\n handleKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Escape':\n this.open = false;\n break;\n case 'Tab':\n if (containsTarget(this.host, event)) {\n break;\n }\n\n this.open = false;\n break;\n }\n }\n\n /** Close the menu when the focus goes out. */\n @Listen('focusin', { target: 'document', passive: true })\n handleFocusout(event: FocusEvent) {\n if (containsTarget(this.host, event)) {\n return;\n }\n\n this.open = false;\n }\n\n render() {\n return (\n <nav aria-label=\"Zanichelli.it\">\n <z-logo\n imageAlt=\"Logo Zanichelli\"\n link=\"/\"\n height={32}\n width={126}\n ></z-logo>\n <button\n class=\"burger-button\"\n type=\"button\"\n aria-expanded={this.open ? 'true' : 'false'}\n aria-controls=\"mobile-menu\"\n aria-label={this.open ? 'Chiudi menù' : 'Apri menù'}\n onClick={() => this.toggleMenu()}\n >\n <z-icon\n name={this.open ? 'multiply' : 'burger-menu'}\n width=\"1.5rem\"\n height=\"1.5rem\"\n ></z-icon>\n </button>\n {this.open && (\n <ul\n class=\"mobile-menu\"\n role=\"menubar\"\n >\n <li role=\"none\">\n <zanit-search-form\n searchQuery={this.searchQuery}\n onResetSearch={() => (this.searchQuery = undefined)}\n />\n </li>\n\n {!this.loading && this.current && (\n <li role=\"none\">\n <a\n class=\"parent\"\n href={this.parentItem?.href ?? '/'}\n id={this.parentItem?.id ?? undefined}\n role=\"menuitem\"\n tabIndex={-1}\n onKeyDown={(event) => this.handleItemKeydown(event)}\n >\n <z-icon\n name=\"arrow-left\"\n width=\"0.5rem\"\n height=\"0.5rem\"\n ></z-icon>\n <span>\n {/* Show the 'Home' label if the current item is a root child. */}\n {this.parentItem?.label ?? 'Home'}\n </span>\n </a>\n </li>\n )}\n\n {this.loading && (\n <div\n class=\"items-container\"\n role=\"none\"\n >\n {[...new Array(4)].map(() => (\n <li role=\"none\">\n <div\n class=\"menubar-item\"\n role=\"none\"\n >\n <z-ghost-loading></z-ghost-loading>\n </div>\n </li>\n ))}\n </div>\n )}\n\n {this.menuType === 'menu' ? (\n <Menu\n items={this.menuItems}\n current={this.current}\n onItemKeyDown={(event) => this.handleItemKeydown(event)}\n />\n ) : (\n this.menuItems?.length && (\n <div\n class=\"items-container\"\n role=\"none\"\n >\n {this.menuItems.map((item) => (\n <li role=\"none\">\n <a\n class={{\n 'menu-item': this.menuType === 'menu',\n 'menubar-item': this.menuType === 'menubar',\n }}\n href={item.href}\n id={item.id}\n role=\"menuitem\"\n aria-current={this.current === item.id ? 'page' : 'false'}\n tabIndex={-1}\n onKeyDown={(event) => this.handleItemKeydown(event)}\n >\n <span data-text={item.label}>{item.label}</span>\n </a>\n </li>\n ))}\n </div>\n )\n )}\n </ul>\n )}\n </nav>\n );\n }\n}\n",":host,\n*,\n::before,\n::after {\n box-sizing: border-box;\n}\n\n*:focus:focus-visible {\n box-shadow: var(--shadow-focus-primary);\n outline: none;\n}\n\nbutton {\n all: unset;\n cursor: pointer;\n}\n\n@media (width < 768px) {\n .searchbar {\n display: flex;\n align-items: center;\n border: 1px solid #000;\n border-radius: 4px;\n }\n\n .searchbar > *:first-child {\n /* To have a seamless appearance of the border radius of an internal child element nested within a parent element with rounded borders, we need to subtract the parent's border thickness from the child's border radius. Inner Radius = Outer Radius - Border Thickness */\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n }\n\n .searchbar button[type='reset'] {\n display: flex;\n padding: 0 0 0 8px;\n cursor: pointer;\n }\n\n .searchbar input {\n width: 100%;\n height: 100%;\n padding: 4px 8px;\n border: none;\n background-color: #fff;\n font-family: var(--font-family-sans);\n font-size: 1rem;\n }\n\n .searchbar input[type='search']::-webkit-search-cancel-button,\n .searchbar input[type='search']::-webkit-search-decoration {\n appearance: none;\n }\n\n .searchbar input::placeholder {\n color: var(--gray500);\n }\n\n .searchbar .searchbar-button {\n padding: 4px 8px;\n border-left: 1px solid #000;\n background: var(--zanit-accent-color);\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n }\n\n .searchbar input:focus:focus-visible,\n .searchbar .searchbar-button:focus:focus-visible {\n z-index: 1;\n }\n}\n\n@media (width >= 768px) {\n .searchbar {\n display: flex;\n font-size: 1.5rem;\n }\n\n .searchbar.searchbar-open {\n position: absolute;\n width: 100%;\n height: 100%;\n inset: 0;\n }\n\n .searchbar .input-wrapper {\n display: none;\n width: 100%;\n align-items: center;\n padding: 0 0 0 var(--grid-margin);\n background-color: #fff;\n gap: 14px;\n }\n\n .searchbar .input-wrapper:not(.hide) {\n display: flex;\n }\n\n .searchbar button[type='reset'] {\n display: flex;\n align-items: center;\n border-radius: 4px;\n cursor: pointer;\n }\n\n .searchbar input {\n z-index: 1;\n width: 100%;\n height: 100%;\n padding: 8px 14px 8px 0;\n border: none;\n background-color: #fff;\n font-family: var(--font-family-sans);\n font-size: inherit;\n }\n\n .searchbar input[type='search']::-webkit-search-cancel-button,\n .searchbar input[type='search']::-webkit-search-decoration {\n appearance: none;\n }\n\n .searchbar input::placeholder {\n color: var(--gray500);\n }\n\n .searchbar .searchbar-button {\n display: flex;\n align-items: center;\n padding: 8px 16px;\n border-right: 1px solid #000;\n border-left: 1px solid #000;\n background: var(--zanit-accent-color);\n font-family: inherit;\n font-size: inherit;\n gap: 64px;\n line-height: 1;\n }\n\n .searchbar input:focus:focus-visible,\n .searchbar .searchbar-button:focus:focus-visible {\n z-index: 1;\n }\n}\n\n@media (width >= 768px) and (width < 1152px) {\n .searchbar .searchbar-button > .searchbar-button-label {\n display: none;\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Prop, State, Watch } from '@stencil/core';\nimport { containsTarget } from '../../../utils/utils';\n\n@Component({\n tag: 'zanit-search-form',\n styleUrl: 'search-form.css',\n shadow: true,\n})\nexport class ZanitSearchForm {\n private formElement: HTMLFormElement;\n\n @Element() host: HTMLZanitSearchFormElement;\n\n @State()\n isMobile: boolean = false;\n\n /** Indicates whether the searchbar is visible and usable. */\n @State()\n showSearchbar: boolean = false;\n\n /** Search query to apply. */\n @State()\n _searchQuery: string | undefined = undefined;\n\n /** Initial search query */\n @Prop({ mutable: true })\n searchQuery: string | undefined = undefined;\n\n @Watch('searchQuery')\n onSearchQueryChange() {\n this._searchQuery = this.searchQuery;\n if (this.searchQuery) {\n this.showSearchbar = true;\n }\n }\n\n /** Focus searchbar input when it becomes visible. */\n @Watch('showSearchbar')\n onShowSearchbar() {\n if (!this.showSearchbar) {\n return;\n }\n\n setTimeout(() => {\n const searchbarInput = this.host.shadowRoot.querySelector('#searchbar-input') as HTMLInputElement;\n if (this.showSearchbar && !this.searchQuery) {\n searchbarInput.focus();\n }\n }, 100);\n }\n\n /** Emitted on search form submission. */\n @Event({ cancelable: true }) search: EventEmitter<{ query: string }>;\n\n @Event() resetSearch: EventEmitter<void>;\n\n async connectedCallback() {\n this.showSearchbar = !!this.searchQuery;\n const mobileMediaQuery = window.matchMedia('(width < 768px)');\n this.isMobile = mobileMediaQuery.matches;\n mobileMediaQuery.onchange = (mql) => {\n this.isMobile = mql.matches;\n };\n }\n\n /** Close open searchbar when clicking outside. */\n @Listen('click', { target: 'document', passive: true })\n handleOutsideClick(event: MouseEvent) {\n if (this.showSearchbar && this.formElement && !containsTarget(this.formElement, event)) {\n this.showSearchbar = false;\n }\n }\n\n private resetSearchQuery() {\n this.searchQuery = undefined;\n this.resetSearch.emit();\n }\n\n private handleInputChange(event: Event) {\n this._searchQuery = (event.target as HTMLInputElement).value;\n if (!this._searchQuery) {\n this.searchQuery = undefined;\n }\n }\n\n private onSearchSubmit(event: Event) {\n event.preventDefault();\n if (!this._searchQuery) {\n return;\n }\n\n this.showSearchbar = false;\n const searchEv = this.search.emit({ query: this._searchQuery });\n // do not submit the form if the event default behavior was prevented\n if (searchEv.defaultPrevented) {\n return;\n }\n\n this.formElement.submit();\n }\n\n render() {\n if (this.isMobile) {\n return (\n <form\n class=\"searchbar\"\n ref={(el) => (this.formElement = el)}\n role=\"search\"\n aria-label=\"Cerca\"\n method=\"get\"\n action=\"/ricerca\"\n onSubmit={(event) => this.onSearchSubmit(event)}\n onReset={() => this.resetSearchQuery()}\n >\n {this.searchQuery && (\n <button\n type=\"reset\"\n aria-label=\"Svuota campo di ricerca\"\n >\n <z-icon\n name=\"multiply-circled\"\n width=\"1rem\"\n height=\"1rem\"\n />\n </button>\n )}\n <input\n id=\"searchbar-input\"\n name=\"q\"\n type=\"search\"\n placeholder=\"Cerca per parola chiave o ISBN\"\n onInput={(event) => this.handleInputChange(event)}\n value={this.searchQuery}\n required\n ></input>\n <button\n class=\"searchbar-button\"\n aria-controls=\"searchbar-input\"\n aria-label=\"Cerca\"\n type=\"submit\"\n >\n <z-icon\n name=\"search\"\n width=\"1.25rem\"\n height=\"1.25rem\"\n ></z-icon>\n </button>\n </form>\n );\n }\n\n return (\n <form\n class={{ 'searchbar': true, 'searchbar-open': this.showSearchbar }}\n ref={(el) => (this.formElement = el)}\n role=\"search\"\n aria-label=\"Cerca\"\n method=\"get\"\n action=\"/ricerca\"\n onSubmit={(event) => this.onSearchSubmit(event)}\n onReset={() => this.resetSearchQuery()}\n >\n <div\n class={{ 'hide': !this.showSearchbar, 'input-wrapper': true }}\n role=\"none\"\n >\n {this.searchQuery && (\n <button\n type=\"reset\"\n aria-label=\"Svuota campo di ricerca\"\n >\n <z-icon\n name=\"multiply-circled\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n </button>\n )}\n <input\n id=\"searchbar-input\"\n name=\"q\"\n type=\"search\"\n placeholder=\"Cerca per parola chiave o ISBN\"\n onInput={(event) => this.handleInputChange(event)}\n value={this.searchQuery}\n required\n ></input>\n </div>\n\n <button\n class=\"searchbar-button\"\n aria-label=\"Cerca\"\n aria-controls=\"searchbar-input\"\n type={this.showSearchbar ? 'submit' : 'button'}\n onClick={() => (this.showSearchbar = true)}\n >\n {this.showSearchbar ? null : <span class=\"searchbar-button-label\">Cerca</span>}\n <z-icon\n name=\"search\"\n width=\"2rem\"\n height=\"2rem\"\n ></z-icon>\n </button>\n </form>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"zanit-menubar.zanit-mobile-menubar.zanit-search-form.entry.esm.js","sources":["src/utils/utils.ts","src/components/menubar/menu/menu.tsx","src/components/menubar/menubar.css?tag=zanit-menubar&encapsulation=shadow","src/components/menubar/menu/menu.css?tag=zanit-menubar&encapsulation=shadow","src/components/menubar/menubar.tsx","src/components/menubar/mobile-menubar/mobile-menubar.css?tag=zanit-mobile-menubar&encapsulation=shadow","src/components/menubar/menu/menu.css?tag=zanit-mobile-menubar&encapsulation=shadow","src/components/menubar/mobile-menubar/mobile-menubar.tsx","src/components/menubar/search-form/search-form.css?tag=zanit-search-form&encapsulation=shadow","src/components/menubar/search-form/search-form.tsx"],"sourcesContent":["/**\n * Check if an element contains an event target by checking its composedPath.\n * Useful when an event target may come from a component's shadow DOM.\n */\nexport const containsTarget = (ancestor: HTMLElement, event: Event) => {\n return event\n .composedPath()\n .filter((el) => el !== document && el !== window.window)\n .some((el) => ancestor.contains(el as HTMLElement));\n};\n\n/** Move the focus to `next` element, set tabindex to 0 for `next` and -1 to `current`. */\nexport const moveFocus = (current: HTMLElement, next: HTMLElement) => {\n current.tabIndex = -1;\n next.tabIndex = 0;\n next.focus();\n};\n","import { FunctionalComponent, h } from '@stencil/core';\nimport { MenuItem } from '../../../utils/types';\n\n/**\n * Menu of items that can be grouped.\n * @member {string} controlledBy - The HTML id of the element that controls the menu.\n * @member {MenuItem[]} items - The items to show in the menu.\n * @member {string} current - The id of the current active item.\n * @member {function} onItemKeyDown - The function to call when a key is pressed from a menuitem.\n */\nexport interface MenuProps {\n controlledBy?: string;\n items?: MenuItem[];\n current?: string;\n onItemKeyDown?: (event: KeyboardEvent) => void;\n}\n\nconst DEFAULT_GROUP_KEY = 'default';\nconst DEFAULT_GROUP = {\n id: DEFAULT_GROUP_KEY,\n label: DEFAULT_GROUP_KEY,\n};\n\n/** Get the items grouped by their group. */\nconst getGroupedItems = (items: MenuItem[]) => {\n const groups = items.reduce<{ group: MenuProps['items'][number]['group']; items: MenuItem[] }[]>((grouped, item) => {\n const itemGroup = grouped.find(({ group }) => group.id === (item.group?.id || DEFAULT_GROUP.id));\n if (!itemGroup) {\n grouped.push({ group: item.group ?? DEFAULT_GROUP, items: [item] });\n } else {\n itemGroup.items.push(item);\n }\n\n return grouped;\n }, []);\n\n // Sort to keep default group at the end\n return groups.sort((a, b) => (a.group.id === DEFAULT_GROUP_KEY ? 1 : b.group.id === DEFAULT_GROUP_KEY ? -1 : 0));\n};\n\n/**\n * Floating menu component. It shows a list of items that can be grouped.\n */\nexport const Menu: FunctionalComponent<MenuProps> = ({ controlledBy, items, current, onItemKeyDown }) => {\n if (!items?.length) {\n return null;\n }\n\n const groups = getGroupedItems(items);\n\n return (\n <div\n class=\"menu-wrapper\"\n role=\"none\"\n >\n <div\n class=\"menu\"\n aria-labelledby={controlledBy ?? undefined}\n role=\"menu\"\n >\n {groups.map(({ group, items }) => (\n <div class={{ group: true, highlight: items.some((item) => item.highlight) }}>\n {group.id !== DEFAULT_GROUP_KEY ? (\n <div\n class=\"group-name\"\n id={group.id}\n >\n {group.label}\n </div>\n ) : groups.length > 1 ? (\n // empty div to keep the same height as the other groups\n <div class=\"group-name\" />\n ) : null}\n <ul\n class=\"menu-list\"\n role=\"group\"\n aria-labelledby={group.id !== DEFAULT_GROUP_KEY ? group.id : undefined}\n >\n {items.map((item) => (\n <li role=\"none\">\n {item.href && (\n <a\n class={{ 'menu-item': true, 'active': current === item.id }}\n href={item.href}\n role=\"menuitem\"\n tabIndex={-1}\n aria-current={current === item.id ? 'page' : 'false'}\n onKeyDown={(event) => onItemKeyDown(event)}\n >\n {item.label}\n </a>\n )}\n </li>\n ))}\n </ul>\n </div>\n ))}\n </div>\n </div>\n );\n};\n",":host {\n --zanit-menubar-max-width: ;\n\n position: relative;\n z-index: 2;\n display: flex;\n width: 100%;\n background-color: #fff;\n color: var(--gray900);\n font-family: var(--font-family-sans);\n}\n\n:host,\n*,\n::before,\n::after {\n box-sizing: border-box;\n}\n\n*:focus:focus-visible {\n box-shadow: var(--shadow-focus-primary);\n outline: none;\n}\n\nul {\n padding: 0;\n margin: 0;\n list-style: none;\n}\n\na {\n color: var(--gray900);\n cursor: pointer;\n text-decoration: none;\n}\n\nbutton {\n all: unset;\n cursor: pointer;\n}\n\n:host nav {\n width: 100%;\n}\n\n.shadow-wrapper {\n position: relative;\n z-index: 1;\n display: flex;\n width: 100%;\n}\n\n.shadow-wrapper::after {\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n height: 100%;\n background: transparent;\n box-shadow: var(--shadow-1);\n content: '';\n pointer-events: none;\n}\n\n.width-limiter {\n position: relative;\n display: flex;\n width: 100%;\n max-width: var(--zanit-menubar-max-width, 1366px);\n margin: 0 auto;\n}\n\n.shadow-wrapper + .shadow-wrapper {\n z-index: 0;\n}\n\n.sub-menubar > ul {\n gap: 28px;\n}\n\n.width-limiter > ul,\n.sub-menubar > ul {\n position: relative;\n display: flex;\n width: 100%;\n align-items: center;\n padding: 0 var(--grid-margin);\n margin-right: auto;\n margin-left: auto;\n gap: 20px;\n}\n\n.shadow-wrapper > .width-limiter,\n.shadow-wrapper > ul {\n width: 100%;\n max-width: var(--zanit-menubar-max-width, 1366px);\n}\n\nul.menubar {\n padding-right: 0;\n}\n\n.menubar z-ghost-loading {\n display: block;\n width: 120px;\n height: 1.25rem;\n}\n\n/* separator bar */\n.menubar > li[role='separator'] {\n width: 1px;\n height: 1.25rem;\n background-color: #000;\n}\n\n.menubar-item {\n position: relative;\n display: flex;\n align-items: center;\n padding: 14px 0;\n font-size: 1rem;\n gap: 8px;\n line-height: 1.25rem;\n}\n\n.menubar .menubar-item {\n text-transform: uppercase;\n}\n\n.menubar-item [data-text] {\n display: flex;\n flex-direction: column;\n}\n\n.menubar-item.active > [data-text],\n.menubar-item:hover > [data-text],\n.menubar-item:focus:focus-visible > [data-text] {\n font-weight: var(--font-bd);\n}\n\n/* To avoid size changes in the element, when it is hovered and becomes bold,\nwe put the same text already bold with height 0, so as to always occupy the maximum necessary width. */\n.menubar-item > [data-text]::after {\n height: 0;\n content: attr(data-text) / '';\n font-weight: var(--font-bd);\n letter-spacing: normal;\n pointer-events: none;\n user-select: none;\n visibility: hidden;\n}\n\n.sub-menubar:not(.visible) {\n display: none;\n}\n\n/* active item bottom border */\n.sub-menubar .menubar-item.active::after {\n position: absolute;\n z-index: -1;\n bottom: 0;\n left: -4px;\n width: calc(100% + 8px); /* the border is 4px per side larger than its container */\n height: 4px;\n background-color: var(--red500);\n content: '';\n}\n\nzanit-search-form {\n margin-left: auto;\n}\n",".menu-wrapper {\n width: 100%;\n background-color: #fff;\n}\n\n.menu {\n position: relative;\n display: flex;\n width: 100%;\n flex-direction: column;\n gap: 32px 0;\n}\n\n.menu .group {\n display: flex;\n flex-direction: column;\n}\n\n.menu .group .group-name {\n border-bottom: 1px solid currentcolor;\n margin-bottom: 4px;\n color: var(--red500);\n font-size: 0.875rem;\n font-weight: var(--font-rg);\n}\n\n.menu .group .menu-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.menu .group .menu-list .menu-item {\n border-bottom: 2px solid transparent;\n font-size: 0.875rem;\n font-weight: var(--font-md);\n}\n\n.menu .menu-list .menu-item.active,\n.menu .menu-list .menu-item:hover {\n border-bottom-color: var(--red500);\n}\n\n.menu .group.highlight .menu-list .menu-item {\n font-size: 1rem;\n}\n\n@media (width >= 768px) {\n .menu-wrapper {\n position: absolute;\n top: 100%;\n left: 0;\n display: flex;\n justify-content: center;\n box-shadow: var(--shadow-1);\n }\n\n .menu {\n display: grid;\n width: 100%;\n max-width: var(--zanit-menubar-max-width, 1366px);\n padding: 16px var(--grid-margin);\n gap: 0 24px;\n grid-auto-columns: minmax(0, max-content);\n grid-auto-flow: column;\n grid-template-rows: minmax(0, max-content) max-content;\n }\n\n .menu .group {\n display: grid;\n grid-row: 1 / -1;\n grid-template-columns: 1fr;\n grid-template-rows: subgrid;\n }\n\n @supports not (grid-template-rows: subgrid) {\n .menu .group {\n grid-template-rows: repeat(auto-fit, minmax(0, max-content));\n }\n }\n\n .menu .group .group-name {\n border: none;\n margin-bottom: 16px;\n }\n\n .menu .group .menu-list .menu-item {\n font-size: 1rem;\n }\n\n .menu .group.highlight .menu-list .menu-item {\n font-size: 1.5rem;\n }\n\n .menu .group.highlight .menu-list {\n gap: 24px;\n }\n}\n","import { Component, Element, Fragment, Listen, Prop, State, Watch, h } from '@stencil/core';\nimport { MenubarItem } from '../../utils/types';\nimport { containsTarget, moveFocus } from '../../utils/utils';\nimport { Menu } from './menu/menu';\n\n/**\n * Main menubar component. Each item can have a menu with subitems\n * When a main menubar item is the current active one, a sub-menubar is shown and each subitem can have a menu with subitems.\n * @cssprop {--zanit-menubar-max-width} Maximum width of the menubar.\n */\n@Component({\n tag: 'zanit-menubar',\n styleUrls: ['menubar.css', 'menu/menu.css'],\n shadow: true,\n})\nexport class ZanitMenubar {\n @Element() host: HTMLZanitMenubarElement;\n\n /** Menubar items extracted from `data`. */\n @State()\n items: MenubarItem[] = [];\n\n /** ID of the currently open menu. */\n @State()\n openMenu: string | undefined = undefined;\n\n /** ID of the item to show the subitems navbar for. */\n @State()\n openNavbar: string | undefined = undefined;\n\n @State()\n isMobile: boolean = false;\n\n @State()\n loading: boolean = false;\n\n /** The data to build the menu (as an array of `MenubarItem` or a JSON array) or the url to fetch to retrieve it. */\n @Prop()\n data: Promise<MenubarItem[]> | MenubarItem[] | URL | string;\n\n /** ID of the current active item. */\n @Prop()\n current: string | undefined = undefined;\n\n /**\n * Delay in milliseconds before closing the menu after a mouseout event.\n * Useful to avoid immediate closing when the pointer briefly leaves the component.\n */\n @Prop()\n mouseOutTimeout: number | undefined = 1000;\n\n /** Initial search query. */\n @Prop({ mutable: true })\n searchQuery: string | undefined = undefined;\n\n private timerId: number;\n\n /** Setup the list of items. */\n @Watch('data')\n async parseData(data: typeof this.data) {\n if (!data) {\n return;\n }\n\n if (data instanceof URL) {\n this.items = await this.fetchData(data);\n } else if (data instanceof Promise) {\n this.loading = true;\n this.items = await data;\n this.loading = false;\n } else if (typeof data === 'string') {\n try {\n this.items = JSON.parse(data);\n if (!Array.isArray(this.items) || !this.items?.every((item) => item satisfies MenubarItem)) {\n throw new Error('Expected an array of MenubarItem objects.');\n }\n } catch {\n let url: URL;\n try {\n url = new URL(data);\n } catch {\n throw new Error('Invalid string provided for `data` property: not a valid url or JSON.');\n }\n\n this.items = await this.fetchData(url);\n }\n } else if (Array.isArray(data) && data.every((item) => item satisfies MenubarItem)) {\n this.items = data;\n } else {\n throw new Error(\n 'Invalid `data` property value. Expected an url, a JSON or an array/promise of MenubarItem objects.'\n );\n }\n }\n\n @Watch('items')\n onItemsChange() {\n this.initTabindex();\n }\n\n async connectedCallback() {\n const mobileMediaQuery = window.matchMedia('(width < 768px)');\n this.isMobile = mobileMediaQuery.matches;\n mobileMediaQuery.onchange = (mql) => {\n this.isMobile = mql.matches;\n this.initTabindex();\n this.openMenu = undefined;\n };\n await this.parseData(this.data);\n this.initTabindex();\n }\n\n /** Close any open menu when clicking outside. */\n @Listen('click', { target: 'document', passive: true })\n handleOutsideClick(event: MouseEvent) {\n if (!this.openMenu || containsTarget(this.host, event)) {\n return;\n }\n\n this.openMenu = undefined;\n }\n\n /** Close any open menu when pressing Escape or Tab. */\n @Listen('keydown', { passive: true })\n handleKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Escape':\n case 'Tab':\n this.openMenu = undefined;\n break;\n }\n }\n\n @Listen('mouseover', { passive: true })\n handleMouseover() {\n clearTimeout(this.timerId);\n }\n\n @Listen('mouseout', { passive: true })\n handleMouseout(event: MouseEvent) {\n this.timerId = window.setTimeout(() => {\n if (!this.openMenu || containsTarget(this.host, event)) {\n return;\n }\n\n this.openMenu = undefined;\n }, this.mouseOutTimeout);\n }\n\n /** Close the menu when it loses focus. */\n @Listen('focusout', { passive: true })\n handleFocusout(event: FocusEvent) {\n const relatedTarget = event.relatedTarget as HTMLElement;\n if (!this.openMenu || this.host.shadowRoot.querySelector('.menu')?.contains(relatedTarget)) {\n return;\n }\n\n this.openMenu = undefined;\n }\n\n /** Fetch data from passed URL. */\n private async fetchData(url: URL) {\n try {\n this.loading = true;\n const data = await (await fetch(url)).json();\n this.loading = false;\n if (!Array.isArray(data) || !data.every((item) => item satisfies MenubarItem)) {\n throw new Error('Invalid data structure. Expected an array of MenuItem objects.');\n }\n\n return data as MenubarItem[];\n } catch (error) {\n this.loading = false;\n console.error('Error fetching menubar data:', error);\n throw new Error('Failed to fetch menubar data from the provided URL.', { cause: error });\n }\n }\n\n /** Initialize tabindex on menuitems of menubars, setting -1 to all but the first one. */\n private initTabindex() {\n setTimeout(() => {\n this.host.shadowRoot.querySelectorAll('[role=\"menubar\"]')?.forEach((menubar) => {\n menubar\n .querySelectorAll('[role=\"menuitem\"]')\n ?.forEach((item, index) => item.setAttribute('tabindex', index === 0 ? '0' : '-1'));\n });\n }, 100);\n }\n\n /** Indicates whether the element has to be highlighted by checking whether it is set as current or one of its descendants is. */\n private isActive(item: MenubarItem) {\n if (item.id === this.current) {\n return true;\n }\n\n if (item.menuItems?.length) {\n return item.menuItems.some((menuItem) => menuItem.id === this.current);\n }\n\n if (item.navbarItems?.length) {\n const isActive = item.navbarItems.some((navbarItem) => this.isActive(navbarItem));\n if (isActive) {\n return true;\n }\n }\n\n return false;\n }\n\n /** Opens the menu associated with the menubar `item`, if any. */\n private showMenu(item: MenubarItem) {\n if (!item.menuItems?.length) {\n return;\n }\n\n this.openMenu = item.id;\n }\n\n /** Get all elements with `menuitem` role inside parent's `menubar`. * */\n private getParentMenubarElements(itemEl: HTMLElement) {\n return Array.from(\n itemEl?.closest('[role=\"menubar\"]')?.querySelectorAll(':scope > li a[role=\"menuitem\"]') ?? []\n ) as HTMLElement[];\n }\n\n /** Move the focus to the previous menubar item, or the last one. Then open its menu if any other menu was open. */\n private focusPreviousItem(itemEl: HTMLElement) {\n const menubarElements = this.getParentMenubarElements(itemEl);\n itemEl.tabIndex = -1;\n const currentIndex = menubarElements.indexOf(itemEl);\n const prevItem = menubarElements[(currentIndex - 1 + menubarElements.length) % menubarElements.length]; // get previous item or last one\n prevItem.tabIndex = 0;\n prevItem.focus();\n // open the item's menu if any other menu was open\n if (prevItem.ariaHasPopup === 'true' && this.openMenu) {\n this.openMenu = prevItem.id;\n }\n }\n\n /** Move the focus to the next menubar item, or the first one. Then open its menu if any other menu was open. */\n private focusNextItem(itemEl: HTMLElement) {\n const menubarElements = this.getParentMenubarElements(itemEl);\n itemEl.tabIndex = -1;\n const currentIndex = menubarElements.indexOf(itemEl);\n const nextItem = menubarElements[(currentIndex + 1) % menubarElements.length]; // get next item or first one\n nextItem.tabIndex = 0;\n nextItem.focus();\n // open the item's menu if any other menu was open\n if (nextItem.ariaHasPopup === 'true' && this.openMenu) {\n this.openMenu = nextItem.id;\n }\n }\n\n /** Handles keyboard navigation on menubar items. */\n private handleItemKeydown(event: KeyboardEvent, item: MenubarItem) {\n const target = event.target as HTMLElement;\n switch (event.key) {\n case 'Home': {\n event.preventDefault();\n event.stopPropagation();\n const firstItem = this.getParentMenubarElements(target)[0];\n moveFocus(target, firstItem);\n break;\n }\n case 'End': {\n event.preventDefault();\n event.stopPropagation();\n const lastItem = this.getParentMenubarElements(target).pop();\n moveFocus(target, lastItem);\n break;\n }\n case 'ArrowUp': {\n if (!item.menuItems?.length) {\n break;\n }\n event.preventDefault();\n event.stopPropagation();\n this.openMenu = item.id;\n // focus last item of the menu\n setTimeout(() => {\n const menuItems = Array.from(\n this.host.shadowRoot.querySelectorAll(`[aria-labelledby=${item.id}] [role=\"menuitem\"]`)\n ) as HTMLElement[];\n moveFocus(target, menuItems[menuItems.length - 1]);\n }, 100);\n break;\n }\n case 'ArrowRight': {\n event.preventDefault();\n event.stopPropagation();\n this.focusNextItem(target);\n break;\n }\n case 'ArrowDown': {\n if (!item.menuItems?.length) {\n break;\n }\n this.openMenu = item.id;\n setTimeout(() => {\n // focus first item of the menu\n const firsMenuItem = this.host.shadowRoot.querySelector(\n `[aria-labelledby=${item.id}] [role=\"menuitem\"]`\n ) as HTMLElement;\n firsMenuItem.tabIndex = 0;\n firsMenuItem.focus();\n }, 100);\n break;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n event.stopPropagation();\n this.focusPreviousItem(target);\n break;\n }\n }\n }\n\n /** Get the previous element with `role=group`. */\n private getPreviousGroup(groupContainer: HTMLElement) {\n const groups = Array.from(\n groupContainer?.closest('[role=\"menu\"]')?.querySelectorAll('[role=\"group\"]') ?? []\n ) as HTMLElement[];\n const currentIndex = groups.indexOf(groupContainer);\n\n return groups[currentIndex - 1];\n }\n\n /** Get the next element with `role=group`. */\n private getNextGroup(groupContainer: HTMLElement) {\n const groups = Array.from(\n groupContainer?.closest('[role=\"menu\"]')?.querySelectorAll('[role=\"group\"]') ?? []\n ) as HTMLElement[];\n const currentIndex = groups.indexOf(groupContainer);\n\n return groups[currentIndex + 1];\n }\n\n /** Handles keyboard navigation events from `Menu` component. */\n private handleMenuKeydown(event: KeyboardEvent) {\n const itemElement = event.target as HTMLElement;\n const items = Array.from(\n itemElement.closest('[role=\"menu\"]')?.querySelectorAll('[role=\"menuitem\"]') ?? []\n ) as HTMLElement[];\n const currentIndex = items.indexOf(itemElement);\n switch (event.key) {\n case 'ArrowUp': {\n event.preventDefault();\n event.stopPropagation();\n const prevItem = items[currentIndex - 1] || items[items.length - 1];\n moveFocus(itemElement, prevItem);\n break;\n }\n // Move the focus to the first item of the next group if any, otherwise move it to the next menubar item\n case 'ArrowRight': {\n event.preventDefault();\n event.stopPropagation();\n const currentGroup = itemElement.closest('[role=group]') as HTMLElement;\n const nextGroup = this.getNextGroup(currentGroup);\n if (!nextGroup) {\n itemElement.tabIndex = -1;\n const menuTriggerId = itemElement.closest('[role=\"menu\"][aria-labelledby]').getAttribute('aria-labelledby');\n const focusedItem = this.host.shadowRoot.getElementById(menuTriggerId);\n this.focusNextItem(focusedItem);\n break;\n }\n\n const nextGroupItems = (nextGroup.querySelectorAll('[role=\"menuitem\"]') ?? []) as HTMLElement[];\n moveFocus(itemElement, nextGroupItems[0]);\n break;\n }\n case 'ArrowDown': {\n event.preventDefault();\n event.stopPropagation();\n const nextItem = items[currentIndex + 1] || items[0];\n moveFocus(itemElement, nextItem);\n break;\n }\n // Move the focus to the first item of the previous group if any, otherwise move it to the previous menubar item\n case 'ArrowLeft': {\n event.preventDefault();\n event.stopPropagation();\n const currentGroup = itemElement.closest('[role=group]') as HTMLElement;\n const prevGroup = this.getPreviousGroup(currentGroup);\n if (!prevGroup) {\n itemElement.tabIndex = -1;\n const menuTriggerId = itemElement.closest('[role=\"menu\"][aria-labelledby]').getAttribute('aria-labelledby');\n const focusedItem = this.host.shadowRoot.getElementById(menuTriggerId);\n this.focusPreviousItem(focusedItem);\n break;\n }\n\n const prevGroupItems = (prevGroup.querySelectorAll('[role=\"menuitem\"]') ?? []) as HTMLElement[];\n moveFocus(itemElement, prevGroupItems[0]);\n break;\n }\n case 'Home':\n // Move to the first menu item\n event.preventDefault();\n event.stopPropagation();\n moveFocus(itemElement, items[0]);\n break;\n case 'End':\n // Move to the last menu item\n event.preventDefault();\n event.stopPropagation();\n moveFocus(itemElement, items[items.length - 1]);\n break;\n }\n }\n\n render() {\n if (this.isMobile) {\n return (\n <zanit-mobile-menubar\n items={this.items}\n current={this.current}\n searchQuery={this.searchQuery}\n loading={this.loading}\n />\n );\n }\n\n return (\n <nav aria-label=\"Zanichelli.it\">\n <div class=\"shadow-wrapper\">\n <div class=\"width-limiter\">\n <ul\n class=\"menubar\"\n role=\"menubar\"\n aria-label=\"Zanichelli.it\"\n >\n {this.loading &&\n [...new Array(4)].map((_, index) => (\n <Fragment>\n <li role=\"none\">\n <div class=\"menubar-item\">\n <z-ghost-loading></z-ghost-loading>\n </div>\n </li>\n {index < 3 && <li role=\"separator\"></li>}\n </Fragment>\n ))}\n {this.items?.map((item, index) => (\n <Fragment>\n <li role=\"none\">\n <a\n class={{ 'menubar-item': true, 'active': this.isActive(item) }}\n href={item.href}\n id={item.id}\n role=\"menuitem\"\n tabIndex={-1}\n aria-expanded={\n item.menuItems?.length ? (this.openMenu === item.id ? 'true' : 'false') : undefined\n }\n aria-haspopup={item.menuItems?.length ? 'true' : 'false'}\n aria-current={this.current === item.id ? 'page' : 'false'}\n onPointerOver={() => this.showMenu(item)}\n onKeyDown={(event) => this.handleItemKeydown(event, item)}\n >\n <span data-text={item.label}>{item.label}</span>\n {item.menuItems?.length > 0 && (\n <z-icon\n name={this.openMenu === item.id ? 'chevron-up' : 'chevron-down'}\n width=\"0.875rem\"\n height=\"0.875rem\"\n />\n )}\n </a>\n </li>\n {index < this.items?.length - 1 && <li role=\"separator\"></li>}\n </Fragment>\n ))}\n </ul>\n <zanit-search-form\n searchQuery={this.searchQuery}\n onResetSearch={() => (this.searchQuery = undefined)}\n />\n </div>\n\n {this.items.map(\n (item) =>\n this.openMenu === item.id && (\n <Menu\n controlledBy={item.id}\n items={item.menuItems}\n current={this.current}\n onItemKeyDown={(event) => this.handleMenuKeydown(event)}\n />\n )\n )}\n </div>\n\n {this.items?.map(\n (item) =>\n item.navbarItems?.length && (\n <nav class={{ 'sub-menubar': true, 'shadow-wrapper': true, 'visible': this.isActive(item) }}>\n <ul role=\"menubar\">\n {item.navbarItems.map((subitem) => (\n <Fragment>\n <li role=\"none\">\n <a\n class={{ 'menubar-item': true, 'active': this.isActive(subitem) }}\n href={subitem.href}\n id={subitem.id}\n role=\"menuitem\"\n tabIndex={-1}\n aria-haspopup={subitem.menuItems?.length ? 'true' : 'false'}\n aria-expanded={\n subitem.menuItems?.length ? (this.openMenu === subitem.id ? 'true' : 'false') : undefined\n }\n aria-current={this.current === item.id ? 'page' : 'false'}\n onPointerOver={() => this.showMenu(subitem)}\n onKeyDown={(event) => this.handleItemKeydown(event, subitem)}\n >\n <span>{subitem.label}</span>\n {subitem.menuItems?.length > 0 && (\n <z-icon\n name={this.openMenu === subitem.id ? 'chevron-up' : 'chevron-down'}\n width=\"0.75rem\"\n height=\"0.75rem\"\n />\n )}\n </a>\n </li>\n </Fragment>\n ))}\n </ul>\n {item.navbarItems.map(\n (subitem) =>\n this.openMenu === subitem.id && (\n <Menu\n controlledBy={subitem.id}\n items={subitem.menuItems}\n current={this.current}\n onItemKeyDown={(event) => this.handleMenuKeydown(event)}\n />\n )\n )}\n </nav>\n )\n )}\n </nav>\n );\n }\n}\n",":host {\n position: relative;\n z-index: 2;\n display: block;\n width: 100%;\n max-width: 100%;\n background-color: #fff;\n color: var(--gray900);\n fill: var(--gray900);\n font-family: var(--font-family-sans);\n}\n\n:host,\n*,\n::before,\n::after {\n box-sizing: border-box;\n}\n\n*:focus:focus-visible {\n box-shadow: var(--shadow-focus-primary);\n outline: none;\n}\n\nul {\n padding: 0;\n margin: 0;\n list-style: none;\n}\n\na {\n color: var(--gray900);\n cursor: pointer;\n text-decoration: none;\n}\n\nbutton {\n all: unset;\n cursor: pointer;\n}\n\nnav {\n display: flex;\n width: 100%;\n align-items: center;\n padding: 8px var(--grid-margin);\n}\n\nnav::after {\n position: absolute;\n top: 0;\n right: 0;\n width: 100%;\n height: 100%;\n background: transparent;\n box-shadow: var(--shadow-1);\n content: '';\n pointer-events: none;\n}\n\n.burger-button {\n margin-left: auto;\n}\n\n.mobile-menu {\n position: absolute;\n top: 100%;\n left: 0;\n display: flex;\n width: 100%;\n flex-direction: column;\n padding: 16px var(--grid-margin) 32px;\n background-color: #fff;\n box-shadow: var(--shadow-2);\n gap: 8px;\n}\n\n.mobile-menu li {\n width: 100%;\n}\n\n.mobile-menu .items-container {\n display: flex;\n min-height: 256px;\n flex-direction: column;\n gap: 8px;\n}\n\n.mobile-menu .items-container z-ghost-loading {\n width: 40%;\n height: 1.2rem;\n}\n\n.mobile-menu .items-container .menubar-item {\n display: block;\n width: 100%;\n padding: 8px 0;\n font-size: 1rem;\n text-align: left;\n}\n\n.mobile-menu .items-container li:not(:last-child) .menubar-item {\n border-bottom: 1px solid #000;\n}\n\n[role='menuitem'].parent {\n display: flex;\n width: fit-content;\n align-items: center;\n padding: 0;\n border: none;\n font-size: 0.875rem;\n gap: 8px;\n}\n",".menu-wrapper {\n width: 100%;\n background-color: #fff;\n}\n\n.menu {\n position: relative;\n display: flex;\n width: 100%;\n flex-direction: column;\n gap: 32px 0;\n}\n\n.menu .group {\n display: flex;\n flex-direction: column;\n}\n\n.menu .group .group-name {\n border-bottom: 1px solid currentcolor;\n margin-bottom: 4px;\n color: var(--red500);\n font-size: 0.875rem;\n font-weight: var(--font-rg);\n}\n\n.menu .group .menu-list {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.menu .group .menu-list .menu-item {\n border-bottom: 2px solid transparent;\n font-size: 0.875rem;\n font-weight: var(--font-md);\n}\n\n.menu .menu-list .menu-item.active,\n.menu .menu-list .menu-item:hover {\n border-bottom-color: var(--red500);\n}\n\n.menu .group.highlight .menu-list .menu-item {\n font-size: 1rem;\n}\n\n@media (width >= 768px) {\n .menu-wrapper {\n position: absolute;\n top: 100%;\n left: 0;\n display: flex;\n justify-content: center;\n box-shadow: var(--shadow-1);\n }\n\n .menu {\n display: grid;\n width: 100%;\n max-width: var(--zanit-menubar-max-width, 1366px);\n padding: 16px var(--grid-margin);\n gap: 0 24px;\n grid-auto-columns: minmax(0, max-content);\n grid-auto-flow: column;\n grid-template-rows: minmax(0, max-content) max-content;\n }\n\n .menu .group {\n display: grid;\n grid-row: 1 / -1;\n grid-template-columns: 1fr;\n grid-template-rows: subgrid;\n }\n\n @supports not (grid-template-rows: subgrid) {\n .menu .group {\n grid-template-rows: repeat(auto-fit, minmax(0, max-content));\n }\n }\n\n .menu .group .group-name {\n border: none;\n margin-bottom: 16px;\n }\n\n .menu .group .menu-list .menu-item {\n font-size: 1rem;\n }\n\n .menu .group.highlight .menu-list .menu-item {\n font-size: 1.5rem;\n }\n\n .menu .group.highlight .menu-list {\n gap: 24px;\n }\n}\n","import { Component, Element, h, Listen, Prop, State, Watch } from '@stencil/core';\nimport { MenubarItem, MenuItem } from '../../../utils/types';\nimport { containsTarget, moveFocus } from '../../../utils/utils';\nimport { Menu } from '../menu/menu';\n\n/** Mobile menubar component. */\n@Component({\n tag: 'zanit-mobile-menubar',\n styleUrls: ['mobile-menubar.css', '../menu/menu.css'],\n shadow: true,\n})\nexport class ZanitMobileMenubar {\n @Element() host: HTMLZanitMobileMenubarElement;\n\n /** ID of the current active item. */\n @Prop() current: string | undefined = undefined;\n\n /** Menubar items. */\n @Prop() items: MenubarItem[] = [];\n\n /** Initial search query. */\n @Prop({ mutable: true }) searchQuery: string | undefined = undefined;\n\n /** Whether the menubar is loading the data. */\n @Prop() loading: boolean = false;\n\n @State() parentItem: MenubarItem | undefined = undefined;\n @State() menuItems: MenubarItem[] | MenuItem[] | undefined = undefined;\n /** Whether the items to render come from a menubar or a menu. */\n @State() menuType: 'menubar' | 'menu' | undefined = undefined;\n @State() open: boolean;\n\n @Watch('items')\n @Watch('current')\n onItemsChange() {\n this.setupData(this.items);\n }\n\n /**\n * Find the current item and take its parent, `menuItems` or the `navbarItems`.\n * @returns True if an item matches the `current` prop, false otherwise.\n */\n private setupData(items: MenubarItem[], parent?: MenubarItem): boolean {\n for (const item of items) {\n if (item.id === this.current) {\n const type = item.menuItems?.length ? 'menu' : 'menubar';\n this.parentItem = parent;\n this.menuType = type;\n this.menuItems = item.menuItems || item.navbarItems;\n return true;\n }\n\n if (item.menuItems?.some(({ id }) => id === this.current)) {\n this.parentItem = parent;\n this.menuType = 'menu';\n this.menuItems = item.menuItems;\n return true;\n }\n\n if (item.navbarItems?.length) {\n return this.setupData(item.navbarItems, item);\n }\n }\n\n return false;\n }\n\n private get menuItemsElement() {\n return Array.from(this.host.shadowRoot.querySelectorAll('[role=\"menuitem\"]')) as HTMLElement[];\n }\n\n /** Initialize tabindex on menuitems, setting -1 to all but the first one. */\n private initTabindex() {\n this.menuItemsElement.forEach((item, index) => item.setAttribute('tabindex', index === 0 ? '0' : '-1'));\n }\n\n private toggleMenu() {\n if (this.open) {\n this.open = false;\n } else {\n this.open = true;\n setTimeout(() => {\n this.initTabindex();\n this.menuItemsElement[0]?.focus();\n }, 200);\n }\n }\n\n /** Handles keyboard navigation on mobile menu. */\n private handleItemKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'ArrowUp': {\n event.preventDefault();\n event.stopPropagation();\n const items = this.menuItemsElement;\n const currentIndex = items.indexOf(event.target as HTMLElement);\n const prevItem = items[(currentIndex - 1 + items.length) % items.length];\n moveFocus(items[currentIndex], prevItem);\n break;\n }\n case 'ArrowDown': {\n event.preventDefault();\n event.stopPropagation();\n const items = this.menuItemsElement;\n const currentIndex = items.indexOf(event.target as HTMLElement);\n const nextItem = items[(currentIndex + 1) % items.length];\n moveFocus(items[currentIndex], nextItem);\n break;\n }\n case 'Home': {\n event.preventDefault();\n event.stopPropagation();\n moveFocus(event.target as HTMLElement, this.menuItemsElement[0]);\n break;\n }\n case 'End': {\n event.preventDefault();\n event.stopPropagation();\n moveFocus(event.target as HTMLElement, this.menuItemsElement.pop());\n break;\n }\n }\n }\n\n connectedCallback() {\n this.setupData(this.items);\n }\n\n /** Close the menu when clicking outside. */\n @Listen('click', { target: 'document', passive: true })\n handleOutsideClick(event: MouseEvent) {\n if (containsTarget(this.host, event)) {\n return;\n }\n\n this.open = false;\n }\n\n /** Close the menu when pressing Escape or Tab. */\n @Listen('keydown', { passive: true })\n handleKeydown(event: KeyboardEvent) {\n switch (event.key) {\n case 'Escape':\n this.open = false;\n break;\n case 'Tab':\n if (containsTarget(this.host, event)) {\n break;\n }\n\n this.open = false;\n break;\n }\n }\n\n /** Close the menu when the focus goes out. */\n @Listen('focusin', { target: 'document', passive: true })\n handleFocusout(event: FocusEvent) {\n if (containsTarget(this.host, event)) {\n return;\n }\n\n this.open = false;\n }\n\n render() {\n return (\n <nav aria-label=\"Zanichelli.it\">\n <z-logo\n imageAlt=\"Logo Zanichelli\"\n link=\"/\"\n height={32}\n width={126}\n ></z-logo>\n <button\n class=\"burger-button\"\n type=\"button\"\n aria-expanded={this.open ? 'true' : 'false'}\n aria-controls=\"mobile-menu\"\n aria-label={this.open ? 'Chiudi menù' : 'Apri menù'}\n onClick={() => this.toggleMenu()}\n >\n <z-icon\n name={this.open ? 'multiply' : 'burger-menu'}\n width=\"1.5rem\"\n height=\"1.5rem\"\n ></z-icon>\n </button>\n {this.open && (\n <ul\n class=\"mobile-menu\"\n role=\"menubar\"\n >\n <li role=\"none\">\n <zanit-search-form\n searchQuery={this.searchQuery}\n onResetSearch={() => (this.searchQuery = undefined)}\n />\n </li>\n\n {!this.loading && this.current && (\n <li role=\"none\">\n <a\n class=\"parent\"\n href={this.parentItem?.href ?? '/'}\n id={this.parentItem?.id ?? undefined}\n role=\"menuitem\"\n tabIndex={-1}\n onKeyDown={(event) => this.handleItemKeydown(event)}\n >\n <z-icon\n name=\"arrow-left\"\n width=\"0.5rem\"\n height=\"0.5rem\"\n ></z-icon>\n <span>\n {/* Show the 'Home' label if the current item is a root child. */}\n {this.parentItem?.label ?? 'Home'}\n </span>\n </a>\n </li>\n )}\n\n {this.loading && (\n <div\n class=\"items-container\"\n role=\"none\"\n >\n {[...new Array(4)].map(() => (\n <li role=\"none\">\n <div\n class=\"menubar-item\"\n role=\"none\"\n >\n <z-ghost-loading></z-ghost-loading>\n </div>\n </li>\n ))}\n </div>\n )}\n\n {this.menuType === 'menu' ? (\n <Menu\n items={this.menuItems}\n current={this.current}\n onItemKeyDown={(event) => this.handleItemKeydown(event)}\n />\n ) : (\n this.menuItems?.length && (\n <div\n class=\"items-container\"\n role=\"none\"\n >\n {this.menuItems.map((item) => (\n <li role=\"none\">\n <a\n class={{\n 'menu-item': this.menuType === 'menu',\n 'menubar-item': this.menuType === 'menubar',\n }}\n href={item.href}\n id={item.id}\n role=\"menuitem\"\n aria-current={this.current === item.id ? 'page' : 'false'}\n tabIndex={-1}\n onKeyDown={(event) => this.handleItemKeydown(event)}\n >\n <span data-text={item.label}>{item.label}</span>\n </a>\n </li>\n ))}\n </div>\n )\n )}\n </ul>\n )}\n </nav>\n );\n }\n}\n",":host,\n*,\n::before,\n::after {\n box-sizing: border-box;\n}\n\n*:focus:focus-visible {\n box-shadow: var(--shadow-focus-primary);\n outline: none;\n}\n\nbutton {\n all: unset;\n cursor: pointer;\n}\n\n@media (width < 768px) {\n .searchbar {\n display: flex;\n align-items: center;\n border: 1px solid #000;\n border-radius: 4px;\n }\n\n .searchbar > *:first-child {\n /* To have a seamless appearance of the border radius of an internal child element nested within a parent element with rounded borders, we need to subtract the parent's border thickness from the child's border radius. Inner Radius = Outer Radius - Border Thickness */\n border-bottom-left-radius: 3px;\n border-top-left-radius: 3px;\n }\n\n .searchbar button[type='reset'] {\n display: flex;\n padding: 0 0 0 8px;\n cursor: pointer;\n }\n\n .searchbar input {\n width: 100%;\n height: 100%;\n padding: 4px 8px;\n border: none;\n background-color: #fff;\n font-family: var(--font-family-sans);\n font-size: 1rem;\n }\n\n .searchbar input[type='search']::-webkit-search-cancel-button,\n .searchbar input[type='search']::-webkit-search-decoration {\n appearance: none;\n }\n\n .searchbar input::placeholder {\n color: var(--gray500);\n }\n\n .searchbar .searchbar-button {\n padding: 4px 8px;\n border-left: 1px solid #000;\n background: var(--zanit-accent-color);\n border-bottom-right-radius: 3px;\n border-top-right-radius: 3px;\n }\n\n .searchbar input:focus:focus-visible,\n .searchbar .searchbar-button:focus:focus-visible {\n z-index: 1;\n }\n}\n\n@media (width >= 768px) {\n .searchbar {\n display: flex;\n font-size: 1.5rem;\n }\n\n .searchbar.searchbar-open {\n position: absolute;\n width: 100%;\n height: 100%;\n inset: 0;\n }\n\n .searchbar .input-wrapper {\n display: none;\n width: 100%;\n align-items: center;\n padding: 0 0 0 var(--grid-margin);\n background-color: #fff;\n gap: 14px;\n }\n\n .searchbar .input-wrapper:not(.hide) {\n display: flex;\n }\n\n .searchbar button[type='reset'] {\n display: flex;\n align-items: center;\n border-radius: 4px;\n cursor: pointer;\n }\n\n .searchbar input {\n z-index: 1;\n width: 100%;\n height: 100%;\n padding: 8px 14px 8px 0;\n border: none;\n background-color: #fff;\n font-family: var(--font-family-sans);\n font-size: inherit;\n }\n\n .searchbar input[type='search']::-webkit-search-cancel-button,\n .searchbar input[type='search']::-webkit-search-decoration {\n appearance: none;\n }\n\n .searchbar input::placeholder {\n color: var(--gray500);\n }\n\n .searchbar .searchbar-button {\n display: flex;\n align-items: center;\n padding: 8px 16px;\n border-right: 1px solid #000;\n border-left: 1px solid #000;\n background: var(--zanit-accent-color);\n font-family: inherit;\n font-size: inherit;\n gap: 64px;\n line-height: 1;\n }\n\n .searchbar input:focus:focus-visible,\n .searchbar .searchbar-button:focus:focus-visible {\n z-index: 1;\n }\n}\n\n@media (width >= 768px) and (width < 1152px) {\n .searchbar .searchbar-button > .searchbar-button-label {\n display: none;\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Prop, State, Watch } from '@stencil/core';\nimport { containsTarget } from '../../../utils/utils';\n\n@Component({\n tag: 'zanit-search-form',\n styleUrl: 'search-form.css',\n shadow: true,\n})\nexport class ZanitSearchForm {\n private formElement: HTMLFormElement;\n\n @Element() host: HTMLZanitSearchFormElement;\n\n @State()\n isMobile: boolean = false;\n\n /** Indicates whether the searchbar is visible and usable. */\n @State()\n showSearchbar: boolean = false;\n\n /** Search query to apply. */\n @State()\n _searchQuery: string | undefined = undefined;\n\n /** Initial search query */\n @Prop({ mutable: true })\n searchQuery: string | undefined = undefined;\n\n @Watch('searchQuery')\n onSearchQueryChange() {\n this._searchQuery = this.searchQuery;\n if (this.searchQuery) {\n this.showSearchbar = true;\n }\n }\n\n /** Focus searchbar input when it becomes visible. */\n @Watch('showSearchbar')\n onShowSearchbar() {\n if (!this.showSearchbar) {\n return;\n }\n\n setTimeout(() => {\n const searchbarInput = this.host.shadowRoot.querySelector('#searchbar-input') as HTMLInputElement;\n if (this.showSearchbar && !this.searchQuery) {\n searchbarInput.focus();\n }\n }, 100);\n }\n\n /** Emitted on search form submission. */\n @Event({ cancelable: true }) search: EventEmitter<{ query: string }>;\n\n @Event() resetSearch: EventEmitter<void>;\n\n async connectedCallback() {\n this.showSearchbar = !!this.searchQuery;\n const mobileMediaQuery = window.matchMedia('(width < 768px)');\n this.isMobile = mobileMediaQuery.matches;\n mobileMediaQuery.onchange = (mql) => {\n this.isMobile = mql.matches;\n };\n }\n\n /** Close open searchbar when clicking outside. */\n @Listen('click', { target: 'document', passive: true })\n handleOutsideClick(event: MouseEvent) {\n if (this.showSearchbar && this.formElement && !containsTarget(this.formElement, event)) {\n this.showSearchbar = false;\n }\n }\n\n private resetSearchQuery() {\n this.searchQuery = undefined;\n this.resetSearch.emit();\n }\n\n private handleInputChange(event: Event) {\n this._searchQuery = (event.target as HTMLInputElement).value;\n if (!this._searchQuery) {\n this.searchQuery = undefined;\n }\n }\n\n private onSearchSubmit(event: Event) {\n event.preventDefault();\n if (!this._searchQuery) {\n return;\n }\n\n this.showSearchbar = false;\n const searchEv = this.search.emit({ query: this._searchQuery });\n // do not submit the form if the event default behavior was prevented\n if (searchEv.defaultPrevented) {\n return;\n }\n\n this.formElement.submit();\n }\n\n render() {\n if (this.isMobile) {\n return (\n <form\n class=\"searchbar\"\n ref={(el) => (this.formElement = el)}\n role=\"search\"\n aria-label=\"Cerca\"\n method=\"get\"\n action=\"/ricerca\"\n onSubmit={(event) => this.onSearchSubmit(event)}\n onReset={() => this.resetSearchQuery()}\n >\n {this.searchQuery && (\n <button\n type=\"reset\"\n aria-label=\"Svuota campo di ricerca\"\n >\n <z-icon\n name=\"multiply-circled\"\n width=\"1rem\"\n height=\"1rem\"\n />\n </button>\n )}\n <input\n id=\"searchbar-input\"\n name=\"q\"\n type=\"search\"\n placeholder=\"Cerca per parola chiave o ISBN\"\n onInput={(event) => this.handleInputChange(event)}\n value={this.searchQuery}\n required\n ></input>\n <button\n class=\"searchbar-button\"\n aria-controls=\"searchbar-input\"\n aria-label=\"Cerca\"\n type=\"submit\"\n >\n <z-icon\n name=\"search\"\n width=\"1.25rem\"\n height=\"1.25rem\"\n ></z-icon>\n </button>\n </form>\n );\n }\n\n return (\n <form\n class={{ 'searchbar': true, 'searchbar-open': this.showSearchbar }}\n ref={(el) => (this.formElement = el)}\n role=\"search\"\n aria-label=\"Cerca\"\n method=\"get\"\n action=\"/ricerca\"\n onSubmit={(event) => this.onSearchSubmit(event)}\n onReset={() => this.resetSearchQuery()}\n >\n <div\n class={{ 'hide': !this.showSearchbar, 'input-wrapper': true }}\n role=\"none\"\n >\n {this.searchQuery && (\n <button\n type=\"reset\"\n aria-label=\"Svuota campo di ricerca\"\n >\n <z-icon\n name=\"multiply-circled\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n />\n </button>\n )}\n <input\n id=\"searchbar-input\"\n name=\"q\"\n type=\"search\"\n placeholder=\"Cerca per parola chiave o ISBN\"\n onInput={(event) => this.handleInputChange(event)}\n value={this.searchQuery}\n required\n ></input>\n </div>\n\n <button\n class=\"searchbar-button\"\n aria-label=\"Cerca\"\n aria-controls=\"searchbar-input\"\n type={this.showSearchbar ? 'submit' : 'button'}\n onClick={() => (this.showSearchbar = true)}\n >\n {this.showSearchbar ? null : <span class=\"searchbar-button-label\">Cerca</span>}\n <z-icon\n name=\"search\"\n width=\"2rem\"\n height=\"2rem\"\n ></z-icon>\n </button>\n </form>\n );\n }\n}\n"],"names":["menuCss"],"mappings":"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"}
@@ -1 +0,0 @@
1
- :root{--font-md:500}.title-1,.title-2,.title-3,.title-4,.title-5,.title-6,.title-1-rg,.title-2-rg,.title-3-rg,.title-4-rg,.title-5-rg,.title-6-rg,.title-1-lt,.title-2-lt,.title-3-lt,.title-4-lt,.title-5-lt,.title-6-lt,.title-1-sb,.title-2-sb,.title-3-sb,.title-4-sb,.title-5-sb,.title-6-sb,.title-1-bd,.title-2-bd,.title-3-bd,.title-4-bd,.title-5-bd,.title-6-bd,.title-1-md,.title-2-md,.title-3-md,.title-4-md,.title-5-md,.title-6-md{font-family:var(--font-family-serif);font-weight:var(--font-rg)}.title-1-lt,.title-2-lt,.title-3-lt,.title-4-lt,.title-5-lt,.title-6-lt,.heading-1-lt,.heading-2-lt,.heading-3-lt,.heading-4-lt,.body-1-lt,.body-2-lt,.body-3-lt,.body-4-lt,.body-5-lt,.body-6-lt,.body-7-lt,.interactive-1-lt,.interactive-2-lt{font-weight:var(--font-lt)}.title-1-md,.title-2-md,.title-3-md,.title-4-md,.title-5-md,.title-6-md,.heading-1-md,.heading-2-md,.heading-3-md,.heading-4-md,.body-1-md,.body-2-md,.body-3-md,.body-4-md,.body-5-md,.body-6-md,.body-7-md,.interactive-1-md,.interactive-2-md{font-weight:var(--font-md)}.title-1-rg,.title-2-rg,.title-3-rg,.title-4-rg,.title-5-rg,.title-6-rg,.heading-1-rg,.heading-2-rg,.heading-3-rg,.heading-4-rg,.body-1-rg,.body-2-rg,.body-3-rg,.body-4-rg,.body-5-rg,.body-6-rg,.body-7-rg,.interactive-1-rg,.interactive-2-rg{font-weight:var(--font-rg)}.title-1-sb,.title-2-sb,.title-3-sb,.title-4-sb,.title-5-sb,.title-6-sb,.heading-1-sb,.heading-2-sb,.heading-3-sb,.heading-4-sb,.body-2-sb,.body-3-sb,.body-4-sb,.body-5-sb,.body-6-sb,.body-7-sb,.interactive-1-sb,.interactive-2-sb{font-weight:var(--font-sb)}.title-1-bd,.title-2-bd,.title-3-bd,.title-4-bd,.title-5-bd,.title-6-bd,.heading-1-bd,.heading-2-bd,.heading-3-bd,.heading-4-bd,.body-1-bd,.body-2-bd,.body-3-bd,.body-4-bd,.body-5-bd,.body-6-bd,.body-7-bd,.interactive-1-bd,.interactive-2-bd{font-weight:var(--font-bd)}.font-lt{font-weight:var(--font-lt)}.font-rg{font-weight:var(--font-rg)}.font-md{font-weight:var(--font-md)}.font-sb{font-weight:var(--font-sb)}.font-bd{font-weight:var(--font-bd)}.font-it{font-style:italic}.font-serif{font-family:var(--font-family-serif)}.font-sans{font-family:var(--font-family-sans)}.title-1,.title-1-sb,.title-1-bd,.title-1-rg,.title-1-lt,.title-1-md{font-size:4.5rem;line-height:5rem;}.title-2,.title-2-sb,.title-2-bd,.title-2-rg,.title-2-lt,.title-2-md{font-size:3rem;line-height:3.25rem;}.title-3,.title-3-sb,.title-3-bd,.title-3-rg,.title-3-lt,.title-3-md{font-size:2rem;line-height:2.75rem;}.title-4,.title-4-sb,.title-4-bd,.title-4-rg,.title-4-lt,.title-4-md{font-size:1.75rem;line-height:2rem;}.title-5,.title-5-sb,.title-5-bd,.title-5-rg,.title-5-lt,.title-5-md{font-size:1.5rem;line-height:1.75rem;}.title-6,.title-6-sb,.title-6-bd,.title-6-rg,.title-6-lt,.title-6-md{font-size:1.25rem;line-height:1.75rem;}.heading-1,.heading-1-sb,.heading-1-bd,.heading-1-rg,.heading-1-lt,.heading-1-md{font-size:2rem;line-height:2.75rem;}.heading-2,.heading-2-sb,.heading-2-bd,.heading-2-rg,.heading-2-lt,.heading-2-md{font-size:1.75rem;line-height:2rem;}.heading-3,.heading-3-sb,.heading-3-bd,.heading-3-rg,.heading-3-lt,.heading-3-md{font-size:1.5rem;line-height:1.75rem;}.heading-4,.heading-4-sb,.heading-4-bd,.heading-4-rg,.heading-4-lt,.heading-4-md{font-size:1.125rem;line-height:1.375rem;}.body-1,.body-1-sb,.body-1-bd,.body-1-rg,.body-1-lt,.body-1-md{font-size:1.5rem;line-height:2rem;}.body-2,.body-2-sb,.body-2-bd,.body-2-rg,.body-2-lt,.body-2-md{font-size:1.25rem;line-height:1.75rem;}.body-3,.body-3-sb,.body-3-bd,.body-3-rg,.body-3-lt,.body-3-md{font-size:1.125rem;line-height:1.5rem;}.body-4,.body-4-sb,.body-4-bd,.body-4-rg,.body-4-lt,.body-4-md{font-size:1rem;line-height:1.5rem;}.body-5,.body-5-sb,.body-5-bd,.body-5-rg,.body-5-lt,.body-5-md{font-size:0.875rem;line-height:1.125rem;}.body-6,.body-6-sb,.body-6-bd,.body-6-rg,.body-6-lt,.body-6-md{font-size:0.75rem;line-height:1rem;}.body-7,.body-7-sb,.body-7-bd,.body-7-rg,.body-7-lt,.body-7-md{font-size:0.625rem;line-height:0.875rem;}.interactive-1,.interactive-1-sb,.interactive-1-bd,.interactive-1-rg,.interactive-1-lt,.interactive-1-md{font-size:1rem;line-height:1.5rem;}.interactive-2,.interactive-2-sb,.interactive-2-bd,.interactive-2-rg,.interactive-2-lt,.interactive-2-md{font-size:0.875rem;line-height:1.125rem;}@media (width < 768px){.mobile-title-1,.mobile-title-1-sb,.mobile-title-1-bd,.mobile-title-1-rg,.mobile-title-1-lt,.mobile-title-1-md{font-size:4.5rem;line-height:5rem;}.mobile-title-2,.mobile-title-2-sb,.mobile-title-2-bd,.mobile-title-2-rg,.mobile-title-2-lt,.mobile-title-2-md{font-size:3rem;line-height:3.25rem;}.mobile-title-3,.mobile-title-3-sb,.mobile-title-3-bd,.mobile-title-3-rg,.mobile-title-3-lt,.mobile-title-3-md{font-size:2rem;line-height:2.75rem;}.mobile-title-4,.mobile-title-4-sb,.mobile-title-4-bd,.mobile-title-4-rg,.mobile-title-4-lt,.mobile-title-4-md{font-size:1.75rem;line-height:2rem;}.mobile-title-5,.mobile-title-5-sb,.mobile-title-5-bd,.mobile-title-5-rg,.mobile-title-5-lt,.mobile-title-5-md{font-size:1.5rem;line-height:1.75rem;}.mobile-title-6,.mobile-title-6-sb,.mobile-title-6-bd,.mobile-title-6-rg,.mobile-title-6-lt,.mobile-title-6-md{font-size:1.25rem;line-height:1.75rem;}.mobile-heading-1,.mobile-heading-1-sb,.mobile-heading-1-bd,.mobile-heading-1-rg,.mobile-heading-1-lt,.mobile-heading-1-md{font-size:2rem;line-height:2.75rem;}.mobile-heading-2,.mobile-heading-2-sb,.mobile-heading-2-bd,.mobile-heading-2-rg,.mobile-heading-2-lt,.mobile-heading-2-md{font-size:1.75rem;line-height:2rem;}.mobile-heading-3,.mobile-heading-3-sb,.mobile-heading-3-bd,.mobile-heading-3-rg,.mobile-heading-3-lt,.mobile-heading-3-md{font-size:1.5rem;line-height:1.75rem;}.mobile-heading-4,.mobile-heading-4-sb,.mobile-heading-4-bd,.mobile-heading-4-rg,.mobile-heading-4-lt,.mobile-heading-4-md{font-size:1.125rem;line-height:1.375rem;}.mobile-body-1,.mobile-body-1-sb,.mobile-body-1-bd,.mobile-body-1-rg,.mobile-body-1-lt,.mobile-body-1-md{font-size:1.5rem;line-height:2rem;}.mobile-body-2,.mobile-body-2-sb,.mobile-body-2-bd,.mobile-body-2-rg,.mobile-body-2-lt,.mobile-body-2-md{font-size:1.25rem;line-height:1.75rem;}.mobile-body-3,.mobile-body-3-sb,.mobile-body-3-bd,.mobile-body-3-rg,.mobile-body-3-lt,.mobile-body-3-md{font-size:1.125rem;line-height:1.5rem;}.mobile-body-4,.mobile-body-4-sb,.mobile-body-4-bd,.mobile-body-4-rg,.mobile-body-4-lt,.mobile-body-4-md{font-size:1rem;line-height:1.5rem;}.mobile-body-5,.mobile-body-5-sb,.mobile-body-5-bd,.mobile-body-5-rg,.mobile-body-5-lt,.mobile-body-5-md{font-size:0.875rem;line-height:1.125rem;}.mobile-body-6,.mobile-body-6-sb,.mobile-body-6-bd,.mobile-body-6-rg,.mobile-body-6-lt,.mobile-body-6-md{font-size:0.75rem;line-height:1rem;}.mobile-body-7,.mobile-body-7-sb,.mobile-body-7-bd,.mobile-body-7-rg,.mobile-body-7-lt,.mobile-body-7-md{font-size:0.625rem;line-height:0.875rem;}.mobile-interactive-1,.mobile-interactive-1-sb,.mobile-interactive-1-bd,.mobile-interactive-1-rg,.mobile-interactive-1-lt,.mobile-interactive-1-md{font-size:1rem;line-height:1.5rem;}.mobile-interactive-2,.mobile-interactive-2-sb,.mobile-interactive-2-bd,.mobile-interactive-2-rg,.mobile-interactive-2-lt,.mobile-interactive-2-md{font-size:0.875rem;line-height:1.125rem;}}@media (width >= 768px) and (width < 1152px){.tablet-title-1,.tablet-title-1-sb,.tablet-title-1-bd,.tablet-title-1-rg,.tablet-title-1-lt,.tablet-title-1-md{font-size:4.5rem;line-height:5rem;}.tablet-title-2,.tablet-title-2-sb,.tablet-title-2-bd,.tablet-title-2-rg,.tablet-title-2-lt,.tablet-title-2-md{font-size:3rem;line-height:3.25rem;}.tablet-title-3,.tablet-title-3-sb,.tablet-title-3-bd,.tablet-title-3-rg,.tablet-title-3-lt,.tablet-title-3-md{font-size:2rem;line-height:2.75rem;}.tablet-title-4,.tablet-title-4-sb,.tablet-title-4-bd,.tablet-title-4-rg,.tablet-title-4-lt,.tablet-title-4-md{font-size:1.75rem;line-height:2rem;}.tablet-title-5,.tablet-title-5-sb,.tablet-title-5-bd,.tablet-title-5-rg,.tablet-title-5-lt,.tablet-title-5-md{font-size:1.5rem;line-height:1.75rem;}.tablet-title-6,.tablet-title-6-sb,.tablet-title-6-bd,.tablet-title-6-rg,.tablet-title-6-lt,.tablet-title-6-md{font-size:1.25rem;line-height:1.75rem;}.tablet-heading-1,.tablet-heading-1-sb,.tablet-heading-1-bd,.tablet-heading-1-rg,.tablet-heading-1-lt,.tablet-heading-1-md{font-size:2rem;line-height:2.75rem;}.tablet-heading-2,.tablet-heading-2-sb,.tablet-heading-2-bd,.tablet-heading-2-rg,.tablet-heading-2-lt,.tablet-heading-2-md{font-size:1.75rem;line-height:2rem;}.tablet-heading-3,.tablet-heading-3-sb,.tablet-heading-3-bd,.tablet-heading-3-rg,.tablet-heading-3-lt,.tablet-heading-3-md{font-size:1.5rem;line-height:1.75rem;}.tablet-heading-4,.tablet-heading-4-sb,.tablet-heading-4-bd,.tablet-heading-4-rg,.tablet-heading-4-lt,.tablet-heading-4-md{font-size:1.125rem;line-height:1.375rem;}.tablet-body-1,.tablet-body-1-sb,.tablet-body-1-bd,.tablet-body-1-rg,.tablet-body-1-lt,.tablet-body-1-md{font-size:1.5rem;line-height:2rem;}.tablet-body-2,.tablet-body-2-sb,.tablet-body-2-bd,.tablet-body-2-rg,.tablet-body-2-lt,.tablet-body-2-md{font-size:1.25rem;line-height:1.75rem;}.tablet-body-3,.tablet-body-3-sb,.tablet-body-3-bd,.tablet-body-3-rg,.tablet-body-3-lt,.tablet-body-3-md{font-size:1.125rem;line-height:1.5rem;}.tablet-body-4,.tablet-body-4-sb,.tablet-body-4-bd,.tablet-body-4-rg,.tablet-body-4-lt,.tablet-body-4-md{font-size:1rem;line-height:1.5rem;}.tablet-body-5,.tablet-body-5-sb,.tablet-body-5-bd,.tablet-body-5-rg,.tablet-body-5-lt,.tablet-body-5-md{font-size:0.875rem;line-height:1.125rem;}.tablet-body-6,.tablet-body-6-sb,.tablet-body-6-bd,.tablet-body-6-rg,.tablet-body-6-lt,.tablet-body-6-md{font-size:0.75rem;line-height:1rem;}.tablet-body-7,.tablet-body-7-sb,.tablet-body-7-bd,.tablet-body-7-rg,.tablet-body-7-lt,.tablet-body-7-md{font-size:0.625rem;line-height:0.875rem;}.tablet-interactive-1,.tablet-interactive-1-sb,.tablet-interactive-1-bd,.tablet-interactive-1-rg,.tablet-interactive-1-lt,.tablet-interactive-1-md{font-size:1rem;line-height:1.5rem;}.tablet-interactive-2,.tablet-interactive-2-sb,.tablet-interactive-2-bd,.tablet-interactive-2-rg,.tablet-interactive-2-lt,.tablet-interactive-2-md{font-size:0.875rem;line-height:1.125rem;}}@media (width >= 1152px){.desktop-title-1,.desktop-title-1-sb,.desktop-title-1-bd,.desktop-title-1-rg,.desktop-title-1-lt,.desktop-title-1-md{font-size:4.5rem;line-height:5rem;}.desktop-title-2,.desktop-title-2-sb,.desktop-title-2-bd,.desktop-title-2-rg,.desktop-title-2-lt,.desktop-title-2-md{font-size:3rem;line-height:3.25rem;}.desktop-title-3,.desktop-title-3-sb,.desktop-title-3-bd,.desktop-title-3-rg,.desktop-title-3-lt,.desktop-title-3-md{font-size:2rem;line-height:2.75rem;}.desktop-title-4,.desktop-title-4-sb,.desktop-title-4-bd,.desktop-title-4-rg,.desktop-title-4-lt,.desktop-title-4-md{font-size:1.75rem;line-height:2rem;}.desktop-title-5,.desktop-title-5-sb,.desktop-title-5-bd,.desktop-title-5-rg,.desktop-title-5-lt,.desktop-title-5-md{font-size:1.5rem;line-height:1.75rem;}.desktop-title-6,.desktop-title-6-sb,.desktop-title-6-bd,.desktop-title-6-rg,.desktop-title-6-lt,.desktop-title-6-md{font-size:1.25rem;line-height:1.75rem;}.desktop-heading-1,.desktop-heading-1-sb,.desktop-heading-1-bd,.desktop-heading-1-rg,.desktop-heading-1-lt,.desktop-heading-1-md{font-size:2rem;line-height:2.75rem;}.desktop-heading-2,.desktop-heading-2-sb,.desktop-heading-2-bd,.desktop-heading-2-rg,.desktop-heading-2-lt,.desktop-heading-2-md{font-size:1.75rem;line-height:2rem;}.desktop-heading-3,.desktop-heading-3-sb,.desktop-heading-3-bd,.desktop-heading-3-rg,.desktop-heading-3-lt,.desktop-heading-3-md{font-size:1.5rem;line-height:1.75rem;}.desktop-heading-4,.desktop-heading-4-sb,.desktop-heading-4-bd,.desktop-heading-4-rg,.desktop-heading-4-lt,.desktop-heading-4-md{font-size:1.125rem;line-height:1.375rem;}.desktop-body-1,.desktop-body-1-sb,.desktop-body-1-bd,.desktop-body-1-rg,.desktop-body-1-lt,.desktop-body-1-md{font-size:1.5rem;line-height:2rem;}.desktop-body-2,.desktop-body-2-sb,.desktop-body-2-bd,.desktop-body-2-rg,.desktop-body-2-lt,.desktop-body-2-md{font-size:1.25rem;line-height:1.75rem;}.desktop-body-3,.desktop-body-3-sb,.desktop-body-3-bd,.desktop-body-3-rg,.desktop-body-3-lt,.desktop-body-3-md{font-size:1.125rem;line-height:1.5rem;}.desktop-body-4,.desktop-body-4-sb,.desktop-body-4-bd,.desktop-body-4-rg,.desktop-body-4-lt,.desktop-body-4-md{font-size:1rem;line-height:1.5rem;}.desktop-body-5,.desktop-body-5-sb,.desktop-body-5-bd,.desktop-body-5-rg,.desktop-body-5-lt,.desktop-body-5-md{font-size:0.875rem;line-height:1.125rem;}.desktop-body-6,.desktop-body-6-sb,.desktop-body-6-bd,.desktop-body-6-rg,.desktop-body-6-lt,.desktop-body-6-md{font-size:0.75rem;line-height:1rem;}.desktop-body-7,.desktop-body-7-sb,.desktop-body-7-bd,.desktop-body-7-rg,.desktop-body-7-lt,.desktop-body-7-md{font-size:0.625rem;line-height:0.875rem;}.desktop-interactive-1,.desktop-interactive-1-sb,.desktop-interactive-1-bd,.desktop-interactive-1-rg,.desktop-interactive-1-lt,.desktop-interactive-1-md{font-size:1rem;line-height:1.5rem;}.desktop-interactive-2,.desktop-interactive-2-sb,.desktop-interactive-2-bd,.desktop-interactive-2-rg,.desktop-interactive-2-lt,.desktop-interactive-2-md{font-size:0.875rem;line-height:1.125rem;}}z-button.zanit-button{--color-primary01:var(--red500);--color-hover-primary:var(--red800);--color-pressed-primary:var(--red400);--color-button-secondary:transparent;--color-primary02:transparent;--color-primary03:transparent}z-button.zanit-button-dark{--color-primary01:var(--gray950);--color-hover-primary:#000;--color-pressed-primary:var(--gray950);--color-button-secondary:transparent;--color-primary02:transparent;--color-primary03:transparent}:root{--zanit-accent-color:#ffe74c;--shadow-focus-primary:0 0 0 2px #fff, 0 0 2px 5px var(--gray950)}.zanit-link,.zanit-link-inverse{color:currentcolor;font-family:inherit;text-decoration:underline solid 12% var(--red500);text-underline-offset:28%}.zanit-link-inverse{color:var(--color-text-inverse);text-decoration-color:var(--color-text-inverse)}
@@ -1,3 +0,0 @@
1
- const e="zanichelli-it-frontend-kit";const t={hydratedSelectorName:"hydrated",lazyLoad:true,updatable:true};const i=()=>{};const l=":root{--font-md:500}.title-1,.title-2,.title-3,.title-4,.title-5,.title-6,.title-1-rg,.title-2-rg,.title-3-rg,.title-4-rg,.title-5-rg,.title-6-rg,.title-1-lt,.title-2-lt,.title-3-lt,.title-4-lt,.title-5-lt,.title-6-lt,.title-1-sb,.title-2-sb,.title-3-sb,.title-4-sb,.title-5-sb,.title-6-sb,.title-1-bd,.title-2-bd,.title-3-bd,.title-4-bd,.title-5-bd,.title-6-bd,.title-1-md,.title-2-md,.title-3-md,.title-4-md,.title-5-md,.title-6-md{font-family:var(--font-family-serif);font-weight:var(--font-rg)}.title-1-lt,.title-2-lt,.title-3-lt,.title-4-lt,.title-5-lt,.title-6-lt,.heading-1-lt,.heading-2-lt,.heading-3-lt,.heading-4-lt,.body-1-lt,.body-2-lt,.body-3-lt,.body-4-lt,.body-5-lt,.body-6-lt,.body-7-lt,.interactive-1-lt,.interactive-2-lt{font-weight:var(--font-lt)}.title-1-md,.title-2-md,.title-3-md,.title-4-md,.title-5-md,.title-6-md,.heading-1-md,.heading-2-md,.heading-3-md,.heading-4-md,.body-1-md,.body-2-md,.body-3-md,.body-4-md,.body-5-md,.body-6-md,.body-7-md,.interactive-1-md,.interactive-2-md{font-weight:var(--font-md)}.title-1-rg,.title-2-rg,.title-3-rg,.title-4-rg,.title-5-rg,.title-6-rg,.heading-1-rg,.heading-2-rg,.heading-3-rg,.heading-4-rg,.body-1-rg,.body-2-rg,.body-3-rg,.body-4-rg,.body-5-rg,.body-6-rg,.body-7-rg,.interactive-1-rg,.interactive-2-rg{font-weight:var(--font-rg)}.title-1-sb,.title-2-sb,.title-3-sb,.title-4-sb,.title-5-sb,.title-6-sb,.heading-1-sb,.heading-2-sb,.heading-3-sb,.heading-4-sb,.body-2-sb,.body-3-sb,.body-4-sb,.body-5-sb,.body-6-sb,.body-7-sb,.interactive-1-sb,.interactive-2-sb{font-weight:var(--font-sb)}.title-1-bd,.title-2-bd,.title-3-bd,.title-4-bd,.title-5-bd,.title-6-bd,.heading-1-bd,.heading-2-bd,.heading-3-bd,.heading-4-bd,.body-1-bd,.body-2-bd,.body-3-bd,.body-4-bd,.body-5-bd,.body-6-bd,.body-7-bd,.interactive-1-bd,.interactive-2-bd{font-weight:var(--font-bd)}.font-lt{font-weight:var(--font-lt)}.font-rg{font-weight:var(--font-rg)}.font-md{font-weight:var(--font-md)}.font-sb{font-weight:var(--font-sb)}.font-bd{font-weight:var(--font-bd)}.font-it{font-style:italic}.font-serif{font-family:var(--font-family-serif)}.font-sans{font-family:var(--font-family-sans)}.title-1,.title-1-sb,.title-1-bd,.title-1-rg,.title-1-lt,.title-1-md{font-size:4.5rem;line-height:5rem;}.title-2,.title-2-sb,.title-2-bd,.title-2-rg,.title-2-lt,.title-2-md{font-size:3rem;line-height:3.25rem;}.title-3,.title-3-sb,.title-3-bd,.title-3-rg,.title-3-lt,.title-3-md{font-size:2rem;line-height:2.75rem;}.title-4,.title-4-sb,.title-4-bd,.title-4-rg,.title-4-lt,.title-4-md{font-size:1.75rem;line-height:2rem;}.title-5,.title-5-sb,.title-5-bd,.title-5-rg,.title-5-lt,.title-5-md{font-size:1.5rem;line-height:1.75rem;}.title-6,.title-6-sb,.title-6-bd,.title-6-rg,.title-6-lt,.title-6-md{font-size:1.25rem;line-height:1.75rem;}.heading-1,.heading-1-sb,.heading-1-bd,.heading-1-rg,.heading-1-lt,.heading-1-md{font-size:2rem;line-height:2.75rem;}.heading-2,.heading-2-sb,.heading-2-bd,.heading-2-rg,.heading-2-lt,.heading-2-md{font-size:1.75rem;line-height:2rem;}.heading-3,.heading-3-sb,.heading-3-bd,.heading-3-rg,.heading-3-lt,.heading-3-md{font-size:1.5rem;line-height:1.75rem;}.heading-4,.heading-4-sb,.heading-4-bd,.heading-4-rg,.heading-4-lt,.heading-4-md{font-size:1.125rem;line-height:1.375rem;}.body-1,.body-1-sb,.body-1-bd,.body-1-rg,.body-1-lt,.body-1-md{font-size:1.5rem;line-height:2rem;}.body-2,.body-2-sb,.body-2-bd,.body-2-rg,.body-2-lt,.body-2-md{font-size:1.25rem;line-height:1.75rem;}.body-3,.body-3-sb,.body-3-bd,.body-3-rg,.body-3-lt,.body-3-md{font-size:1.125rem;line-height:1.5rem;}.body-4,.body-4-sb,.body-4-bd,.body-4-rg,.body-4-lt,.body-4-md{font-size:1rem;line-height:1.5rem;}.body-5,.body-5-sb,.body-5-bd,.body-5-rg,.body-5-lt,.body-5-md{font-size:0.875rem;line-height:1.125rem;}.body-6,.body-6-sb,.body-6-bd,.body-6-rg,.body-6-lt,.body-6-md{font-size:0.75rem;line-height:1rem;}.body-7,.body-7-sb,.body-7-bd,.body-7-rg,.body-7-lt,.body-7-md{font-size:0.625rem;line-height:0.875rem;}.interactive-1,.interactive-1-sb,.interactive-1-bd,.interactive-1-rg,.interactive-1-lt,.interactive-1-md{font-size:1rem;line-height:1.5rem;}.interactive-2,.interactive-2-sb,.interactive-2-bd,.interactive-2-rg,.interactive-2-lt,.interactive-2-md{font-size:0.875rem;line-height:1.125rem;}@media (width < 768px){.mobile-title-1,.mobile-title-1-sb,.mobile-title-1-bd,.mobile-title-1-rg,.mobile-title-1-lt,.mobile-title-1-md{font-size:4.5rem;line-height:5rem;}.mobile-title-2,.mobile-title-2-sb,.mobile-title-2-bd,.mobile-title-2-rg,.mobile-title-2-lt,.mobile-title-2-md{font-size:3rem;line-height:3.25rem;}.mobile-title-3,.mobile-title-3-sb,.mobile-title-3-bd,.mobile-title-3-rg,.mobile-title-3-lt,.mobile-title-3-md{font-size:2rem;line-height:2.75rem;}.mobile-title-4,.mobile-title-4-sb,.mobile-title-4-bd,.mobile-title-4-rg,.mobile-title-4-lt,.mobile-title-4-md{font-size:1.75rem;line-height:2rem;}.mobile-title-5,.mobile-title-5-sb,.mobile-title-5-bd,.mobile-title-5-rg,.mobile-title-5-lt,.mobile-title-5-md{font-size:1.5rem;line-height:1.75rem;}.mobile-title-6,.mobile-title-6-sb,.mobile-title-6-bd,.mobile-title-6-rg,.mobile-title-6-lt,.mobile-title-6-md{font-size:1.25rem;line-height:1.75rem;}.mobile-heading-1,.mobile-heading-1-sb,.mobile-heading-1-bd,.mobile-heading-1-rg,.mobile-heading-1-lt,.mobile-heading-1-md{font-size:2rem;line-height:2.75rem;}.mobile-heading-2,.mobile-heading-2-sb,.mobile-heading-2-bd,.mobile-heading-2-rg,.mobile-heading-2-lt,.mobile-heading-2-md{font-size:1.75rem;line-height:2rem;}.mobile-heading-3,.mobile-heading-3-sb,.mobile-heading-3-bd,.mobile-heading-3-rg,.mobile-heading-3-lt,.mobile-heading-3-md{font-size:1.5rem;line-height:1.75rem;}.mobile-heading-4,.mobile-heading-4-sb,.mobile-heading-4-bd,.mobile-heading-4-rg,.mobile-heading-4-lt,.mobile-heading-4-md{font-size:1.125rem;line-height:1.375rem;}.mobile-body-1,.mobile-body-1-sb,.mobile-body-1-bd,.mobile-body-1-rg,.mobile-body-1-lt,.mobile-body-1-md{font-size:1.5rem;line-height:2rem;}.mobile-body-2,.mobile-body-2-sb,.mobile-body-2-bd,.mobile-body-2-rg,.mobile-body-2-lt,.mobile-body-2-md{font-size:1.25rem;line-height:1.75rem;}.mobile-body-3,.mobile-body-3-sb,.mobile-body-3-bd,.mobile-body-3-rg,.mobile-body-3-lt,.mobile-body-3-md{font-size:1.125rem;line-height:1.5rem;}.mobile-body-4,.mobile-body-4-sb,.mobile-body-4-bd,.mobile-body-4-rg,.mobile-body-4-lt,.mobile-body-4-md{font-size:1rem;line-height:1.5rem;}.mobile-body-5,.mobile-body-5-sb,.mobile-body-5-bd,.mobile-body-5-rg,.mobile-body-5-lt,.mobile-body-5-md{font-size:0.875rem;line-height:1.125rem;}.mobile-body-6,.mobile-body-6-sb,.mobile-body-6-bd,.mobile-body-6-rg,.mobile-body-6-lt,.mobile-body-6-md{font-size:0.75rem;line-height:1rem;}.mobile-body-7,.mobile-body-7-sb,.mobile-body-7-bd,.mobile-body-7-rg,.mobile-body-7-lt,.mobile-body-7-md{font-size:0.625rem;line-height:0.875rem;}.mobile-interactive-1,.mobile-interactive-1-sb,.mobile-interactive-1-bd,.mobile-interactive-1-rg,.mobile-interactive-1-lt,.mobile-interactive-1-md{font-size:1rem;line-height:1.5rem;}.mobile-interactive-2,.mobile-interactive-2-sb,.mobile-interactive-2-bd,.mobile-interactive-2-rg,.mobile-interactive-2-lt,.mobile-interactive-2-md{font-size:0.875rem;line-height:1.125rem;}}@media (width >= 768px) and (width < 1152px){.tablet-title-1,.tablet-title-1-sb,.tablet-title-1-bd,.tablet-title-1-rg,.tablet-title-1-lt,.tablet-title-1-md{font-size:4.5rem;line-height:5rem;}.tablet-title-2,.tablet-title-2-sb,.tablet-title-2-bd,.tablet-title-2-rg,.tablet-title-2-lt,.tablet-title-2-md{font-size:3rem;line-height:3.25rem;}.tablet-title-3,.tablet-title-3-sb,.tablet-title-3-bd,.tablet-title-3-rg,.tablet-title-3-lt,.tablet-title-3-md{font-size:2rem;line-height:2.75rem;}.tablet-title-4,.tablet-title-4-sb,.tablet-title-4-bd,.tablet-title-4-rg,.tablet-title-4-lt,.tablet-title-4-md{font-size:1.75rem;line-height:2rem;}.tablet-title-5,.tablet-title-5-sb,.tablet-title-5-bd,.tablet-title-5-rg,.tablet-title-5-lt,.tablet-title-5-md{font-size:1.5rem;line-height:1.75rem;}.tablet-title-6,.tablet-title-6-sb,.tablet-title-6-bd,.tablet-title-6-rg,.tablet-title-6-lt,.tablet-title-6-md{font-size:1.25rem;line-height:1.75rem;}.tablet-heading-1,.tablet-heading-1-sb,.tablet-heading-1-bd,.tablet-heading-1-rg,.tablet-heading-1-lt,.tablet-heading-1-md{font-size:2rem;line-height:2.75rem;}.tablet-heading-2,.tablet-heading-2-sb,.tablet-heading-2-bd,.tablet-heading-2-rg,.tablet-heading-2-lt,.tablet-heading-2-md{font-size:1.75rem;line-height:2rem;}.tablet-heading-3,.tablet-heading-3-sb,.tablet-heading-3-bd,.tablet-heading-3-rg,.tablet-heading-3-lt,.tablet-heading-3-md{font-size:1.5rem;line-height:1.75rem;}.tablet-heading-4,.tablet-heading-4-sb,.tablet-heading-4-bd,.tablet-heading-4-rg,.tablet-heading-4-lt,.tablet-heading-4-md{font-size:1.125rem;line-height:1.375rem;}.tablet-body-1,.tablet-body-1-sb,.tablet-body-1-bd,.tablet-body-1-rg,.tablet-body-1-lt,.tablet-body-1-md{font-size:1.5rem;line-height:2rem;}.tablet-body-2,.tablet-body-2-sb,.tablet-body-2-bd,.tablet-body-2-rg,.tablet-body-2-lt,.tablet-body-2-md{font-size:1.25rem;line-height:1.75rem;}.tablet-body-3,.tablet-body-3-sb,.tablet-body-3-bd,.tablet-body-3-rg,.tablet-body-3-lt,.tablet-body-3-md{font-size:1.125rem;line-height:1.5rem;}.tablet-body-4,.tablet-body-4-sb,.tablet-body-4-bd,.tablet-body-4-rg,.tablet-body-4-lt,.tablet-body-4-md{font-size:1rem;line-height:1.5rem;}.tablet-body-5,.tablet-body-5-sb,.tablet-body-5-bd,.tablet-body-5-rg,.tablet-body-5-lt,.tablet-body-5-md{font-size:0.875rem;line-height:1.125rem;}.tablet-body-6,.tablet-body-6-sb,.tablet-body-6-bd,.tablet-body-6-rg,.tablet-body-6-lt,.tablet-body-6-md{font-size:0.75rem;line-height:1rem;}.tablet-body-7,.tablet-body-7-sb,.tablet-body-7-bd,.tablet-body-7-rg,.tablet-body-7-lt,.tablet-body-7-md{font-size:0.625rem;line-height:0.875rem;}.tablet-interactive-1,.tablet-interactive-1-sb,.tablet-interactive-1-bd,.tablet-interactive-1-rg,.tablet-interactive-1-lt,.tablet-interactive-1-md{font-size:1rem;line-height:1.5rem;}.tablet-interactive-2,.tablet-interactive-2-sb,.tablet-interactive-2-bd,.tablet-interactive-2-rg,.tablet-interactive-2-lt,.tablet-interactive-2-md{font-size:0.875rem;line-height:1.125rem;}}@media (width >= 1152px){.desktop-title-1,.desktop-title-1-sb,.desktop-title-1-bd,.desktop-title-1-rg,.desktop-title-1-lt,.desktop-title-1-md{font-size:4.5rem;line-height:5rem;}.desktop-title-2,.desktop-title-2-sb,.desktop-title-2-bd,.desktop-title-2-rg,.desktop-title-2-lt,.desktop-title-2-md{font-size:3rem;line-height:3.25rem;}.desktop-title-3,.desktop-title-3-sb,.desktop-title-3-bd,.desktop-title-3-rg,.desktop-title-3-lt,.desktop-title-3-md{font-size:2rem;line-height:2.75rem;}.desktop-title-4,.desktop-title-4-sb,.desktop-title-4-bd,.desktop-title-4-rg,.desktop-title-4-lt,.desktop-title-4-md{font-size:1.75rem;line-height:2rem;}.desktop-title-5,.desktop-title-5-sb,.desktop-title-5-bd,.desktop-title-5-rg,.desktop-title-5-lt,.desktop-title-5-md{font-size:1.5rem;line-height:1.75rem;}.desktop-title-6,.desktop-title-6-sb,.desktop-title-6-bd,.desktop-title-6-rg,.desktop-title-6-lt,.desktop-title-6-md{font-size:1.25rem;line-height:1.75rem;}.desktop-heading-1,.desktop-heading-1-sb,.desktop-heading-1-bd,.desktop-heading-1-rg,.desktop-heading-1-lt,.desktop-heading-1-md{font-size:2rem;line-height:2.75rem;}.desktop-heading-2,.desktop-heading-2-sb,.desktop-heading-2-bd,.desktop-heading-2-rg,.desktop-heading-2-lt,.desktop-heading-2-md{font-size:1.75rem;line-height:2rem;}.desktop-heading-3,.desktop-heading-3-sb,.desktop-heading-3-bd,.desktop-heading-3-rg,.desktop-heading-3-lt,.desktop-heading-3-md{font-size:1.5rem;line-height:1.75rem;}.desktop-heading-4,.desktop-heading-4-sb,.desktop-heading-4-bd,.desktop-heading-4-rg,.desktop-heading-4-lt,.desktop-heading-4-md{font-size:1.125rem;line-height:1.375rem;}.desktop-body-1,.desktop-body-1-sb,.desktop-body-1-bd,.desktop-body-1-rg,.desktop-body-1-lt,.desktop-body-1-md{font-size:1.5rem;line-height:2rem;}.desktop-body-2,.desktop-body-2-sb,.desktop-body-2-bd,.desktop-body-2-rg,.desktop-body-2-lt,.desktop-body-2-md{font-size:1.25rem;line-height:1.75rem;}.desktop-body-3,.desktop-body-3-sb,.desktop-body-3-bd,.desktop-body-3-rg,.desktop-body-3-lt,.desktop-body-3-md{font-size:1.125rem;line-height:1.5rem;}.desktop-body-4,.desktop-body-4-sb,.desktop-body-4-bd,.desktop-body-4-rg,.desktop-body-4-lt,.desktop-body-4-md{font-size:1rem;line-height:1.5rem;}.desktop-body-5,.desktop-body-5-sb,.desktop-body-5-bd,.desktop-body-5-rg,.desktop-body-5-lt,.desktop-body-5-md{font-size:0.875rem;line-height:1.125rem;}.desktop-body-6,.desktop-body-6-sb,.desktop-body-6-bd,.desktop-body-6-rg,.desktop-body-6-lt,.desktop-body-6-md{font-size:0.75rem;line-height:1rem;}.desktop-body-7,.desktop-body-7-sb,.desktop-body-7-bd,.desktop-body-7-rg,.desktop-body-7-lt,.desktop-body-7-md{font-size:0.625rem;line-height:0.875rem;}.desktop-interactive-1,.desktop-interactive-1-sb,.desktop-interactive-1-bd,.desktop-interactive-1-rg,.desktop-interactive-1-lt,.desktop-interactive-1-md{font-size:1rem;line-height:1.5rem;}.desktop-interactive-2,.desktop-interactive-2-sb,.desktop-interactive-2-bd,.desktop-interactive-2-rg,.desktop-interactive-2-lt,.desktop-interactive-2-md{font-size:0.875rem;line-height:1.125rem;}}z-button.zanit-button{--color-primary01:var(--red500);--color-hover-primary:var(--red800);--color-pressed-primary:var(--red400);--color-button-secondary:transparent;--color-primary02:transparent;--color-primary03:transparent}z-button.zanit-button-dark{--color-primary01:var(--gray950);--color-hover-primary:#000;--color-pressed-primary:var(--gray950);--color-button-secondary:transparent;--color-primary02:transparent;--color-primary03:transparent}:root{--zanit-accent-color:#ffe74c;--shadow-focus-primary:0 0 0 2px #fff, 0 0 2px 5px var(--gray950)}.zanit-link,.zanit-link-inverse{color:currentcolor;font-family:inherit;text-decoration:underline solid 12% var(--red500);text-underline-offset:28%}.zanit-link-inverse{color:var(--color-text-inverse);text-decoration-color:var(--color-text-inverse)}";var o=Object.defineProperty;var n=(e,t)=>{for(var i in t)o(e,i,{get:t[i],enumerable:true})};var r=(e,t)=>{var i;const l=t.t;const o=Object.entries((i=l.i)!=null?i:{});o.map((([i,[l]])=>{if(l&31||l&32){const l=e[i];const o=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(e),i);Object.defineProperty(e,i,{get(){return o.get.call(this)},set(e){o.set.call(this,e)},configurable:true,enumerable:true});e[i]=t.l.has(i)?t.l.get(i):l}}))};var d=e=>{if(e.__stencil__getHostRef){return e.__stencil__getHostRef()}return void 0};var s=(e,t)=>{e.__stencil__getHostRef=()=>t;t.o=e;{r(e,t)}};var b=(e,t)=>{const i={m:0,$hostElement$:e,t,l:new Map};{i.h=new Promise((e=>i.v=e));e["s-p"]=[];e["s-rc"]=[]}const l=i;e.__stencil__getHostRef=()=>l;return l};var a=(e,t)=>t in e;var m=(e,t)=>(0,console.error)(e,t);var f=new Map;var h=(e,t,i)=>{const l=e.p.replace(/-/g,"_");const o=e.u;if(!o){return void 0}const n=f.get(o);if(n){return n[l]}
2
- /*!__STENCIL_STATIC_IMPORT_SWITCH__*/return import(`./${o}.entry.js${""}`).then((e=>{{f.set(o,e)}return e[l]}),(e=>{m(e,t.$hostElement$)}))};var c=new Map;var g="sty-id";var y="{visibility:hidden}.hydrated{visibility:inherit}";var v="slot-fb{display:contents}slot-fb[hidden]{display:none}";var p=typeof window!=="undefined"?window:{};var u={m:0,k:"",jmp:e=>e(),raf:e=>requestAnimationFrame(e),ael:(e,t,i,l)=>e.addEventListener(t,i,l),rel:(e,t,i,l)=>e.removeEventListener(t,i,l),ce:(e,t)=>new CustomEvent(e,t)};var k=(()=>{var e;let t=false;try{(e=p.document)==null?void 0:e.addEventListener("e",null,Object.defineProperty({},"passive",{get(){t=true}}))}catch(e){}return t})();var z=e=>Promise.resolve(e);var w=(()=>{try{new CSSStyleSheet;return typeof(new CSSStyleSheet).replaceSync==="function"}catch(e){}return false})();var $=false;var S=[];var j=[];var x=(e,t)=>i=>{e.push(i);if(!$){$=true;if(t&&u.m&4){C(E)}else{u.raf(E)}}};var O=e=>{for(let t=0;t<e.length;t++){try{e[t](performance.now())}catch(e){m(e)}}e.length=0};var E=()=>{O(S);{O(j);if($=S.length>0){u.raf(E)}}};var C=e=>z().then(e);var M=x(j,true);var N=e=>{e=typeof e;return e==="object"||e==="function"};function P(e){var t,i,l;return(l=(i=(t=e.head)==null?void 0:t.querySelector('meta[name="csp-nonce"]'))==null?void 0:i.getAttribute("content"))!=null?l:void 0}var U=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");var R={};n(R,{err:()=>W,map:()=>A,ok:()=>D,unwrap:()=>L,unwrapErr:()=>F});var D=e=>({isOk:true,isErr:false,value:e});var W=e=>({isOk:false,isErr:true,value:e});function A(e,t){if(e.isOk){const i=t(e.value);if(i instanceof Promise){return i.then((e=>D(e)))}else{return D(i)}}if(e.isErr){const t=e.value;return W(t)}throw"should never get here"}var L=e=>{if(e.isOk){return e.value}else{throw e.value}};var F=e=>{if(e.isErr){return e.value}else{throw e.value}};function T(e){const t=this.attachShadow({mode:"open"});if(w){const e=new CSSStyleSheet;e.replaceSync(l);t.adoptedStyleSheets.push(e)}}var H=(e,t="")=>{{return()=>{}}};var I=(e,t)=>{{return()=>{}}};var V=(e,t,...i)=>{let l=null;let o=null;let n=false;let r=false;const d=[];const s=t=>{for(let i=0;i<t.length;i++){l=t[i];if(Array.isArray(l)){s(l)}else if(l!=null&&typeof l!=="boolean"){if(n=typeof e!=="function"&&!N(l)){l=String(l)}if(n&&r){d[d.length-1].$+=l}else{d.push(n?q(null,l):l)}r=n}}};s(i);if(t){if(t.key){o=t.key}{const e=t.className||t.class;if(e){t.class=typeof e!=="object"?e:Object.keys(e).filter((t=>e[t])).join(" ")}}}if(typeof e==="function"){return e(t===null?{}:t,d,_)}const b=q(e,null);b.S=t;if(d.length>0){b.j=d}{b.O=o}return b};var q=(e,t)=>{const i={m:0,C:e,$:t,M:null,j:null};{i.S=null}{i.O=null}return i};var G={};var Y=e=>e&&e.C===G;var _={forEach:(e,t)=>e.map(B).forEach(t),map:(e,t)=>e.map(B).map(t).map(J)};var B=e=>({vattrs:e.S,vchildren:e.j,vkey:e.O,vname:e.N,vtag:e.C,vtext:e.$});var J=e=>{if(typeof e.vtag==="function"){const t={...e.vattrs};if(e.vkey){t.key=e.vkey}if(e.vname){t.name=e.vname}return V(e.vtag,t,...e.vchildren||[])}const t=q(e.vtag,e.vtext);t.S=e.vattrs;t.j=e.vchildren;t.O=e.vkey;t.N=e.vname;return t};var K=e=>{const t=U(e);return new RegExp(`(^|[^@]|@(?!supports\\s+selector\\s*\\([^{]*?${t}))(${t}\\b)`,"g")};K("::slotted");K(":host");K(":host-context");var Q=(e,t)=>{if(e!=null&&!N(e)){if(t&4){return e==="false"?false:e===""||!!e}if(t&2){return typeof e==="string"?parseFloat(e):typeof e==="number"?e:NaN}if(t&1){return String(e)}return e}return e};var X=e=>d(e).$hostElement$;var Z=(e,t,i)=>{const l=X(e);return{emit:e=>ee(l,t,{bubbles:true,composed:true,cancelable:true,detail:e})}};var ee=(e,t,i)=>{const l=u.ce(t,i);e.dispatchEvent(l);return l};var te=new WeakMap;var ie=(e,t,i)=>{let l=c.get(e);if(w&&i){l=l||new CSSStyleSheet;if(typeof l==="string"){l=t}else{l.replaceSync(t)}}else{l=t}c.set(e,l)};var le=(e,t,i)=>{var l;const o=ne(t);const n=c.get(o);if(!p.document){return o}e=e.nodeType===11?e:p.document;if(n){if(typeof n==="string"){e=e.head||e;let i=te.get(e);let r;if(!i){te.set(e,i=new Set)}if(!i.has(o)){{r=document.querySelector(`[${g}="${o}"]`)||p.document.createElement("style");r.innerHTML=n;const i=(l=u.P)!=null?l:P(p.document);if(i!=null){r.setAttribute("nonce",i)}if(!(t.m&1)){if(e.nodeName==="HEAD"){const t=e.querySelectorAll("link[rel=preconnect]");const i=t.length>0?t[t.length-1].nextSibling:e.querySelector("style");e.insertBefore(r,(i==null?void 0:i.parentNode)===e?i:null)}else if("host"in e){if(w){const t=new CSSStyleSheet;t.replaceSync(n);e.adoptedStyleSheets=[t,...e.adoptedStyleSheets]}else{const t=e.querySelector("style");if(t){t.innerHTML=n+t.innerHTML}else{e.prepend(r)}}}else{e.append(r)}}if(t.m&1){e.insertBefore(r,null)}}if(t.m&4){r.innerHTML+=v}if(i){i.add(o)}}}else if(!e.adoptedStyleSheets.includes(n)){e.adoptedStyleSheets=[...e.adoptedStyleSheets,n]}}return o};var oe=e=>{const t=e.t;const i=e.$hostElement$;const l=t.m;const o=H("attachStyles",t.p);const n=le(i.shadowRoot?i.shadowRoot:i.getRootNode(),t);if(l&10){i["s-sc"]=n;i.classList.add(n+"-h")}o()};var ne=(e,t)=>"sc-"+e.p;var re=(e,t,i,l,o,n,r)=>{if(i===l){return}let d=a(e,t);let s=t.toLowerCase();if(t==="class"){const t=e.classList;const o=se(i);let n=se(l);{t.remove(...o.filter((e=>e&&!n.includes(e))));t.add(...n.filter((e=>e&&!o.includes(e))))}}else if(t==="key");else if(t==="ref"){if(l){l(e)}}else if(!d&&t[0]==="o"&&t[1]==="n"){if(t[2]==="-"){t=t.slice(3)}else if(a(p,s)){t=s.slice(2)}else{t=s[2]+t.slice(3)}if(i||l){const o=t.endsWith(be);t=t.replace(ae,"");if(i){u.rel(e,t,i,o)}if(l){u.ael(e,t,l,o)}}}else{const r=N(l);if((d||r&&l!==null)&&true){try{if(!e.tagName.includes("-")){const o=l==null?"":l;if(t==="list"){d=false}else if(i==null||e[t]!=o){if(typeof e.__lookupSetter__(t)==="function"){e[t]=o}else{e.setAttribute(t,o)}}}else if(e[t]!==l){e[t]=l}}catch(e){}}if(l==null||l===false){if(l!==false||e.getAttribute(t)===""){{e.removeAttribute(t)}}}else if((!d||n&4||o)&&!r&&e.nodeType===1){l=l===true?"":l;{e.setAttribute(t,l)}}}};var de=/\s/;var se=e=>{if(typeof e==="object"&&e&&"baseVal"in e){e=e.baseVal}if(!e||typeof e!=="string"){return[]}return e.split(de)};var be="Capture";var ae=new RegExp(be+"$");var me=(e,t,i,l)=>{const o=t.M.nodeType===11&&t.M.host?t.M.host:t.M;const n=e&&e.S||{};const r=t.S||{};{for(const e of fe(Object.keys(n))){if(!(e in r)){re(o,e,n[e],void 0,i,t.m)}}}for(const e of fe(Object.keys(r))){re(o,e,n[e],r[e],i,t.m)}};function fe(e){return e.includes("ref")?[...e.filter((e=>e!=="ref")),"ref"]:e}var he;var ce=false;var ge=(e,t,i)=>{const l=t.j[i];let o=0;let n;let r;if(l.$!==null){n=l.M=p.document.createTextNode(l.$)}else{if(!p.document){throw new Error("You are trying to render a Stencil component in an environment that doesn't support the DOM. Make sure to populate the [`window`](https://developer.mozilla.org/en-US/docs/Web/API/Window/window) object before rendering a component.")}n=l.M=p.document.createElement(l.C);{me(null,l,ce)}if(l.j){for(o=0;o<l.j.length;++o){r=ge(e,l,o);if(r){n.appendChild(r)}}}}n["s-hn"]=he;return n};var ye=(e,t,i,l,o,n)=>{let r=e;let d;if(r.shadowRoot&&r.tagName===he){r=r.shadowRoot}for(;o<=n;++o){if(l[o]){d=ge(null,i,o);if(d){l[o].M=d;we(r,d,t)}}}};var ve=(e,t,i)=>{for(let l=t;l<=i;++l){const t=e[l];if(t){const e=t.M;ze(t);if(e){e.remove()}}}};var pe=(e,t,i,l,o=false)=>{let n=0;let r=0;let d=0;let s=0;let b=t.length-1;let a=t[0];let m=t[b];let f=l.length-1;let h=l[0];let c=l[f];let g;let y;while(n<=b&&r<=f){if(a==null){a=t[++n]}else if(m==null){m=t[--b]}else if(h==null){h=l[++r]}else if(c==null){c=l[--f]}else if(ue(a,h,o)){ke(a,h,o);a=t[++n];h=l[++r]}else if(ue(m,c,o)){ke(m,c,o);m=t[--b];c=l[--f]}else if(ue(a,c,o)){ke(a,c,o);we(e,a.M,m.M.nextSibling);a=t[++n];c=l[--f]}else if(ue(m,h,o)){ke(m,h,o);we(e,m.M,a.M);m=t[--b];h=l[++r]}else{d=-1;{for(s=n;s<=b;++s){if(t[s]&&t[s].O!==null&&t[s].O===h.O){d=s;break}}}if(d>=0){y=t[d];if(y.C!==h.C){g=ge(t&&t[r],i,d)}else{ke(y,h,o);t[d]=void 0;g=y.M}h=l[++r]}else{g=ge(t&&t[r],i,r);h=l[++r]}if(g){{we(a.M.parentNode,g,a.M)}}}}if(n>b){ye(e,l[f+1]==null?null:l[f+1].M,i,l,r,f)}else if(r>f){ve(t,n,b)}};var ue=(e,t,i=false)=>{if(e.C===t.C){if(!i){return e.O===t.O}if(i&&!e.O&&t.O){e.O=t.O}return true}return false};var ke=(e,i,l=false)=>{const o=i.M=e.M;const n=e.j;const r=i.j;const d=i.$;if(d===null){{me(e,i,ce)}if(n!==null&&r!==null){pe(o,n,i,r,l)}else if(r!==null){if(e.$!==null){o.textContent=""}ye(o,null,i,r,0,r.length-1)}else if(!l&&t.updatable&&n!==null){ve(n,0,n.length-1)}}else if(e.$!==d){o.data=d}};var ze=e=>{{e.S&&e.S.ref&&e.S.ref(null);e.j&&e.j.map(ze)}};var we=(e,t,i)=>{{return e==null?void 0:e.insertBefore(t,i)}};var $e=(e,t,i=false)=>{const l=e.$hostElement$;const o=e.U||q(null,null);const n=Y(t);const r=n?t:V(null,null,t);he=l.tagName;if(i&&r.S){for(const e of Object.keys(r.S)){if(l.hasAttribute(e)&&!["key","ref","style","class"].includes(e)){r.S[e]=l[e]}}}r.C=null;r.m|=4;e.U=r;r.M=o.M=l.shadowRoot||l;ke(o,r,i)};var Se=(e,t)=>{if(t&&!e.R&&t["s-p"]){const i=t["s-p"].push(new Promise((l=>e.R=()=>{t["s-p"].splice(i-1,1);l()})))}};var je=(e,t)=>{{e.m|=16}if(e.m&4){e.m|=512;return}Se(e,e.D);const i=()=>xe(e,t);return M(i)};var xe=(e,t)=>{const i=e.$hostElement$;const l=H("scheduleUpdate",e.t.p);const o=e.o;if(!o){throw new Error(`Can't render component <${i.tagName.toLowerCase()} /> with invalid Stencil runtime! Make sure this imported component is compiled with a \`externalRuntime: true\` flag. For more information, please refer to https://stenciljs.com/docs/custom-elements#externalruntime`)}let n;if(t){{e.m|=256;if(e.W){e.W.map((([e,t])=>Ue(o,e,t,i)));e.W=void 0}}n=Ue(o,"componentWillLoad",void 0,i)}else{n=Ue(o,"componentWillUpdate",void 0,i)}n=Oe(n,(()=>Ue(o,"componentWillRender",void 0,i)));l();return Oe(n,(()=>Ce(e,o,t)))};var Oe=(e,t)=>Ee(e)?e.then(t).catch((e=>{console.error(e);t()})):t();var Ee=e=>e instanceof Promise||e&&e.then&&typeof e.then==="function";var Ce=async(e,t,i)=>{var l;const o=e.$hostElement$;const n=H("update",e.t.p);const r=o["s-rc"];if(i){oe(e)}const d=H("render",e.t.p);{Me(e,t,o,i)}if(r){r.map((e=>e()));o["s-rc"]=void 0}d();n();{const t=(l=o["s-p"])!=null?l:[];const i=()=>Ne(e);if(t.length===0){i()}else{Promise.all(t).then(i);e.m|=4;t.length=0}}};var Me=(e,t,i,l)=>{try{t=t.render();{e.m&=-17}{e.m|=2}{{{$e(e,t,l)}}}}catch(t){m(t,e.$hostElement$)}return null};var Ne=e=>{const t=e.t.p;const i=e.$hostElement$;const l=H("postUpdate",t);const o=e.o;const n=e.D;Ue(o,"componentDidRender",void 0,i);if(!(e.m&64)){e.m|=64;{Re(i)}Ue(o,"componentDidLoad",void 0,i);l();{e.v(i);if(!n){Pe()}}}else{Ue(o,"componentDidUpdate",void 0,i);l()}{if(e.R){e.R();e.R=void 0}if(e.m&512){C((()=>je(e,false)))}e.m&=-517}};var Pe=t=>{C((()=>ee(p,"appload",{detail:{namespace:e}})))};var Ue=(e,t,i,l)=>{if(e&&e[t]){try{return e[t](i)}catch(e){m(e,l)}}return void 0};var Re=e=>{var i;return e.classList.add((i=t.hydratedSelectorName)!=null?i:"hydrated")};var De=(e,t)=>d(e).l.get(t);var We=(e,t,i,l)=>{const o=d(e);if(!o){throw new Error(`Couldn't find host element for "${l.p}" as it is unknown to this Stencil runtime. This usually happens when integrating a 3rd party Stencil component with another Stencil component or application. Please reach out to the maintainers of the 3rd party Stencil component or report this on the Stencil Discord server (https://chat.stenciljs.com) or comment on this similar [GitHub issue](https://github.com/stenciljs/core/issues/5457).`)}const n=o.$hostElement$;const r=o.l.get(t);const s=o.m;const b=o.o;i=Q(i,l.i[t][0]);const a=Number.isNaN(r)&&Number.isNaN(i);const f=i!==r&&!a;if((!(s&8)||r===void 0)&&f){o.l.set(t,i);if(b){if(l.A&&s&128){const e=l.A[t];if(e){e.map((e=>{try{b[e](i,r,t)}catch(e){m(e,n)}}))}}if((s&(2|16))===2){if(b.componentShouldUpdate){if(b.componentShouldUpdate(i,r,t)===false){return}}je(o,false)}}}};var Ae=(e,i,l)=>{var o,n;const r=e.prototype;if(i.i||(i.A||e.watchers)){if(e.watchers&&!i.A){i.A=e.watchers}const s=Object.entries((o=i.i)!=null?o:{});s.map((([e,[t]])=>{if(t&31||l&2&&t&32){const{get:o,set:n}=Object.getOwnPropertyDescriptor(r,e)||{};if(o)i.i[e][0]|=2048;if(n)i.i[e][0]|=4096;if(l&1||!o){Object.defineProperty(r,e,{get(){{if((i.i[e][0]&2048)===0){return De(this,e)}const t=d(this);const l=t?t.o:r;if(!l)return;return l[e]}},configurable:true,enumerable:true})}Object.defineProperty(r,e,{set(o){const r=d(this);if(n){const l=t&32?this[e]:r.$hostElement$[e];if(typeof l==="undefined"&&r.l.get(e)){o=r.l.get(e)}else if(!r.l.get(e)&&l){r.l.set(e,l)}n.apply(this,[Q(o,t)]);o=t&32?this[e]:r.$hostElement$[e];We(this,e,o,i);return}{if((l&1)===0||(i.i[e][0]&4096)===0){We(this,e,o,i);if(l&1&&!r.o){r.h.then((()=>{if(i.i[e][0]&4096&&r.o[e]!==r.l.get(e)){r.o[e]=o}}))}return}const n=()=>{const l=r.o[e];if(!r.l.get(e)&&l){r.l.set(e,l)}r.o[e]=Q(o,t);We(this,e,r.o[e],i)};if(r.o){n()}else{r.h.then((()=>n()))}}}})}}));if(l&1){const l=new Map;r.attributeChangedCallback=function(e,o,n){u.jmp((()=>{var s;const b=l.get(e);if(this.hasOwnProperty(b)&&t.lazyLoad){n=this[b];delete this[b]}else if(r.hasOwnProperty(b)&&typeof this[b]==="number"&&this[b]==n){return}else if(b==null){const t=d(this);const l=t==null?void 0:t.m;if(l&&!(l&8)&&l&128&&n!==o){const l=t.o;const r=(s=i.A)==null?void 0:s[e];r==null?void 0:r.forEach((t=>{if(l[t]!=null){l[t].call(l,n,o,e)}}))}return}const a=Object.getOwnPropertyDescriptor(r,b);n=n===null&&typeof this[b]==="boolean"?false:n;if(n!==this[b]&&(!a.get||!!a.set)){this[b]=n}}))};e.observedAttributes=Array.from(new Set([...Object.keys((n=i.A)!=null?n:{}),...s.filter((([e,t])=>t[0]&15)).map((([e,t])=>{const i=t[1]||e;l.set(i,e);return i}))]))}}return e};var Le=async(e,t,i,l)=>{let o;if((t.m&32)===0){t.m|=32;const l=i.u;if(l){const l=h(i,t);if(l&&"then"in l){const e=I();o=await l;e()}else{o=l}if(!o){throw new Error(`Constructor for "${i.p}#${t.L}" was not found`)}if(!o.isProxied){{i.A=o.watchers}Ae(o,i,2);o.isProxied=true}const n=H("createInstance",i.p);{t.m|=8}try{new o(t)}catch(t){m(t,e)}{t.m&=-9}{t.m|=128}n();Fe(t.o,e)}else{o=e.constructor;const i=e.localName;customElements.whenDefined(i).then((()=>t.m|=128))}if(o&&o.style){let e;if(typeof o.style==="string"){e=o.style}const t=ne(i);if(!c.has(t)){const l=H("registerStyles",i.p);ie(t,e,!!(i.m&1));l()}}}const n=t.D;const r=()=>je(t,true);if(n&&n["s-rc"]){n["s-rc"].push(r)}else{r()}};var Fe=(e,t)=>{{Ue(e,"connectedCallback",void 0,t)}};var Te=e=>{if((u.m&1)===0){const t=d(e);const i=t.t;const l=H("connectedCallback",i.p);if(!(t.m&1)){t.m|=1;{let i=e;while(i=i.parentNode||i.host){if(i["s-p"]){Se(t,t.D=i);break}}}if(i.i){Object.entries(i.i).map((([t,[i]])=>{if(i&31&&e.hasOwnProperty(t)){const i=e[t];delete e[t];e[t]=i}}))}{Le(e,t,i)}}else{Ge(e,t,i.F);if(t==null?void 0:t.o){Fe(t.o,e)}else if(t==null?void 0:t.h){t.h.then((()=>Fe(t.o,e)))}}l()}};var He=(e,t)=>{{Ue(e,"disconnectedCallback",void 0,t||e)}};var Ie=async e=>{if((u.m&1)===0){const t=d(e);{if(t.T){t.T.map((e=>e()));t.T=void 0}}if(t==null?void 0:t.o){He(t.o,e)}else if(t==null?void 0:t.h){t.h.then((()=>He(t.o,e)))}}if(te.has(e)){te.delete(e)}if(e.shadowRoot&&te.has(e.shadowRoot)){te.delete(e.shadowRoot)}};var Ve=(e,t={})=>{var i;if(!p.document){console.warn("Stencil: No document found. Skipping bootstrapping lazy components.");return}const l=H();const o=[];const n=t.exclude||[];const r=p.customElements;const s=p.document.head;const a=s.querySelector("meta[charset]");const m=p.document.createElement("style");const f=[];let h;let c=true;Object.assign(u,t);u.k=new URL(t.resourcesUrl||"./",p.document.baseURI).href;let g=false;e.map((e=>{e[1].map((t=>{var i;const l={m:t[0],p:t[1],i:t[2],F:t[3]};if(l.m&4){g=true}{l.i=t[2]}{l.F=t[3]}{l.A=(i=t[4])!=null?i:{}}const s=l.p;const a=class extends HTMLElement{constructor(e){super(e);this.hasRegisteredEventListeners=false;e=this;b(e,l);if(l.m&1){{if(!e.shadowRoot){T.call(e,l)}else{if(e.shadowRoot.mode!=="open"){throw new Error(`Unable to re-use existing shadow root for ${l.p}! Mode is set to ${e.shadowRoot.mode} but Stencil only supports open shadow roots.`)}}}}}connectedCallback(){const e=d(this);if(!this.hasRegisteredEventListeners){this.hasRegisteredEventListeners=true;Ge(this,e,l.F)}if(h){clearTimeout(h);h=null}if(c){f.push(this)}else{u.jmp((()=>Te(this)))}}disconnectedCallback(){u.jmp((()=>Ie(this)));u.raf((()=>{var e;const t=d(this);const i=f.findIndex((e=>e===this));if(i>-1){f.splice(i,1)}if(((e=t==null?void 0:t.U)==null?void 0:e.M)instanceof Node&&!t.U.M.isConnected){delete t.U.M}}))}componentOnReady(){return d(this).h}};l.u=e[0];if(!n.includes(s)&&!r.get(s)){o.push(s);r.define(s,Ae(a,l,1))}}))}));if(o.length>0){if(g){m.textContent+=v}{m.textContent+=o.sort()+y}if(m.innerHTML.length){m.setAttribute("data-styles","");const e=(i=u.P)!=null?i:P(p.document);if(e!=null){m.setAttribute("nonce",e)}s.insertBefore(m,a?a.nextSibling:s.firstChild)}}c=false;if(f.length){f.map((e=>e.connectedCallback()))}else{{u.jmp((()=>h=setTimeout(Pe,30)))}}l()};var qe=(e,t)=>t;var Ge=(e,t,i,l)=>{if(i&&p.document){i.map((([i,l,o])=>{const n=_e(p.document,e,i);const r=Ye(t,o);const d=Be(i);u.ael(n,l,r,d);(t.T=t.T||[]).push((()=>u.rel(n,l,r,d)))}))}};var Ye=(e,t)=>i=>{var l;try{{if(e.m&256){(l=e.o)==null?void 0:l[t](i)}else{(e.W=e.W||[]).push([t,i])}}}catch(t){m(t,e.$hostElement$)}};var _e=(e,t,i)=>{if(i&4){return e}return t};var Be=e=>k?{passive:(e&1)!==0,capture:(e&2)!==0}:(e&2)!==0;var Je=e=>u.P=e;export{qe as F,X as a,Ve as b,Z as c,i as g,V as h,z as p,s as r,Je as s};
3
- //# sourceMappingURL=p-BGwuI2U_.js.map