weg-shared-layout 0.0.55 → 0.0.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/weg-footer_2.cjs.entry.js +37 -3
- package/dist/collection/components/weg-header/weg-header.js +37 -3
- package/dist/components/weg-header.js +1 -1
- package/dist/esm/weg-footer_2.entry.js +37 -3
- package/dist/types/components/weg-header/weg-header.d.ts +4 -0
- package/dist/weg-shared-layout/p-52294a6e.entry.js +1 -0
- package/dist/weg-shared-layout/weg-shared-layout.esm.js +1 -1
- package/docs/README.md +10 -7
- package/docs/angular.md +10 -7
- package/docs/nextjs.md +24 -11
- package/docs/publishing.md +8 -8
- package/docs/react.md +7 -12
- package/docs/vanilla.md +15 -8
- package/hydrate/index.js +37 -3
- package/hydrate/index.mjs +37 -3
- package/package.json +1 -1
- package/readme.md +71 -49
- package/dist/weg-shared-layout/p-ab9989c3.entry.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as e,h as n,c as t,g as i,H as o}from"./p-DeWUZGfb.js";const r=new Set(["_blank","_self","_parent","_top"]);function a(e){if("string"!=typeof e)return e;const n=e.trim();if(n)try{return JSON.parse(n)}catch{return}}function s(e){return"string"==typeof e&&e.trim().length>0}function l(e){return Boolean(e.items?.length)}function d(e){if(!e||"object"!=typeof e)return null;const n=e,t=n.label;if(!s(t))return null;const i=function(e){return e.items??e.children}(n);if(Array.isArray(i)){const e=c(i);if(e.length>0)return{label:t.trim(),items:e}}const o=n.href;if(s(o)){const e={label:t.trim(),href:o.trim()},i=function(e){const n=e.target;if("string"==typeof n&&r.has(n))return n}(n);i&&(e.target=i);const a=n.authAction;return"sign-in"!==a&&"sign-out"!==a||(e.authAction=a),e}return null}function c(e){if(!Array.isArray(e))return[];const n=[];for(const t of e){const e=d(t);e&&n.push(e)}return n}function A(e){return c(e)}function h(e){if(!Array.isArray(e))return[];const n=[];for(const t of e){const e=c(t);0!==e.length&&n.push(e)}return n}const u={social:[],menu:[],credits:"",copyright:""};function f(e){return/^https?:\/\//.test(e)}function g(e){if(!Array.isArray(e))return[];const n=[];for(const i of e){if(!i||"object"!=typeof i)continue;const e=i.platform,o=i.href;("LinkedIn"===(t=e)||"Instagram"===t||"TikTok"===t||"YouTube"===t)&&s(o)&&n.push({platform:e,href:o.trim()})}var t;return n}function p(e){return"_blank"===e.target||!!e.href&&f(e.href)}function m(e){return p(e)?"noreferrer noopener":void 0}function w({platform:e}){const t={viewBox:"0 0 48 48",width:48,height:48,fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false"};switch(e){case"LinkedIn":return n("svg",{...t},n("path",{d:"M24 0C37.2548 0 48 10.7452 48 24C48 37.2548 37.2548 48 24 48C10.7452 48 0 37.2548 0 24C0 10.7452 10.7452 0 24 0ZM12.9082 33.4736H17.5889V19.4111H12.9082V33.4736ZM29.0791 19.0811C26.5942 19.0811 25.4815 20.4458 24.8604 21.4033V19.4111H20.1797C20.2412 20.7279 20.1799 33.4203 20.1797 33.4736H24.8604V25.6201C24.8604 25.1998 24.8909 24.7804 25.0146 24.4795C25.3529 23.6399 26.1231 22.7705 27.416 22.7705C29.1103 22.7705 29.7881 24.0605 29.7881 25.9502V33.4736H34.4678V25.4102C34.4677 21.0909 32.1589 19.0811 29.0791 19.0811ZM15.2793 12.6318C13.6783 12.6319 12.6319 13.6818 12.6318 15.0605C12.6318 16.4108 13.6474 17.4912 15.2188 17.4912H15.249C16.8807 17.491 17.8965 16.4107 17.8965 15.0605C17.866 13.6818 16.8804 12.6318 15.2793 12.6318Z",fill:"white"}));case"Instagram":return n("svg",{...t},n("path",{d:"M24 0C37.2548 0 48 10.7452 48 24C48 37.2548 37.2548 48 24 48C10.7452 48 0 37.2548 0 24C0 10.7452 10.7452 0 24 0ZM23.999 11.2002C20.5245 11.2002 20.0877 11.2152 18.7227 11.2773C17.3602 11.3398 16.43 11.5556 15.6162 11.8721C14.7744 12.199 14.06 12.636 13.3486 13.3477C12.6366 14.0591 12.1991 14.7736 11.8711 15.6152C11.5538 16.4293 11.3377 17.3597 11.2764 18.7217C11.2153 20.087 11.2002 20.5238 11.2002 24C11.2002 27.476 11.2155 27.9113 11.2773 29.2764C11.34 30.639 11.5558 31.5699 11.8721 32.3838C12.1993 33.2255 12.636 33.94 13.3477 34.6514C14.0589 35.3634 14.7739 35.801 15.6152 36.1279C16.4295 36.4444 17.3596 36.6602 18.7217 36.7227C20.087 36.7848 20.5233 36.7998 23.999 36.7998C27.4756 36.7998 27.911 36.7848 29.2764 36.7227C30.639 36.6602 31.5704 36.4445 32.3848 36.1279C33.2261 35.801 33.9394 35.3631 34.6504 34.6514C35.3624 33.9399 35.7999 33.2254 36.1279 32.3838C36.4426 31.5697 36.6586 30.6393 36.7227 29.2773C36.784 27.912 36.7998 27.4763 36.7998 24C36.7998 20.5242 36.784 20.0876 36.7227 18.7227C36.6587 17.36 36.4426 16.4291 36.1279 15.6152C35.7999 14.7734 35.3623 14.0591 34.6504 13.3477C33.9385 12.6358 33.2264 12.1987 32.3838 11.8721C31.5678 11.5555 30.6371 11.3397 29.2744 11.2773C27.9093 11.2152 27.4745 11.2002 23.999 11.2002Z",fill:"white"}),n("path",{d:"M22.8525 13.5068C23.1933 13.5063 23.5739 13.5068 24.001 13.5068C27.4186 13.5068 27.8242 13.5197 29.1738 13.5811C30.4214 13.6381 31.0986 13.8463 31.5498 14.0215C32.1471 14.2535 32.5737 14.5305 33.0215 14.9785C33.4695 15.4265 33.746 15.8538 33.9785 16.4512C34.1537 16.9018 34.3631 17.5792 34.4199 18.8271C34.4812 20.1763 34.4941 20.5822 34.4941 23.998C34.4941 27.4134 34.4812 27.819 34.4199 29.168C34.3629 30.4158 34.1537 31.0933 33.9785 31.5439C33.7466 32.1412 33.4693 32.567 33.0215 33.0146C32.5735 33.4627 32.1474 33.7397 31.5498 33.9717C31.0992 34.1477 30.4216 34.356 29.1738 34.4131C27.8245 34.4744 27.4186 34.4883 24.001 34.4883C20.5835 34.4883 20.1783 34.4744 18.8291 34.4131C17.5811 34.3555 16.9036 34.1469 16.4521 33.9717C15.8549 33.7397 15.4284 33.4625 14.9805 33.0146C14.5325 32.5666 14.255 32.1406 14.0225 31.543C13.8473 31.0923 13.6378 30.4148 13.5811 29.167C13.5197 27.8179 13.5078 27.4121 13.5078 23.9941C13.5078 20.5762 13.5197 20.1726 13.5811 18.8232C13.6381 17.5755 13.8473 16.8984 14.0225 16.4473C14.2545 15.8499 14.5325 15.4236 14.9805 14.9756C15.4285 14.5276 15.8549 14.2501 16.4521 14.0176C16.9034 13.8416 17.5811 13.6335 18.8291 13.5762C20.0097 13.5228 20.4674 13.5066 22.8525 13.5039V13.5068ZM24.001 17.4268C20.371 17.427 17.4277 20.3709 17.4277 24.001C17.4279 27.6309 20.3711 30.5721 24.001 30.5723C27.631 30.5723 30.573 27.631 30.5732 24.001C30.5732 20.3708 27.6311 17.4268 24.001 17.4268ZM30.834 15.6318C29.9861 15.632 29.2979 16.3198 29.2979 17.168C29.2979 18.0159 29.9861 18.704 30.834 18.7041C31.682 18.7041 32.3701 18.016 32.3701 17.168C32.37 16.32 31.6819 15.6318 30.834 15.6318Z",fill:"white"}),n("path",{d:"M24.0011 19.7334C26.3574 19.7334 28.2678 21.6436 28.2678 24.0001C28.2678 26.3564 26.3574 28.2668 24.0011 28.2668C21.6445 28.2668 19.7344 26.3564 19.7344 24.0001C19.7344 21.6436 21.6445 19.7334 24.0011 19.7334Z",fill:"white"}));case"TikTok":return n("svg",{...t},n("path",{d:"M24 0C37.2548 0 48 10.7452 48 24C48 37.2548 37.2548 48 24 48C10.7452 48 0 37.2548 0 24C0 10.7452 10.7452 0 24 0ZM25.0273 28.3477C25.0273 30.2955 23.4721 31.8955 21.5361 31.8955C19.6003 31.8954 18.0449 30.2955 18.0449 28.3477C18.045 26.4347 19.5659 24.8693 21.4326 24.7998V20.6953C17.3188 20.7648 14.0001 24.1391 14 28.3477C14 32.5912 17.3883 36 21.5713 36C25.754 35.9998 29.1416 32.5562 29.1416 28.3477V19.9648C30.6627 21.0779 32.5295 21.7396 34.5 21.7744V17.6699C31.4579 17.5656 29.0723 15.0609 29.0723 12H25.0273V28.3477Z",fill:"white"}));case"YouTube":return n("svg",{...t},n("path",{d:"M24 0C37.2548 0 48 10.7452 48 24C48 37.2548 37.2548 48 24 48C10.7452 48 0 37.2548 0 24C0 10.7452 10.7452 0 24 0ZM24 15.2002C24 15.2002 15.9944 15.1997 13.998 15.749C12.8966 16.0513 12.0288 16.9423 11.7344 18.0732C11.1996 20.1231 11.2002 24.4004 11.2002 24.4004C11.2002 24.4472 11.2026 28.6878 11.7344 30.7266C12.0288 31.8575 12.8966 32.7483 13.998 33.0508C15.9944 33.6 24 33.5996 24 33.5996C24 33.5996 32.0057 33.6 34.002 33.0508C35.1033 32.7483 35.9703 31.8575 36.2646 30.7266C36.7966 28.6879 36.7998 24.4472 36.7998 24.4004C36.7998 24.4004 36.7996 20.1231 36.2646 18.0732C35.9703 16.9424 35.1033 16.0513 34.002 15.749C32.0057 15.1997 24 15.2002 24 15.2002Z",fill:"white"}),n("path",{d:"M21.6016 28.7998V20.7998L28.0016 24.8L21.6016 28.7998Z",fill:"white"}))}}const v=class{constructor(n){e(this,n)}layout;resolved=u;resolve(){this.resolved=null!=this.layout?function(e){const n=e&&"object"==typeof e?e:{},t=n.footer&&"object"==typeof n.footer?n.footer:{};return{social:g(t?.social),menu:h(t?.menu),credits:s(t?.credits)?t.credits.trim():"",copyright:s(t?.copyright)?t.copyright.trim():""}}(a(this.layout)):u}componentWillLoad(){this.resolve()}watchLayout(){this.resolve()}renderLegalText(){const{credits:e,copyright:t}=this.resolved;return e||t?n("div",{class:"legal"},e?n("p",{class:"legal__p"},e):null,t?n("p",{class:"legal__p"},t):null):null}renderSocialLinks(){const e=this.resolved.social;return 0===e.length?null:n("menu",{class:"social"},e.map((e=>n("li",{class:"social__item",key:e.platform},n("a",{class:"social__link",href:e.href,"aria-label":e.platform,target:f(e.href)?"_blank":void 0,rel:f(e.href)?"noreferrer noopener":void 0},n("span",{class:"social__icon","aria-hidden":"true"},n(w,{platform:e.platform})))))))}renderMenu(){const e=this.resolved.menu;return 0===e.length?null:n("ul",{class:"columns"},e.map(((e,t)=>n("li",{class:"columns__col",key:t},n("menu",{class:"columns__links","aria-label":`Footer links column ${t+1}`},e.map(((e,t)=>{return n("li",{key:t},n("a",{class:"footer-link",href:e.href,target:(i=e,i.target?i.target:p(i)?"_blank":void 0),rel:m(e)},e.label));var i})))))))}render(){return n("footer",{key:"b371f29aeb607a3e1f9bf16d9bd3fb5548b20dc1",class:"footer"},n("div",{key:"622bda2f3e7c106b62d40deccf6f7e94b79ecaea",class:"container footer__inner"},this.renderSocialLinks(),this.renderMenu(),this.renderLegalText()))}static get watchers(){return{layout:[{watchLayout:0}]}}};function b(e){if(!e?.trim())return"/";let n=e.trim().toLowerCase().split("#")[0];if(n.startsWith("http://")||n.startsWith("https://"))try{n=new URL(n).pathname}catch{return"/"}return n.startsWith("/")||(n=`/${n}`),n.length>1&&n.endsWith("/")&&(n=n.slice(0,-1)),n||"/"}function x(e){const n=e.trim();if(!n||"#"===n)return null;try{const e=n.startsWith("http://")||n.startsWith("https://")?new URL(n):new URL(n,"http://local");return{pathname:b(e.pathname),search:e.search.toLowerCase()}}catch{return null}}function C(e,n,t="prefix"){if(!e?.trim()||!n?.trim())return!1;const i=x(n);if(!i)return!1;const o=function(e){const n=e.trim(),t=n.indexOf("?"),i=-1===t?n:n.slice(0,t),o=-1===t?"":n.slice(t+1).split("#")[0];return{pathname:b(i),search:o?`?${o.toLowerCase()}`:""}}(e);return i.search?o.pathname===i.pathname&&o.search===i.search:"/"===i.pathname||"exact"===t?o.pathname===i.pathname:o.pathname===i.pathname||o.pathname.startsWith(`${i.pathname}/`)}function y(e,n,t="prefix"){if(!C(e,n,t))return 0;const i=x(n);if(!i)return 0;let o=i.pathname.length;return i.search&&(o+=100),"exact"===t&&(o+=50),o}function k(e){if(!e?.trim())return null;const n=x(e);return n?`${n.pathname}${n.search}`:null}v.style=":host{--weg-breakpoint-sm:640px;--weg-breakpoint-md:960px;--weg-breakpoint-lg:1280px;--weg-breakpoint-xl:1440px}:root,:host{--weg-container-breakpoint-sm:40rem;--weg-container-breakpoint-md:48rem;--weg-container-breakpoint-lg:64rem;--weg-container-breakpoint-xl:80rem;--weg-container-breakpoint-2xl:86rem;--weg-container-max-vw:95vw;--weg-container-padding-inline:1rem}@media (width >= 48rem){:root,:host{--weg-container-padding-inline:2rem}}.container{width:100%;max-width:var(--weg-container-max-vw);margin-inline:auto;padding-inline:var(--weg-container-padding-inline)}@media (width >= 40rem){.container{max-width:min(var(--weg-container-breakpoint-sm), var(--weg-container-max-vw))}}@media (width >= 48rem){.container{max-width:min(var(--weg-container-breakpoint-md), var(--weg-container-max-vw))}}@media (width >= 64rem){.container{max-width:min(var(--weg-container-breakpoint-lg), var(--weg-container-max-vw))}}@media (width >= 80rem){.container{max-width:min(var(--weg-container-breakpoint-xl), var(--weg-container-max-vw))}}@media (width >= 86rem){.container{max-width:min(var(--weg-container-breakpoint-xl), var(--weg-container-max-vw))}}*,*::before,*::after{box-sizing:border-box}:host{display:block;--weg-font-family:ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, 'Apple Color Emoji', 'Segoe UI Emoji';--weg-color-accent:#948eeb;--weg-purple-200:#cdcff8}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}:host{--weg-breakpoint-sm:640px;--weg-breakpoint-md:960px;--weg-breakpoint-lg:1280px;--weg-breakpoint-xl:1440px}.footer{background:#030712;color:#ffffff;font-family:var(--weg-font-family);font-weight:300}.footer__inner{display:flex;flex-direction:column;align-items:center;gap:1.25rem;padding-block:2rem;padding-inline:0}@media (width >= 960px){.footer__inner{gap:2.25rem;padding-block:3.5rem}}.social{display:flex;align-items:center;justify-content:center;gap:1rem;flex-wrap:wrap;padding:0;margin:0;list-style:none}@media (width >= 960px){.social{gap:1.75rem}}.social__item{padding:0;margin:0}.social__link{width:3rem;height:3rem;display:inline-flex;align-items:center;justify-content:center;border-radius:999rem;background:transparent;color:inherit;text-decoration:none;transition:opacity 150ms ease;outline:none}.social__link:hover{opacity:0.9}.social__link:focus-visible{outline:2px solid rgba(255, 255, 255, 0.9);outline-offset:4px}.social__icon{display:inline-flex;width:3rem;height:3rem}.footer-link{color:#ffffff;font-family:'Open Sans', var(--weg-font-family);font-size:1rem;font-style:normal;font-weight:300;line-height:1.5rem;display:block;width:100%;text-align:center;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:none;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;outline:none}@media (width >= 960px){.footer-link{display:inline;width:auto;text-align:left}}.footer-link:hover{opacity:0.9}.footer-link:focus-visible{outline:2px solid rgba(255, 255, 255, 0.9);outline-offset:4px}.legal{width:100%;max-width:860px;text-align:center;font-size:1rem;line-height:1.5rem;display:flex;flex-direction:column;gap:1rem}@media (width >= 960px){.legal{font-size:1.125rem;line-height:1.75rem}}.legal__p{margin:0}.columns{width:100%;display:grid;grid-template-columns:1fr;gap:0.75rem;font-size:1rem;line-height:1.5rem;padding:0;margin:0}.columns__col{display:flex;flex-direction:column;align-items:stretch;width:100%;min-width:0}.columns__col:not(:first-child){gap:2rem;border-top:1px solid rgba(255, 255, 255, 0.35);padding-top:1.5rem;margin-top:1.5rem}.columns__links{display:flex;flex-direction:column;align-items:stretch;gap:0.75rem;width:100%;min-width:0;text-align:center;list-style:none;padding:0}@media (width >= 640px){.columns{grid-template-columns:repeat(3, minmax(0, 1fr));gap:1.5rem 3rem;font-size:1.125rem;line-height:1.75rem}.columns__col:not(:first-child){gap:0;border-left:1px solid rgba(255, 255, 255, 0.35);padding-left:1.5rem;margin-top:0;padding-top:0;border-top:none}.columns__col:not(:last-child){padding-right:1.5rem}.footer-link{display:inline;width:auto;text-align:left}.columns__links{align-items:flex-start;text-align:left}}@media (width >= 960px){.columns{display:flex;flex-direction:row;align-items:stretch;justify-content:center;gap:0}.columns__col{flex:1 1 0;flex-direction:row;align-items:stretch}.columns__col:not(:first-child){gap:0}.columns__links{flex:1;align-items:flex-start;text-align:left}}";const D="https://www.warwickemploymentgroup.com",z=`${D}/`,M="Main navigation",B="Skip to main content";function H(e){e.hasAttribute("tabindex")||e.setAttribute("tabindex","-1"),e.focus({preventScroll:!0}),e.scrollIntoView()}function E(e){return(e?.trim()||"https://account.warwickemploymentgroup.com").replace(/\/$/,"")}function X(e,n){const t=n.startsWith("/")?n:`/${n}`;return`${E(e)}${t}`}const G={menu:[]};function P(e,n){if("sign-in"===e.authAction)return!0;if("sign-out"===e.authAction)return!1;const t=e.label.trim().toLowerCase();return"sign out"!==t&&("sign in"===t||e.href===X(n,"/account/login"))}function L(e){return"sign-out"===e.authAction||"sign out"===e.label.trim().toLowerCase()}function I(e,n){return"manage account"===e.label.trim().toLowerCase()||e.href===X(n,"/account/manage")}function N(){return n("svg",{viewBox:"0 0 448 512",width:"20",height:"20","aria-hidden":"true",focusable:"false"},n("path",{d:"M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464l349.5 0c-8.9-63.3-63.3-112-129-112l-91.4 0c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304l91.4 0C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7L29.7 512C13.3 512 0 498.7 0 482.3z",fill:"currentColor"}))}function Q(){return n("svg",{viewBox:"0 0 26 24",width:"26",height:"24","aria-hidden":"true",focusable:"false",fill:"none"},n("path",{d:"M19.6667 6.33333L25 11.6667L19.6667 17M25 11.6667H6.33333M14.3333 17V18.3333C14.3333 19.3942 13.9119 20.4116 13.1618 21.1618C12.4116 21.9119 11.3942 22.3333 10.3333 22.3333H5C3.93913 22.3333 2.92172 21.9119 2.17157 21.1618C1.42143 20.4116 1 19.3942 1 18.3333V5C1 3.93913 1.42143 2.92172 2.17157 2.17157C2.92172 1.42143 3.93913 1 5 1H10.3333C11.3942 1 12.4116 1.42143 13.1618 2.17157C13.9119 2.92172 14.3333 3.93913 14.3333 5V6.33333",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}))}function O(){return n("svg",{xmlns:"http://www.w3.org/2000/svg",width:"20",height:"20",viewBox:"0 0 20 20",fill:"none"},n("path",{d:"M19 19L13 13M15 8C15 8.91925 14.8189 9.82951 14.4672 10.6788C14.1154 11.5281 13.5998 12.2997 12.9497 12.9497C12.2997 13.5998 11.5281 14.1154 10.6788 14.4672C9.82951 14.8189 8.91925 15 8 15C7.08075 15 6.1705 14.8189 5.32122 14.4672C4.47194 14.1154 3.70026 13.5998 3.05025 12.9497C2.40024 12.2997 1.88463 11.5281 1.53284 10.6788C1.18106 9.82951 1 8.91925 1 8C1 6.14348 1.7375 4.36301 3.05025 3.05025C4.36301 1.7375 6.14348 1 8 1C9.85652 1 11.637 1.7375 12.9497 3.05025C14.2625 4.36301 15 6.14348 15 8Z",stroke:"black","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}))}function Y(){return n("svg",{xmlns:"http://www.w3.org/2000/svg",width:"18",height:"18",viewBox:"0 0 18 18",fill:"none"},n("path",{d:"M1.29289 1.29289C1.10536 1.48043 1 1.73478 1 2V4C1 4.26522 1.10536 4.51957 1.29289 4.70711C1.48043 4.89464 1.73478 5 2 5H16C16.2652 5 16.5196 4.89464 16.7071 4.70711C16.8946 4.51957 17 4.26522 17 4V2C17 1.73478 16.8946 1.48043 16.7071 1.29289C16.5196 1.10536 16.2652 1 16 1H2C1.73478 1 1.48043 1.10536 1.29289 1.29289Z",stroke:"black","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),n("path",{d:"M1.29289 9.29289C1.10536 9.48043 1 9.73478 1 10V16C1 16.2652 1.10536 16.5196 1.29289 16.7071C1.48043 16.8946 1.73478 17 2 17H8C8.26522 17 8.51957 16.8946 8.70711 16.7071C8.89464 16.5196 9 16.2652 9 16V10C9 9.73478 8.89464 9.48043 8.70711 9.29289C8.51957 9.10536 8.26522 9 8 9H2C1.73478 9 1.48043 9.10536 1.29289 9.29289Z",stroke:"black","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}),n("path",{d:"M13.2929 9.29289C13.1054 9.48043 13 9.73478 13 10V16C13 16.2652 13.1054 16.5196 13.2929 16.7071C13.4804 16.8946 13.7348 17 14 17H16C16.2652 17 16.5196 16.8946 16.7071 16.7071C16.8946 16.5196 17 16.2652 17 16V10C17 9.73478 16.8946 9.48043 16.7071 9.29289C16.5196 9.10536 16.2652 9 16 9H14C13.7348 9 13.4804 9.10536 13.2929 9.29289Z",stroke:"black","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}))}function j(){return n("svg",{viewBox:"0 0 24 24",width:"28",height:"28","aria-hidden":"true",focusable:"false",fill:"none"},n("path",{d:"M4 7h16M4 12h16M4 17h16",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"}))}function F(){return n("svg",{viewBox:"0 0 24 24",width:"24",height:"24","aria-hidden":"true",focusable:"false",fill:"none"},n("path",{d:"M6 6l12 12M18 6L6 18",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"}))}function V({expanded:e}){return n("span",{class:"toggle-icon","aria-hidden":"true"},n("svg",{viewBox:"0 0 24 24",width:"14",height:"14",fill:"none"},n("path",e?{d:"M6 12h12",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round"}:{d:"M12 6v12M6 12h12",stroke:"currentColor","stroke-width":"2.5","stroke-linecap":"round"})))}function Z({href:e,src:t}){return n("a",{class:"logo-link",href:e,"aria-label":"Home"},n("img",{class:"logo",src:t,alt:"Warwick Employment Group logo",width:"225",height:"83"}))}const T=class{constructor(n){e(this,n),this.wegAuthClick=t(this,"wegAuthClick")}static SCROLL_REVEAL_VIEWPORT_FRACTION=.5;layout;signedIn=!1;userName;accountBaseUrl;currentPath;wegAuthClick;get el(){return i(this)}resolved=G;menuOpen=!1;openDropdown=null;boundHandleDocumentClick=this.handleDocumentClick.bind(this);boundHandleViewportChange=this.handleViewportChange.bind(this);boundHandleHoverCapabilityChange=this.handleHoverCapabilityChange.bind(this);boundHandleScroll=this.handleScroll.bind(this);bodyScrollLocked=!1;bodyScrollLockY=0;hoverCloseTimer=null;hoverOpenEnabled=!1;desktopMediaQuery;hoverCapableMediaQuery;headerScrollMode=!1;headerScrollHidden=!1;lastScrollY=0;resolve(){this.resolved=null!=this.layout?function(e){const n=e&&"object"==typeof e?e:{},t=n.header&&"object"==typeof n.header?n.header:{};return{logoSrc:s(t.logoSrc)?t.logoSrc.trim():void 0,logoHref:s(t.logoHref)?t.logoHref.trim():void 0,menu:A(t.menu)}}(a(this.layout)):G}componentWillLoad(){this.resolve(),this.hoverCapableMediaQuery=window.matchMedia("(hover: hover)"),this.hoverCapableMediaQuery.addEventListener("change",this.boundHandleHoverCapabilityChange),this.desktopMediaQuery=window.matchMedia("(width >= 960px)"),this.desktopMediaQuery.addEventListener("change",this.boundHandleViewportChange),this.updateHoverDropdownEnabled(),this.handleViewportChange()}connectedCallback(){document.addEventListener("click",this.boundHandleDocumentClick)}componentDidLoad(){this.lastScrollY=Math.max(0,window.scrollY),window.addEventListener("scroll",this.boundHandleScroll,{passive:!0}),this.applyScrollState()}componentDidRender(){this.applyScrollState()}disconnectedCallback(){document.removeEventListener("click",this.boundHandleDocumentClick),window.removeEventListener("scroll",this.boundHandleScroll),this.unlockBodyScroll(),this.desktopMediaQuery?.removeEventListener("change",this.boundHandleViewportChange),this.hoverCapableMediaQuery?.removeEventListener("change",this.boundHandleHoverCapabilityChange),this.cancelScheduledDropdownClose()}updateHoverDropdownEnabled(){const e=Boolean(this.desktopMediaQuery?.matches&&this.hoverCapableMediaQuery?.matches);this.hoverOpenEnabled&&!e&&(this.cancelScheduledDropdownClose(),this.closeDropdown()),this.hoverOpenEnabled=e}handleHoverCapabilityChange(){this.updateHoverDropdownEnabled()}handleViewportChange(){this.desktopMediaQuery?.matches&&this.closeMenu({announce:!1,focusToggle:!1}),this.updateHoverDropdownEnabled()}announceToScreenReader(e){const n=this.el.shadowRoot?.querySelector("[data-weg-sr-live]");n&&(n.textContent="",requestAnimationFrame((()=>{n.textContent=e})))}getMenuToggleButton(){return this.el.shadowRoot?.querySelector(".menu-toggle")}static FOCUSABLE_SELECTOR='a[href]:not([tabindex="-1"]), button:not([disabled]):not([tabindex="-1"])';getFirstNavFocusable(){const e=this.el.shadowRoot?.querySelector("#weg-header-main-nav");return e?e.querySelectorAll(T.FOCUSABLE_SELECTOR)[0]??null:null}getMobileMenuFocusables(){const e=this.el.shadowRoot?.querySelector(".header");return e?Array.from(e.querySelectorAll(T.FOCUSABLE_SELECTOR)):[]}trapMobileMenuFocus(e){if(!this.isMobileMenuActive()||"Tab"!==e.key)return;const n=this.getMobileMenuFocusables();if(0===n.length)return;const t=n[0],i=n[n.length-1],o=this.el.shadowRoot?.activeElement,r=null!=o&&n.includes(o);e.shiftKey?r&&o!==t||(e.preventDefault(),i.focus()):r&&o!==i||(e.preventDefault(),t.focus())}focusFirstNavItem(){setTimeout((()=>{const e=(n=8)=>{const t=this.getFirstNavFocusable();t?t.focus():n>0&&requestAnimationFrame((()=>e(n-1)))};e()}),0)}focusMenuToggle(){const e=(n=8)=>{const t=this.getMenuToggleButton();t?t.focus():n>0&&requestAnimationFrame((()=>e(n-1)))};e()}getMenuGroupLinkCount(e){const n=this.getActiveMenu().find((n=>l(n)&&n.label===e));return n?.items?.length??0}formatLinkCount(e){return 1===e?"1 link":`${e} links`}formatItemCount(e){return 1===e?"1 item":`${e} items`}announceSubmenuExpanded(e){const n=this.getMenuGroupLinkCount(e);this.announceToScreenReader(`${e} submenu expanded. ${this.formatLinkCount(n)}.`)}announceSubmenuCollapsed(e){this.announceToScreenReader(`${e} submenu collapsed.`)}isMobileMenuActive(){return this.menuOpen&&!this.desktopMediaQuery?.matches}handleScroll(){this.applyScrollState()}applyScrollState(){if(this.isMobileMenuActive())return this.headerScrollHidden&&(this.headerScrollHidden=!1),this.headerScrollMode&&(this.headerScrollMode=!1),void(this.lastScrollY=Math.max(0,window.scrollY));const e=Math.max(0,window.scrollY),n=this.getScrollRevealThreshold();let t=this.headerScrollMode,i=this.headerScrollHidden;e>=n?0===e?(t=!1,i=!1):(t=!0,e>this.lastScrollY?i=!0:e<this.lastScrollY&&(i=!1)):0===e?(t=!1,i=!1):this.headerScrollMode&&!this.headerScrollHidden?(t=!0,i=e>this.lastScrollY):(t=!1,i=!1),this.lastScrollY=e,t!==this.headerScrollMode&&(this.headerScrollMode=t),i!==this.headerScrollHidden&&(this.headerScrollHidden=i)}getScrollRevealThreshold(){return(window.visualViewport?.height??window.innerHeight)*T.SCROLL_REVEAL_VIEWPORT_FRACTION}watchLayout(){this.resolve()}handleKeyDown(e){if("Tab"!==e.key){if("Escape"===e.key)return this.openDropdown?(e.preventDefault(),void this.closeDropdownAndFocusTrigger(this.openDropdown)):void(this.menuOpen&&(e.preventDefault(),this.closeMenu({focusToggle:!0})))}else this.trapMobileMenuFocus(e)}lockBodyScroll(){this.bodyScrollLocked||(this.bodyScrollLockY=window.scrollY,document.body.style.overflow="hidden",document.body.style.position="fixed",document.body.style.top=`-${this.bodyScrollLockY}px`,document.body.style.left="0",document.body.style.right="0",document.body.style.width="100%",this.bodyScrollLocked=!0)}unlockBodyScroll(){this.bodyScrollLocked&&(document.body.style.overflow="",document.body.style.position="",document.body.style.top="",document.body.style.left="",document.body.style.right="",document.body.style.width="",window.scrollTo(0,this.bodyScrollLockY),this.bodyScrollLocked=!1)}handleDocumentClick(e){const n=e.target;n&&this.el.contains(n)||this.closeDropdown()}cancelScheduledDropdownClose(){this.hoverCloseTimer&&(clearTimeout(this.hoverCloseTimer),this.hoverCloseTimer=null)}openDropdownMenu(e){this.cancelScheduledDropdownClose(),this.openDropdown=e}closeDropdown(){this.cancelScheduledDropdownClose(),this.openDropdown=null}scheduleDropdownClose(){this.cancelScheduledDropdownClose(),this.hoverCloseTimer=setTimeout((()=>{this.openDropdown=null,this.hoverCloseTimer=null}),200)}toggleDropdown(e){if(this.openDropdown===e)return this.announceSubmenuCollapsed(e),void this.closeDropdown();this.openDropdownMenu(e),this.announceSubmenuExpanded(e)}getDropdownPanelId(e){return`weg-header-dropdown-${e.trim().toLowerCase().replace(/\s+/g,"-")}`}handleDropdownPointerEnter(e){this.hoverOpenEnabled&&this.openDropdownMenu(e)}handleDropdownPointerLeave(e){if(!this.hoverOpenEnabled)return;const n=e.relatedTarget;n&&e.currentTarget.contains(n)||this.scheduleDropdownClose()}handleDropdownPanelPointerEnter(e){this.hoverOpenEnabled&&(this.cancelScheduledDropdownClose(),this.openDropdownMenu(e))}handleDropdownPanelPointerLeave(e){if(!this.hoverOpenEnabled)return;const n=e.relatedTarget,t=e.currentTarget.closest(".nav-dropdown");n&&t?.contains(n)||this.scheduleDropdownClose()}handleDropdownTriggerClick(e,n){e.stopPropagation(),this.cancelScheduledDropdownClose(),this.toggleDropdown(n)}handleDropdownFocusOut(e,n){const t=e.relatedTarget;t&&e.currentTarget.contains(t)||this.openDropdown===n&&this.closeDropdown()}handleDropdownTriggerKeyDown(e,n,t){"ArrowDown"===e.key&&(e.preventDefault(),this.openDropdown!==n&&(this.openDropdownMenu(n),this.announceSubmenuExpanded(n)),this.focusFirstDropdownLink(t))}getDropdownLinks(e){return Array.from(e.querySelectorAll(".nav-dropdown__link"))}focusDropdownLink(e,n){const t=(i=8)=>{const o=this.getDropdownLinks(e);o[n]?o[n].focus():i>0&&requestAnimationFrame((()=>t(i-1)))};t()}focusFirstDropdownLink(e){this.focusDropdownLink(e,0)}getDropdownContainer(e){const n=this.getDropdownPanelId(e);return this.el.shadowRoot?.querySelector(`#${n}-trigger`)?.closest(".nav-dropdown")??null}closeDropdownAndFocusTrigger(e){const n="string"==typeof e?this.getDropdownContainer(e):e,t=n?.querySelector(".nav-dropdown__trigger"),i="string"==typeof e?e:t?.querySelector(".nav-dropdown__label")?.textContent?.trim()??"";i&&this.openDropdown===i&&this.announceSubmenuCollapsed(i),this.closeDropdown();const o=(e=8)=>{t&&this.el.shadowRoot?.contains(t)?t.focus():e>0&&requestAnimationFrame((()=>o(e-1)))};o()}handleDropdownLinkKeyDown(e,n){const t=this.getDropdownLinks(n),i=t.indexOf(e.currentTarget);if(-1!==i)return"ArrowDown"===e.key?(e.preventDefault(),void t[(i+1)%t.length]?.focus()):"ArrowUp"===e.key?(e.preventDefault(),void t[(i-1+t.length)%t.length]?.focus()):void("Escape"===e.key&&(e.preventDefault(),e.stopPropagation(),this.closeDropdownAndFocusTrigger(n)))}toggleMenu(){this.menuOpen?this.closeMenu({focusToggle:!1}):this.openMenu()}openMenu(){if(this.menuOpen=!0,this.closeDropdown(),!this.desktopMediaQuery?.matches){this.lockBodyScroll();const e=this.getActiveMenu().length;this.announceToScreenReader(`${M} opened. ${this.formatItemCount(e)}.`),this.focusFirstNavItem()}}closeMenu(e={}){const{announce:n=!0,focusToggle:t=!1}=e,i=this.isMobileMenuActive();this.menuOpen=!1,this.closeDropdown(),this.unlockBodyScroll(),n&&i&&this.announceToScreenReader(`${M} closed.`),t&&this.focusMenuToggle()}getAccountHome(){return E(this.accountBaseUrl)}getActiveMenu(){return this.resolved.menu.length>0?this.resolved.menu:this.signedIn?(e=this.getAccountHome(),[{label:"Find a job",href:`${D}/find-a-job`},{label:"Dashboard",href:X(e,"/dashboard")},{label:"Manage Account",href:X(e,"/account/manage")},{label:"Sign out",href:"#"}]):this.resolved.menu;var e}getLogoSrc(){return this.resolved.logoSrc??"data:image/png;base64,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"}getLogoHref(){return this.resolved.logoHref??z}findSignInLink(e){const n=function(e){for(const n of e)if(!l(n)&&"sign-in"===n.authAction)return n;return null}(e);if(n)return n;const t=this.getAccountHome();for(const n of e)if(!l(n)&&P(n,t))return n;return null}getManageAccountLabel(){const e=this.userName?.trim();return e||"Manage Account"}resolveManageAccountHref(e){const n=e?.href?.trim();return n||X(this.getAccountHome(),"/account/manage")}findManageAccountLink(e){const n=this.getAccountHome();for(const t of e)if(!l(t)&&I(t,n))return t;return null}shouldExcludeFromNavActive(e,n){return L(e)||P(e,n)}isNavItemActive(e,n){return C(this.currentPath??"",e,n)}resolveAriaCurrentHref(){const e=this.getAccountHome();return function(e,n,t){const i=n.trim();if(!i)return null;let o=null,r=0;for(const n of e){if(n.items?.length){for(const e of n.items){if(!e.href||t?.(e))continue;const n=y(i,e.href,"exact"),a=k(e.href);a&&n>r&&(r=n,o=a)}continue}if(!n.href||t?.(n))continue;const e=y(i,n.href,"prefix"),a=k(n.href);a&&e>r&&(r=e,o=a)}return o}(this.getActiveMenu(),this.currentPath??"",(n=>this.shouldExcludeFromNavActive(n,e)))}isAriaCurrentHref(e,n){return function(e,n){return!!n&&k(e)===n}(e,n)}renderIconNavLink(e,t,i,o,r=null){const a=this.isNavItemActive(e.href,"prefix"),s=this.isAriaCurrentHref(e.href,r);return n("li",{class:"main-nav__item main-nav__item--auth",key:e.label},n("a",{class:{"sign-in-link":!0,[i]:!0,"nav-link--active":a},href:e.href,"aria-current":s?"page":void 0,onClick:()=>o?.()},n(t,null),e.label))}renderFlatNavLink(e,t,i=null){const o=this.isNavItemActive(e.href,"prefix"),r=this.isAriaCurrentHref(e.href,i);return n("li",{class:"main-nav__item",key:e.label},n("a",{class:{"nav-link":!0,"nav-link--active":o},href:e.href,"aria-current":r?"page":void 0,onClick:()=>t?.()},e.label))}renderMenuGroup(e,t,i=null){const o=e.items??[],r=this.openDropdown===e.label,a=this.getDropdownPanelId(e.label),s=o.some((e=>this.isNavItemActive(e.href,"exact")));return n("li",{class:"main-nav__item main-nav__item--dropdown",key:e.label},n("div",{class:"nav-dropdown",onMouseEnter:()=>this.handleDropdownPointerEnter(e.label),onMouseLeave:e=>this.handleDropdownPointerLeave(e),onFocusout:n=>this.handleDropdownFocusOut(n,e.label)},n("button",{type:"button",class:{"nav-dropdown__trigger":!0,"nav-dropdown__trigger--open":r,"nav-dropdown__trigger--active":s},"aria-expanded":r?"true":"false","aria-haspopup":"true","aria-controls":a,id:`${a}-trigger`,onClick:n=>this.handleDropdownTriggerClick(n,e.label),onKeyDown:n=>{const t=n.currentTarget.closest(".nav-dropdown");this.handleDropdownTriggerKeyDown(n,e.label,t)}},n("span",{class:"nav-dropdown__label"},e.label),n(V,{expanded:r})),r?n("div",{class:"nav-dropdown__panel",id:a,role:"region","aria-labelledby":`${a}-trigger`,onMouseEnter:()=>this.handleDropdownPanelPointerEnter(e.label),onMouseLeave:e=>this.handleDropdownPanelPointerLeave(e)},n("div",{class:"nav-dropdown__accent"},n("ul",{class:"nav-dropdown__links"},o.map(((r,a)=>{const s=this.isNavItemActive(r.href,"exact"),l=this.isAriaCurrentHref(r.href,i);return n("li",{key:`${e.label}:${r.label}`},n("a",{class:{"nav-dropdown__link":!0,"nav-dropdown__link--active":s},href:r.href,"aria-label":`${r.label}, link ${a+1} of ${o.length}`,"aria-current":l?"page":void 0,onClick:()=>t?.(),onKeyDown:e=>{const n=e.currentTarget.closest(".nav-dropdown");this.handleDropdownLinkKeyDown(e,n)}},r.label))}))))):null))}handleAuthClick(e,n,t,i){return this.wegAuthClick.emit({action:n}).defaultPrevented||"sign-out"===n?(e.preventDefault(),void i?.()):void i?.()}renderAuthControl(e){const{link:t,action:i,iconOnly:o,onNavigate:r}=e,a="sign-out"===i?Q:N,s="sign-out"===i?"sign-out-link":"sign-in-link";return n("a",{class:{[s]:!o,"icon-button":!!o,[e.className||""]:!!e.className},href:t.href,"aria-label":t.label,onClick:e=>this.handleAuthClick(e,i,t.href,r)},n(a,null),o?null:t.label,o?n("span",{class:"sr-only"},t.label):null)}renderManageAccountAnchor(e,t=!1,i=null,o){const r=this.getManageAccountLabel(),a=this.resolveManageAccountHref(o),s=this.isNavItemActive(a,"prefix"),l=this.isAriaCurrentHref(a,i);return n("a",{class:{"sign-in-link":!t,"manage-account-link":!0,"icon-button":t,"nav-link--active":s},href:a,"aria-label":r,"aria-current":l?"page":void 0,onClick:()=>e?.()},n(N,null),t?null:r,t?n("span",{class:"sr-only"},r):null)}renderNavItem(e,t,i=null){const o=this.getAccountHome();return l(e)?this.renderMenuGroup(e,t,i):L(e)?n("li",{class:"main-nav__item main-nav__item--auth",key:"sign-out"},this.renderAuthControl({link:e,action:"sign-out",onNavigate:t})):P(e,o)?n("li",{class:"main-nav__item main-nav__item--auth",key:"sign-in"},this.renderAuthControl({link:e,action:"sign-in",onNavigate:t})):I(e,o)?n("li",{class:"main-nav__item main-nav__item--auth",key:"manage-account"},this.renderManageAccountAnchor(t,!1,i,e)):this.signedIn&&function(e){if("find a job"===e.label.trim().toLowerCase())return!0;const n=e.href?.trim();return!!n&&(n===`${D}/find-a-job`||"/find-a-job"===n||n.endsWith("/find-a-job"))}(e)?this.renderIconNavLink(e,O,"find-a-job-link",t,i):this.signedIn&&function(e,n){return"dashboard"===e.label.trim().toLowerCase()||e.href===X(n,"/dashboard")}(e,o)?this.renderIconNavLink(e,Y,"dashboard-link",t,i):this.renderFlatNavLink(e,t,i)}renderNav(e){const t=this.resolveAriaCurrentHref();return n("nav",{class:"main-nav","aria-label":M},n("ul",{class:"main-nav__list"},this.getActiveMenu().map((n=>this.renderNavItem(n,e,t)))))}renderCompactAuth(e){if(this.signedIn){const n=this.findManageAccountLink(this.getActiveMenu());return this.renderManageAccountAnchor(e,!0,null,n??void 0)}const n=this.findSignInLink(this.resolved.menu);return n?.href?this.renderAuthControl({link:n,action:"sign-in",iconOnly:!0,onNavigate:e}):null}handleSkipToContent(e){e.preventDefault();const n=this.el.nextElementSibling;n instanceof HTMLElement&&H(n);const t=(n instanceof HTMLElement?n.querySelector("h1"):null)??document.querySelector("h1");t instanceof HTMLElement&&H(t)}render(){const e=this.getLogoHref(),t=this.getLogoSrc(),i=()=>this.closeMenu(),r=this.isMobileMenuActive();return n(o,{key:"916472d15df8abf5270650126356ef2d7a475765",class:{"weg-header--scroll-mode":this.headerScrollMode}},n("div",{key:"8c8d63f67cf7b27364cc828aa42c5b011cbb971e",class:"weg-header-shell"},n("a",{key:"96f6141f0bff7a51bbc8f46ea9b92d0c33142e1a",class:"skip-to-content",href:"#",title:B,onClick:e=>this.handleSkipToContent(e)},B),n("header",{key:"4a727a72e031159ca991505a1a8a59a32271aedf",class:{header:!0,"header--menu-open":r,"header--scroll-mode":this.headerScrollMode,"header--scroll-hidden":this.headerScrollHidden&&this.headerScrollMode}},n("div",{key:"5ef2a85bf2087206a17e3cbf163dde4d549dcd0b",class:"header-inner"},n("div",{key:"3af6990b5c6d93b4332a0d53300daddb11e2ad2b",class:"sr-only","aria-live":"polite","aria-atomic":"true","data-weg-sr-live":!0}),n("button",{key:"023322f1e49a676a5b20208b956624ce820e9b57",type:"button",class:"menu-toggle icon-button","aria-label":r?"Close main navigation":"Open main navigation","aria-expanded":r?"true":"false","aria-controls":"weg-header-main-nav",onClick:()=>this.toggleMenu()},n(r?F:j,null)),n(Z,{key:"efa51b76936456c49059c67e9f2c9c2365b97d25",href:e,src:t}),n("div",{key:"ee0eff5ae3a63cf9550261a4d1727c9a88ab3e4d",class:"header-actions"},this.renderCompactAuth(r?i:void 0)),n("div",{key:"7552a6a661e644dcb3d555ab5572f680cd0295de",class:"main-nav-panel",id:"weg-header-main-nav",role:r?"dialog":void 0,"aria-modal":r?"true":void 0,"aria-label":r?M:void 0},this.renderNav(r?i:void 0))))))}static get watchers(){return{layout:[{watchLayout:0}]}}};T.style=":host{--weg-breakpoint-sm:640px;--weg-breakpoint-md:960px;--weg-breakpoint-lg:1280px;--weg-breakpoint-xl:1440px}:root,:host{--weg-container-breakpoint-sm:40rem;--weg-container-breakpoint-md:48rem;--weg-container-breakpoint-lg:64rem;--weg-container-breakpoint-xl:80rem;--weg-container-breakpoint-2xl:86rem;--weg-container-max-vw:95vw;--weg-container-padding-inline:1rem}@media (width >= 48rem){:root,:host{--weg-container-padding-inline:2rem}}.container{width:100%;max-width:var(--weg-container-max-vw);margin-inline:auto;padding-inline:var(--weg-container-padding-inline)}@media (width >= 40rem){.container{max-width:min(var(--weg-container-breakpoint-sm), var(--weg-container-max-vw))}}@media (width >= 48rem){.container{max-width:min(var(--weg-container-breakpoint-md), var(--weg-container-max-vw))}}@media (width >= 64rem){.container{max-width:min(var(--weg-container-breakpoint-lg), var(--weg-container-max-vw))}}@media (width >= 80rem){.container{max-width:min(var(--weg-container-breakpoint-xl), var(--weg-container-max-vw))}}@media (width >= 86rem){.container{max-width:min(var(--weg-container-breakpoint-xl), var(--weg-container-max-vw))}}*,*::before,*::after{box-sizing:border-box}:host{display:block;--weg-font-family:ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, 'Apple Color Emoji', 'Segoe UI Emoji';--weg-color-accent:#948eeb;--weg-purple-200:#cdcff8}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}:host{--weg-breakpoint-sm:640px;--weg-breakpoint-md:960px;--weg-breakpoint-lg:1280px;--weg-breakpoint-xl:1440px}.weg-header-shell{display:contents}:host{display:block}:host(.weg-header--scroll-mode){min-height:4.25rem}@media (width >= 960px){:host(.weg-header--scroll-mode){min-height:5.75rem}}@media (width >= 1280px){:host(.weg-header--scroll-mode){min-height:7.75rem}}@media (width >= 1440px){:host(.weg-header--scroll-mode){min-height:8.75rem}}.skip-to-content{position:fixed;top:-100%;left:0;z-index:10001;padding:0.75rem 1rem;background:#ffffff;color:#0f172a;font-family:var(--weg-font-family);font-weight:600;text-decoration:none;border:2px solid #312e81;border-radius:0 0 0.25rem 0;box-shadow:0 0.25rem 0.75rem rgba(17, 24, 39, 0.15)}.skip-to-content:focus,.skip-to-content:focus-visible{top:0;outline:2px solid var(--weg-color-accent);outline-offset:2px}.header{width:100%;position:relative;z-index:1000;transition:transform 0.25s ease;border-bottom:2px solid var(--weg-color-accent);background:#ffffff;color:#0f172a;font-family:var(--weg-font-family)}.header--scroll-mode{position:fixed;top:0;left:0;right:0}.header--scroll-hidden{transform:translateY(-100%)}.header:not(.header--scroll-mode).header--scroll-hidden{transform:none}@media (prefers-reduced-motion: reduce){.header{transition:none}}@media (width >= 960px){.header{border-bottom-width:0.25rem}}.header--menu-open{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;transform:none;display:flex;flex-direction:column;overflow:hidden}.header--menu-open .header-inner{flex:1 1 auto;flex-wrap:wrap;align-content:flex-start;min-height:0}.header--menu-open .main-nav-panel{display:block;flex:1 1 100%;width:100%;min-height:0;overflow-y:auto;border-top:1px solid #d8d4f7}@media (width >= 960px){.header--menu-open{position:static;inset:auto;z-index:auto;display:block;overflow:visible}.header--menu-open .header-inner{flex:unset;flex-wrap:nowrap;align-content:unset;min-height:unset}}.logo-link{display:inline-flex;align-items:center;text-decoration:none;outline:none}.logo-link:focus-visible{outline:2px solid var(--weg-color-accent);outline-offset:4px;border-radius:4px}.logo{height:2.5rem;width:auto}@media (width >= 960px){.logo{height:3rem}}@media (width >= 1280px){.logo{height:5rem}}.header-inner{display:flex;width:100%;min-width:0;align-items:center;justify-content:space-between;gap:0.75rem;padding-block:0.75rem;padding-inline:var(--weg-container-padding-inline)}@media (width >= 960px){.header-inner{flex-wrap:nowrap;gap:1.5rem;padding-block:1.25rem}}@media (width >= 1440px){.header-inner{padding-block:1.75rem}}.header-inner .logo-link{flex:1 1 auto;min-width:0;justify-content:center}@media (width >= 960px){.header-inner .logo-link{flex:0 0 auto;justify-content:flex-start}}.header-inner .logo{max-width:100%}.header-actions{display:flex;align-items:center;flex-shrink:0}@media (width >= 960px){.header-actions{display:none}}.main-nav-panel{display:none;margin-inline:-0.5rem}@media (width >= 960px){.main-nav-panel{display:flex;flex:1 1 auto;width:auto;min-width:0;justify-content:flex-end;overflow:visible;border-top:none}}.main-nav{padding:0 0 1.5rem}@media (width >= 960px){.main-nav{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:1rem;padding:0}}.main-nav__list{list-style:none;margin:0;padding:0}@media (width >= 960px){.main-nav__list{display:flex;align-items:center;flex-wrap:wrap;gap:0.5rem}}@media (width >= 1280px){.main-nav__list{gap:1.5rem}}.main-nav__item{border-bottom:1px solid #d8d4f7}@media (width >= 960px){.main-nav__item{border-bottom:none}}.main-nav__item--dropdown{position:static}.nav-dropdown{position:relative}.nav-link{display:block;width:100%;padding:1rem;font-weight:600;color:inherit;text-decoration:none;outline:none}.nav-link:hover{opacity:0.85}.nav-link:focus-visible{outline:2px solid var(--weg-color-accent);outline-offset:2px;border-radius:4px}.nav-link--active{background:var(--weg-purple-200)}.nav-dropdown__trigger{display:flex;align-items:center;justify-content:space-between;gap:0.75rem;width:100%;padding:1rem;border:none;background:transparent;font:inherit;font-weight:600;color:inherit;text-align:left;cursor:pointer;outline:none}.nav-dropdown__trigger:hover{opacity:0.85}.nav-dropdown__trigger:focus-visible{outline:2px solid var(--weg-color-accent);outline-offset:2px;border-radius:4px}.nav-dropdown__trigger--open{background:transparent}.nav-dropdown__trigger--active{background:var(--weg-purple-200)}.toggle-icon{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;border-radius:999rem;background:#312e81;color:#ffffff;flex-shrink:0}.nav-dropdown__panel{padding:0 0 0.75rem}@media (width >= 960px){.nav-dropdown__panel{position:absolute;top:calc(100% + 0.5rem);left:0;z-index:500;min-width:17.5rem;padding:0.75rem 0 0.75rem 0.75rem;border:1px solid #e2e8f0;border-radius:0.5rem;background:#f8fafc;box-shadow:0 0.25rem 1rem rgba(15, 23, 42, 0.08)}.nav-dropdown__panel::before{content:'';position:absolute;top:-0.5rem;left:0;right:0;height:0.5rem}}.nav-dropdown__accent{border-left:0.25rem solid var(--weg-color-accent);padding-left:0.75rem}.nav-dropdown__links{display:flex;flex-direction:column;gap:0.25rem;list-style:none;margin:0;padding:0}.nav-dropdown__link{display:block;padding:0.625rem 0;font-weight:400;color:inherit;text-decoration:none;outline:none}.nav-dropdown__link:hover{opacity:0.85}.nav-dropdown__link:focus-visible{outline:0.125rem solid var(--weg-color-accent);outline-offset:0.125rem;border-radius:0.25rem}.nav-dropdown__link--active{background:var(--weg-purple-200)}@media (width >= 960px){.nav-dropdown__link{padding:0.5rem;margin-right:0.75rem;border-radius:0.5rem;font-weight:600}.nav-dropdown__link:hover,.nav-dropdown__link:focus-visible{background:var(--weg-purple-200);opacity:1}.nav-dropdown__link--active{opacity:1}}@media (width >= 1280px){.nav-dropdown__link{padding:0.5rem 0.75rem}}.main-nav__item--auth>a{display:flex;align-items:center;gap:0.5rem;width:100%;padding:1rem}@media (width >= 960px){.nav-link,.nav-dropdown__trigger,.main-nav__item--auth>a{display:inline-flex;align-items:center;width:auto;padding:0.5rem;border-radius:0.5rem}.nav-link--active,.main-nav__item--auth>a.nav-link--active{background:var(--weg-purple-200)}.nav-dropdown__trigger{gap:0.5rem;cursor:pointer}.nav-dropdown__trigger--open{background:#f1f5f9}.nav-dropdown__trigger--active{background:var(--weg-purple-200)}}@media (width >= 1280px){.main-nav{font-size:1.25rem}.main-nav__item--auth>a{padding:0.5rem 0.75rem}}.sign-in-link,.sign-out-link,.auth-button{display:inline-flex;align-items:center;gap:0.5rem;font-weight:600;color:inherit;text-decoration:none;outline:none}.auth-button{padding:0;border:none;background:transparent;font:inherit;cursor:pointer}.sign-in-link:hover,.sign-out-link:hover,.auth-button:hover{opacity:0.85}.sign-in-link:focus-visible,.sign-out-link:focus-visible,.auth-button:focus-visible{outline:2px solid var(--weg-color-accent);outline-offset:4px;border-radius:4px}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;padding:0;border:none;border-radius:0.5rem;background:transparent;color:inherit;cursor:pointer;text-decoration:none;outline:none}.icon-button:hover{background:#f1f5f9}.icon-button:focus-visible{outline:2px solid var(--weg-color-accent);outline-offset:2px}.menu-toggle{flex-shrink:0}@media (width >= 960px){.menu-toggle{display:none}}";export{v as weg_footer,T as weg_header}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as e,b as a}from"./p-DeWUZGfb.js";export{s as setNonce}from"./p-DeWUZGfb.js";import{g as o}from"./p-DQuL1Twl.js";(()=>{const a=import.meta.url,o={};return""!==a&&(o.resourcesUrl=new URL(".",a).href),e(o)})().then((async e=>(await o(),a([["p-
|
|
1
|
+
import{p as e,b as a}from"./p-DeWUZGfb.js";export{s as setNonce}from"./p-DeWUZGfb.js";import{g as o}from"./p-DQuL1Twl.js";(()=>{const a=import.meta.url,o={};return""!==a&&(o.resourcesUrl=new URL(".",a).href),e(o)})().then((async e=>(await o(),a([["p-52294a6e",[[513,"weg-footer",{layout:[1],resolved:[32]},null,{layout:[{watchLayout:0}]}],[513,"weg-header",{layout:[1],signedIn:[516,"signed-in"],userName:[1,"user-name"],accountBaseUrl:[1,"account-base-url"],currentPath:[1,"current-path"],resolved:[32],menuOpen:[32],openDropdown:[32],headerScrollMode:[32],headerScrollHidden:[32]},[[8,"keydown","handleKeyDown"]],{layout:[{watchLayout:0}]}]]]],e))));
|
package/docs/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Documentation index
|
|
2
2
|
|
|
3
|
-
Guides for integrating **`weg-shared-layout`** (`<weg-header>`, `<weg-footer>`)
|
|
3
|
+
Guides for integrating **`weg-shared-layout`** (`<weg-header>`, `<weg-footer>`) into host applications.
|
|
4
4
|
|
|
5
5
|
Layout data comes from the **WEG CMS WEG21 API** (`GET /api/v1/weg21` + `/menus`), mapped to `layout` via [`fetchWeg21Layout`](../src/utils/menus.ts). Schema reference: [`weg21-bootstrap.json`](../src/assets/weg21-bootstrap.json), [`weg21-menus.json`](../src/assets/weg21-menus.json).
|
|
6
6
|
|
|
@@ -14,13 +14,13 @@ Layout data comes from the **WEG CMS WEG21 API** (`GET /api/v1/weg21` + `/menus`
|
|
|
14
14
|
| --- | --- |
|
|
15
15
|
| **[../readme.md](../readme.md)** | Package overview, install, WEG21 API |
|
|
16
16
|
| **[angular.md](./angular.md)** | **Angular 16** — step-by-step integration |
|
|
17
|
-
| **[../demo/angular16/README.md](../demo/angular16/README.md)** | Runnable Angular 16 demo (`
|
|
17
|
+
| **[../demo/angular16/README.md](../demo/angular16/README.md)** | Runnable Angular 16 demo (`pnpm run demo:angular16`) |
|
|
18
18
|
| **[react.md](./react.md)** | React 19+ SPA (Vite, CRA, etc.) |
|
|
19
19
|
| **[nextjs.md](./nextjs.md)** | Next.js 13+ App Router |
|
|
20
20
|
| **[vanilla.md](./vanilla.md)** | Plain HTML / vanilla JS + bundler |
|
|
21
21
|
| **[publishing.md](./publishing.md)** | Maintainers — npm publish, `prepack`, release checklist |
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
For newer Angular with signals, see [weg-angular-demo](https://github.com/jobsac/weg-angular-demo).
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
@@ -31,13 +31,15 @@ Published subpaths (see [`package.json` `exports`](../package.json)):
|
|
|
31
31
|
| Import | Purpose |
|
|
32
32
|
| --- | --- |
|
|
33
33
|
| `weg-shared-layout/loader` | **`defineCustomElements()`** — register all tags (recommended) |
|
|
34
|
-
| `weg-shared-layout/menus` | **`fetchWeg21Layout`**, **`menusToLayoutData`** |
|
|
34
|
+
| `weg-shared-layout/menus` | **`fetchWeg21Layout`**, **`menusToLayoutData`**, **`dummyWeg21LayoutData`** |
|
|
35
35
|
| `weg-shared-layout/menus-data` | WEG21 API types (`MenusProps`, `Weg21BootstrapProps`, …) |
|
|
36
36
|
| `weg-shared-layout/layout-data` | Types for `layout` prop (`LayoutData`, …) |
|
|
37
37
|
| `weg-shared-layout/weg21-bootstrap.json` | `Weg21BootstrapProps` sample (`GET /api/v1/weg21`) |
|
|
38
38
|
| `weg-shared-layout/weg21-menus.json` | `MenusProps` sample (`GET /api/v1/weg21/menus`) |
|
|
39
39
|
| `weg-shared-layout/weg-header` | Single-tag side-effect import (needs modern `moduleResolution`) |
|
|
40
40
|
| `weg-shared-layout/weg-footer` | Single-tag side-effect import |
|
|
41
|
+
| `weg-shared-layout/hydrate` | Stencil hydrate build for SSR pipelines that render custom elements server-side |
|
|
42
|
+
| `weg-shared-layout` | Root package typings plus the small `format()` helper |
|
|
41
43
|
|
|
42
44
|
TypeScript apps should set **`resolveJsonModule": true`** and **`moduleResolution": "bundler"`** (or `"node16"` / `"nodenext"`). See **[angular.md § Step 2](./angular.md#step-2--typescript-config)**.
|
|
43
45
|
|
|
@@ -49,6 +51,7 @@ From repo root:
|
|
|
49
51
|
|
|
50
52
|
| Script | Action |
|
|
51
53
|
| --- | --- |
|
|
52
|
-
| `
|
|
53
|
-
| `
|
|
54
|
-
| `
|
|
54
|
+
| `pnpm run build` | Stencil build → `dist/`, `loader/`, `hydrate/` |
|
|
55
|
+
| `pnpm run demo:angular16` | Start the Angular 16 demo from `demo/angular16` |
|
|
56
|
+
| `pnpm run demo:angular16:build` | Production-build the Angular 16 demo |
|
|
57
|
+
| `pnpm run demo:angular16:install` | Install demo dependencies in `demo/angular16` |
|
package/docs/angular.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Angular 16 integration
|
|
2
2
|
|
|
3
|
-
Step-by-step guide for **Angular 16** (standalone or NgModule). Uses plain component properties
|
|
3
|
+
Step-by-step guide for **Angular 16** (standalone or NgModule). Uses plain component properties, not signals.
|
|
4
4
|
|
|
5
|
-
Runnable reference: **[demo/angular16](../demo/angular16/README.md)** (`
|
|
5
|
+
Runnable reference: **[demo/angular16](../demo/angular16/README.md)** (`pnpm run demo:angular16` from repo root).
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
For newer Angular with signals, see [weg-angular-demo](https://github.com/jobsac/weg-angular-demo) — same layout ideas, different syntax.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -168,7 +168,7 @@ export class AppComponent implements OnInit {
|
|
|
168
168
|
|
|
169
169
|
## Step 7 — Template
|
|
170
170
|
|
|
171
|
-
Use **`[layout]="..."`** so Angular sets the JavaScript property
|
|
171
|
+
Use **`[layout]="..."`** so Angular sets the JavaScript property rather than an HTML attribute.
|
|
172
172
|
|
|
173
173
|
```html
|
|
174
174
|
<!-- src/app/app.component.html -->
|
|
@@ -190,7 +190,7 @@ Use **`[layout]="..."`** so Angular sets the JavaScript property, not an HTML at
|
|
|
190
190
|
| Binding | Purpose |
|
|
191
191
|
| --- | --- |
|
|
192
192
|
| `[layout]` | CMS nav when signed out; same object for header and footer |
|
|
193
|
-
| `[signedIn]` |
|
|
193
|
+
| `[signedIn]` | Enables signed-in UI; built-in signed-in nav is only used when `header.menu` is empty |
|
|
194
194
|
| `[userName]` | First name on Manage Account when signed in |
|
|
195
195
|
| `[accountBaseUrl]` | Account portal origin for signed-in links (optional; production default when omitted) |
|
|
196
196
|
| `[currentPath]` | Current route path (optional query) — highlights the active nav link; use `router.url` |
|
|
@@ -217,7 +217,10 @@ export class LayoutService {
|
|
|
217
217
|
layout: LayoutData = dummyWeg21LayoutData();
|
|
218
218
|
|
|
219
219
|
constructor() {
|
|
220
|
-
void fetchWeg21Layout({
|
|
220
|
+
void fetchWeg21Layout({
|
|
221
|
+
apiBase: 'https://warwickemploymentgroup.com/api/v1/weg21',
|
|
222
|
+
apiKey: 'your-wcms-api-key',
|
|
223
|
+
})
|
|
221
224
|
.then((data) => (this.layout = data))
|
|
222
225
|
.catch(() => {
|
|
223
226
|
/* keep dummyWeg21LayoutData() */
|
|
@@ -393,7 +396,7 @@ forkJoin({
|
|
|
393
396
|
| `'weg-header'` is not a known element | `CUSTOM_ELEMENTS_SCHEMA` on the component that owns the template |
|
|
394
397
|
| Header/footer empty | `defineCustomElements()` before bootstrap |
|
|
395
398
|
| Nav empty after passing data | `[layout]` must be `{ header, footer }`, not a bare array |
|
|
396
|
-
|
|
|
399
|
+
| Signed-in links are not what you expected | If `layout.header.menu` is present, the component uses that menu even when `[signedIn]="true"`; leave it empty to use the built-in signed-in fallback |
|
|
397
400
|
| Generic Manage Account | Pass `[userName]` when signed in |
|
|
398
401
|
| Staging account portal | Pass `[accountBaseUrl]` (e.g. `https://account-staging.example.com`) |
|
|
399
402
|
| Nav never highlights active page | Pass `[currentPath]` from `router.url` on each navigation |
|
package/docs/nextjs.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Next.js (App Router)
|
|
2
2
|
|
|
3
|
-
Guide for **Next.js 13+ App Router** (`app/` directory). For
|
|
3
|
+
Guide for **Next.js 13+ App Router** (`app/` directory). For client-only React apps such as Vite or CRA, see **[React SPA](./react.md)**.
|
|
4
4
|
|
|
5
5
|
## Components
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ Guide for **Next.js 13+ App Router** (`app/` directory). For Vite/CRA-style clie
|
|
|
9
9
|
| `<weg-header>` | Site header — bundled logo, CMS nav (signed out), built-in nav (signed in), Sign in / Manage Account / Sign out |
|
|
10
10
|
| `<weg-footer>` | Site footer — social, menu, legal text |
|
|
11
11
|
|
|
12
|
-
Both accept **`layout`** (JSON string recommended in Next). `<weg-header>` also accepts **`signed-in`**, **`user-name`**, **`account-base-url`**, **`current-path`**, and emits **`wegAuthClick`**.
|
|
12
|
+
Both components accept **`layout`** (a JSON string is recommended in Next). `<weg-header>` also accepts **`signed-in`**, **`user-name`**, **`account-base-url`**, **`current-path`**, and emits **`wegAuthClick`**.
|
|
13
13
|
|
|
14
14
|
## Why Next.js is different
|
|
15
15
|
|
|
@@ -62,7 +62,7 @@ Sign-in comes from your CMS `header.menu` like any other link. Handle sign-out v
|
|
|
62
62
|
'use client';
|
|
63
63
|
|
|
64
64
|
import { useCallback } from 'react';
|
|
65
|
-
import { usePathname } from 'next/navigation';
|
|
65
|
+
import { usePathname, useSearchParams } from 'next/navigation';
|
|
66
66
|
import { defineCustomElements } from 'weg-shared-layout/loader';
|
|
67
67
|
import 'weg-shared-layout/weg-header';
|
|
68
68
|
|
|
@@ -84,6 +84,9 @@ export function Header({
|
|
|
84
84
|
onSignedInChange?: (signedIn: boolean) => void;
|
|
85
85
|
}) {
|
|
86
86
|
const pathname = usePathname();
|
|
87
|
+
const searchParams = useSearchParams();
|
|
88
|
+
const query = searchParams.toString();
|
|
89
|
+
const currentPath = query ? `${pathname}?${query}` : pathname;
|
|
87
90
|
|
|
88
91
|
const onAuthClick = useCallback(
|
|
89
92
|
async (event: CustomEvent<{ action: 'sign-in' | 'sign-out' }>) => {
|
|
@@ -101,7 +104,7 @@ export function Header({
|
|
|
101
104
|
<weg-header
|
|
102
105
|
layout={JSON.stringify(layout)}
|
|
103
106
|
signedIn={signedIn}
|
|
104
|
-
currentPath={
|
|
107
|
+
currentPath={currentPath}
|
|
105
108
|
{...(userName ? { userName } : {})}
|
|
106
109
|
suppressHydrationWarning
|
|
107
110
|
onWegAuthClick={onAuthClick}
|
|
@@ -191,13 +194,23 @@ export default function RootLayout({ children }: { children: React.ReactNode })
|
|
|
191
194
|
```tsx
|
|
192
195
|
// app/layout.tsx
|
|
193
196
|
import { SiteChrome } from '@/components/layout/SiteChrome';
|
|
197
|
+
import { menusToLayoutData } from 'weg-shared-layout/menus';
|
|
194
198
|
|
|
195
|
-
const
|
|
199
|
+
const WEG21_API_BASE = 'https://warwickemploymentgroup.com/api/v1/weg21';
|
|
196
200
|
|
|
197
201
|
async function getLayout() {
|
|
198
|
-
const
|
|
199
|
-
|
|
200
|
-
|
|
202
|
+
const headers = { 'wcms-api-key': process.env.WCMS_API_KEY! };
|
|
203
|
+
const [bootstrapRes, menusRes] = await Promise.all([
|
|
204
|
+
fetch(WEG21_API_BASE, { headers, next: { revalidate: 60 } }),
|
|
205
|
+
fetch(`${WEG21_API_BASE}/menus`, { headers, next: { revalidate: 60 } }),
|
|
206
|
+
]);
|
|
207
|
+
|
|
208
|
+
if (!bootstrapRes.ok || !menusRes.ok) {
|
|
209
|
+
throw new Error('Failed to load WEG21 layout');
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
const [bootstrap, menus] = await Promise.all([bootstrapRes.json(), menusRes.json()]);
|
|
213
|
+
return menusToLayoutData(bootstrap, menus);
|
|
201
214
|
}
|
|
202
215
|
|
|
203
216
|
export default async function RootLayout({ children }: { children: React.ReactNode }) {
|
|
@@ -225,17 +238,17 @@ Pass **`current-path`** from the client wrapper. Flat links use prefix matching;
|
|
|
225
238
|
|
|
226
239
|
| API | Signed out | Signed in |
|
|
227
240
|
| --- | --- | --- |
|
|
228
|
-
| `layout.header.menu` | CMS nav rendered (groups + flat links incl. sign-in) |
|
|
241
|
+
| `layout.header.menu` | CMS nav rendered (groups + flat links incl. sign-in) | Still used when provided; built-in signed-in fallback is only used when the menu is empty |
|
|
229
242
|
| `layout.header.logoSrc` | Logo image URL (bundled if omitted) | Built-in bundled logo |
|
|
230
243
|
| `layout.header.logoHref` | Logo link URL | WEG homepage |
|
|
231
|
-
| `signed-in` prop | `false` | `true` — session flag from host app |
|
|
244
|
+
| `signed-in` prop | `false` | `true` — session flag from host app, plus signed-in UI |
|
|
232
245
|
| `user-name` prop | — | User's first name on Manage Account |
|
|
233
246
|
| `account-base-url` prop | — | Account portal origin for signed-in links (optional) |
|
|
234
247
|
| `current-path` prop | Current pathname (optional query) | Highlights the active nav link; e.g. `/career-advice/my-article` |
|
|
235
248
|
| `wegAuthClick` event | Sign-in follows link `href` | `'sign-out'` — host handles logout and redirect |
|
|
236
249
|
| `event.preventDefault()` | Skip default navigation | Required — sign-out has no built-in redirect |
|
|
237
250
|
|
|
238
|
-
**
|
|
251
|
+
**Built-in signed-in fallback menu:** Find a job, Dashboard, Manage Account, Sign out.
|
|
239
252
|
|
|
240
253
|
The logo **image** uses `layout.header.logoSrc` when signed out (bundled if omitted). The logo **link** uses `layout.header.logoHref` when provided; otherwise it defaults to the WEG homepage.
|
|
241
254
|
|
package/docs/publishing.md
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
## `npm publish` does not run your build by default
|
|
4
4
|
|
|
5
|
-
Publishing packs **whatever is already on disk** under the paths listed in [`package.json` `files`](../package.json) (for this package
|
|
5
|
+
Publishing packs **whatever is already on disk** under the paths listed in [`package.json` `files`](../package.json) (for this package that includes `dist/`, `hydrate/`, `docs/`, `loader/`, JSON fixtures, and exported source/type files). It does **not** automatically run `npm run build` unless a lifecycle script does.
|
|
6
6
|
|
|
7
7
|
If you publish with an empty, missing, or half-built `dist/`, consumers get a broken tarball (missing `loader/index.js`, missing `dist/components/*.js`, missing type declarations, etc.).
|
|
8
8
|
|
|
9
9
|
## What this repo does
|
|
10
10
|
|
|
11
|
-
The **`prepack`** script runs **`
|
|
11
|
+
The **`prepack`** script runs **`pnpm run build`** before every:
|
|
12
12
|
|
|
13
13
|
- `npm pack`
|
|
14
14
|
- `npm publish` (which packs first)
|
|
@@ -17,7 +17,7 @@ So the Stencil output and generated `loader/` are always fresh in the tarball.
|
|
|
17
17
|
|
|
18
18
|
```json
|
|
19
19
|
"scripts": {
|
|
20
|
-
"prepack": "
|
|
20
|
+
"prepack": "pnpm run build",
|
|
21
21
|
"build": "stencil build"
|
|
22
22
|
}
|
|
23
23
|
```
|
|
@@ -28,8 +28,8 @@ So the Stencil output and generated `loader/` are always fresh in the tarball.
|
|
|
28
28
|
2. From the package root:
|
|
29
29
|
|
|
30
30
|
```bash
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
pnpm run build
|
|
32
|
+
pnpm test
|
|
33
33
|
npm pack --dry-run
|
|
34
34
|
```
|
|
35
35
|
|
|
@@ -43,7 +43,7 @@ So the Stencil output and generated `loader/` are always fresh in the tarball.
|
|
|
43
43
|
3. Smoke-test the Angular 16 demo (optional but recommended):
|
|
44
44
|
|
|
45
45
|
```bash
|
|
46
|
-
|
|
46
|
+
pnpm run demo:angular16:build
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
See [demo/angular16/README.md](../demo/angular16/README.md).
|
|
@@ -58,8 +58,8 @@ Use `npm publish --dry-run` if you want to exercise the full pack pipeline witho
|
|
|
58
58
|
|
|
59
59
|
## What consumers import
|
|
60
60
|
|
|
61
|
-
Documented in [docs/README.md](./README.md): `loader`, `menus`, `menus-data`, `layout-data`, `weg21-bootstrap.json`, `weg21-menus.json`, and per-tag subpaths. Angular 16 apps need modern `moduleResolution` or the loader-only pattern — [angular.md](./angular.md).
|
|
61
|
+
Documented in [docs/README.md](./README.md): `loader`, `menus`, `menus-data`, `layout-data`, `weg21-bootstrap.json`, `weg21-menus.json`, `hydrate`, and per-tag subpaths. Angular 16 apps need modern `moduleResolution` or the loader-only pattern — [angular.md](./angular.md).
|
|
62
62
|
|
|
63
63
|
## CI
|
|
64
64
|
|
|
65
|
-
If you publish from CI, run **`
|
|
65
|
+
If you publish from CI, run **`pnpm run build`** (or rely on **`npm publish`**, which triggers **`prepack`**) in the same job before `npm publish`, and ensure **devDependencies** (e.g. `@stencil/core`) are installed so `stencil build` succeeds.
|
package/docs/react.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# React (SPA)
|
|
2
2
|
|
|
3
|
-
Guide for **client-rendered** React apps (Vite, Create React App,
|
|
3
|
+
Guide for **client-rendered** React apps (Vite, Create React App, and similar). If you use **Next.js App Router**, see **[Next.js](./nextjs.md)** because SSR and Server Components need a different integration.
|
|
4
4
|
|
|
5
5
|
## Components
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ Guide for **client-rendered** React apps (Vite, Create React App, etc.). If you
|
|
|
9
9
|
| `<weg-header>` | Site header — bundled logo, CMS nav (signed out), built-in nav (signed in), Sign in / Manage Account / Sign out |
|
|
10
10
|
| `<weg-footer>` | Site footer — social links, menu, credits, copyright |
|
|
11
11
|
|
|
12
|
-
Both are **presentational** [Stencil](https://stenciljs.com/) Web Components. They **do not fetch data
|
|
12
|
+
Both are **presentational** [Stencil](https://stenciljs.com/) Web Components. They **do not fetch data**. Your app passes a **`layout`** payload from the WEG CMS WEG21 API (for example via [`fetchWeg21Layout`](../src/utils/menus.ts)) or from the bundled offline fixtures [`weg21-bootstrap.json`](../src/assets/weg21-bootstrap.json) and [`weg21-menus.json`](../src/assets/weg21-menus.json).
|
|
13
13
|
|
|
14
14
|
`<weg-header>` additionally accepts **`signed-in`**, **`user-name`**, **`account-base-url`**, **`current-path`**, and emits **`wegAuthClick`**.
|
|
15
15
|
|
|
@@ -80,7 +80,7 @@ Sign-in is a normal `header.menu` link — add it in your CMS like Register. The
|
|
|
80
80
|
|
|
81
81
|
### Signed in
|
|
82
82
|
|
|
83
|
-
Set **`signed-in`** and optionally **`user-name`**.
|
|
83
|
+
Set **`signed-in`** and optionally **`user-name`**. If `layout.header.menu` is present, the component keeps using that menu while switching to signed-in UI. If `layout.header.menu` is empty, it falls back to the built-in signed-in menu: Find a job, Dashboard, Manage Account, and Sign out. Pass **`account-base-url`** when those fallback account links should use a non-production portal.
|
|
84
84
|
|
|
85
85
|
Handle **`wegAuthClick`** for sign-out (call your logout API, then redirect):
|
|
86
86
|
|
|
@@ -122,7 +122,7 @@ Without React Router, pass `window.location.pathname` (+ `search` when needed) o
|
|
|
122
122
|
|
|
123
123
|
| Prop / event | Purpose |
|
|
124
124
|
| --- | --- |
|
|
125
|
-
| `signedIn={boolean}` |
|
|
125
|
+
| `signedIn={boolean}` | Enables signed-in UI; the built-in signed-in fallback menu is used when `layout.header.menu` is empty |
|
|
126
126
|
| `userName={string}` | First name beside profile icon on Manage Account |
|
|
127
127
|
| `accountBaseUrl={string}` | Account portal origin for signed-in links (optional) |
|
|
128
128
|
| `currentPath={string}` | Current path — highlights active nav (e.g. `/career-advice/foo`) |
|
|
@@ -180,23 +180,17 @@ const currentPath = search ? `${pathname}${search}` : pathname;
|
|
|
180
180
|
import { useEffect, useState } from 'react';
|
|
181
181
|
import 'weg-shared-layout/weg-header';
|
|
182
182
|
import 'weg-shared-layout/weg-footer';
|
|
183
|
-
import { dummyWeg21LayoutData } from 'weg-shared-layout/menus';
|
|
183
|
+
import { dummyWeg21LayoutData, fetchWeg21Layout } from 'weg-shared-layout/menus';
|
|
184
184
|
const layoutFixture = dummyWeg21LayoutData();
|
|
185
185
|
|
|
186
186
|
type LayoutData = typeof layoutFixture;
|
|
187
187
|
|
|
188
|
-
const WEG21_API = 'https://warwickemploymentgroup.com/api/v1/weg21';
|
|
189
|
-
|
|
190
188
|
export function SiteLayout({ children }: { children: React.ReactNode }) {
|
|
191
189
|
const [layout, setLayout] = useState<LayoutData | null>(null);
|
|
192
190
|
|
|
193
191
|
useEffect(() => {
|
|
194
192
|
let cancelled = false;
|
|
195
|
-
|
|
196
|
-
.then((res) => {
|
|
197
|
-
if (!res.ok) throw new Error(`layout fetch failed: ${res.status}`);
|
|
198
|
-
return res.json() as Promise<LayoutData>;
|
|
199
|
-
})
|
|
193
|
+
fetchWeg21Layout({ apiKey: import.meta.env.VITE_WCMS_API_KEY })
|
|
200
194
|
.then((data) => {
|
|
201
195
|
if (!cancelled) setLayout(data);
|
|
202
196
|
})
|
|
@@ -277,6 +271,7 @@ declare module 'react' {
|
|
|
277
271
|
| Empty despite correct data | React set `layout` as attribute | React 19+, or `JSON.stringify`, or ref assignment. |
|
|
278
272
|
| Logo missing on header | Old build without inlined logo | Upgrade package; logo is bundled in `logo-data.ts`. |
|
|
279
273
|
| Auth always Sign in | `signed-in` not set | Bind `signedIn={!!session}`. |
|
|
274
|
+
| Signed-in links are not what you expected | `layout.header.menu` is still being used | Leave `layout.header.menu` empty if you want the built-in signed-in fallback nav. |
|
|
280
275
|
| Manage Account shows label not name | `user-name` not set | Pass `userName` when signed in. |
|
|
281
276
|
| Nav never highlights active page | `current-path` not set | Pass `currentPath` from your router (pathname + query when needed). |
|
|
282
277
|
| `onWegAuthClick` not firing | React CE event binding | Use `addEventListener` on a ref. |
|
package/docs/vanilla.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
| `<weg-header>` | Site header — bundled logo, CMS nav (signed out), built-in nav (signed in), Sign in / Manage Account / Sign out |
|
|
8
8
|
| `<weg-footer>` | Site footer — social links, menu, credits, copyright |
|
|
9
9
|
|
|
10
|
-
Both components are **presentational**: they do **not** fetch data. Pass the same `layout` payload to
|
|
10
|
+
Both components are **presentational**: they do **not** fetch data. Pass the same `layout` payload to both.
|
|
11
11
|
|
|
12
12
|
WEG21 API schema: [`weg21-bootstrap.json`](../src/assets/weg21-bootstrap.json), [`weg21-menus.json`](../src/assets/weg21-menus.json)
|
|
13
13
|
|
|
@@ -82,7 +82,7 @@ Renders `header.menu` from `layout`. Add sign-in as a normal link — `{ "label"
|
|
|
82
82
|
|
|
83
83
|
### Signed in
|
|
84
84
|
|
|
85
|
-
Set **`signedIn`** and optionally **`userName`**.
|
|
85
|
+
Set **`signedIn`** and optionally **`userName`**. If `layout.header.menu` is present, the component keeps using that menu while switching to signed-in UI. If the menu is empty, the built-in signed-in fallback menu is shown instead: Find a job, Dashboard, Manage Account, and Sign out. Set **`accountBaseUrl`** when those fallback account links should use a non-production portal.
|
|
86
86
|
|
|
87
87
|
```js
|
|
88
88
|
header.signedIn = true;
|
|
@@ -138,14 +138,21 @@ Logo **image** uses `header.logoSrc` (bundled if omitted). Logo **link** uses `h
|
|
|
138
138
|
|
|
139
139
|
## Without a bundler
|
|
140
140
|
|
|
141
|
-
|
|
141
|
+
If you are not using a bundler, you cannot import `weg-shared-layout/menus` directly from the package. In that case, fetch or embed a pre-mapped `layout` object yourself, or copy the same mapping logic as [`menusToLayoutData`](../src/utils/menus.ts) into your app.
|
|
142
|
+
|
|
143
|
+
At minimum, the object you assign still needs the same final shape:
|
|
142
144
|
|
|
143
145
|
```js
|
|
144
|
-
const
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
]
|
|
148
|
-
|
|
146
|
+
const layout = {
|
|
147
|
+
header: { menu: [...] },
|
|
148
|
+
footer: {
|
|
149
|
+
menu: [...],
|
|
150
|
+
social: [...],
|
|
151
|
+
credits: '...',
|
|
152
|
+
copyright: '...',
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
|
|
149
156
|
document.getElementById('header').layout = layout;
|
|
150
157
|
document.getElementById('footer').layout = layout;
|
|
151
158
|
```
|