@entur-partner/common 9.3.1 → 9.3.3-alpha.0

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 (47) hide show
  1. package/LICENSE.md +1 -0
  2. package/dist/ActionBar.d.ts +2 -2
  3. package/dist/AuditInfo.d.ts +3 -3
  4. package/dist/Box.d.ts +15 -14
  5. package/dist/Breadcrumbs.d.ts +2 -2
  6. package/dist/ConfirmModal.d.ts +4 -3
  7. package/dist/Content.d.ts +4 -3
  8. package/dist/EnturPartnerLogo.d.ts +6 -5
  9. package/dist/ErrorBoundary.d.ts +1 -1
  10. package/dist/ExpandableMultiLanguageInput.d.ts +4 -4
  11. package/dist/FeatureToggle.d.ts +1 -1
  12. package/dist/FormatCurrencyAmount.d.ts +4 -3
  13. package/dist/FormatDateTime.d.ts +1 -1
  14. package/dist/LanguageSelect.d.ts +4 -4
  15. package/dist/Link.d.ts +2 -2
  16. package/dist/LinkButton.d.ts +3 -3
  17. package/dist/Menu.d.ts +4 -3
  18. package/dist/MultiLanguageInput.d.ts +5 -5
  19. package/dist/OrganisationDropdown.d.ts +2 -2
  20. package/dist/PageTitle.d.ts +1 -1
  21. package/dist/Pager.d.ts +1 -1
  22. package/dist/PermissionCheck.d.ts +2 -2
  23. package/dist/RouteLeavingGuard.d.ts +3 -3
  24. package/dist/Stack.d.ts +3 -2
  25. package/dist/StatusLabel.d.ts +2 -2
  26. package/dist/Text.d.ts +7 -6
  27. package/dist/Unbutton.d.ts +4 -4
  28. package/dist/UserMenu/components/CookieSettingsMenuItem.d.ts +2 -2
  29. package/dist/UserMenu/components/CustomOverflowMenu.d.ts +3 -3
  30. package/dist/UserMenu/components/CustomOverflowMenuItem.d.ts +2 -2
  31. package/dist/UserMenu/components/LanguageSwitchMenuItem.d.ts +2 -2
  32. package/dist/UserMenu/components/LogOutMenuItem.d.ts +2 -2
  33. package/dist/UserMenu/components/UserMenuItem.d.ts +2 -2
  34. package/dist/UserMenu/components/VersionMenuItem.d.ts +1 -1
  35. package/dist/UserMenu/index.d.ts +3 -3
  36. package/dist/UserMenu/useOutsideClick.d.ts +1 -1
  37. package/dist/common.cjs.development.js +793 -793
  38. package/dist/common.cjs.development.js.map +1 -1
  39. package/dist/common.cjs.production.min.js +1 -1
  40. package/dist/common.cjs.production.min.js.map +1 -1
  41. package/dist/common.esm.js +789 -789
  42. package/dist/common.esm.js.map +1 -1
  43. package/dist/index.d.ts +30 -30
  44. package/dist/styles.css +87 -87
  45. package/dist/useEventListener.d.ts +1 -3
  46. package/package.json +62 -62
  47. package/dist/helpers.d.ts +0 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("classnames"),n=require("@entur/typography"),a=require("@entur/icons"),r=require("@entur/button"),l=require("react-router-dom"),o=require("@entur/dropdown"),i=require("@entur/form"),u=require("@entur-partner/util"),s=require("@entur/expand"),c=require("@entur/alert"),m=require("@entur/modal"),d=require("@entur/menu"),p=require("react-helmet-async");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var v=f(e),g=f(t);function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},h.apply(this,arguments)}function E(e,t){return E=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},E(e,t)}function b(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t.indexOf(n=l[a])>=0||(r[n]=e[n]);return r}var x=["as","children","contrast","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","padding","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","margin","display","justifyContent","alignItems","maxWidth","width","background","color","flexDirection","flexWrap","className"];function N(e,t){if(Array.isArray(t)){var n=[];return t[0]&&n.push(e+t[0]),t[1]&&n.push(""+e+t[1]+"-lg"),t[2]&&n.push(""+e+t[2]+"-xl"),n}return[e+t]}var C,y,w,L=function(e){var t=e.as,n=void 0===t?"div":t,a=e.children,r=e.contrast,l=e.paddingTop,o=e.paddingRight,i=e.paddingBottom,u=e.paddingLeft,s=e.paddingX,c=e.paddingY,m=e.padding,d=e.marginTop,p=e.marginRight,f=e.marginBottom,E=e.marginLeft,C=e.marginX,y=e.marginY,w=e.margin,L=e.display,k=e.justifyContent,P=e.alignItems,_=e.maxWidth,O=e.width,B=e.background,S=e.color,I=e.flexDirection,z=e.flexWrap,F=e.className,D=b(e,x),M=[],T=l||c||m,V=i||c||m,A=u||s||m,j=o||s||m,q=d||y||w,R=f||y||w,H=E||C||w,U=p||C||w;r&&M.push("eds-contrast"),T&&M.push.apply(M,N("eps-pt-",T)),V&&M.push.apply(M,N("eps-pb-",V)),A&&M.push.apply(M,N("eps-pl-",A)),j&&M.push.apply(M,N("eps-pr-",j)),q&&M.push.apply(M,N("eps-mt-",q)),R&&M.push.apply(M,N("eps-mb-",R)),H&&M.push.apply(M,N("eps-ml-",H)),U&&M.push.apply(M,N("eps-mr-",U)),L&&M.push.apply(M,N("eps-",L)),k&&M.push.apply(M,N("eps-justify-",k)),P&&M.push.apply(M,N("eps-items-",P)),_&&M.push.apply(M,N("eps-max-w-",_)),O&&M.push.apply(M,N("eps-w-",O)),S&&M.push("eps-color-"+S),B&&M.push("eps-bg-"+B),I&&M.push.apply(M,N("eps-flex-",I)),z&&M.push.apply(M,N("eps-flex-wrap-",z));var W=g.default(M,F);return v.default.createElement(n,h({className:W},D),a)},k=function(t){var n=t.space,a=t.className,r=e.Children.toArray(t.children);return r.length<=1?v.default.createElement(v.default.Fragment,null,r):v.default.createElement("div",{className:a},r.map((function(e,t){return t===r.length-1?v.default.createElement("div",{key:t},e):v.default.createElement(L,{paddingBottom:n,key:t},e)})))},P=["children","className"];function _(e){var t,n;return"true"===(void 0)["VITE_APP_"+e]||"true"===(null==(t=window.localStorage)?void 0:t.getItem(e))||"true"===(null==(n=window.localStorage)?void 0:n.getItem("VITE_APP_"+e))}function O(e){return _(e)}exports.Environment=void 0,(w=exports.Environment||(exports.Environment={})).Local="local",w.Development="dev",w.Staging="staging",w.Production="prod";var B=((C={})[exports.Environment.Local]="#B482FB",C[exports.Environment.Development]="#5AC39A",C[exports.Environment.Staging]="#FFCA28",C),S=function(e){return B[e]},I=((y={})[exports.Environment.Local]="Local",y[exports.Environment.Development]="Dev",y[exports.Environment.Staging]="Staging",y[exports.Environment.Production]="Prod",y),z=function(e){return I[e]},F=["title","accentColor"],D=function(e){var t=e.title,n=e.accentColor,a=void 0===n?"#FF5959":n,r=b(e,F);return v.default.createElement("svg",h({width:257,height:37,viewBox:"0 0 257 37"},r),v.default.createElement("title",null,t),v.default.createElement("g",{fill:"none",fillRule:"evenodd"},v.default.createElement("path",{fill:"#FFF",d:"M0 .231V25.72h18.745v-4.318H4.869v-6.163h12.31v-4.318H4.87V4.55h13.876V.231z"}),v.default.createElement("path",{fill:a,d:"M0 36.408h45.253v-4.32H0z"}),v.default.createElement("path",{fill:"#FFF",d:"M40.384.231v15.425L23.656.231h-.521V25.72h4.869V10.573L44.732 25.72h.521V.23zM69.25 15.238h-7.267v21.17h-4.87v-21.17H49.81V10.92h19.44zM83.863 36.86c-1.646 0-3.142-.255-4.486-.765-1.345-.51-2.493-1.23-3.443-2.159-.95-.928-1.687-2.054-2.208-3.378-.522-1.323-.783-2.797-.783-4.422V10.92h4.869v15.216c0 1.277.209 2.333.626 3.169.417.836.933 1.497 1.548 1.985a5.346 5.346 0 001.982 1.01c.707.186 1.339.278 1.895.278.557 0 1.188-.092 1.896-.279a5.35 5.35 0 001.982-1.01c.614-.487 1.13-1.148 1.548-1.984.417-.836.625-1.892.625-3.169V10.92h4.87v15.216c0 1.625-.256 3.1-.766 4.422-.51 1.324-1.24 2.45-2.19 3.378-.952.929-2.1 1.648-3.444 2.159-1.344.51-2.851.766-4.52.766M104.21 24.047h5.546c1.016 0 1.854-.127 2.513-.383.658-.255 1.179-.592 1.56-1.01.381-.418.641-.888.78-1.41.138-.522.208-1.05.208-1.584 0-.627-.099-1.207-.295-1.741a3.718 3.718 0 00-.901-1.393c-.405-.394-.924-.708-1.56-.94-.636-.232-1.404-.348-2.305-.348h-5.546v8.81zm0 4.248v8.113h-4.87V10.92h11.567c1.3 0 2.49.215 3.57.644 1.08.43 2.004 1.033 2.77 1.81a8.287 8.287 0 011.794 2.787c.43 1.079.645 2.257.645 3.534 0 .952-.128 1.874-.383 2.768-.256.894-.61 1.7-1.063 2.42a7.32 7.32 0 01-1.672 1.863 5.929 5.929 0 01-2.178 1.096l6.339 8.566h-5.808l-5.893-8.113h-4.818z"}),v.default.createElement("g",{fill:a},v.default.createElement("path",{d:"M141.051 23.448h5.628c4.185 0 5.989-1.984 5.989-4.942 0-2.742-1.515-4.618-5.989-4.618h-5.628v9.56zm0 3.067v9.776h-3.571V10.75h9.632c6.674 0 9.127 3.211 9.127 7.54 0 4.979-3.102 8.226-9.2 8.226h-5.988zM169.695 28.715c-1.371-.288-2.958-.505-4.401-.505-2.85 0-4.041 1.263-4.041 3.139s1.407 2.706 3.463 2.706c2.49 0 4.979-1.443 4.979-4.221v-1.119zm-4.293-2.958c1.551 0 3.174.253 4.293.469v-.83c0-2.525-1.154-3.896-4.33-3.896-2.164 0-3.824.866-4.942 2.092l-2.02-2.272c1.732-1.66 3.644-2.598 7.07-2.598 5.052 0 7.469 1.876 7.469 7.215v10.354h-3.211V34.02h-.108c-1.082 1.767-3.211 2.705-5.592 2.705-3.32 0-6.241-1.66-6.241-5.303 0-3.103 1.912-5.664 7.612-5.664zM178.965 19.191h3.211v2.886h.108c.938-1.984 2.922-3.355 5.231-3.355.47 0 .938.036 1.335.144l-.144 3.14a6.77 6.77 0 00-1.552-.181c-3.246 0-4.798 2.633-4.798 5.483v8.983h-3.39v-17.1zM199.961 36.291h-1.912c-4.004 0-5.988-.938-5.988-5.772v-8.55h-2.778V19.19h2.778v-4.654h3.355v4.654h4.473v2.778h-4.473v7.973c0 3.427 1.587 3.535 3.319 3.535h1.226v2.814zM219.767 36.291h-3.391V26.84c0-2.778-1.083-5.375-4.257-5.375-3.14 0-5.268 2.597-5.268 6.169v8.658h-3.391v-17.1h3.32v2.814h.143c.794-1.623 3.067-3.283 5.99-3.283 4.941 0 6.854 3.644 6.854 8.081v9.488zM227.847 26.262h10.57c0-2.597-2.272-4.726-5.087-4.726-2.922 0-5.014 1.948-5.483 4.726zm-.036 2.453c.397 3.355 2.633 5.195 5.844 5.195 2.778 0 4.618-1.623 5.484-2.67l2.164 1.804c-1.37 1.913-4.365 3.716-8.045 3.716-4.942 0-8.73-3.535-8.73-8.55 0-5.195 3.752-9.488 8.983-9.488 5.303 0 8.009 4.365 8.009 8.19 0 .649-.036 1.226-.072 1.803H227.81zM246.245 19.191h3.21v2.886h.109c.938-1.984 2.922-3.355 5.231-3.355.469 0 .938.036 1.335.144l-.145 3.14a6.77 6.77 0 00-1.551-.181c-3.247 0-4.798 2.633-4.798 5.483v8.983h-3.391v-17.1z"}))))};function M(e,t){return!(!e||!(e.contains(t.target)||t.composed&&t.composedPath&&t.composedPath().find((function(t){return t!==window&&e.contains(t)}))))}var T=["className","children","userName","open","onOpenChange","environment"],V=function(e){var t,l,o,i=e.className,u=e.children,s=e.userName,c=e.open,m=e.onOpenChange,d=e.environment,p=b(e,T),f=g.default("eps-overflow-menu__group",{"eps-overflow-menu__group--open":c}),E=v.default.useRef(null),x=v.default.useRef(null);return v.default.useEffect((function(){var e=function(e){M(t.current,e)||M(l.current,e)||o()};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[t=E,l=x,o=function(){return m(!1)}]),v.default.createElement("div",null,v.default.createElement(r.SecondaryButton,h({className:g.default("eps-overflow-menu__button",i),onClick:function(){return m(!c)},"aria-haspopup":!0,role:"button","aria-expanded":c,ref:x},p),v.default.createElement("div",{className:"eps-overflow-menu__button-contents"},v.default.createElement("span",{className:"eds-overflow-menu__user-icon"},v.default.createElement(a.UserIcon,{inline:!0})),v.default.createElement(n.Heading6,{margin:"none",as:"span"},s,void 0!==d&&d!==exports.Environment.Production&&v.default.createElement("span",{style:{color:S(d)}}," ","(",z(d),")")),v.default.createElement("span",{className:"eps-arrow-icon"},v.default.createElement(a.DownArrowIcon,{inline:!0})))),c&&v.default.createElement("div",{className:f,role:"menu",ref:E},u))},A=function(e){return v.default.createElement("button",h({className:g.default(e.className,"eps-overflow-menu__item"),role:"menuitem"},e))},j=function(e){var t=e.language,n=e.onLanguageChange,r=e.setOpen,l=e.name,o=O("USE_BCP-47_LANGUAGE_KEY"),i=o?"nb-NO":"nb",u=o?"en-GB":"en";return v.default.createElement(v.default.Fragment,null,t===u?v.default.createElement(A,{onClick:function(){n(i),r(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0,className:"eps-overflow-menu__icon-margin"},v.default.createElement(a.NorwayIcon,{size:"1rem",inline:!0})),l):v.default.createElement(A,{onClick:function(){n(u),r(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0,className:"eps-overflow-menu__icon-margin"},v.default.createElement(a.UKIcon,{size:"1rem",inline:!0})),l))},q=function(e){var t=e.title,n=e.setOpen,r=l.useNavigate();return v.default.createElement(A,{onClick:function(){r("/app-version"),n(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(a.ChannelsIcon,{className:"eps-version-icon",size:"1rem",inline:!0})),t)},R=function(e){var t=e.name,n=e.setOpen,r=e.onNavigateToMyProfile;return v.default.createElement(l.Link,{to:"/permission-admin/my-profile",style:{textDecoration:"none"}},v.default.createElement(A,{onClick:function(){n(!1),r()},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(a.UserIcon,{size:"1rem",inline:!0})),t))},H=function(e){var t=e.name,n=e.setOpen,r=e.onLogout;return v.default.createElement(A,{onClick:function(){r(),n(!1)},"data-testid":"user-menu-logout",className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(a.LogOutIcon,{size:"1rem",inline:!0})),t)},U=function(e){var t=e.name,n=e.setOpen,r=e.onCookieSettingsOpen;return v.default.createElement(A,{onClick:function(){r(),n(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(a.CookieIcon,{size:"1rem",inline:!0})),t)},W=["label","organisations","onChange","selectedOrganisationId"],G=["language","options","className","onChange"],Y=function(e){var t=e.language,n=e.options,a=e.className,r=e.onChange,l=b(e,G),o=g.default("eps-language-select",a);return v.default.createElement("div",h({},l,{className:o}),v.default.createElement(i.SegmentedControl,{onChange:function(e){u.assertIsDefined(e),r(e)},selectedValue:t},n.map((function(e){return v.default.createElement(i.SegmentedChoice,{key:e.value,value:e.value},e.label,e.required&&v.default.createElement("span",{className:"asterisk-margin"},"*"))}))))},X=["title","inputComponent","languages","values","onChange","name","variant","feedback"],K=["className","inputComponent","alertLabel","alertLevel","name","languages","values","onChange","defaultLanguage","label","onBlur"],J=["children","className"],Q=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={error:null},n}var n,a;a=e,(n=t).prototype=Object.create(a.prototype),n.prototype.constructor=n,E(n,a),t.getDerivedStateFromError=function(e){return{error:e}};var r=t.prototype;return r.componentDidCatch=function(e,t){var n,a;null==(n=(a=this.props).handleError)||n.call(a,e,t)},r.render=function(){var e,t=this,n=this.state.error,a=this.props,r=a.fallback,l=a.children;return n?(e=r)&&"[object Function]"==={}.toString.call(e)?r({retry:function(){return t.setState({error:null})},error:n}):"NotFoundError"===n.name&&"Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node."===n.message?v.default.createElement($,null):r:l},t}(e.Component),Z="EP::locale";function $(){var e=localStorage.getItem(Z),t="nb"===e||"nb-NO"===e;return v.default.createElement(L,{maxWidth:"large"},v.default.createElement(c.BannerAlertBox,{variant:"info",title:t?"En ny versjon av nettsiden er tilgjengelig.":"A new version of the website is available."},v.default.createElement(L,{paddingBottom:"medium"},v.default.createElement(n.Paragraph,{margin:"none"},t?"Vennligst oppdater.":"Please refresh.")),v.default.createElement(r.PrimaryButton,{onClick:function(){return window.location.reload()}},t?"Oppdater":"Refresh")))}var ee=["date","locale","as","hideTime"],te=function(e){var t=e.date,n=e.locale,a=e.as,r=void 0===a?"main":a,l=e.hideTime,o=b(e,ee);return v.default.createElement(r,h({},o),l?u.localeDate(t,n):u.localeDateTime(t,n))},ne=["amount","as"],ae=["items","locale","className"],re=["isOpen","children","message","size","buttons","onConfirm","messages","onClose","onDismiss"],le=function(e){var t=e.isOpen,a=void 0!==t&&t,l=e.children,o=e.message,i=e.size,s=void 0===i?"medium":i,c=e.buttons,d=e.onConfirm,p=e.messages,f=e.onClose,g=e.onDismiss,E=b(e,re),x=l||o,N=f||g;return v.default.createElement(m.Modal,h({size:s,open:a,onDismiss:N},E),u.isString(x)?v.default.createElement(n.Paragraph,null,x):v.default.createElement(L,{paddingBottom:"medium"},x),v.default.createElement(r.ButtonGroup,null,d?v.default.createElement(v.default.Fragment,null,v.default.createElement(r.SecondaryButton,{onClick:N,"data-testid":"cancel-modal-button"},p.cancel),v.default.createElement(r.PrimaryButton,{onClick:d,"data-testid":"confirm-modal-button"},p.confirm)):c))},oe=["children","shouldBlockNavigation"],ie=["as","children","fontSize","color","lineHeight","fontWeight","className"];exports.ActionBar=function(e){var t=e.children;return v.default.createElement(v.default.Fragment,null,v.default.createElement("div",{className:"eps-action-bar-padding"}),v.default.createElement("div",{className:"eps-action-bar"},t))},exports.ActionBarLeft=function(e){return v.default.createElement("div",{className:"eps-action-bar-left"},e.children)},exports.ActionBarRight=function(e){return v.default.createElement("div",{className:"eps-action-bar-right"},e.children)},exports.AuditInfo=function(e){var t=e.items,n=e.locale,a=e.className,r=b(e,ae),l=g.default("ep-audit-info",a);return v.default.createElement("div",h({className:l},r),t.map((function(e,t){var a=e.value;return v.default.createElement(k,{space:"small",key:t},v.default.createElement("div",{className:"ep-audit-info-label"},e.label),v.default.createElement("div",null,u.isDate(a)||u.isDateString(a)?v.default.createElement(te,{date:a,locale:n}):v.default.createElement("span",null,a)))})))},exports.Box=L,exports.Breadcrumbs=function(e){var t=e.prependBreadcrumbItem,n=e.onBreadcrumbLookup,a=u.splitUrlPath(e.pathname).map((function(e){return{title:n(e),path:e}})).filter((function(e){return void 0!==e.title})),r=a.map((function(e,t){var n=e.path;return v.default.createElement(d.BreadcrumbItem,t===a.length-1?{key:n,as:"span"}:{key:n,as:l.Link,to:n},e.title)}));return v.default.createElement(d.BreadcrumbNavigation,null,t?[t].concat(r):r)},exports.ConfirmModal=le,exports.Content=function(e){var t=e.as,n=void 0===t?"main":t,a=e.children,r=g.default(["eps-content",e.className]);return v.default.createElement(n,{className:r},a)},exports.EnturPartnerLogo=function(e){var t=e.as,n=void 0===t?"nav":t,a=e.altText,r=e.environment,l=g.default(["eps-logo-wrapper",e.className]);return v.default.createElement(n,{className:l},v.default.createElement(D,{title:a,className:"logo",accentColor:void 0!==r&&r!==exports.Environment.Production?S(r):void 0}))},exports.EnturPartnerLogoSvg=D,exports.ErrorBoundary=Q,exports.ExpandableMultiLanguageInput=function(e){var t=e.title,n=e.inputComponent,a=e.languages,r=e.values,l=e.onChange,o=e.name,i=e.variant,u=e.feedback,c=b(e,X);return v.default.createElement(s.ExpandablePanel,{title:t,defaultOpen:!0,contentStyle:{padding:"4px 4px 4px 4px",marginTop:"16px",marginBottom:"16px"}},v.default.createElement(k,{space:"medium"},a.map((function(e){var a=e.value,s=e.label;return v.default.createElement(n,h({"data-testid":"multi-lang-input-"+o+"-"+a,key:t+a,label:e.required?s+"*":s,variant:i&&i(a),feedback:u&&u(a),name:o,onChange:function(e){var t,n,o;t=a,n=e.target.value,o=h({},r),""!==n&&n?o[t]=n:delete o[t],l(o)},value:r[a]||""},c))}))))},exports.FeatureToggle=function(e){var t=e.children;return O(e.flag)?v.default.createElement(v.default.Fragment,null,t):null},exports.FormatCurrencyAmount=function(e){var t=e.amount,n=e.as,a=void 0===n?"span":n,r=b(e,ne),l=Number(t)||0,o=new Intl.NumberFormat("nb-NO",{maximumFractionDigits:2,minimumFractionDigits:2}).format(l);return v.default.createElement(a,h({},r),o)},exports.FormatDateTime=te,exports.LanguageSelect=Y,exports.Link=function(e){return v.default.createElement(n.Link,h({},e,{as:l.Link}),e.children)},exports.LinkButton=function(e){var t=e.children,a=e.className,r=b(e,P);return v.default.createElement(n.Link,h({},r,{as:"button",className:g.default("eps-link-button",a)}),t)},exports.Menu=function(e){var t=e.as,n=void 0===t?"nav":t,a=e.children,r=g.default(["eds-contrast","eps-menu",e.className]);return v.default.createElement(n,{className:r},a)},exports.MultiLanguageInput=function(t){var n=t.className,a=t.inputComponent,r=t.alertLabel,l=t.alertLevel,o=t.name,i=t.languages,u=t.values,s=t.onChange,c=t.defaultLanguage,m=void 0===c?"nob":c,d=t.label,p=void 0===d?"":d,f=t.onBlur,E=void 0===f?function(){}:f,x=b(t,K),N=e.useState(m),C=N[0],y=N[1],w=g.default("multi-language-input",n),L=u[C];return v.default.createElement("div",{className:w,tabIndex:0,onBlur:function(e){e.persist();var t=e.currentTarget;setTimeout((function(){t&&!t.contains(document.activeElement)&&E(e)}),0)},"data-testid":"multi-lang-input-"+o},v.default.createElement(k,{space:"extraSmall"},v.default.createElement(Y,{language:C,options:i,onChange:function(e){return function(e){y(e)}(e)}}),v.default.createElement(a,h({label:p,variant:l,feedback:r,name:o,className:"language-item",onChange:function(e){return t=e.target.value,n=Object.assign({},u),""!==t&&t?n[C]=t:delete n[C],void s(n);var t,n},value:L||""},x))))},exports.OrganisationDropDown=function(t){var n=t.label,a=t.organisations,r=t.onChange,l=t.selectedOrganisationId,i=b(t,W),u=e.useState(),s=u[0],c=u[1];return e.useEffect((function(){c(a.find((function(e){return e.organisationId===l})))}),[l]),v.default.createElement(o.SearchableDropdown,h({label:n,items:[].concat(a.sort((function(e,t){return e.tradingName.localeCompare(t.tradingName,"nb")})).map((function(e){return{value:e.organisationId,label:e.tradingName}}))),selectedItem:s?{value:s.organisationId,label:s.tradingName}:null,onChange:function(e){e&&r(e.value)},clearable:!1},i))},exports.PageTitle=function(e){var t=e.onBreadcrumbLookup,n=u.splitUrlPath(e.pathname).map((function(e){return{title:t(e),path:e}})).filter((function(e){return void 0!==e.title})).map((function(e){return e.title})).reverse().join(" | ");return v.default.createElement(p.Helmet,null,v.default.createElement("title",null,n," | Entur Partner"))},exports.Pager=function(e){var t=e.onPageChange,n=e.currentPage,a=Math.ceil(e.collectionSize/e.pageSize);return v.default.createElement(d.Pagination,{pageCount:a,currentPage:n,onPageChange:function(e){t(e)}})},exports.PermissionCheck=function(e){var t=e.children,n=e.fallback,a=void 0===n?null:n,r=e.permissions,l=e.oneOf,o=void 0===l?[]:l,i=e.all,s=u.hasAllPermissions(void 0===i?[]:i,r),c=u.hasOneOfPermissions(o,r);return v.default.createElement(v.default.Fragment,null,s&&c?t:a)},exports.RouteLeavingGuard=function(e){var t=e.children,n=e.shouldBlockNavigation,a=b(e,oe);u.assertIsDefined(!!l.useInRouterContext()||void 0,"RouteLeavingGuard must be used within a data router.");var r=l.useBlocker((function(e){var t=e.nextLocation;return e.currentLocation.pathname!==t.pathname&&n(t)}));return v.default.createElement(le,h({onDismiss:function(){"blocked"===r.state&&r.reset()},open:"blocked"===r.state,onConfirm:function(){"blocked"===r.state&&r.proceed()}},a),t)},exports.Stack=k,exports.StatusLabel=function(e){var t=e.active,n=e.label,a=void 0===n?"":n,r=e.showBullet,l=e.center,o=g.default("eps-status-label__bullet",{active:void 0!==t&&t,aggressive:e.aggressiveInactive}),i=g.default("eps-status-label",{center:l});return v.default.createElement("div",{className:i},r&&v.default.createElement("div",{className:o}),v.default.createElement("div",null,a))},exports.Text=function(e){var t=e.as,n=void 0===t?"span":t,a=e.children,r=e.fontSize,l=e.color,o=e.lineHeight,i=e.fontWeight,u=e.className,s=b(e,ie),c=[];r&&c.push.apply(c,N("eps-font-size-",r)),o&&c.push.apply(c,N("eps-line-height-",o)),i&&c.push("eps-font-weight-"+i);var m=g.default(c,u);return v.default.createElement(L,h({as:n,color:l,className:m},s),a)},exports.Unbutton=function(e){var t=e.children,n=e.className,a=b(e,J);return v.default.createElement(r.Button,h({variant:"primary"},a,{className:g.default("eps-unbutton",n)}),t)},exports.UserMenu=function(t){var n=t.messages,a=t.onLogout,r=t.onLanguageChange,l=t.userName,o=t.language,i=t.environment,u=t.showVersionItem,s=t.showMyProfileItem,c=t.showCookieSettingsItem,m=t.onNavigateToMyProfile,d=t.onCookieSettingsOpen,p=void 0===d?function(){}:d,f=g.default(["eps-user-menu__trigger-button",t.className]),h=e.useState(!1),E=h[1];return v.default.createElement("div",{id:"eps-user-menu"},v.default.createElement(V,{open:h[0],onOpenChange:E,className:f,userName:l,environment:i},v.default.createElement("div",{id:"eps-overflow-menu"},v.default.createElement(j,{name:n.switchLanguage,language:o,onLanguageChange:r,setOpen:E}),u&&n.appVersion&&v.default.createElement(q,{title:n.appVersion,setOpen:E}),s&&n.myProfile&&v.default.createElement(R,{name:n.myProfile,setOpen:E,onNavigateToMyProfile:m}),c&&n.cookieSettings&&v.default.createElement(U,{name:n.cookieSettings,setOpen:E,onCookieSettingsOpen:p}),v.default.createElement(H,{name:n.logout,setOpen:E,onLogout:a}))))},exports.featureFlag=_,exports.getColorForEnvironment=S,exports.getHumanReadableEnvironment=z,exports.responsiveProp=N,exports.useEventListener=function(t,n,a){void 0===a&&(a=window);var r=e.useRef();e.useEffect((function(){r.current=n}),[n]),e.useEffect((function(){if(a&&a.addEventListener){var e=function(e){return null==r.current?void 0:r.current(e)};return a.addEventListener(t,e),function(){a.removeEventListener(t,e)}}}),[t,a])},exports.useFeatureToggle=O;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("@entur-partner/util"),n=require("classnames"),a=require("@entur/menu"),r=require("react-router-dom"),l=require("@entur/button"),o=require("@entur/modal"),i=require("@entur/typography"),u=require("@entur/alert"),s=require("@entur/expand"),c=require("@entur/form"),m=require("@entur/dropdown"),d=require("react-helmet-async"),p=require("@entur/icons");function f(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var v=f(e),g=f(n);function h(){return h=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},h.apply(this,arguments)}function E(e,t){return E=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},E(e,t)}function b(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t.indexOf(n=l[a])>=0||(r[n]=e[n]);return r}var x=["date","locale","as","hideTime"],N=function(e){var n=e.date,a=e.locale,r=e.as,l=void 0===r?"main":r,o=e.hideTime,i=b(e,x);return v.default.createElement(l,h({},i),o?t.localeDate(n,a):t.localeDateTime(n,a))},C=["as","children","contrast","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","padding","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","margin","display","justifyContent","alignItems","maxWidth","width","background","color","flexDirection","flexWrap","className"];function y(e,t){if(Array.isArray(t)){var n=[];return t[0]&&n.push(e+t[0]),t[1]&&n.push(""+e+t[1]+"-lg"),t[2]&&n.push(""+e+t[2]+"-xl"),n}return[e+t]}var w,L,k,P=function(e){var t=e.as,n=void 0===t?"div":t,a=e.children,r=e.contrast,l=e.paddingTop,o=e.paddingRight,i=e.paddingBottom,u=e.paddingLeft,s=e.paddingX,c=e.paddingY,m=e.padding,d=e.marginTop,p=e.marginRight,f=e.marginBottom,E=e.marginLeft,x=e.marginX,N=e.marginY,w=e.margin,L=e.display,k=e.justifyContent,P=e.alignItems,_=e.maxWidth,O=e.width,B=e.background,S=e.color,I=e.flexDirection,z=e.flexWrap,F=e.className,D=b(e,C),M=[],T=l||c||m,V=i||c||m,A=u||s||m,j=o||s||m,q=d||N||w,R=f||N||w,H=E||x||w,U=p||x||w;r&&M.push("eds-contrast"),T&&M.push.apply(M,y("eps-pt-",T)),V&&M.push.apply(M,y("eps-pb-",V)),A&&M.push.apply(M,y("eps-pl-",A)),j&&M.push.apply(M,y("eps-pr-",j)),q&&M.push.apply(M,y("eps-mt-",q)),R&&M.push.apply(M,y("eps-mb-",R)),H&&M.push.apply(M,y("eps-ml-",H)),U&&M.push.apply(M,y("eps-mr-",U)),L&&M.push.apply(M,y("eps-",L)),k&&M.push.apply(M,y("eps-justify-",k)),P&&M.push.apply(M,y("eps-items-",P)),_&&M.push.apply(M,y("eps-max-w-",_)),O&&M.push.apply(M,y("eps-w-",O)),S&&M.push("eps-color-"+S),B&&M.push("eps-bg-"+B),I&&M.push.apply(M,y("eps-flex-",I)),z&&M.push.apply(M,y("eps-flex-wrap-",z));var W=g.default(M,F);return v.default.createElement(n,h({className:W},D),a)},_=function(t){var n=t.space,a=t.className,r=e.Children.toArray(t.children);return r.length<=1?v.default.createElement(v.default.Fragment,null,r):v.default.createElement("div",{className:a},r.map((function(e,t){return t===r.length-1?v.default.createElement("div",{key:t},e):v.default.createElement(P,{paddingBottom:n,key:t},e)})))},O=["items","locale","className"],B=["isOpen","children","message","size","buttons","onConfirm","messages","onClose","onDismiss"],S=function(e){var n=e.isOpen,a=void 0!==n&&n,r=e.children,u=e.message,s=e.size,c=void 0===s?"medium":s,m=e.buttons,d=e.onConfirm,p=e.messages,f=e.onClose,g=e.onDismiss,E=b(e,B),x=r||u,N=f||g;return v.default.createElement(o.Modal,h({size:c,open:a,onDismiss:N},E),t.isString(x)?v.default.createElement(i.Paragraph,null,x):v.default.createElement(P,{paddingBottom:"medium"},x),v.default.createElement(l.ButtonGroup,null,d?v.default.createElement(v.default.Fragment,null,v.default.createElement(l.SecondaryButton,{onClick:N,"data-testid":"cancel-modal-button"},p.cancel),v.default.createElement(l.PrimaryButton,{onClick:d,"data-testid":"confirm-modal-button"},p.confirm)):m))};exports.Environment=void 0,(k=exports.Environment||(exports.Environment={})).Local="local",k.Development="dev",k.Staging="staging",k.Production="prod";var I=((w={})[exports.Environment.Local]="#B482FB",w[exports.Environment.Development]="#5AC39A",w[exports.Environment.Staging]="#FFCA28",w),z=function(e){return I[e]},F=((L={})[exports.Environment.Local]="Local",L[exports.Environment.Development]="Dev",L[exports.Environment.Staging]="Staging",L[exports.Environment.Production]="Prod",L),D=function(e){return F[e]},M=["title","accentColor"],T=function(e){var t=e.title,n=e.accentColor,a=void 0===n?"#FF5959":n,r=b(e,M);return v.default.createElement("svg",h({width:257,height:37,viewBox:"0 0 257 37"},r),v.default.createElement("title",null,t),v.default.createElement("g",{fill:"none",fillRule:"evenodd"},v.default.createElement("path",{fill:"#FFF",d:"M0 .231V25.72h18.745v-4.318H4.869v-6.163h12.31v-4.318H4.87V4.55h13.876V.231z"}),v.default.createElement("path",{fill:a,d:"M0 36.408h45.253v-4.32H0z"}),v.default.createElement("path",{fill:"#FFF",d:"M40.384.231v15.425L23.656.231h-.521V25.72h4.869V10.573L44.732 25.72h.521V.23zM69.25 15.238h-7.267v21.17h-4.87v-21.17H49.81V10.92h19.44zM83.863 36.86c-1.646 0-3.142-.255-4.486-.765-1.345-.51-2.493-1.23-3.443-2.159-.95-.928-1.687-2.054-2.208-3.378-.522-1.323-.783-2.797-.783-4.422V10.92h4.869v15.216c0 1.277.209 2.333.626 3.169.417.836.933 1.497 1.548 1.985a5.346 5.346 0 001.982 1.01c.707.186 1.339.278 1.895.278.557 0 1.188-.092 1.896-.279a5.35 5.35 0 001.982-1.01c.614-.487 1.13-1.148 1.548-1.984.417-.836.625-1.892.625-3.169V10.92h4.87v15.216c0 1.625-.256 3.1-.766 4.422-.51 1.324-1.24 2.45-2.19 3.378-.952.929-2.1 1.648-3.444 2.159-1.344.51-2.851.766-4.52.766M104.21 24.047h5.546c1.016 0 1.854-.127 2.513-.383.658-.255 1.179-.592 1.56-1.01.381-.418.641-.888.78-1.41.138-.522.208-1.05.208-1.584 0-.627-.099-1.207-.295-1.741a3.718 3.718 0 00-.901-1.393c-.405-.394-.924-.708-1.56-.94-.636-.232-1.404-.348-2.305-.348h-5.546v8.81zm0 4.248v8.113h-4.87V10.92h11.567c1.3 0 2.49.215 3.57.644 1.08.43 2.004 1.033 2.77 1.81a8.287 8.287 0 011.794 2.787c.43 1.079.645 2.257.645 3.534 0 .952-.128 1.874-.383 2.768-.256.894-.61 1.7-1.063 2.42a7.32 7.32 0 01-1.672 1.863 5.929 5.929 0 01-2.178 1.096l6.339 8.566h-5.808l-5.893-8.113h-4.818z"}),v.default.createElement("g",{fill:a},v.default.createElement("path",{d:"M141.051 23.448h5.628c4.185 0 5.989-1.984 5.989-4.942 0-2.742-1.515-4.618-5.989-4.618h-5.628v9.56zm0 3.067v9.776h-3.571V10.75h9.632c6.674 0 9.127 3.211 9.127 7.54 0 4.979-3.102 8.226-9.2 8.226h-5.988zM169.695 28.715c-1.371-.288-2.958-.505-4.401-.505-2.85 0-4.041 1.263-4.041 3.139s1.407 2.706 3.463 2.706c2.49 0 4.979-1.443 4.979-4.221v-1.119zm-4.293-2.958c1.551 0 3.174.253 4.293.469v-.83c0-2.525-1.154-3.896-4.33-3.896-2.164 0-3.824.866-4.942 2.092l-2.02-2.272c1.732-1.66 3.644-2.598 7.07-2.598 5.052 0 7.469 1.876 7.469 7.215v10.354h-3.211V34.02h-.108c-1.082 1.767-3.211 2.705-5.592 2.705-3.32 0-6.241-1.66-6.241-5.303 0-3.103 1.912-5.664 7.612-5.664zM178.965 19.191h3.211v2.886h.108c.938-1.984 2.922-3.355 5.231-3.355.47 0 .938.036 1.335.144l-.144 3.14a6.77 6.77 0 00-1.552-.181c-3.246 0-4.798 2.633-4.798 5.483v8.983h-3.39v-17.1zM199.961 36.291h-1.912c-4.004 0-5.988-.938-5.988-5.772v-8.55h-2.778V19.19h2.778v-4.654h3.355v4.654h4.473v2.778h-4.473v7.973c0 3.427 1.587 3.535 3.319 3.535h1.226v2.814zM219.767 36.291h-3.391V26.84c0-2.778-1.083-5.375-4.257-5.375-3.14 0-5.268 2.597-5.268 6.169v8.658h-3.391v-17.1h3.32v2.814h.143c.794-1.623 3.067-3.283 5.99-3.283 4.941 0 6.854 3.644 6.854 8.081v9.488zM227.847 26.262h10.57c0-2.597-2.272-4.726-5.087-4.726-2.922 0-5.014 1.948-5.483 4.726zm-.036 2.453c.397 3.355 2.633 5.195 5.844 5.195 2.778 0 4.618-1.623 5.484-2.67l2.164 1.804c-1.37 1.913-4.365 3.716-8.045 3.716-4.942 0-8.73-3.535-8.73-8.55 0-5.195 3.752-9.488 8.983-9.488 5.303 0 8.009 4.365 8.009 8.19 0 .649-.036 1.226-.072 1.803H227.81zM246.245 19.191h3.21v2.886h.109c.938-1.984 2.922-3.355 5.231-3.355.469 0 .938.036 1.335.144l-.145 3.14a6.77 6.77 0 00-1.551-.181c-3.247 0-4.798 2.633-4.798 5.483v8.983h-3.391v-17.1z"}))))},V=function(e){function n(t){var n;return(n=e.call(this,t)||this).state={error:null},n}var a,r;r=e,(a=n).prototype=Object.create(r.prototype),a.prototype.constructor=a,E(a,r),n.getDerivedStateFromError=function(e){return{error:e}};var l=n.prototype;return l.componentDidCatch=function(e,t){var n,a;null==(n=(a=this.props).handleError)||n.call(a,e,t)},l.render=function(){var e=this,n=this.state.error,a=this.props,r=a.fallback,l=a.children;return n?t.isFunction(r)?r({retry:function(){return e.setState({error:null})},error:n}):"NotFoundError"===n.name&&"Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node."===n.message?v.default.createElement(j,null):r:l},n}(e.Component),A="EP::locale";function j(){var e=localStorage.getItem(A),t="nb"===e||"nb-NO"===e;return v.default.createElement(P,{maxWidth:"large"},v.default.createElement(u.BannerAlertBox,{variant:"info",title:t?"En ny versjon av nettsiden er tilgjengelig.":"A new version of the website is available."},v.default.createElement(P,{paddingBottom:"medium"},v.default.createElement(i.Paragraph,{margin:"none"},t?"Vennligst oppdater.":"Please refresh.")),v.default.createElement(l.PrimaryButton,{onClick:function(){return window.location.reload()}},t?"Oppdater":"Refresh")))}var q=["title","inputComponent","languages","values","onChange","name","variant","feedback"];function R(e){var t,n;return"true"===(void 0)["VITE_APP_"+e]||"true"===(null==(t=window.localStorage)?void 0:t.getItem(e))||"true"===(null==(n=window.localStorage)?void 0:n.getItem("VITE_APP_"+e))}function H(e){return R(e)}var U=["amount","as"],W=["language","options","className","onChange"],G=function(e){var n=e.language,a=e.options,r=e.className,l=e.onChange,o=b(e,W),i=g.default("eps-language-select",r);return v.default.createElement("div",h({},o,{className:i}),v.default.createElement(c.SegmentedControl,{onChange:function(e){t.assertIsDefined(e),l(e)},selectedValue:n},a.map((function(e){return v.default.createElement(c.SegmentedChoice,{key:e.value,value:e.value},e.label,e.required&&v.default.createElement("span",{className:"asterisk-margin"},"*"))}))))},Y=["children","className"],X=["className","inputComponent","alertLabel","alertLevel","name","languages","values","onChange","defaultLanguage","label","onBlur"],K=["label","organisations","onChange","selectedOrganisationId"],J=["children","shouldBlockNavigation"],Q=["as","children","fontSize","color","lineHeight","fontWeight","className"],Z=["children","className"],$=function(e){return v.default.createElement("button",h({className:g.default(e.className,"eps-overflow-menu__item"),role:"menuitem"},e))},ee=function(e){var t=e.name,n=e.setOpen,a=e.onCookieSettingsOpen;return v.default.createElement($,{onClick:function(){a(),n(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(p.CookieIcon,{size:"1rem",inline:!0})),t)};function te(e,t){return!(!e||!(e.contains(t.target)||t.composed&&t.composedPath&&t.composedPath().find((function(t){return t!==window&&e.contains(t)}))))}var ne=["className","children","userName","open","onOpenChange","environment"],ae=function(e){var t,n,a,r=e.className,o=e.children,u=e.userName,s=e.open,c=e.onOpenChange,m=e.environment,d=b(e,ne),f=g.default("eps-overflow-menu__group",{"eps-overflow-menu__group--open":s}),E=v.default.useRef(null),x=v.default.useRef(null);return v.default.useEffect((function(){var e=function(e){te(t.current,e)||te(n.current,e)||a()};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[t=E,n=x,a=function(){return c(!1)}]),v.default.createElement("div",null,v.default.createElement(l.SecondaryButton,h({className:g.default("eps-overflow-menu__button",r),onClick:function(){return c(!s)},"aria-haspopup":!0,"aria-expanded":s,ref:x},d),v.default.createElement("div",{className:"eps-overflow-menu__button-contents"},v.default.createElement("span",{className:"eds-overflow-menu__user-icon"},v.default.createElement(p.UserIcon,{inline:!0})),v.default.createElement(i.Heading6,{margin:"none",as:"span"},u,void 0!==m&&m!==exports.Environment.Production&&v.default.createElement("span",{style:{color:z(m)}}," ","(",D(m),")")),v.default.createElement("span",{className:"eps-arrow-icon"},v.default.createElement(p.DownArrowIcon,{inline:!0})))),s&&v.default.createElement("div",{className:f,role:"menu",ref:E},o))},re=function(e){var t=e.language,n=e.onLanguageChange,a=e.setOpen,r=e.name,l=H("USE_BCP-47_LANGUAGE_KEY"),o=l?"nb-NO":"nb",i=l?"en-GB":"en";return v.default.createElement(v.default.Fragment,null,t===i?v.default.createElement($,{onClick:function(){n(o),a(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0,className:"eps-overflow-menu__icon-margin"},v.default.createElement(p.NorwayIcon,{size:"1rem",inline:!0})),r):v.default.createElement($,{onClick:function(){n(i),a(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0,className:"eps-overflow-menu__icon-margin"},v.default.createElement(p.UKIcon,{size:"1rem",inline:!0})),r))},le=function(e){var t=e.name,n=e.setOpen,a=e.onLogout;return v.default.createElement($,{onClick:function(){a(),n(!1)},"data-testid":"user-menu-logout",className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(p.LogOutIcon,{size:"1rem",inline:!0})),t)},oe=function(e){var t=e.name,n=e.setOpen,a=e.onNavigateToMyProfile;return v.default.createElement(r.Link,{to:"/permission-admin/my-profile",style:{textDecoration:"none"}},v.default.createElement($,{onClick:function(){n(!1),a()},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(p.UserIcon,{size:"1rem",inline:!0})),t))},ie=function(e){var t=e.title,n=e.setOpen,a=r.useNavigate();return v.default.createElement($,{onClick:function(){a("/app-version"),n(!1)},className:"eps-overflow-menu__item"},v.default.createElement("span",{"aria-hidden":!0},v.default.createElement(p.ChannelsIcon,{className:"eps-version-icon",size:"1rem",inline:!0})),t)};exports.ActionBar=function(e){var t=e.children;return v.default.createElement(v.default.Fragment,null,v.default.createElement("div",{className:"eps-action-bar-padding"}),v.default.createElement("div",{className:"eps-action-bar"},t))},exports.ActionBarLeft=function(e){return v.default.createElement("div",{className:"eps-action-bar-left"},e.children)},exports.ActionBarRight=function(e){return v.default.createElement("div",{className:"eps-action-bar-right"},e.children)},exports.AuditInfo=function(e){var n=e.items,a=e.locale,r=e.className,l=b(e,O),o=g.default("ep-audit-info",r);return v.default.createElement("div",h({className:o},l),n.map((function(e){var n=e.label,r=e.value;return v.default.createElement(_,{space:"small",key:r.toString()},v.default.createElement("div",{className:"ep-audit-info-label"},n),v.default.createElement("div",null,t.isDate(r)||t.isDateString(r)?v.default.createElement(N,{date:r,locale:a}):v.default.createElement("span",null,r)))})))},exports.Box=P,exports.Breadcrumbs=function(e){var n=e.prependBreadcrumbItem,l=e.onBreadcrumbLookup,o=t.splitUrlPath(e.pathname).map((function(e){return{title:l(e),path:e}})).filter((function(e){return void 0!==e.title})),i=o.map((function(e,t){var n=e.path;return v.default.createElement(a.BreadcrumbItem,t===o.length-1?{key:n,as:"span"}:{key:n,as:r.Link,to:n},e.title)}));return v.default.createElement(a.BreadcrumbNavigation,null,n?[n].concat(i):i)},exports.ConfirmModal=S,exports.Content=function(e){var t=e.as,n=void 0===t?"main":t,a=e.children,r=g.default(["eps-content",e.className]);return v.default.createElement(n,{className:r},a)},exports.EnturPartnerLogo=function(e){var t=e.as,n=void 0===t?"nav":t,a=e.altText,r=e.environment,l=g.default(["eps-logo-wrapper",e.className]);return v.default.createElement(n,{className:l},v.default.createElement(T,{title:a,className:"logo",accentColor:void 0!==r&&r!==exports.Environment.Production?z(r):void 0}))},exports.EnturPartnerLogoSvg=T,exports.ErrorBoundary=V,exports.ExpandableMultiLanguageInput=function(e){var t=e.title,n=e.inputComponent,a=e.languages,r=e.values,l=e.onChange,o=e.name,i=e.variant,u=e.feedback,c=b(e,q);return v.default.createElement(s.ExpandablePanel,{title:t,defaultOpen:!0,contentStyle:{padding:"4px 4px 4px 4px",marginTop:"16px",marginBottom:"16px"}},v.default.createElement(_,{space:"medium"},a.map((function(e){var a=e.value,s=e.label;return v.default.createElement(n,h({"data-testid":"multi-lang-input-"+o+"-"+a,key:t+a,label:e.required?s+"*":s,variant:null==i?void 0:i(a),feedback:null==u?void 0:u(a),name:o,onChange:function(e){var t,n,o;t=a,n=e.target.value,o=h({},r),""!==n&&n?o[t]=n:delete o[t],l(o)},value:r[a]||""},c))}))))},exports.FeatureToggle=function(e){var t=e.children;return H(e.flag)?v.default.createElement(v.default.Fragment,null,t):null},exports.FormatCurrencyAmount=function(e){var t=e.amount,n=e.as,a=void 0===n?"span":n,r=b(e,U),l=Number(t)||0,o=new Intl.NumberFormat("nb-NO",{maximumFractionDigits:2,minimumFractionDigits:2}).format(l);return v.default.createElement(a,h({},r),o)},exports.FormatDateTime=N,exports.LanguageSelect=G,exports.Link=function(e){return v.default.createElement(i.Link,h({},e,{as:r.Link}),e.children)},exports.LinkButton=function(e){var t=e.children,n=e.className,a=b(e,Y);return v.default.createElement(i.Link,h({},a,{as:"button",className:g.default("eps-link-button",n)}),t)},exports.Menu=function(e){var t=e.as,n=void 0===t?"nav":t,a=e.children,r=g.default(["eds-contrast","eps-menu",e.className]);return v.default.createElement(n,{className:r},a)},exports.MultiLanguageInput=function(t){var n=t.className,a=t.inputComponent,r=t.alertLabel,l=t.alertLevel,o=t.name,i=t.languages,u=t.values,s=t.onChange,c=t.defaultLanguage,m=void 0===c?"nob":c,d=t.label,p=void 0===d?"":d,f=t.onBlur,E=void 0===f?function(){}:f,x=b(t,X),N=e.useState(m),C=N[0],y=N[1],w=g.default("multi-language-input",n),L=u[C];return v.default.createElement("div",{className:w,tabIndex:0,onBlur:function(e){e.persist();var t=e.currentTarget;setTimeout((function(){t&&!t.contains(document.activeElement)&&E(e)}),0)},"data-testid":"multi-lang-input-"+o},v.default.createElement(_,{space:"extraSmall"},v.default.createElement(G,{language:C,options:i,onChange:function(e){return function(e){y(e)}(e)}}),v.default.createElement(a,h({label:p,variant:l,feedback:r,name:o,className:"language-item",onChange:function(e){return t=e.target.value,n=Object.assign({},u),""!==t&&t?n[C]=t:delete n[C],void s(n);var t,n},value:L||""},x))))},exports.OrganisationDropDown=function(t){var n=t.label,a=t.organisations,r=t.onChange,l=t.selectedOrganisationId,o=b(t,K),i=e.useState(),u=i[0],s=i[1];return e.useEffect((function(){s(a.find((function(e){return e.organisationId===l})))}),[l,a]),v.default.createElement(m.SearchableDropdown,h({label:n,items:[].concat(a.sort((function(e,t){return e.tradingName.localeCompare(t.tradingName,"nb")})).map((function(e){return{value:e.organisationId,label:e.tradingName}}))),selectedItem:u?{value:u.organisationId,label:u.tradingName}:null,onChange:function(e){e&&r(e.value)},clearable:!1},o))},exports.PageTitle=function(e){var n=e.onBreadcrumbLookup,a=t.splitUrlPath(e.pathname).map((function(e){return{title:n(e),path:e}})).filter((function(e){return void 0!==e.title})).map((function(e){return e.title})).reverse().join(" | ");return v.default.createElement(d.Helmet,null,v.default.createElement("title",null,a," | Entur Partner"))},exports.Pager=function(e){var t=e.onPageChange,n=e.currentPage,r=Math.ceil(e.collectionSize/e.pageSize);return v.default.createElement(a.Pagination,{pageCount:r,currentPage:n,onPageChange:function(e){t(e)}})},exports.PermissionCheck=function(e){var n=e.children,a=e.fallback,r=void 0===a?null:a,l=e.permissions,o=e.oneOf,i=void 0===o?[]:o,u=e.all,s=t.hasAllPermissions(void 0===u?[]:u,l),c=t.hasOneOfPermissions(i,l);return v.default.createElement(v.default.Fragment,null,s&&c?n:r)},exports.RouteLeavingGuard=function(e){var n=e.children,a=e.shouldBlockNavigation,l=b(e,J);t.assertIsDefined(!!r.useInRouterContext()||void 0,"RouteLeavingGuard must be used within a data router.");var o=r.useBlocker((function(e){var t=e.nextLocation;return e.currentLocation.pathname!==t.pathname&&a(t)}));return v.default.createElement(S,h({onDismiss:function(){"blocked"===o.state&&o.reset()},open:"blocked"===o.state,onConfirm:function(){"blocked"===o.state&&o.proceed()}},l),n)},exports.Stack=_,exports.StatusLabel=function(e){var t=e.active,n=e.label,a=void 0===n?"":n,r=e.showBullet,l=e.center,o=g.default("eps-status-label__bullet",{active:void 0!==t&&t,aggressive:e.aggressiveInactive}),i=g.default("eps-status-label",{center:l});return v.default.createElement("div",{className:i},r&&v.default.createElement("div",{className:o}),v.default.createElement("div",null,a))},exports.Text=function(e){var t=e.as,n=void 0===t?"span":t,a=e.children,r=e.fontSize,l=e.color,o=e.lineHeight,i=e.fontWeight,u=e.className,s=b(e,Q),c=[];r&&c.push.apply(c,y("eps-font-size-",r)),o&&c.push.apply(c,y("eps-line-height-",o)),i&&c.push("eps-font-weight-"+i);var m=g.default(c,u);return v.default.createElement(P,h({as:n,color:l,className:m},s),a)},exports.Unbutton=function(e){var t=e.children,n=e.className,a=b(e,Z);return v.default.createElement(l.Button,h({variant:"primary"},a,{className:g.default("eps-unbutton",n)}),t)},exports.UserMenu=function(t){var n=t.messages,a=t.onLogout,r=t.onLanguageChange,l=t.userName,o=t.language,i=t.environment,u=t.showVersionItem,s=t.showMyProfileItem,c=t.showCookieSettingsItem,m=t.onNavigateToMyProfile,d=t.onCookieSettingsOpen,p=void 0===d?function(){}:d,f=g.default(["eps-user-menu__trigger-button",t.className]),h=e.useState(!1),E=h[1];return v.default.createElement("div",{id:"eps-user-menu"},v.default.createElement(ae,{open:h[0],onOpenChange:E,className:f,userName:l,environment:i},v.default.createElement("div",{id:"eps-overflow-menu"},v.default.createElement(re,{name:n.switchLanguage,language:o,onLanguageChange:r,setOpen:E}),u&&n.appVersion&&v.default.createElement(ie,{title:n.appVersion,setOpen:E}),s&&n.myProfile&&v.default.createElement(oe,{name:n.myProfile,setOpen:E,onNavigateToMyProfile:m}),c&&n.cookieSettings&&v.default.createElement(ee,{name:n.cookieSettings,setOpen:E,onCookieSettingsOpen:p}),v.default.createElement(le,{name:n.logout,setOpen:E,onLogout:a}))))},exports.featureFlag=R,exports.getColorForEnvironment=z,exports.getHumanReadableEnvironment=D,exports.responsiveProp=y,exports.useEventListener=function(t,n,a){void 0===a&&(a=window);var r=e.useRef();e.useEffect((function(){r.current=n}),[n]),e.useEffect((function(){var e;if(null==(e=a)?void 0:e.addEventListener){var n=function(e){return null==r.current?void 0:r.current(e)};return a.addEventListener(t,n),function(){a.removeEventListener(t,n)}}}),[t,a])},exports.useFeatureToggle=H;
2
2
  //# sourceMappingURL=common.cjs.production.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.cjs.production.min.js","sources":["../src/Box.tsx","../src/environment.ts","../src/Stack.tsx","../src/FeatureToggle.tsx","../src/EnturPartnerLogo.tsx","../src/UserMenu/useOutsideClick.ts","../src/UserMenu/components/CustomOverflowMenu.tsx","../src/UserMenu/components/CustomOverflowMenuItem.tsx","../src/UserMenu/components/LanguageSwitchMenuItem.tsx","../src/UserMenu/components/VersionMenuItem.tsx","../src/UserMenu/components/UserMenuItem.tsx","../src/UserMenu/components/LogOutMenuItem.tsx","../src/UserMenu/components/CookieSettingsMenuItem.tsx","../src/LanguageSelect.tsx","../src/ErrorBoundary.tsx","../src/helpers.ts","../src/FormatDateTime.tsx","../src/ConfirmModal.tsx","../src/ActionBar.tsx","../src/AuditInfo.tsx","../src/Breadcrumbs.tsx","../src/Content.tsx","../src/ExpandableMultiLanguageInput.tsx","../src/FormatCurrencyAmount.tsx","../src/Link.tsx","../src/LinkButton.tsx","../src/Menu.tsx","../src/MultiLanguageInput.tsx","../src/OrganisationDropdown.tsx","../src/PageTitle.tsx","../src/Pager.tsx","../src/PermissionCheck.tsx","../src/RouteLeavingGuard.tsx","../src/StatusLabel.tsx","../src/Text.tsx","../src/Unbutton.tsx","../src/UserMenu/index.tsx","../src/useEventListener.ts"],"sourcesContent":["import './Box.scss';\n\nimport React, { ReactNode } from 'react';\nimport cx from 'classnames';\n\ntype StyleSpacing =\n | 'none'\n | 'extraSmall2'\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge'\n | 'extraLarge2'\n | 'extraLarge3'\n | 'extraLarge4'\n | 'extraLarge5'\n | 'extraLarge6'\n | 'extraLarge7'\n | 'extraLarge8'\n | 'extraLarge9';\n\ntype StyleMargin = StyleSpacing | 'auto';\n\ntype StyleDisplay = 'block' | 'flex' | 'inline' | 'inline-block';\ntype StyleJustifyContent = 'center' | 'space-between' | 'start' | 'end';\ntype StyleAlignItems = 'center' | 'start' | 'end' | 'stretch' | 'baseline';\n\ntype StyleMaxWidth =\n | 'none'\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge'\n | 'extraLarge2'\n | 'extraLarge3'\n | 'extraLarge4'\n | 'extraLarge5'\n | 'extraLarge6'\n | 'full';\ntype StyleWidth = 'auto' | 'full';\n\nexport type StyleBackground = 'blue' | 'lavender' | 'white' | 'blue70';\nexport type StyleColor = 'blue' | 'lavender' | 'white' | 'black';\n\ntype StyleFlexDirection = 'row' | 'column' | 'row-reverse' | 'column-reverse';\ntype StyleFlexWrap = 'wrap' | 'nowrap' | 'wrap-reverse';\n\nexport type ResponsiveStyleSpacing =\n | StyleSpacing\n | [StyleSpacing?, StyleSpacing?, StyleSpacing?];\nexport type ResponsiveStyleMargin =\n | StyleMargin\n | [StyleMargin?, StyleMargin?, StyleMargin?];\n\nexport type ResponsiveStyleDisplay =\n | StyleDisplay\n | [StyleDisplay?, StyleDisplay?, StyleDisplay?];\nexport type ResponsiveStyleJustifyContent =\n | StyleJustifyContent\n | [StyleJustifyContent?, StyleJustifyContent?, StyleJustifyContent?];\nexport type ResponsiveStyleAlignItems =\n | StyleAlignItems\n | [StyleAlignItems?, StyleAlignItems?, StyleAlignItems?];\n\nexport type ResponsiveStyleMaxWidth =\n | StyleMaxWidth\n | [StyleMaxWidth?, StyleMaxWidth?, StyleMaxWidth?];\nexport type ResponsiveStyleWidth =\n | StyleWidth\n | [StyleWidth?, StyleWidth?, StyleWidth?];\n\nexport type ResponsiveStyleFlexDirection =\n | StyleFlexDirection\n | [StyleFlexDirection?, StyleFlexDirection?, StyleFlexDirection?];\nexport type ResponsiveStyleFlexWrap =\n | StyleFlexWrap\n | [StyleFlexWrap?, StyleFlexWrap?, StyleFlexWrap?];\n\nexport interface BoxProps {\n className?: string;\n as?: React.ElementType;\n [key: string]: any;\n children: ReactNode;\n\n contrast?: boolean;\n\n paddingTop?: ResponsiveStyleSpacing;\n paddingRight?: ResponsiveStyleSpacing;\n paddingBottom?: ResponsiveStyleSpacing;\n paddingLeft?: ResponsiveStyleSpacing;\n paddingX?: ResponsiveStyleSpacing;\n paddingY?: ResponsiveStyleSpacing;\n padding?: ResponsiveStyleSpacing;\n\n marginTop?: ResponsiveStyleMargin;\n marginRight?: ResponsiveStyleMargin;\n marginBottom?: ResponsiveStyleMargin;\n marginLeft?: ResponsiveStyleMargin;\n marginX?: ResponsiveStyleMargin;\n marginY?: ResponsiveStyleMargin;\n margin?: ResponsiveStyleMargin;\n\n display?: ResponsiveStyleDisplay;\n justifyContent?: ResponsiveStyleJustifyContent;\n alignItems?: ResponsiveStyleAlignItems;\n\n maxWidth?: ResponsiveStyleMaxWidth;\n width?: ResponsiveStyleWidth;\n background?: StyleBackground;\n color?: StyleColor;\n\n flexDirection?: ResponsiveStyleFlexDirection;\n flexWrap?: ResponsiveStyleFlexWrap;\n}\n\ntype ResponsiveProp = string | [string?, string?, string?];\n\nexport function responsiveProp(prefix: string, prop: ResponsiveProp): string[] {\n if (Array.isArray(prop)) {\n const classes = [];\n prop[0] && classes.push(prefix + prop[0]);\n prop[1] && classes.push(`${prefix}${prop[1]}-lg`);\n prop[2] && classes.push(`${prefix}${prop[2]}-xl`);\n return classes;\n }\n return [prefix + prop];\n}\n\nexport const Box = ({\n as: Component = 'div',\n children,\n contrast,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n paddingX,\n paddingY,\n padding,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n marginX,\n marginY,\n margin,\n display,\n justifyContent,\n alignItems,\n maxWidth,\n width,\n background,\n color,\n flexDirection,\n flexWrap,\n className,\n ...rest\n}: BoxProps) => {\n const classes = [];\n const resolvedPaddingTop = paddingTop || paddingY || padding;\n const resolvedPaddingBottom = paddingBottom || paddingY || padding;\n const resolvedPaddingLeft = paddingLeft || paddingX || padding;\n const resolvedPaddingRight = paddingRight || paddingX || padding;\n\n const resolvedMarginTop = marginTop || marginY || margin;\n const resolvedMarginBottom = marginBottom || marginY || margin;\n const resolvedMarginLeft = marginLeft || marginX || margin;\n const resolvedMarginRight = marginRight || marginX || margin;\n\n contrast && classes.push('eds-contrast');\n resolvedPaddingTop &&\n classes.push(...responsiveProp('eps-pt-', resolvedPaddingTop));\n resolvedPaddingBottom &&\n classes.push(...responsiveProp('eps-pb-', resolvedPaddingBottom));\n resolvedPaddingLeft &&\n classes.push(...responsiveProp('eps-pl-', resolvedPaddingLeft));\n resolvedPaddingRight &&\n classes.push(...responsiveProp('eps-pr-', resolvedPaddingRight));\n resolvedMarginTop &&\n classes.push(...responsiveProp('eps-mt-', resolvedMarginTop));\n resolvedMarginBottom &&\n classes.push(...responsiveProp('eps-mb-', resolvedMarginBottom));\n resolvedMarginLeft &&\n classes.push(...responsiveProp('eps-ml-', resolvedMarginLeft));\n resolvedMarginRight &&\n classes.push(...responsiveProp('eps-mr-', resolvedMarginRight));\n\n display && classes.push(...responsiveProp('eps-', display));\n justifyContent &&\n classes.push(...responsiveProp('eps-justify-', justifyContent));\n if (alignItems) {\n classes.push(...responsiveProp('eps-items-', alignItems));\n }\n\n maxWidth && classes.push(...responsiveProp('eps-max-w-', maxWidth));\n width && classes.push(...responsiveProp('eps-w-', width));\n\n color && classes.push(`eps-color-${color}`);\n background && classes.push(`eps-bg-${background}`);\n\n flexDirection && classes.push(...responsiveProp('eps-flex-', flexDirection));\n flexWrap && classes.push(...responsiveProp('eps-flex-wrap-', flexWrap));\n\n const classList = cx(classes, className);\n\n return (\n <Component className={classList} {...rest}>\n {children}\n </Component>\n );\n};\n","export enum Environment {\n Local = 'local',\n Development = 'dev',\n Staging = 'staging',\n Production = 'prod',\n}\n\nconst environmentColors: Record<\n Exclude<Environment, Environment.Production>,\n string\n> = {\n [Environment.Local]: '#B482FB',\n [Environment.Development]: '#5AC39A',\n [Environment.Staging]: '#FFCA28',\n};\n\n/**\n * Gets the color for the given environment. This is the color used for the environment\n * indicator. There is no color for production as it should not have any special environment\n * indication.\n */\nexport const getColorForEnvironment = (\n environment: Exclude<Environment, Environment.Production>\n) => environmentColors[environment];\n\nconst humanReadableEnvironment: Record<Environment, string> = {\n [Environment.Local]: 'Local',\n [Environment.Development]: 'Dev',\n [Environment.Staging]: 'Staging',\n [Environment.Production]: 'Prod',\n};\n\nexport const getHumanReadableEnvironment = (environment: Environment) =>\n humanReadableEnvironment[environment];\n","import React, { ReactNode, Children } from 'react';\n\nimport { ResponsiveStyleSpacing, Box } from './Box';\n\nexport interface StackProps {\n className?: string;\n children: ReactNode;\n space: ResponsiveStyleSpacing;\n}\n\nexport const Stack = ({ children, space, className }: StackProps) => {\n const stackItems = Children.toArray(children);\n if (stackItems.length <= 1) {\n return <>{stackItems}</>;\n }\n\n return (\n <div className={className}>\n {stackItems.map((child, index) =>\n index === stackItems.length - 1 ? (\n <div key={index}>{child}</div>\n ) : (\n <Box paddingBottom={space} key={index}>\n {child}\n </Box>\n )\n )}\n </div>\n );\n};\n","/// <reference types=\"vite/client\" />\nimport React, { ReactNode } from 'react';\n\n/**\n * Returns true if the provided flag exist in localStorage\n * or is set as an environment variable.\n *\n * @param flag case sensitive flag. If it is an environment variable\n * you can drop the VITE_APP_ prefix.\n */\nexport function featureFlag(flag: string): boolean {\n return (\n import.meta.env[`VITE_APP_${flag}`] === 'true' ||\n window.localStorage?.getItem(flag) === 'true' ||\n window.localStorage?.getItem(`VITE_APP_${flag}`) === 'true'\n );\n}\n\n/**\n * Returns true if the provided flag exist in localStorage\n * or is set as an environment variable.\n *\n * @param flag case sensitive flag. If it is an environment variable\n * you can drop the VITE_APP_ prefix.\n */\nexport function useFeatureToggle(flag: string): boolean {\n return featureFlag(flag);\n}\n\nexport interface FeatureToggleProps {\n /** Visible if flag exist, hidden if not.*/\n children: ReactNode;\n /** Case sensitive flag. If it is an environment variable\n * you can drop the VITE_APP_ prefix. */\n flag: string;\n}\n\nexport const FeatureToggle = ({ children, flag }: FeatureToggleProps) => {\n const feature = useFeatureToggle(flag);\n if (feature) {\n return <>{children}</>;\n }\n return null;\n};\n","import './EnturPartnerLogo.scss';\n\nimport React, { FC } from 'react';\nimport classnames from 'classnames';\n\nimport { Environment, getColorForEnvironment } from './environment';\n\ninterface LogoProps {\n title: string;\n className?: string;\n accentColor?: string;\n [key: string]: any;\n}\n\nexport const EnturPartnerLogoSvg: FC<LogoProps> = ({\n title,\n accentColor = '#FF5959',\n ...rest\n}) => {\n return (\n <svg width={257} height={37} viewBox=\"0 0 257 37\" {...rest}>\n <title>{title}</title>\n <g fill=\"none\" fillRule=\"evenodd\">\n <path\n fill=\"#FFF\"\n d=\"M0 .231V25.72h18.745v-4.318H4.869v-6.163h12.31v-4.318H4.87V4.55h13.876V.231z\"\n />\n <path fill={accentColor} d=\"M0 36.408h45.253v-4.32H0z\" />\n <path\n fill=\"#FFF\"\n d=\"M40.384.231v15.425L23.656.231h-.521V25.72h4.869V10.573L44.732 25.72h.521V.23zM69.25 15.238h-7.267v21.17h-4.87v-21.17H49.81V10.92h19.44zM83.863 36.86c-1.646 0-3.142-.255-4.486-.765-1.345-.51-2.493-1.23-3.443-2.159-.95-.928-1.687-2.054-2.208-3.378-.522-1.323-.783-2.797-.783-4.422V10.92h4.869v15.216c0 1.277.209 2.333.626 3.169.417.836.933 1.497 1.548 1.985a5.346 5.346 0 001.982 1.01c.707.186 1.339.278 1.895.278.557 0 1.188-.092 1.896-.279a5.35 5.35 0 001.982-1.01c.614-.487 1.13-1.148 1.548-1.984.417-.836.625-1.892.625-3.169V10.92h4.87v15.216c0 1.625-.256 3.1-.766 4.422-.51 1.324-1.24 2.45-2.19 3.378-.952.929-2.1 1.648-3.444 2.159-1.344.51-2.851.766-4.52.766M104.21 24.047h5.546c1.016 0 1.854-.127 2.513-.383.658-.255 1.179-.592 1.56-1.01.381-.418.641-.888.78-1.41.138-.522.208-1.05.208-1.584 0-.627-.099-1.207-.295-1.741a3.718 3.718 0 00-.901-1.393c-.405-.394-.924-.708-1.56-.94-.636-.232-1.404-.348-2.305-.348h-5.546v8.81zm0 4.248v8.113h-4.87V10.92h11.567c1.3 0 2.49.215 3.57.644 1.08.43 2.004 1.033 2.77 1.81a8.287 8.287 0 011.794 2.787c.43 1.079.645 2.257.645 3.534 0 .952-.128 1.874-.383 2.768-.256.894-.61 1.7-1.063 2.42a7.32 7.32 0 01-1.672 1.863 5.929 5.929 0 01-2.178 1.096l6.339 8.566h-5.808l-5.893-8.113h-4.818z\"\n />\n <g fill={accentColor}>\n <path d=\"M141.051 23.448h5.628c4.185 0 5.989-1.984 5.989-4.942 0-2.742-1.515-4.618-5.989-4.618h-5.628v9.56zm0 3.067v9.776h-3.571V10.75h9.632c6.674 0 9.127 3.211 9.127 7.54 0 4.979-3.102 8.226-9.2 8.226h-5.988zM169.695 28.715c-1.371-.288-2.958-.505-4.401-.505-2.85 0-4.041 1.263-4.041 3.139s1.407 2.706 3.463 2.706c2.49 0 4.979-1.443 4.979-4.221v-1.119zm-4.293-2.958c1.551 0 3.174.253 4.293.469v-.83c0-2.525-1.154-3.896-4.33-3.896-2.164 0-3.824.866-4.942 2.092l-2.02-2.272c1.732-1.66 3.644-2.598 7.07-2.598 5.052 0 7.469 1.876 7.469 7.215v10.354h-3.211V34.02h-.108c-1.082 1.767-3.211 2.705-5.592 2.705-3.32 0-6.241-1.66-6.241-5.303 0-3.103 1.912-5.664 7.612-5.664zM178.965 19.191h3.211v2.886h.108c.938-1.984 2.922-3.355 5.231-3.355.47 0 .938.036 1.335.144l-.144 3.14a6.77 6.77 0 00-1.552-.181c-3.246 0-4.798 2.633-4.798 5.483v8.983h-3.39v-17.1zM199.961 36.291h-1.912c-4.004 0-5.988-.938-5.988-5.772v-8.55h-2.778V19.19h2.778v-4.654h3.355v4.654h4.473v2.778h-4.473v7.973c0 3.427 1.587 3.535 3.319 3.535h1.226v2.814zM219.767 36.291h-3.391V26.84c0-2.778-1.083-5.375-4.257-5.375-3.14 0-5.268 2.597-5.268 6.169v8.658h-3.391v-17.1h3.32v2.814h.143c.794-1.623 3.067-3.283 5.99-3.283 4.941 0 6.854 3.644 6.854 8.081v9.488zM227.847 26.262h10.57c0-2.597-2.272-4.726-5.087-4.726-2.922 0-5.014 1.948-5.483 4.726zm-.036 2.453c.397 3.355 2.633 5.195 5.844 5.195 2.778 0 4.618-1.623 5.484-2.67l2.164 1.804c-1.37 1.913-4.365 3.716-8.045 3.716-4.942 0-8.73-3.535-8.73-8.55 0-5.195 3.752-9.488 8.983-9.488 5.303 0 8.009 4.365 8.009 8.19 0 .649-.036 1.226-.072 1.803H227.81zM246.245 19.191h3.21v2.886h.109c.938-1.984 2.922-3.355 5.231-3.355.469 0 .938.036 1.335.144l-.145 3.14a6.77 6.77 0 00-1.551-.181c-3.247 0-4.798 2.633-4.798 5.483v8.983h-3.391v-17.1z\" />\n </g>\n </g>\n </svg>\n );\n};\n\ninterface EnturPartnerLogoProps {\n altText: string;\n as?: 'div' | React.ElementType;\n className?: string;\n environment?: Environment;\n}\n\nexport const EnturPartnerLogo: FC<EnturPartnerLogoProps> = ({\n as: Component = 'nav',\n className,\n altText,\n environment,\n}) => {\n const classList = classnames(['eps-logo-wrapper', className]);\n\n return (\n <Component className={classList}>\n <EnturPartnerLogoSvg\n title={altText}\n className=\"logo\"\n accentColor={\n environment !== undefined && environment !== Environment.Production\n ? getColorForEnvironment(environment)\n : undefined\n }\n />\n </Component>\n );\n};\n","import React from 'react';\n\nexport function useOutsideClick(\n ref: React.RefObject<HTMLDivElement>,\n buttonRef: React.RefObject<HTMLButtonElement>,\n handler: () => void\n) {\n React.useEffect(() => {\n const listener = (event: Event) => {\n if (\n elementContainsEventTarget(ref.current, event) ||\n elementContainsEventTarget(buttonRef.current, event)\n ) {\n return;\n }\n\n handler();\n };\n\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref, buttonRef, handler]);\n}\n\nfunction elementContainsEventTarget(element: HTMLElement | null, event: Event) {\n if (!element) {\n return false;\n }\n\n if (element.contains(event.target as Node)) {\n return true;\n }\n\n // For elements inside a Shadow DOM we need to check the composedPath\n if (event.composed && event.composedPath) {\n const contains = event.composedPath().find((target) => {\n if (target === window) {\n return false;\n }\n return element.contains(target as Node);\n });\n return !!contains;\n }\n\n return false;\n}\n","import '../index.scss';\n\nimport React from 'react';\nimport cx from 'classnames';\nimport { DownArrowIcon, UserIcon } from '@entur/icons';\nimport { SecondaryButton } from '@entur/button';\nimport { Heading6 } from '@entur/typography';\n\nimport {\n Environment,\n getColorForEnvironment,\n getHumanReadableEnvironment,\n} from '../../environment';\nimport { useOutsideClick } from '../useOutsideClick';\n\nexport const CustomOverflowMenu: React.FC<{\n className?: string;\n children: React.ReactNode;\n userName: string;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n environment?: Environment;\n}> = ({\n className,\n children,\n userName,\n open,\n onOpenChange,\n environment,\n ...rest\n}) => {\n const overflowItemsClasses = cx('eps-overflow-menu__group', {\n 'eps-overflow-menu__group--open': open,\n });\n const overflowContentRef = React.useRef<HTMLDivElement>(null);\n const overflowMenuTriggerRef = React.useRef<HTMLButtonElement>(null);\n useOutsideClick(overflowContentRef, overflowMenuTriggerRef, () =>\n onOpenChange(false)\n );\n return (\n <div>\n <SecondaryButton\n className={cx('eps-overflow-menu__button', className)}\n onClick={() => onOpenChange(open ? false : true)}\n aria-haspopup={true}\n role=\"button\"\n aria-expanded={open}\n ref={overflowMenuTriggerRef}\n {...rest}\n >\n <div className=\"eps-overflow-menu__button-contents\">\n <span className=\"eds-overflow-menu__user-icon\">\n <UserIcon inline />\n </span>\n <Heading6 margin=\"none\" as=\"span\">\n {userName}\n {environment !== undefined &&\n environment !== Environment.Production && (\n <span style={{ color: getColorForEnvironment(environment) }}>\n {' '}\n ({getHumanReadableEnvironment(environment)})\n </span>\n )}\n </Heading6>\n <span className=\"eps-arrow-icon\">\n <DownArrowIcon inline />\n </span>\n </div>\n </SecondaryButton>\n {open && (\n <div\n className={overflowItemsClasses}\n role=\"menu\"\n ref={overflowContentRef}\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport cx from 'classnames';\n\nexport const CustomOverflowMenuItem: React.FC<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >\n> = (props) => {\n return (\n <button\n className={cx(props.className, 'eps-overflow-menu__item')}\n role=\"menuitem\"\n {...props}\n />\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport { NorwayIcon, UKIcon } from '@entur/icons';\n\nimport { useFeatureToggle } from '../../FeatureToggle';\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\ntype Props = {\n language: string;\n onLanguageChange: (language: string) => void;\n setOpen: (open: boolean) => void;\n name: string;\n};\n\nexport const LanguageSwitchMenuItem = ({\n language,\n onLanguageChange,\n setOpen,\n name,\n}: Props) => {\n const useB47LanguageKey = useFeatureToggle('USE_BCP-47_LANGUAGE_KEY');\n const norwegianLanguageKey = useB47LanguageKey ? 'nb-NO' : 'nb';\n const englishLanguageKey = useB47LanguageKey ? 'en-GB' : 'en';\n\n return (\n <>\n {language === englishLanguageKey ? (\n <CustomOverflowMenuItem\n onClick={() => {\n onLanguageChange(norwegianLanguageKey);\n setOpen(false);\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden className=\"eps-overflow-menu__icon-margin\">\n <NorwayIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n ) : (\n <CustomOverflowMenuItem\n onClick={() => {\n onLanguageChange(englishLanguageKey);\n setOpen(false);\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden className=\"eps-overflow-menu__icon-margin\">\n <UKIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n )}\n </>\n );\n};\n","import React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { ChannelsIcon } from '@entur/icons';\n\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\nexport const VersionMenuItem: React.FC<{\n title: string;\n setOpen: (isOpen: boolean) => void;\n}> = ({ title, setOpen }) => {\n const navigate = useNavigate(); // Hide useNavigate from standalone micro-frontends because it is not under RouterProvider\n return (\n <CustomOverflowMenuItem\n onClick={() => {\n navigate('/app-version');\n setOpen(false);\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden>\n <ChannelsIcon className=\"eps-version-icon\" size=\"1rem\" inline />\n </span>\n {title}\n </CustomOverflowMenuItem>\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport { UserIcon } from '@entur/icons';\nimport { Link } from 'react-router-dom';\n\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\ntype Props = {\n name: string;\n setOpen: (open: boolean) => void;\n onNavigateToMyProfile: () => void;\n};\n\nexport const UserMenuItem = ({\n name,\n setOpen,\n onNavigateToMyProfile,\n}: Props) => {\n return (\n <Link to=\"/permission-admin/my-profile\" style={{ textDecoration: 'none' }}>\n <CustomOverflowMenuItem\n onClick={() => {\n setOpen(false);\n onNavigateToMyProfile();\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden>\n <UserIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n </Link>\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport { LogOutIcon } from '@entur/icons';\n\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\ntype Props = {\n name: string;\n setOpen: (open: boolean) => void;\n onLogout: () => void;\n};\n\nexport const LogOutMenuItem = ({ name, setOpen, onLogout }: Props) => {\n return (\n <CustomOverflowMenuItem\n onClick={() => {\n onLogout();\n setOpen(false);\n }}\n data-testid=\"user-menu-logout\"\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden>\n <LogOutIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n );\n};\n","import '../index.scss';\n\nimport React from 'react';\nimport { CookieIcon } from '@entur/icons';\n\nimport { CustomOverflowMenuItem } from './CustomOverflowMenuItem';\n\ntype Props = {\n name: string;\n setOpen: (open: boolean) => void;\n onCookieSettingsOpen: () => void;\n};\n\nexport const CookieSettingsMenuItem = ({\n name,\n setOpen,\n onCookieSettingsOpen,\n}: Props) => {\n return (\n <CustomOverflowMenuItem\n onClick={() => {\n onCookieSettingsOpen();\n setOpen(false);\n }}\n className=\"eps-overflow-menu__item\"\n >\n <span aria-hidden={true}>\n <CookieIcon size=\"1rem\" inline />\n </span>\n {name}\n </CustomOverflowMenuItem>\n );\n};\n","import './LanguageSelect.scss';\n\nimport React, { FC } from 'react';\nimport { SegmentedControl, SegmentedChoice } from '@entur/form';\nimport cx from 'classnames';\nimport { assertIsDefined } from '@entur-partner/util';\n\nexport type LanguageKey = 'nob' | 'nno' | 'eng';\n\nexport interface LanguageOption {\n value: LanguageKey;\n label: string;\n required: boolean;\n}\n\nexport interface LanguageSelectProps {\n language: string;\n options: LanguageOption[];\n className?: string;\n onChange: (language: string) => void;\n [key: string]: any;\n}\n\nexport const LanguageSelect: FC<LanguageSelectProps> = ({\n language,\n options,\n className,\n onChange,\n ...rest\n}) => {\n const classNames = cx('eps-language-select', className);\n return (\n <div {...rest} className={classNames}>\n <SegmentedControl\n onChange={(language) => {\n assertIsDefined(language);\n onChange(language);\n }}\n selectedValue={language}\n >\n {options.map((option) => (\n <SegmentedChoice key={option.value} value={option.value}>\n {option.label}\n {option.required && <span className=\"asterisk-margin\">{'*'}</span>}\n </SegmentedChoice>\n ))}\n </SegmentedControl>\n </div>\n );\n};\n","import React, { ReactNode, Component, ErrorInfo } from 'react';\nimport { BannerAlertBox } from '@entur/alert';\nimport { PrimaryButton } from '@entur/button';\nimport { Paragraph } from '@entur/typography';\n\nimport { isFunction } from './helpers';\nimport { Box } from './Box';\n\ntype FallbackOptions = {\n retry: () => void;\n error: Error;\n};\n\ntype RenderProp = (options: FallbackOptions) => ReactNode;\n\ntype Props = {\n handleError?: (error: Error, errorInfo: ErrorInfo) => void;\n fallback: ReactNode | RenderProp;\n children: ReactNode;\n};\n\ntype State = {\n error: null | Error;\n};\n\nconst newAppVersionErrorMessage =\n \"Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.\";\n\nexport class ErrorBoundary extends Component<Props, State> {\n constructor(props: Props) {\n super(props);\n this.state = { error: null };\n }\n\n static getDerivedStateFromError(error: Error): State {\n return {\n error,\n };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo) {\n // React always logs in development\n this.props.handleError?.(error, errorInfo);\n }\n\n render() {\n const { error } = this.state;\n const { fallback, children } = this.props;\n\n if (error) {\n if (isFunction<RenderProp>(fallback)) {\n return fallback({ retry: () => this.setState({ error: null }), error });\n } else if (\n error.name === 'NotFoundError' &&\n error.message === newAppVersionErrorMessage\n ) {\n return <RefreshBannerInfo />;\n }\n\n return fallback;\n }\n\n return children;\n }\n}\n\nexport const LANGUAGE_STORAGE_KEY = 'EP::locale';\n\nfunction RefreshBannerInfo() {\n // Taken from ./app-shell/src/storage.ts\n const language = localStorage.getItem(LANGUAGE_STORAGE_KEY);\n const isNorwegian = language === 'nb' || language === 'nb-NO';\n return (\n <Box maxWidth=\"large\">\n <BannerAlertBox\n variant=\"info\"\n title={\n isNorwegian\n ? 'En ny versjon av nettsiden er tilgjengelig.'\n : 'A new version of the website is available.'\n }\n >\n <Box paddingBottom=\"medium\">\n <Paragraph margin=\"none\">\n {isNorwegian ? 'Vennligst oppdater.' : 'Please refresh.'}\n </Paragraph>\n </Box>\n <PrimaryButton onClick={() => window.location.reload()}>\n {isNorwegian ? 'Oppdater' : 'Refresh'}\n </PrimaryButton>\n </BannerAlertBox>\n </Box>\n );\n}\n","export function isFunction<T>(functionToCheck: any): functionToCheck is T {\n return (\n functionToCheck && {}.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","import React, { FC } from 'react';\nimport { localeDate, localeDateTime } from '@entur-partner/util';\n\nexport interface FormatDateTimeProps {\n date: string | Date;\n locale: string;\n [key: string]: any;\n}\n\nexport const FormatDateTime: FC<FormatDateTimeProps> = ({\n date,\n locale,\n as: Component = 'main',\n hideTime,\n ...rest\n}) => {\n return (\n <Component {...rest}>\n {hideTime ? localeDate(date, locale) : localeDateTime(date, locale)}\n </Component>\n );\n};\n","import './ConfirmModal.scss';\n\nimport React, { ReactNode, FC } from 'react';\nimport { Modal, ModalProps } from '@entur/modal';\nimport { Paragraph } from '@entur/typography';\nimport { isString } from '@entur-partner/util';\nimport { ButtonGroup, SecondaryButton, PrimaryButton } from '@entur/button';\n\nimport { Box } from './Box';\n\nexport interface BaseConfirmModalProps extends Partial<ModalProps> {\n title: string;\n children: React.ReactNode;\n closeLabel: string;\n\n /** Deprecated use children prop */\n message?: ReactNode;\n /** Deprecated use open prop */\n isOpen?: boolean;\n /** Deprecated use onDismiss prop */\n onClose?: () => void;\n}\n\ninterface CustomConfirmModalButtons extends BaseConfirmModalProps {\n buttons: ReactNode[];\n}\n\ninterface DefaultConfirmModalHandler extends BaseConfirmModalProps {\n onConfirm: () => void;\n messages: {\n confirm: string;\n cancel: string;\n };\n}\n\nexport type ConfirmModalProps =\n | CustomConfirmModalButtons\n | DefaultConfirmModalHandler;\n\nexport const ConfirmModal: FC<ConfirmModalProps> = ({\n isOpen = false,\n children,\n message,\n size = 'medium',\n buttons,\n onConfirm,\n messages,\n onClose,\n onDismiss,\n ...rest\n}) => {\n const childrenToRender = children ? children : message;\n const handleDismiss = onClose ? onClose : onDismiss;\n return (\n <Modal size={size} open={isOpen} onDismiss={handleDismiss} {...rest}>\n {isString(childrenToRender) ? (\n <Paragraph>{childrenToRender}</Paragraph>\n ) : (\n <Box paddingBottom=\"medium\">{childrenToRender}</Box>\n )}\n\n <ButtonGroup>\n {onConfirm ? (\n <>\n <SecondaryButton\n onClick={handleDismiss}\n data-testid=\"cancel-modal-button\"\n >\n {messages.cancel}\n </SecondaryButton>\n <PrimaryButton\n onClick={onConfirm}\n data-testid=\"confirm-modal-button\"\n >\n {messages.confirm}\n </PrimaryButton>\n </>\n ) : (\n buttons\n )}\n </ButtonGroup>\n </Modal>\n );\n};\n","import './ActionBar.scss';\nimport React, { ReactNode } from 'react';\n\nexport interface ActionBarProps {\n children: ReactNode;\n}\n\nconst ActionBarLeft = ({ children }: ActionBarProps) => {\n return <div className=\"eps-action-bar-left\">{children}</div>;\n};\n\nconst ActionBarRight = ({ children }: ActionBarProps) => {\n return <div className=\"eps-action-bar-right\">{children}</div>;\n};\n\nconst ActionBar = ({ children }: ActionBarProps) => {\n return (\n <>\n <div className=\"eps-action-bar-padding\" />\n <div className=\"eps-action-bar\">{children}</div>\n </>\n );\n};\n\nexport { ActionBar, ActionBarLeft, ActionBarRight };\n","import './AuditInfo.scss';\n\nimport React, { FC } from 'react';\nimport cx from 'classnames';\nimport { isDateString, isDate } from '@entur-partner/util';\n\nimport { FormatDateTime } from './FormatDateTime';\nimport { Stack } from './Stack';\n\ninterface Item {\n label: string;\n value: Date | string;\n}\n\nexport interface AuditInfoProps {\n items: Item[];\n locale: string;\n className?: string;\n [key: string]: any;\n}\n\nexport const AuditInfo: FC<AuditInfoProps> = ({\n items,\n locale,\n className,\n ...rest\n}) => {\n const classNames = cx('ep-audit-info', className);\n return (\n <div className={classNames} {...rest}>\n {items.map(({ label, value }, i) => (\n <Stack space=\"small\" key={i}>\n <div className=\"ep-audit-info-label\">{label}</div>\n <div>\n {isDate(value) || isDateString(value) ? (\n <FormatDateTime date={value} locale={locale} />\n ) : (\n <span>{value}</span>\n )}\n </div>\n </Stack>\n ))}\n </div>\n );\n};\n","import './Breadcrumbs.scss';\nimport React, { FC, ReactElement } from 'react';\nimport { Link } from 'react-router-dom';\nimport { BreadcrumbNavigation, BreadcrumbItem } from '@entur/menu';\nimport { splitUrlPath } from '@entur-partner/util';\n\nexport interface BreadcrumbsProps {\n pathname: string;\n onBreadcrumbLookup: (path: string) => string | undefined;\n prependBreadcrumbItem?: ReactElement;\n}\n\nexport const Breadcrumbs: FC<BreadcrumbsProps> = ({\n prependBreadcrumbItem,\n pathname,\n onBreadcrumbLookup,\n}) => {\n const paths: string[] = splitUrlPath(pathname);\n\n const breadcrumbs = paths\n .map((path) => ({ title: onBreadcrumbLookup(path), path }))\n .filter(({ title }) => title !== undefined);\n\n const breadcrumbElements = breadcrumbs.map(({ title, path }, i) => {\n const isLast = i === breadcrumbs.length - 1;\n if (isLast) {\n return (\n <BreadcrumbItem key={path} as={'span'}>\n {title}\n </BreadcrumbItem>\n );\n }\n return (\n <BreadcrumbItem key={path} as={Link} to={path}>\n {title}\n </BreadcrumbItem>\n );\n });\n\n if (prependBreadcrumbItem) {\n return (\n <BreadcrumbNavigation>\n {[prependBreadcrumbItem, ...breadcrumbElements]}\n </BreadcrumbNavigation>\n );\n }\n\n return <BreadcrumbNavigation>{breadcrumbElements}</BreadcrumbNavigation>;\n};\n","import './Content.scss';\n\nimport React, { FC, ReactNode } from 'react';\nimport classnames from 'classnames';\n\ninterface ContentProps {\n children: ReactNode;\n as?: 'main' | React.ElementType;\n className?: string;\n}\nexport const Content: FC<ContentProps> = ({\n as: Component = 'main',\n className,\n children,\n}) => {\n const classList = classnames(['eps-content', className]);\n\n return <Component className={classList}>{children}</Component>;\n};\n","import React, { ChangeEvent } from 'react';\nimport { VariantType } from '@entur/form';\nimport { ExpandablePanel } from '@entur/expand';\n\nimport { LanguageKey, LanguageOption } from './LanguageSelect';\nimport { Stack } from './Stack';\n\nexport type MultiLanguageValues = Record<LanguageKey, string>;\n\ntype ExpandableMultiLanguageInputProps = {\n title: string;\n inputComponent: React.ElementType;\n languages: LanguageOption[];\n values: MultiLanguageValues;\n onChange: (values: MultiLanguageValues) => void;\n name: string;\n variant?: (lang: LanguageKey) => VariantType;\n feedback?: (lang: LanguageKey) => string;\n [key: string]: any;\n};\n\nexport const ExpandableMultiLanguageInput = ({\n title,\n inputComponent: InputComponent,\n languages,\n values,\n onChange,\n name,\n variant,\n feedback,\n ...rest\n}: ExpandableMultiLanguageInputProps) => {\n const handleOnChange = (language: LanguageKey, value?: string) => {\n const changes = { ...values };\n if (value === '' || !value) {\n delete changes[language];\n } else {\n changes[language] = value;\n }\n onChange(changes);\n };\n\n return (\n <ExpandablePanel\n title={title}\n defaultOpen\n contentStyle={{\n padding: '4px 4px 4px 4px',\n marginTop: '16px',\n marginBottom: '16px',\n }}\n >\n <Stack space=\"medium\">\n {languages.map(({ value: langKey, label, required }) => (\n <InputComponent\n data-testid={`multi-lang-input-${name}-${langKey}`}\n key={title + langKey}\n label={required ? label + '*' : label}\n variant={variant && variant(langKey)}\n feedback={feedback && feedback(langKey)}\n name={name}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n handleOnChange(langKey, e.target.value);\n }}\n value={values[langKey] || ''}\n {...rest}\n />\n ))}\n </Stack>\n </ExpandablePanel>\n );\n};\n","import React, { FC } from 'react';\n\nexport interface FormatCurrencyAmountProps {\n amount: number | string;\n as?: 'span' | React.ElementType;\n [key: string]: any;\n}\n\nexport const FormatCurrencyAmount: FC<FormatCurrencyAmountProps> = ({\n amount,\n as: Component = 'span',\n ...rest\n}) => {\n const parsedAmount = Number(amount) || 0;\n\n const formattedAmount = new Intl.NumberFormat('nb-NO', {\n maximumFractionDigits: 2,\n minimumFractionDigits: 2,\n }).format(parsedAmount);\n\n return <Component {...rest}>{formattedAmount}</Component>;\n};\n","import React, { FC } from 'react';\nimport { Link as RouterLink, LinkProps } from 'react-router-dom';\nimport { Link as A } from '@entur/typography';\n\ninterface Props extends LinkProps {}\n\nexport const Link: FC<Props> = (props) => {\n return (\n <A {...props} as={RouterLink}>\n {props.children}\n </A>\n );\n};\n","import './LinkButton.scss';\n\nimport React, { ReactNode } from 'react';\nimport { Link } from '@entur/typography';\nimport cx from 'classnames';\n\nexport interface LinkButtonProps {\n children: ReactNode;\n className?: string;\n [key: string]: any;\n}\n\nexport const LinkButton = ({\n children,\n className,\n ...rest\n}: LinkButtonProps) => (\n <Link {...rest} as=\"button\" className={cx('eps-link-button', className)}>\n {children}\n </Link>\n);\n","import './Menu.scss';\n\nimport React, { FC, ReactNode } from 'react';\nimport classnames from 'classnames';\n\ninterface MenuProps {\n children: ReactNode;\n as?: 'div' | React.ElementType;\n className?: string;\n}\nexport const Menu: FC<MenuProps> = ({\n as: Component = 'nav',\n className,\n children,\n}) => {\n const classList = classnames(['eds-contrast', 'eps-menu', className]);\n\n return <Component className={classList}>{children}</Component>;\n};\n","import './MultiLanguageInput.scss';\n\nimport React, { FC, useState, ChangeEvent, FocusEvent } from 'react';\nimport cx from 'classnames';\nimport { VariantType } from '@entur/form';\n\nimport { Stack } from './Stack';\nimport { LanguageSelect, LanguageOption } from './LanguageSelect';\n\ntype Values = { [key: string]: string };\n\nexport interface MultiLanguageInputProps {\n className?: string;\n onBlur?: (e: FocusEvent<HTMLDivElement>) => void;\n inputComponent: React.ElementType;\n values: { [key: string]: string };\n languages: LanguageOption[];\n onChange: (values: Values) => void;\n name: string;\n alertLevel?: VariantType;\n alertLabel?: string;\n label?: string;\n defaultLanguage?: string;\n [key: string]: any;\n}\n/**\n * @deprecated use ExpandableMultiLanguageInput\n */\nexport const MultiLanguageInput: FC<MultiLanguageInputProps> = ({\n className,\n inputComponent: InputComponent,\n alertLabel,\n alertLevel,\n name,\n languages,\n values,\n onChange,\n defaultLanguage = 'nob',\n label = '',\n onBlur = () => {},\n ...rest\n}) => {\n const [language, setLanguage] = useState(defaultLanguage);\n const classNames = cx('multi-language-input', className);\n const currentValue = values[language];\n\n const handleOnBlur = (e: FocusEvent<HTMLDivElement>) => {\n e.persist();\n const currentTarget = e.currentTarget;\n setTimeout(() => {\n if (currentTarget && !currentTarget.contains(document.activeElement)) {\n onBlur(e);\n }\n }, 0);\n };\n\n const handleLanguageChange = (language: string) => {\n setLanguage(language);\n };\n\n const handleOnChange = (value?: string) => {\n const changes = Object.assign({}, values);\n if (value === '' || !value) {\n delete changes[language];\n } else {\n changes[language] = value;\n }\n onChange(changes);\n };\n\n return (\n <div\n className={classNames}\n tabIndex={0}\n onBlur={handleOnBlur}\n data-testid={`multi-lang-input-${name}`}\n >\n <Stack space=\"extraSmall\">\n <LanguageSelect\n language={language}\n options={languages}\n onChange={(lang) => handleLanguageChange(lang)}\n />\n <InputComponent\n label={label}\n variant={alertLevel}\n feedback={alertLabel}\n name={name}\n className=\"language-item\"\n onChange={(e: ChangeEvent<HTMLInputElement>) =>\n handleOnChange(e.target.value)\n }\n value={currentValue || ''}\n {...rest}\n />\n </Stack>\n </div>\n );\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { SearchableDropdown } from '@entur/dropdown';\n\ninterface OrganisationV3 {\n organisationId: number;\n tradingName: string;\n}\n\ninterface OrganisationDropDownProps {\n label: string;\n onChange: (organisationId: number) => void;\n organisations: OrganisationV3[];\n selectedOrganisationId?: number;\n [key: string]: any;\n}\n\nexport const OrganisationDropDown: FC<OrganisationDropDownProps> = ({\n label,\n organisations,\n onChange: handleChange,\n selectedOrganisationId,\n ...rest\n}) => {\n const [selectedOrganisation, setSelectedOrganisation] =\n useState<OrganisationV3>();\n\n useEffect(() => {\n setSelectedOrganisation(\n organisations.find((org) => org.organisationId === selectedOrganisationId)\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedOrganisationId]);\n\n return (\n <SearchableDropdown\n label={label}\n items={[\n ...organisations\n .sort((a, b) => a.tradingName.localeCompare(b.tradingName, 'nb'))\n .map((organisation) => {\n return {\n value: organisation.organisationId,\n label: organisation.tradingName,\n };\n }),\n ]}\n selectedItem={\n selectedOrganisation\n ? {\n value: selectedOrganisation.organisationId,\n label: selectedOrganisation.tradingName,\n }\n : null\n }\n onChange={(selectedValue) => {\n if (selectedValue) {\n handleChange(selectedValue.value);\n }\n }}\n clearable={false}\n {...rest}\n />\n );\n};\n","import React from 'react';\nimport { Helmet } from 'react-helmet-async';\nimport { splitUrlPath } from '@entur-partner/util';\n\ntype Props = {\n readonly pathname: string;\n readonly onBreadcrumbLookup: (path: string) => string | undefined;\n};\n\n/**\n * This component changes page title by using helmet and current path. It will translate subpaths, join them with a dash\n * and display it on browser tab.\n *\n * @param Props.pathname - The current path from react-router-dom.useLocation()\n * @param Props.onBreadcrumbLookup - A function that takes a path and returns a i18n translated string or undefined\n * @returns A Helmet component with updated title\n */\nexport function PageTitle({ pathname, onBreadcrumbLookup }: Props) {\n const paths: string[] = splitUrlPath(pathname);\n\n const pageTitles = paths\n .map((path) => ({ title: onBreadcrumbLookup(path), path }))\n .filter(({ title }) => title !== undefined)\n .map(({ title }) => title)\n .reverse()\n .join(' | ');\n\n return (\n <Helmet>\n <title>{pageTitles} | Entur Partner</title>\n </Helmet>\n );\n}\n","import React, { FC } from 'react';\nimport { Pagination } from '@entur/menu';\n\nexport interface PagerProps {\n currentPage: number;\n collectionSize: number;\n pageSize: number;\n onPageChange: (page: number) => void;\n}\n\nexport const Pager: FC<PagerProps> = ({\n collectionSize,\n pageSize,\n onPageChange,\n currentPage,\n}) => {\n const pageCount = Math.ceil(collectionSize / pageSize);\n return (\n <Pagination\n pageCount={pageCount}\n currentPage={currentPage}\n onPageChange={(page) => {\n onPageChange(page);\n }}\n />\n );\n};\n","import React, { ReactNode, FC } from 'react';\nimport { BusinessCapability } from '@entur-partner/permission-client-node';\nimport { hasAllPermissions, hasOneOfPermissions } from '@entur-partner/util';\n\n/**\n * Note: We use BusinessCapability here, not because we only want to check\n * BusinessCapabilities but because it represents a minimal subset of what we\n * need to check.\n */\nexport interface PermissionCheckProps {\n children: ReactNode;\n /** User permissions to check */\n permissions: BusinessCapability[];\n /** Check that at least one of the permissions is present */\n oneOf?: BusinessCapability[];\n /** Check that all of the permissions is present */\n all?: BusinessCapability[] | BusinessCapability;\n /** Rendered if check fails. Defaults to null */\n fallback?: ReactNode;\n}\n\n/**\n * Note: This component uses BusinessCapability, not because we only want to\n * check BusinessCapabilities but because it represents a minimal subset of\n * what we need to check.\n */\nexport const PermissionCheck: FC<PermissionCheckProps> = ({\n children,\n fallback = null,\n permissions,\n oneOf = [],\n all = [],\n}) => {\n const allIsAllowed = hasAllPermissions(all, permissions);\n\n const oneOfIsAllowed = hasOneOfPermissions(oneOf, permissions);\n\n const allowed = allIsAllowed && oneOfIsAllowed;\n return <>{allowed ? children : fallback}</>;\n};\n","import React, { FC, ReactNode } from 'react';\nimport { useBlocker, useInRouterContext } from 'react-router-dom';\nimport { Location } from 'history';\nimport { ModalProps } from '@entur/modal';\nimport { assertIsDefined } from '@entur-partner/util';\n\nimport { ConfirmModal } from './ConfirmModal';\n\nexport interface RouteLeavingGuardProps extends Partial<ModalProps> {\n title: string;\n closeLabel: string;\n messages: {\n cancel: string;\n confirm: string;\n };\n children: ReactNode;\n shouldBlockNavigation: (location: Location) => boolean;\n}\n\nexport const RouteLeavingGuard: FC<RouteLeavingGuardProps> = ({\n children,\n shouldBlockNavigation,\n ...rest\n}) => {\n assertIsDefined(\n useInRouterContext() ? true : undefined,\n `RouteLeavingGuard must be used within a data router.`\n );\n\n const blocker = useBlocker(\n ({ currentLocation, nextLocation }) =>\n currentLocation.pathname !== nextLocation.pathname &&\n shouldBlockNavigation(nextLocation)\n );\n\n return (\n <ConfirmModal\n onDismiss={() => {\n if (blocker.state === 'blocked') {\n blocker.reset();\n }\n }}\n open={blocker.state === 'blocked'}\n onConfirm={() => {\n if (blocker.state === 'blocked') {\n blocker.proceed();\n }\n }}\n {...rest}\n >\n {children}\n </ConfirmModal>\n );\n};\n","import './StatusLabel.scss';\n\nimport React, { FC } from 'react';\nimport cx from 'classnames';\n\ninterface StatusLabelProps {\n label: string;\n active: boolean;\n aggressiveInactive?: boolean;\n showBullet?: boolean;\n center?: boolean;\n}\nexport const StatusLabel: FC<StatusLabelProps> = ({\n active = false,\n label = '',\n aggressiveInactive,\n showBullet,\n center,\n}) => {\n const bulletClassNames = cx('eps-status-label__bullet', {\n active,\n aggressive: aggressiveInactive,\n });\n const statusLabelClassNames = cx('eps-status-label', {\n center,\n });\n return (\n <div className={statusLabelClassNames}>\n {showBullet && <div className={bulletClassNames} />}\n <div>{label}</div>\n </div>\n );\n};\n","import './Text.scss';\n\nimport React, { ReactNode } from 'react';\nimport cx from 'classnames';\n\nimport { StyleColor, responsiveProp, Box } from './Box';\n\ntype StyleFontSize =\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge'\n | 'extraLarge2'\n | 'extraLarge3'\n | 'extraLarge4';\n\ntype StyleFontWeight = 'body' | 'heading';\n\ntype StyleLineHeight =\n | 'extraSmall'\n | 'small'\n | 'medium'\n | 'large'\n | 'extraLarge'\n | 'extraLarge2'\n | 'extraLarge3'\n | 'extraLarge4'\n | 'extraLarge5'\n | 'extraLarge6'\n | 'extraLarge7';\n\nexport type ResponsiveStyleFontSize =\n | StyleFontSize\n | [StyleFontSize?, StyleFontSize?, StyleFontSize?];\n\nexport type ResponsiveStyleLineHeight =\n | StyleLineHeight\n | [StyleLineHeight?, StyleLineHeight?, StyleLineHeight?];\n\nexport interface TextProps {\n className?: string;\n as?: React.ElementType;\n children: ReactNode;\n\n fontSize?: ResponsiveStyleFontSize;\n lineHeight?: ResponsiveStyleLineHeight;\n color?: StyleColor;\n fontWeight?: StyleFontWeight;\n\n [key: string]: any;\n}\n\nexport const Text = ({\n as: component = 'span',\n children,\n fontSize,\n color,\n lineHeight,\n fontWeight,\n className,\n ...rest\n}: TextProps) => {\n const classes = [];\n\n fontSize && classes.push(...responsiveProp('eps-font-size-', fontSize));\n lineHeight && classes.push(...responsiveProp('eps-line-height-', lineHeight));\n fontWeight && classes.push('eps-font-weight-' + fontWeight);\n\n const classList = cx(classes, className);\n\n return (\n <Box as={component} color={color} className={classList} {...rest}>\n {children}\n </Box>\n );\n};\n","import './Unbutton.scss';\n\nimport React, { FC } from 'react';\nimport { Button, ButtonProps } from '@entur/button';\nimport cx from 'classnames';\n\ninterface UnbuttonProps extends Omit<ButtonProps<any>, 'variant'> {}\n\nexport const Unbutton: FC<UnbuttonProps> = ({\n children,\n className,\n ...rest\n}) => (\n <Button variant=\"primary\" {...rest} className={cx('eps-unbutton', className)}>\n {children}\n </Button>\n);\n","import './index.scss';\n\nimport React, { FC, useState } from 'react';\nimport cx from 'classnames';\n\nimport { Environment } from '../environment';\nimport { CustomOverflowMenu } from './components/CustomOverflowMenu';\nimport { LanguageSwitchMenuItem } from './components/LanguageSwitchMenuItem';\nimport { VersionMenuItem } from './components/VersionMenuItem';\nimport { UserMenuItem } from './components/UserMenuItem';\nimport { LogOutMenuItem } from './components/LogOutMenuItem';\nimport { CookieSettingsMenuItem } from './components/CookieSettingsMenuItem';\n\ninterface UserMenuProps {\n userName: string;\n messages: {\n logout: string;\n switchLanguage: string;\n appVersion?: string;\n myProfile?: string;\n cookieSettings?: string;\n };\n onLogout: () => void;\n onLanguageChange: (language: string) => void;\n language: string;\n className?: string;\n environment?: Environment;\n showVersionItem?: boolean;\n showMyProfileItem?: boolean;\n showCookieSettingsItem?: boolean;\n onNavigateToMyProfile: () => void;\n onCookieSettingsOpen?: () => void;\n}\n\nexport const UserMenu: FC<UserMenuProps> = ({\n className,\n messages,\n onLogout,\n onLanguageChange,\n userName,\n language,\n environment,\n showVersionItem,\n showMyProfileItem,\n showCookieSettingsItem,\n onNavigateToMyProfile,\n onCookieSettingsOpen = () => {},\n}) => {\n const triggerClassList = cx(['eps-user-menu__trigger-button', className]);\n const [open, setOpen] = useState(false);\n\n return (\n <div id=\"eps-user-menu\">\n <CustomOverflowMenu\n open={open}\n onOpenChange={setOpen}\n className={triggerClassList}\n userName={userName}\n environment={environment}\n >\n <div id=\"eps-overflow-menu\">\n <LanguageSwitchMenuItem\n name={messages.switchLanguage}\n language={language}\n onLanguageChange={onLanguageChange}\n setOpen={setOpen}\n />\n {showVersionItem && messages.appVersion && (\n <VersionMenuItem title={messages.appVersion} setOpen={setOpen} />\n )}\n {showMyProfileItem && messages.myProfile && (\n <UserMenuItem\n name={messages.myProfile}\n setOpen={setOpen}\n onNavigateToMyProfile={onNavigateToMyProfile}\n />\n )}\n {showCookieSettingsItem && messages.cookieSettings && (\n <CookieSettingsMenuItem\n name={messages.cookieSettings}\n setOpen={setOpen}\n onCookieSettingsOpen={onCookieSettingsOpen}\n />\n )}\n <LogOutMenuItem\n name={messages.logout}\n setOpen={setOpen}\n onLogout={onLogout}\n />\n </div>\n </CustomOverflowMenu>\n </div>\n );\n};\n","/*global EventListener WindowEventHandlers*/\nimport { useEffect, useRef } from 'react';\n\ninterface TypedEventListener<T extends Event> {\n (evt: T): void;\n}\n\nexport function useEventListener<T extends Event = Event>(\n eventName: string,\n handler: TypedEventListener<T>,\n element: WindowEventHandlers = window\n) {\n const savedHandler = useRef<TypedEventListener<T>>();\n\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const isSupported = element && element.addEventListener;\n if (!isSupported) return;\n\n const eventListener = ((event: T): void =>\n savedHandler.current?.(event)) as EventListener;\n\n element.addEventListener(eventName, eventListener);\n\n return () => {\n element.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element]);\n}\n"],"names":["responsiveProp","prefix","prop","Array","isArray","classes","push","Environment","Box","_ref","_ref$as","as","Component","children","contrast","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","padding","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","margin","display","justifyContent","alignItems","maxWidth","width","background","color","flexDirection","flexWrap","className","rest","_objectWithoutPropertiesLoose","_excluded","resolvedPaddingTop","resolvedPaddingBottom","resolvedPaddingLeft","resolvedPaddingRight","resolvedMarginTop","resolvedMarginBottom","resolvedMarginLeft","resolvedMarginRight","apply","classList","cx","React","createElement","_extends","Stack","space","stackItems","Children","toArray","length","Fragment","map","child","index","key","featureFlag","flag","_window$localStorage","_window$localStorage2","import","window","localStorage","getItem","useFeatureToggle","environmentColors","_environmentColors","Local","Development","Staging","getColorForEnvironment","environment","humanReadableEnvironment","_humanReadableEnviron","Production","getHumanReadableEnvironment","EnturPartnerLogoSvg","title","_ref$accentColor","accentColor","height","viewBox","fill","fillRule","d","elementContainsEventTarget","element","event","contains","target","composed","composedPath","find","CustomOverflowMenu","ref","buttonRef","handler","userName","open","onOpenChange","overflowItemsClasses","overflowContentRef","useRef","overflowMenuTriggerRef","useEffect","listener","current","document","addEventListener","removeEventListener","SecondaryButton","onClick","role","UserIcon","inline","Heading6","undefined","style","DownArrowIcon","CustomOverflowMenuItem","props","LanguageSwitchMenuItem","language","onLanguageChange","setOpen","name","useB47LanguageKey","norwegianLanguageKey","englishLanguageKey","NorwayIcon","size","UKIcon","VersionMenuItem","navigate","useNavigate","ChannelsIcon","UserMenuItem","onNavigateToMyProfile","Link","to","textDecoration","LogOutMenuItem","onLogout","LogOutIcon","CookieSettingsMenuItem","onCookieSettingsOpen","CookieIcon","LanguageSelect","options","onChange","classNames","SegmentedControl","assertIsDefined","selectedValue","option","SegmentedChoice","value","label","required","ErrorBoundary","_Component","_this","call","this","state","error","getDerivedStateFromError","_proto","prototype","componentDidCatch","errorInfo","_this$props$handleErr","_this$props","handleError","render","functionToCheck","_this2","_this$props2","fallback","toString","retry","setState","message","RefreshBannerInfo","LANGUAGE_STORAGE_KEY","isNorwegian","BannerAlertBox","variant","Paragraph","PrimaryButton","location","reload","FormatDateTime","date","locale","hideTime","localeDate","localeDateTime","ConfirmModal","_ref$isOpen","isOpen","_ref$size","buttons","onConfirm","messages","onClose","onDismiss","childrenToRender","handleDismiss","Modal","isString","ButtonGroup","cancel","confirm","_ref3","_ref2","items","i","isDate","isDateString","prependBreadcrumbItem","onBreadcrumbLookup","breadcrumbs","splitUrlPath","pathname","path","filter","breadcrumbElements","BreadcrumbItem","BreadcrumbNavigation","concat","classnames","_ref2$as","altText","InputComponent","inputComponent","languages","values","feedback","ExpandablePanel","defaultOpen","contentStyle","langKey","e","changes","amount","parsedAmount","Number","formattedAmount","Intl","NumberFormat","maximumFractionDigits","minimumFractionDigits","format","A","RouterLink","alertLabel","alertLevel","_ref$defaultLanguage","defaultLanguage","_ref$label","_ref$onBlur","onBlur","_useState","useState","setLanguage","currentValue","tabIndex","persist","currentTarget","setTimeout","activeElement","lang","handleLanguageChange","Object","assign","organisations","handleChange","selectedOrganisationId","selectedOrganisation","setSelectedOrganisation","org","organisationId","SearchableDropdown","sort","a","b","tradingName","localeCompare","organisation","selectedItem","clearable","pageTitles","reverse","join","Helmet","onPageChange","currentPage","pageCount","Math","ceil","collectionSize","pageSize","Pagination","page","_ref$fallback","permissions","_ref$oneOf","oneOf","_ref$all","all","allIsAllowed","hasAllPermissions","oneOfIsAllowed","hasOneOfPermissions","shouldBlockNavigation","useInRouterContext","blocker","useBlocker","nextLocation","currentLocation","reset","proceed","_ref$active","active","showBullet","center","bulletClassNames","aggressive","aggressiveInactive","statusLabelClassNames","component","fontSize","lineHeight","fontWeight","Button","showVersionItem","showMyProfileItem","showCookieSettingsItem","_ref$onCookieSettings","triggerClassList","id","switchLanguage","appVersion","myProfile","cookieSettings","logout","eventName","savedHandler","eventListener"],"mappings":"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"}
1
+ {"version":3,"file":"common.cjs.production.min.js","sources":["../src/FormatDateTime.tsx","../src/Box.tsx","../src/environment.ts","../src/Stack.tsx","../src/ConfirmModal.tsx","../src/EnturPartnerLogo.tsx","../src/ErrorBoundary.tsx","../src/FeatureToggle.tsx","../src/LanguageSelect.tsx","../src/UserMenu/components/CustomOverflowMenuItem.tsx","../src/UserMenu/components/CookieSettingsMenuItem.tsx","../src/UserMenu/useOutsideClick.ts","../src/UserMenu/components/CustomOverflowMenu.tsx","../src/UserMenu/components/LanguageSwitchMenuItem.tsx","../src/UserMenu/components/LogOutMenuItem.tsx","../src/UserMenu/components/UserMenuItem.tsx","../src/UserMenu/components/VersionMenuItem.tsx","../src/ActionBar.tsx","../src/AuditInfo.tsx","../src/Breadcrumbs.tsx","../src/Content.tsx","../src/ExpandableMultiLanguageInput.tsx","../src/FormatCurrencyAmount.tsx","../src/Link.tsx","../src/LinkButton.tsx","../src/Menu.tsx","../src/MultiLanguageInput.tsx","../src/OrganisationDropdown.tsx","../src/PageTitle.tsx","../src/Pager.tsx","../src/PermissionCheck.tsx","../src/RouteLeavingGuard.tsx","../src/StatusLabel.tsx","../src/Text.tsx","../src/Unbutton.tsx","../src/UserMenu/index.tsx","../src/useEventListener.ts"],"sourcesContent":["import { localeDate, localeDateTime } from \"@entur-partner/util\";\nimport React, { type FC } from \"react\";\n\nexport interface FormatDateTimeProps {\n\tdate: string | Date;\n\tlocale: string;\n\t// biome-ignore lint/suspicious/noExplicitAny: Ignore for now.\n\t[key: string]: any;\n}\n\nexport const FormatDateTime: FC<FormatDateTimeProps> = ({\n\tdate,\n\tlocale,\n\tas: Component = \"main\",\n\thideTime,\n\t...rest\n}) => {\n\treturn (\n\t\t<Component {...rest}>\n\t\t\t{hideTime ? localeDate(date, locale) : localeDateTime(date, locale)}\n\t\t</Component>\n\t);\n};\n","import \"./Box.scss\";\n\nimport cx from \"classnames\";\nimport type { ReactNode } from \"react\";\nimport React from \"react\";\n\ntype StyleSpacing =\n\t| \"none\"\n\t| \"extraSmall2\"\n\t| \"extraSmall\"\n\t| \"small\"\n\t| \"medium\"\n\t| \"large\"\n\t| \"extraLarge\"\n\t| \"extraLarge2\"\n\t| \"extraLarge3\"\n\t| \"extraLarge4\"\n\t| \"extraLarge5\"\n\t| \"extraLarge6\"\n\t| \"extraLarge7\"\n\t| \"extraLarge8\"\n\t| \"extraLarge9\";\n\ntype StyleMargin = StyleSpacing | \"auto\";\n\ntype StyleDisplay = \"block\" | \"flex\" | \"inline\" | \"inline-block\";\ntype StyleJustifyContent = \"center\" | \"space-between\" | \"start\" | \"end\";\ntype StyleAlignItems = \"center\" | \"start\" | \"end\" | \"stretch\" | \"baseline\";\n\ntype StyleMaxWidth =\n\t| \"none\"\n\t| \"extraSmall\"\n\t| \"small\"\n\t| \"medium\"\n\t| \"large\"\n\t| \"extraLarge\"\n\t| \"extraLarge2\"\n\t| \"extraLarge3\"\n\t| \"extraLarge4\"\n\t| \"extraLarge5\"\n\t| \"extraLarge6\"\n\t| \"full\";\ntype StyleWidth = \"auto\" | \"full\";\n\nexport type StyleBackground = \"blue\" | \"lavender\" | \"white\" | \"blue70\";\nexport type StyleColor = \"blue\" | \"lavender\" | \"white\" | \"black\";\n\ntype StyleFlexDirection = \"row\" | \"column\" | \"row-reverse\" | \"column-reverse\";\ntype StyleFlexWrap = \"wrap\" | \"nowrap\" | \"wrap-reverse\";\n\nexport type ResponsiveStyleSpacing =\n\t| StyleSpacing\n\t| [StyleSpacing?, StyleSpacing?, StyleSpacing?];\nexport type ResponsiveStyleMargin =\n\t| StyleMargin\n\t| [StyleMargin?, StyleMargin?, StyleMargin?];\n\nexport type ResponsiveStyleDisplay =\n\t| StyleDisplay\n\t| [StyleDisplay?, StyleDisplay?, StyleDisplay?];\nexport type ResponsiveStyleJustifyContent =\n\t| StyleJustifyContent\n\t| [StyleJustifyContent?, StyleJustifyContent?, StyleJustifyContent?];\nexport type ResponsiveStyleAlignItems =\n\t| StyleAlignItems\n\t| [StyleAlignItems?, StyleAlignItems?, StyleAlignItems?];\n\nexport type ResponsiveStyleMaxWidth =\n\t| StyleMaxWidth\n\t| [StyleMaxWidth?, StyleMaxWidth?, StyleMaxWidth?];\nexport type ResponsiveStyleWidth =\n\t| StyleWidth\n\t| [StyleWidth?, StyleWidth?, StyleWidth?];\n\nexport type ResponsiveStyleFlexDirection =\n\t| StyleFlexDirection\n\t| [StyleFlexDirection?, StyleFlexDirection?, StyleFlexDirection?];\nexport type ResponsiveStyleFlexWrap =\n\t| StyleFlexWrap\n\t| [StyleFlexWrap?, StyleFlexWrap?, StyleFlexWrap?];\n\nexport interface BoxProps {\n\tclassName?: string;\n\tas?: React.ElementType;\n\t[key: string]: object | string | number | boolean | undefined | ReactNode;\n\tchildren: ReactNode;\n\n\tcontrast?: boolean;\n\n\tpaddingTop?: ResponsiveStyleSpacing;\n\tpaddingRight?: ResponsiveStyleSpacing;\n\tpaddingBottom?: ResponsiveStyleSpacing;\n\tpaddingLeft?: ResponsiveStyleSpacing;\n\tpaddingX?: ResponsiveStyleSpacing;\n\tpaddingY?: ResponsiveStyleSpacing;\n\tpadding?: ResponsiveStyleSpacing;\n\n\tmarginTop?: ResponsiveStyleMargin;\n\tmarginRight?: ResponsiveStyleMargin;\n\tmarginBottom?: ResponsiveStyleMargin;\n\tmarginLeft?: ResponsiveStyleMargin;\n\tmarginX?: ResponsiveStyleMargin;\n\tmarginY?: ResponsiveStyleMargin;\n\tmargin?: ResponsiveStyleMargin;\n\n\tdisplay?: ResponsiveStyleDisplay;\n\tjustifyContent?: ResponsiveStyleJustifyContent;\n\talignItems?: ResponsiveStyleAlignItems;\n\n\tmaxWidth?: ResponsiveStyleMaxWidth;\n\twidth?: ResponsiveStyleWidth;\n\tbackground?: StyleBackground;\n\tcolor?: StyleColor;\n\n\tflexDirection?: ResponsiveStyleFlexDirection;\n\tflexWrap?: ResponsiveStyleFlexWrap;\n}\n\ntype ResponsiveProp = string | [string?, string?, string?];\n\nexport function responsiveProp(prefix: string, prop: ResponsiveProp): string[] {\n\tif (Array.isArray(prop)) {\n\t\tconst classes = [];\n\t\tprop[0] && classes.push(prefix + prop[0]);\n\t\tprop[1] && classes.push(`${prefix}${prop[1]}-lg`);\n\t\tprop[2] && classes.push(`${prefix}${prop[2]}-xl`);\n\t\treturn classes;\n\t}\n\treturn [prefix + prop];\n}\n\nexport const Box = ({\n\tas: Component = \"div\",\n\tchildren,\n\tcontrast,\n\tpaddingTop,\n\tpaddingRight,\n\tpaddingBottom,\n\tpaddingLeft,\n\tpaddingX,\n\tpaddingY,\n\tpadding,\n\tmarginTop,\n\tmarginRight,\n\tmarginBottom,\n\tmarginLeft,\n\tmarginX,\n\tmarginY,\n\tmargin,\n\tdisplay,\n\tjustifyContent,\n\talignItems,\n\tmaxWidth,\n\twidth,\n\tbackground,\n\tcolor,\n\tflexDirection,\n\tflexWrap,\n\tclassName,\n\t...rest\n}: BoxProps) => {\n\tconst classes = [];\n\tconst resolvedPaddingTop = paddingTop || paddingY || padding;\n\tconst resolvedPaddingBottom = paddingBottom || paddingY || padding;\n\tconst resolvedPaddingLeft = paddingLeft || paddingX || padding;\n\tconst resolvedPaddingRight = paddingRight || paddingX || padding;\n\n\tconst resolvedMarginTop = marginTop || marginY || margin;\n\tconst resolvedMarginBottom = marginBottom || marginY || margin;\n\tconst resolvedMarginLeft = marginLeft || marginX || margin;\n\tconst resolvedMarginRight = marginRight || marginX || margin;\n\n\tcontrast && classes.push(\"eds-contrast\");\n\tresolvedPaddingTop &&\n\t\tclasses.push(...responsiveProp(\"eps-pt-\", resolvedPaddingTop));\n\tresolvedPaddingBottom &&\n\t\tclasses.push(...responsiveProp(\"eps-pb-\", resolvedPaddingBottom));\n\tresolvedPaddingLeft &&\n\t\tclasses.push(...responsiveProp(\"eps-pl-\", resolvedPaddingLeft));\n\tresolvedPaddingRight &&\n\t\tclasses.push(...responsiveProp(\"eps-pr-\", resolvedPaddingRight));\n\tresolvedMarginTop &&\n\t\tclasses.push(...responsiveProp(\"eps-mt-\", resolvedMarginTop));\n\tresolvedMarginBottom &&\n\t\tclasses.push(...responsiveProp(\"eps-mb-\", resolvedMarginBottom));\n\tresolvedMarginLeft &&\n\t\tclasses.push(...responsiveProp(\"eps-ml-\", resolvedMarginLeft));\n\tresolvedMarginRight &&\n\t\tclasses.push(...responsiveProp(\"eps-mr-\", resolvedMarginRight));\n\n\tdisplay && classes.push(...responsiveProp(\"eps-\", display));\n\tjustifyContent &&\n\t\tclasses.push(...responsiveProp(\"eps-justify-\", justifyContent));\n\tif (alignItems) {\n\t\tclasses.push(...responsiveProp(\"eps-items-\", alignItems));\n\t}\n\n\tmaxWidth && classes.push(...responsiveProp(\"eps-max-w-\", maxWidth));\n\twidth && classes.push(...responsiveProp(\"eps-w-\", width));\n\n\tcolor && classes.push(`eps-color-${color}`);\n\tbackground && classes.push(`eps-bg-${background}`);\n\n\tflexDirection && classes.push(...responsiveProp(\"eps-flex-\", flexDirection));\n\tflexWrap && classes.push(...responsiveProp(\"eps-flex-wrap-\", flexWrap));\n\n\tconst classList = cx(classes, className);\n\n\treturn (\n\t\t<Component className={classList} {...rest}>\n\t\t\t{children}\n\t\t</Component>\n\t);\n};\n","export enum Environment {\n\tLocal = \"local\",\n\tDevelopment = \"dev\",\n\tStaging = \"staging\",\n\tProduction = \"prod\",\n}\n\nconst environmentColors: Record<\n\tExclude<Environment, Environment.Production>,\n\tstring\n> = {\n\t[Environment.Local]: \"#B482FB\",\n\t[Environment.Development]: \"#5AC39A\",\n\t[Environment.Staging]: \"#FFCA28\",\n};\n\n/**\n * Gets the color for the given environment. This is the color used for the environment\n * indicator. There is no color for production as it should not have any special environment\n * indication.\n */\nexport const getColorForEnvironment = (\n\tenvironment: Exclude<Environment, Environment.Production>,\n) => environmentColors[environment];\n\nconst humanReadableEnvironment: Record<Environment, string> = {\n\t[Environment.Local]: \"Local\",\n\t[Environment.Development]: \"Dev\",\n\t[Environment.Staging]: \"Staging\",\n\t[Environment.Production]: \"Prod\",\n};\n\nexport const getHumanReadableEnvironment = (environment: Environment) =>\n\thumanReadableEnvironment[environment];\n","/** biome-ignore-all lint/suspicious/noArrayIndexKey: Ignore for now. Should be tested properly before doing changes */\nimport React, { Children, type ReactNode } from \"react\";\n\nimport { Box, type ResponsiveStyleSpacing } from \"./Box\";\n\nexport interface StackProps {\n\tclassName?: string;\n\tchildren: ReactNode;\n\tspace: ResponsiveStyleSpacing;\n}\n\nexport const Stack = ({ children, space, className }: StackProps) => {\n\tconst stackItems = Children.toArray(children);\n\tif (stackItems.length <= 1) {\n\t\treturn <>{stackItems}</>;\n\t}\n\n\treturn (\n\t\t<div className={className}>\n\t\t\t{stackItems.map((child, index) =>\n\t\t\t\tindex === stackItems.length - 1 ? (\n\t\t\t\t\t<div key={index}>{child}</div>\n\t\t\t\t) : (\n\t\t\t\t\t<Box paddingBottom={space} key={index}>\n\t\t\t\t\t\t{child}\n\t\t\t\t\t</Box>\n\t\t\t\t),\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import \"./ConfirmModal.scss\";\n\nimport { ButtonGroup, PrimaryButton, SecondaryButton } from \"@entur/button\";\nimport { Modal, type ModalProps } from \"@entur/modal\";\nimport { Paragraph } from \"@entur/typography\";\nimport { isString } from \"@entur-partner/util\";\nimport type { FC, ReactNode } from \"react\";\nimport React from \"react\";\n\nimport { Box } from \"./Box\";\n\nexport interface BaseConfirmModalProps extends Partial<ModalProps> {\n\ttitle: string;\n\tchildren: React.ReactNode;\n\tcloseLabel: string;\n\n\t/** Deprecated use children prop */\n\tmessage?: ReactNode;\n\t/** Deprecated use open prop */\n\tisOpen?: boolean;\n\t/** Deprecated use onDismiss prop */\n\tonClose?: () => void;\n}\n\ninterface CustomConfirmModalButtons extends BaseConfirmModalProps {\n\tbuttons: ReactNode[];\n}\n\ninterface DefaultConfirmModalHandler extends BaseConfirmModalProps {\n\tonConfirm: () => void;\n\tmessages: {\n\t\tconfirm: string;\n\t\tcancel: string;\n\t};\n}\n\nexport type ConfirmModalProps =\n\t| CustomConfirmModalButtons\n\t| DefaultConfirmModalHandler;\n\nexport const ConfirmModal: FC<ConfirmModalProps> = ({\n\tisOpen = false,\n\tchildren,\n\tmessage,\n\tsize = \"medium\",\n\tbuttons,\n\tonConfirm,\n\tmessages,\n\tonClose,\n\tonDismiss,\n\t...rest\n}) => {\n\tconst childrenToRender = children ? children : message;\n\tconst handleDismiss = onClose ? onClose : onDismiss;\n\treturn (\n\t\t<Modal size={size} open={isOpen} onDismiss={handleDismiss} {...rest}>\n\t\t\t{isString(childrenToRender) ? (\n\t\t\t\t<Paragraph>{childrenToRender}</Paragraph>\n\t\t\t) : (\n\t\t\t\t<Box paddingBottom=\"medium\">{childrenToRender}</Box>\n\t\t\t)}\n\n\t\t\t<ButtonGroup>\n\t\t\t\t{onConfirm ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<SecondaryButton\n\t\t\t\t\t\t\tonClick={handleDismiss}\n\t\t\t\t\t\t\tdata-testid=\"cancel-modal-button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{messages.cancel}\n\t\t\t\t\t\t</SecondaryButton>\n\t\t\t\t\t\t<PrimaryButton\n\t\t\t\t\t\t\tonClick={onConfirm}\n\t\t\t\t\t\t\tdata-testid=\"confirm-modal-button\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{messages.confirm}\n\t\t\t\t\t\t</PrimaryButton>\n\t\t\t\t\t</>\n\t\t\t\t) : (\n\t\t\t\t\tbuttons\n\t\t\t\t)}\n\t\t\t</ButtonGroup>\n\t\t</Modal>\n\t);\n};\n","import \"./EnturPartnerLogo.scss\";\n\nimport classnames from \"classnames\";\nimport type { FC } from \"react\";\nimport React from \"react\";\n\nimport { Environment, getColorForEnvironment } from \"./environment\";\n\ninterface LogoProps {\n\ttitle: string;\n\tclassName?: string;\n\taccentColor?: string;\n\t[key: string]: object | string | number | boolean | undefined;\n}\n\nexport const EnturPartnerLogoSvg: FC<LogoProps> = ({\n\ttitle,\n\taccentColor = \"#FF5959\",\n\t...rest\n}) => {\n\treturn (\n\t\t<svg width={257} height={37} viewBox=\"0 0 257 37\" {...rest}>\n\t\t\t<title>{title}</title>\n\t\t\t<g fill=\"none\" fillRule=\"evenodd\">\n\t\t\t\t<path\n\t\t\t\t\tfill=\"#FFF\"\n\t\t\t\t\td=\"M0 .231V25.72h18.745v-4.318H4.869v-6.163h12.31v-4.318H4.87V4.55h13.876V.231z\"\n\t\t\t\t/>\n\t\t\t\t<path fill={accentColor} d=\"M0 36.408h45.253v-4.32H0z\" />\n\t\t\t\t<path\n\t\t\t\t\tfill=\"#FFF\"\n\t\t\t\t\td=\"M40.384.231v15.425L23.656.231h-.521V25.72h4.869V10.573L44.732 25.72h.521V.23zM69.25 15.238h-7.267v21.17h-4.87v-21.17H49.81V10.92h19.44zM83.863 36.86c-1.646 0-3.142-.255-4.486-.765-1.345-.51-2.493-1.23-3.443-2.159-.95-.928-1.687-2.054-2.208-3.378-.522-1.323-.783-2.797-.783-4.422V10.92h4.869v15.216c0 1.277.209 2.333.626 3.169.417.836.933 1.497 1.548 1.985a5.346 5.346 0 001.982 1.01c.707.186 1.339.278 1.895.278.557 0 1.188-.092 1.896-.279a5.35 5.35 0 001.982-1.01c.614-.487 1.13-1.148 1.548-1.984.417-.836.625-1.892.625-3.169V10.92h4.87v15.216c0 1.625-.256 3.1-.766 4.422-.51 1.324-1.24 2.45-2.19 3.378-.952.929-2.1 1.648-3.444 2.159-1.344.51-2.851.766-4.52.766M104.21 24.047h5.546c1.016 0 1.854-.127 2.513-.383.658-.255 1.179-.592 1.56-1.01.381-.418.641-.888.78-1.41.138-.522.208-1.05.208-1.584 0-.627-.099-1.207-.295-1.741a3.718 3.718 0 00-.901-1.393c-.405-.394-.924-.708-1.56-.94-.636-.232-1.404-.348-2.305-.348h-5.546v8.81zm0 4.248v8.113h-4.87V10.92h11.567c1.3 0 2.49.215 3.57.644 1.08.43 2.004 1.033 2.77 1.81a8.287 8.287 0 011.794 2.787c.43 1.079.645 2.257.645 3.534 0 .952-.128 1.874-.383 2.768-.256.894-.61 1.7-1.063 2.42a7.32 7.32 0 01-1.672 1.863 5.929 5.929 0 01-2.178 1.096l6.339 8.566h-5.808l-5.893-8.113h-4.818z\"\n\t\t\t\t/>\n\t\t\t\t<g fill={accentColor}>\n\t\t\t\t\t<path d=\"M141.051 23.448h5.628c4.185 0 5.989-1.984 5.989-4.942 0-2.742-1.515-4.618-5.989-4.618h-5.628v9.56zm0 3.067v9.776h-3.571V10.75h9.632c6.674 0 9.127 3.211 9.127 7.54 0 4.979-3.102 8.226-9.2 8.226h-5.988zM169.695 28.715c-1.371-.288-2.958-.505-4.401-.505-2.85 0-4.041 1.263-4.041 3.139s1.407 2.706 3.463 2.706c2.49 0 4.979-1.443 4.979-4.221v-1.119zm-4.293-2.958c1.551 0 3.174.253 4.293.469v-.83c0-2.525-1.154-3.896-4.33-3.896-2.164 0-3.824.866-4.942 2.092l-2.02-2.272c1.732-1.66 3.644-2.598 7.07-2.598 5.052 0 7.469 1.876 7.469 7.215v10.354h-3.211V34.02h-.108c-1.082 1.767-3.211 2.705-5.592 2.705-3.32 0-6.241-1.66-6.241-5.303 0-3.103 1.912-5.664 7.612-5.664zM178.965 19.191h3.211v2.886h.108c.938-1.984 2.922-3.355 5.231-3.355.47 0 .938.036 1.335.144l-.144 3.14a6.77 6.77 0 00-1.552-.181c-3.246 0-4.798 2.633-4.798 5.483v8.983h-3.39v-17.1zM199.961 36.291h-1.912c-4.004 0-5.988-.938-5.988-5.772v-8.55h-2.778V19.19h2.778v-4.654h3.355v4.654h4.473v2.778h-4.473v7.973c0 3.427 1.587 3.535 3.319 3.535h1.226v2.814zM219.767 36.291h-3.391V26.84c0-2.778-1.083-5.375-4.257-5.375-3.14 0-5.268 2.597-5.268 6.169v8.658h-3.391v-17.1h3.32v2.814h.143c.794-1.623 3.067-3.283 5.99-3.283 4.941 0 6.854 3.644 6.854 8.081v9.488zM227.847 26.262h10.57c0-2.597-2.272-4.726-5.087-4.726-2.922 0-5.014 1.948-5.483 4.726zm-.036 2.453c.397 3.355 2.633 5.195 5.844 5.195 2.778 0 4.618-1.623 5.484-2.67l2.164 1.804c-1.37 1.913-4.365 3.716-8.045 3.716-4.942 0-8.73-3.535-8.73-8.55 0-5.195 3.752-9.488 8.983-9.488 5.303 0 8.009 4.365 8.009 8.19 0 .649-.036 1.226-.072 1.803H227.81zM246.245 19.191h3.21v2.886h.109c.938-1.984 2.922-3.355 5.231-3.355.469 0 .938.036 1.335.144l-.145 3.14a6.77 6.77 0 00-1.551-.181c-3.247 0-4.798 2.633-4.798 5.483v8.983h-3.391v-17.1z\" />\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t</svg>\n\t);\n};\n\ninterface EnturPartnerLogoProps {\n\taltText: string;\n\tas?: \"div\" | React.ElementType;\n\tclassName?: string;\n\tenvironment?: Environment;\n}\n\nexport const EnturPartnerLogo: FC<EnturPartnerLogoProps> = ({\n\tas: Component = \"nav\",\n\tclassName,\n\taltText,\n\tenvironment,\n}) => {\n\tconst classList = classnames([\"eps-logo-wrapper\", className]);\n\n\treturn (\n\t\t<Component className={classList}>\n\t\t\t<EnturPartnerLogoSvg\n\t\t\t\ttitle={altText}\n\t\t\t\tclassName=\"logo\"\n\t\t\t\taccentColor={\n\t\t\t\t\tenvironment !== undefined && environment !== Environment.Production\n\t\t\t\t\t\t? getColorForEnvironment(environment)\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t/>\n\t\t</Component>\n\t);\n};\n","import { BannerAlertBox } from \"@entur/alert\";\nimport { PrimaryButton } from \"@entur/button\";\nimport { Paragraph } from \"@entur/typography\";\nimport { isFunction } from \"@entur-partner/util\";\nimport React, { Component, type ErrorInfo, type ReactNode } from \"react\";\nimport { Box } from \"./Box\";\n\ntype FallbackOptions = {\n\tretry: () => void;\n\terror: Error;\n};\n\ntype RenderProp = (options: FallbackOptions) => ReactNode;\n\ntype Props = {\n\thandleError?: (error: Error, errorInfo: ErrorInfo) => void;\n\tfallback: ReactNode | RenderProp;\n\tchildren: ReactNode;\n};\n\ntype State = {\n\terror: null | Error;\n};\n\nconst newAppVersionErrorMessage =\n\t\"Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.\";\n\nexport class ErrorBoundary extends Component<Props, State> {\n\tconstructor(props: Props) {\n\t\tsuper(props);\n\t\tthis.state = { error: null };\n\t}\n\n\tstatic getDerivedStateFromError(error: Error): State {\n\t\treturn {\n\t\t\terror,\n\t\t};\n\t}\n\n\tcomponentDidCatch(error: Error, errorInfo: ErrorInfo) {\n\t\t// React always logs in development\n\t\tthis.props.handleError?.(error, errorInfo);\n\t}\n\n\trender() {\n\t\tconst { error } = this.state;\n\t\tconst { fallback, children } = this.props;\n\n\t\tif (error) {\n\t\t\tif (isFunction<RenderProp>(fallback)) {\n\t\t\t\treturn fallback({ retry: () => this.setState({ error: null }), error });\n\t\t\t} else if (\n\t\t\t\terror.name === \"NotFoundError\" &&\n\t\t\t\terror.message === newAppVersionErrorMessage\n\t\t\t) {\n\t\t\t\treturn <RefreshBannerInfo />;\n\t\t\t}\n\n\t\t\treturn fallback;\n\t\t}\n\n\t\treturn children;\n\t}\n}\n\nexport const LANGUAGE_STORAGE_KEY = \"EP::locale\";\n\nfunction RefreshBannerInfo() {\n\t// Taken from ./app-shell/src/storage.ts\n\tconst language = localStorage.getItem(LANGUAGE_STORAGE_KEY);\n\tconst isNorwegian = language === \"nb\" || language === \"nb-NO\";\n\treturn (\n\t\t<Box maxWidth=\"large\">\n\t\t\t<BannerAlertBox\n\t\t\t\tvariant=\"info\"\n\t\t\t\ttitle={\n\t\t\t\t\tisNorwegian\n\t\t\t\t\t\t? \"En ny versjon av nettsiden er tilgjengelig.\"\n\t\t\t\t\t\t: \"A new version of the website is available.\"\n\t\t\t\t}\n\t\t\t>\n\t\t\t\t<Box paddingBottom=\"medium\">\n\t\t\t\t\t<Paragraph margin=\"none\">\n\t\t\t\t\t\t{isNorwegian ? \"Vennligst oppdater.\" : \"Please refresh.\"}\n\t\t\t\t\t</Paragraph>\n\t\t\t\t</Box>\n\t\t\t\t<PrimaryButton onClick={() => window.location.reload()}>\n\t\t\t\t\t{isNorwegian ? \"Oppdater\" : \"Refresh\"}\n\t\t\t\t</PrimaryButton>\n\t\t\t</BannerAlertBox>\n\t\t</Box>\n\t);\n}\n","/// <reference types=\"vite/client\" />\nimport React, { type ReactNode } from \"react\";\n\n/**\n * Returns true if the provided flag exist in localStorage\n * or is set as an environment variable.\n *\n * @param flag case sensitive flag. If it is an environment variable\n * you can drop the VITE_APP_ prefix.\n */\nexport function featureFlag(flag: string): boolean {\n\treturn (\n\t\timport.meta.env[`VITE_APP_${flag}`] === \"true\" ||\n\t\twindow.localStorage?.getItem(flag) === \"true\" ||\n\t\twindow.localStorage?.getItem(`VITE_APP_${flag}`) === \"true\"\n\t);\n}\n\n/**\n * Returns true if the provided flag exist in localStorage\n * or is set as an environment variable.\n *\n * @param flag case sensitive flag. If it is an environment variable\n * you can drop the VITE_APP_ prefix.\n */\nexport function useFeatureToggle(flag: string): boolean {\n\treturn featureFlag(flag);\n}\n\nexport interface FeatureToggleProps {\n\t/** Visible if flag exist, hidden if not.*/\n\tchildren: ReactNode;\n\t/** Case sensitive flag. If it is an environment variable\n\t * you can drop the VITE_APP_ prefix. */\n\tflag: string;\n}\n\nexport const FeatureToggle = ({ children, flag }: FeatureToggleProps) => {\n\tconst feature = useFeatureToggle(flag);\n\tif (feature) {\n\t\treturn <>{children}</>;\n\t}\n\treturn null;\n};\n","import \"./LanguageSelect.scss\";\n\nimport { SegmentedChoice, SegmentedControl } from \"@entur/form\";\nimport { assertIsDefined } from \"@entur-partner/util\";\nimport cx from \"classnames\";\nimport React, { type FC } from \"react\";\n\nexport type LanguageKey = \"nob\" | \"nno\" | \"eng\";\n\nexport interface LanguageOption {\n\tvalue: LanguageKey;\n\tlabel: string;\n\trequired: boolean;\n}\n\nexport interface LanguageSelectProps {\n\tlanguage: string;\n\toptions: LanguageOption[];\n\tclassName?: string;\n\tonChange: (language: string) => void;\n\t[key: string]: object | string | number | boolean | undefined;\n}\n\nexport const LanguageSelect: FC<LanguageSelectProps> = ({\n\tlanguage,\n\toptions,\n\tclassName,\n\tonChange,\n\t...rest\n}) => {\n\tconst classNames = cx(\"eps-language-select\", className);\n\treturn (\n\t\t<div {...rest} className={classNames}>\n\t\t\t<SegmentedControl\n\t\t\t\tonChange={(language) => {\n\t\t\t\t\tassertIsDefined(language);\n\t\t\t\t\tonChange(language);\n\t\t\t\t}}\n\t\t\t\tselectedValue={language}\n\t\t\t>\n\t\t\t\t{options.map((option) => (\n\t\t\t\t\t<SegmentedChoice key={option.value} value={option.value}>\n\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t{option.required && <span className=\"asterisk-margin\">{\"*\"}</span>}\n\t\t\t\t\t</SegmentedChoice>\n\t\t\t\t))}\n\t\t\t</SegmentedControl>\n\t\t</div>\n\t);\n};\n","import \"../index.scss\";\n\nimport cx from \"classnames\";\nimport React from \"react\";\n\nexport const CustomOverflowMenuItem: React.FC<\n\tReact.DetailedHTMLProps<\n\t\tReact.ButtonHTMLAttributes<HTMLButtonElement>,\n\t\tHTMLButtonElement\n\t>\n> = (props) => {\n\treturn (\n\t\t<button\n\t\t\tclassName={cx(props.className, \"eps-overflow-menu__item\")}\n\t\t\trole=\"menuitem\"\n\t\t\t{...props}\n\t\t/>\n\t);\n};\n","import \"../index.scss\";\n\nimport { CookieIcon } from \"@entur/icons\";\nimport React from \"react\";\n\nimport { CustomOverflowMenuItem } from \"./CustomOverflowMenuItem\";\n\ntype Props = {\n\tname: string;\n\tsetOpen: (open: boolean) => void;\n\tonCookieSettingsOpen: () => void;\n};\n\nexport const CookieSettingsMenuItem = ({\n\tname,\n\tsetOpen,\n\tonCookieSettingsOpen,\n}: Props) => {\n\treturn (\n\t\t<CustomOverflowMenuItem\n\t\t\tonClick={() => {\n\t\t\t\tonCookieSettingsOpen();\n\t\t\t\tsetOpen(false);\n\t\t\t}}\n\t\t\tclassName=\"eps-overflow-menu__item\"\n\t\t>\n\t\t\t<span aria-hidden={true}>\n\t\t\t\t<CookieIcon size=\"1rem\" inline />\n\t\t\t</span>\n\t\t\t{name}\n\t\t</CustomOverflowMenuItem>\n\t);\n};\n","import React from \"react\";\n\nexport function useOutsideClick(\n\tref: React.RefObject<HTMLDivElement>,\n\tbuttonRef: React.RefObject<HTMLButtonElement>,\n\thandler: () => void,\n) {\n\tReact.useEffect(() => {\n\t\tconst listener = (event: Event) => {\n\t\t\tif (\n\t\t\t\telementContainsEventTarget(ref.current, event) ||\n\t\t\t\telementContainsEventTarget(buttonRef.current, event)\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\thandler();\n\t\t};\n\n\t\tdocument.addEventListener(\"mousedown\", listener);\n\t\tdocument.addEventListener(\"touchstart\", listener);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener(\"mousedown\", listener);\n\t\t\tdocument.removeEventListener(\"touchstart\", listener);\n\t\t};\n\t}, [ref, buttonRef, handler]);\n}\n\nfunction elementContainsEventTarget(element: HTMLElement | null, event: Event) {\n\tif (!element) {\n\t\treturn false;\n\t}\n\n\tif (element.contains(event.target as Node)) {\n\t\treturn true;\n\t}\n\n\t// For elements inside a Shadow DOM we need to check the composedPath\n\tif (event.composed && event.composedPath) {\n\t\tconst contains = event.composedPath().find((target) => {\n\t\t\tif (target === window) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn element.contains(target as Node);\n\t\t});\n\t\treturn !!contains;\n\t}\n\n\treturn false;\n}\n","import \"../index.scss\";\n\nimport { SecondaryButton } from \"@entur/button\";\nimport { DownArrowIcon, UserIcon } from \"@entur/icons\";\nimport { Heading6 } from \"@entur/typography\";\nimport cx from \"classnames\";\nimport React from \"react\";\n\nimport {\n\tEnvironment,\n\tgetColorForEnvironment,\n\tgetHumanReadableEnvironment,\n} from \"../../environment\";\nimport { useOutsideClick } from \"../useOutsideClick\";\n\nexport const CustomOverflowMenu: React.FC<{\n\tclassName?: string;\n\tchildren: React.ReactNode;\n\tuserName: string;\n\topen: boolean;\n\tonOpenChange: (open: boolean) => void;\n\tenvironment?: Environment;\n}> = ({\n\tclassName,\n\tchildren,\n\tuserName,\n\topen,\n\tonOpenChange,\n\tenvironment,\n\t...rest\n}) => {\n\tconst overflowItemsClasses = cx(\"eps-overflow-menu__group\", {\n\t\t\"eps-overflow-menu__group--open\": open,\n\t});\n\tconst overflowContentRef = React.useRef<HTMLDivElement>(null);\n\tconst overflowMenuTriggerRef = React.useRef<HTMLButtonElement>(null);\n\tuseOutsideClick(overflowContentRef, overflowMenuTriggerRef, () =>\n\t\tonOpenChange(false),\n\t);\n\treturn (\n\t\t<div>\n\t\t\t<SecondaryButton\n\t\t\t\tclassName={cx(\"eps-overflow-menu__button\", className)}\n\t\t\t\tonClick={() => onOpenChange(!open)}\n\t\t\t\taria-haspopup={true}\n\t\t\t\taria-expanded={open}\n\t\t\t\tref={overflowMenuTriggerRef}\n\t\t\t\t{...rest}\n\t\t\t>\n\t\t\t\t<div className=\"eps-overflow-menu__button-contents\">\n\t\t\t\t\t<span className=\"eds-overflow-menu__user-icon\">\n\t\t\t\t\t\t<UserIcon inline />\n\t\t\t\t\t</span>\n\t\t\t\t\t<Heading6 margin=\"none\" as=\"span\">\n\t\t\t\t\t\t{userName}\n\t\t\t\t\t\t{environment !== undefined &&\n\t\t\t\t\t\t\tenvironment !== Environment.Production && (\n\t\t\t\t\t\t\t\t<span style={{ color: getColorForEnvironment(environment) }}>\n\t\t\t\t\t\t\t\t\t{\" \"}\n\t\t\t\t\t\t\t\t\t({getHumanReadableEnvironment(environment)})\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t</Heading6>\n\t\t\t\t\t<span className=\"eps-arrow-icon\">\n\t\t\t\t\t\t<DownArrowIcon inline />\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</SecondaryButton>\n\t\t\t{open && (\n\t\t\t\t<div\n\t\t\t\t\tclassName={overflowItemsClasses}\n\t\t\t\t\trole=\"menu\"\n\t\t\t\t\tref={overflowContentRef}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n};\n","import \"../index.scss\";\n\nimport { NorwayIcon, UKIcon } from \"@entur/icons\";\nimport React from \"react\";\n\nimport { useFeatureToggle } from \"../../FeatureToggle\";\nimport { CustomOverflowMenuItem } from \"./CustomOverflowMenuItem\";\n\ntype Props = {\n\tlanguage: string;\n\tonLanguageChange: (language: string) => void;\n\tsetOpen: (open: boolean) => void;\n\tname: string;\n};\n\nexport const LanguageSwitchMenuItem = ({\n\tlanguage,\n\tonLanguageChange,\n\tsetOpen,\n\tname,\n}: Props) => {\n\tconst useB47LanguageKey = useFeatureToggle(\"USE_BCP-47_LANGUAGE_KEY\");\n\tconst norwegianLanguageKey = useB47LanguageKey ? \"nb-NO\" : \"nb\";\n\tconst englishLanguageKey = useB47LanguageKey ? \"en-GB\" : \"en\";\n\n\treturn (\n\t\t<>\n\t\t\t{language === englishLanguageKey ? (\n\t\t\t\t<CustomOverflowMenuItem\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tonLanguageChange(norwegianLanguageKey);\n\t\t\t\t\t\tsetOpen(false);\n\t\t\t\t\t}}\n\t\t\t\t\tclassName=\"eps-overflow-menu__item\"\n\t\t\t\t>\n\t\t\t\t\t<span aria-hidden className=\"eps-overflow-menu__icon-margin\">\n\t\t\t\t\t\t<NorwayIcon size=\"1rem\" inline />\n\t\t\t\t\t</span>\n\t\t\t\t\t{name}\n\t\t\t\t</CustomOverflowMenuItem>\n\t\t\t) : (\n\t\t\t\t<CustomOverflowMenuItem\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tonLanguageChange(englishLanguageKey);\n\t\t\t\t\t\tsetOpen(false);\n\t\t\t\t\t}}\n\t\t\t\t\tclassName=\"eps-overflow-menu__item\"\n\t\t\t\t>\n\t\t\t\t\t<span aria-hidden className=\"eps-overflow-menu__icon-margin\">\n\t\t\t\t\t\t<UKIcon size=\"1rem\" inline />\n\t\t\t\t\t</span>\n\t\t\t\t\t{name}\n\t\t\t\t</CustomOverflowMenuItem>\n\t\t\t)}\n\t\t</>\n\t);\n};\n","import \"../index.scss\";\n\nimport { LogOutIcon } from \"@entur/icons\";\nimport React from \"react\";\n\nimport { CustomOverflowMenuItem } from \"./CustomOverflowMenuItem\";\n\ntype Props = {\n\tname: string;\n\tsetOpen: (open: boolean) => void;\n\tonLogout: () => void;\n};\n\nexport const LogOutMenuItem = ({ name, setOpen, onLogout }: Props) => {\n\treturn (\n\t\t<CustomOverflowMenuItem\n\t\t\tonClick={() => {\n\t\t\t\tonLogout();\n\t\t\t\tsetOpen(false);\n\t\t\t}}\n\t\t\tdata-testid=\"user-menu-logout\"\n\t\t\tclassName=\"eps-overflow-menu__item\"\n\t\t>\n\t\t\t<span aria-hidden>\n\t\t\t\t<LogOutIcon size=\"1rem\" inline />\n\t\t\t</span>\n\t\t\t{name}\n\t\t</CustomOverflowMenuItem>\n\t);\n};\n","import \"../index.scss\";\n\nimport { UserIcon } from \"@entur/icons\";\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport { CustomOverflowMenuItem } from \"./CustomOverflowMenuItem\";\n\ntype Props = {\n\tname: string;\n\tsetOpen: (open: boolean) => void;\n\tonNavigateToMyProfile: () => void;\n};\n\nexport const UserMenuItem = ({\n\tname,\n\tsetOpen,\n\tonNavigateToMyProfile,\n}: Props) => {\n\treturn (\n\t\t<Link to=\"/permission-admin/my-profile\" style={{ textDecoration: \"none\" }}>\n\t\t\t<CustomOverflowMenuItem\n\t\t\t\tonClick={() => {\n\t\t\t\t\tsetOpen(false);\n\t\t\t\t\tonNavigateToMyProfile();\n\t\t\t\t}}\n\t\t\t\tclassName=\"eps-overflow-menu__item\"\n\t\t\t>\n\t\t\t\t<span aria-hidden>\n\t\t\t\t\t<UserIcon size=\"1rem\" inline />\n\t\t\t\t</span>\n\t\t\t\t{name}\n\t\t\t</CustomOverflowMenuItem>\n\t\t</Link>\n\t);\n};\n","import { ChannelsIcon } from \"@entur/icons\";\nimport React from \"react\";\nimport { useNavigate } from \"react-router-dom\";\n\nimport { CustomOverflowMenuItem } from \"./CustomOverflowMenuItem\";\n\nexport const VersionMenuItem: React.FC<{\n\ttitle: string;\n\tsetOpen: (isOpen: boolean) => void;\n}> = ({ title, setOpen }) => {\n\tconst navigate = useNavigate(); // Hide useNavigate from standalone micro-frontends because it is not under RouterProvider\n\treturn (\n\t\t<CustomOverflowMenuItem\n\t\t\tonClick={() => {\n\t\t\t\tnavigate(\"/app-version\");\n\t\t\t\tsetOpen(false);\n\t\t\t}}\n\t\t\tclassName=\"eps-overflow-menu__item\"\n\t\t>\n\t\t\t<span aria-hidden>\n\t\t\t\t<ChannelsIcon className=\"eps-version-icon\" size=\"1rem\" inline />\n\t\t\t</span>\n\t\t\t{title}\n\t\t</CustomOverflowMenuItem>\n\t);\n};\n","import \"./ActionBar.scss\";\nimport React, { type ReactNode } from \"react\";\n\nexport interface ActionBarProps {\n\tchildren: ReactNode;\n}\n\nconst ActionBarLeft = ({ children }: ActionBarProps) => {\n\treturn <div className=\"eps-action-bar-left\">{children}</div>;\n};\n\nconst ActionBarRight = ({ children }: ActionBarProps) => {\n\treturn <div className=\"eps-action-bar-right\">{children}</div>;\n};\n\nconst ActionBar = ({ children }: ActionBarProps) => {\n\treturn (\n\t\t<>\n\t\t\t<div className=\"eps-action-bar-padding\" />\n\t\t\t<div className=\"eps-action-bar\">{children}</div>\n\t\t</>\n\t);\n};\n\nexport { ActionBar, ActionBarLeft, ActionBarRight };\n","import \"./AuditInfo.scss\";\n\nimport { isDate, isDateString } from \"@entur-partner/util\";\nimport cx from \"classnames\";\nimport React, { type FC } from \"react\";\n\nimport { FormatDateTime } from \"./FormatDateTime\";\nimport { Stack } from \"./Stack\";\n\ninterface Item {\n\tlabel: string;\n\tvalue: Date | string;\n}\n\nexport interface AuditInfoProps {\n\titems: Item[];\n\tlocale: string;\n\tclassName?: string;\n\t[key: string]: object | string | number | boolean | undefined;\n}\n\nexport const AuditInfo: FC<AuditInfoProps> = ({\n\titems,\n\tlocale,\n\tclassName,\n\t...rest\n}) => {\n\tconst classNames = cx(\"ep-audit-info\", className);\n\treturn (\n\t\t<div className={classNames} {...rest}>\n\t\t\t{items.map(({ label, value }) => (\n\t\t\t\t<Stack space=\"small\" key={value.toString()}>\n\t\t\t\t\t<div className=\"ep-audit-info-label\">{label}</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{isDate(value) || isDateString(value) ? (\n\t\t\t\t\t\t\t<FormatDateTime date={value} locale={locale} />\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<span>{value}</span>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</Stack>\n\t\t\t))}\n\t\t</div>\n\t);\n};\n","import \"./Breadcrumbs.scss\";\nimport { BreadcrumbItem, BreadcrumbNavigation } from \"@entur/menu\";\nimport { splitUrlPath } from \"@entur-partner/util\";\nimport React, { type FC, type ReactElement } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nexport interface BreadcrumbsProps {\n\tpathname: string;\n\tonBreadcrumbLookup: (path: string) => string | undefined;\n\tprependBreadcrumbItem?: ReactElement;\n}\n\nexport const Breadcrumbs: FC<BreadcrumbsProps> = ({\n\tprependBreadcrumbItem,\n\tpathname,\n\tonBreadcrumbLookup,\n}) => {\n\tconst paths: string[] = splitUrlPath(pathname);\n\n\tconst breadcrumbs = paths\n\t\t.map((path) => ({ title: onBreadcrumbLookup(path), path }))\n\t\t.filter(({ title }) => title !== undefined);\n\n\tconst breadcrumbElements = breadcrumbs.map(({ title, path }, i) => {\n\t\tconst isLast = i === breadcrumbs.length - 1;\n\t\tif (isLast) {\n\t\t\treturn (\n\t\t\t\t<BreadcrumbItem key={path} as={\"span\"}>\n\t\t\t\t\t{title}\n\t\t\t\t</BreadcrumbItem>\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t<BreadcrumbItem key={path} as={Link} to={path}>\n\t\t\t\t{title}\n\t\t\t</BreadcrumbItem>\n\t\t);\n\t});\n\n\tif (prependBreadcrumbItem) {\n\t\treturn (\n\t\t\t<BreadcrumbNavigation>\n\t\t\t\t{[prependBreadcrumbItem, ...breadcrumbElements]}\n\t\t\t</BreadcrumbNavigation>\n\t\t);\n\t}\n\n\treturn <BreadcrumbNavigation>{breadcrumbElements}</BreadcrumbNavigation>;\n};\n","import \"./Content.scss\";\n\nimport classnames from \"classnames\";\nimport type { FC, ReactNode } from \"react\";\nimport React from \"react\";\n\ninterface ContentProps {\n\tchildren: ReactNode;\n\tas?: \"main\" | React.ElementType;\n\tclassName?: string;\n}\nexport const Content: FC<ContentProps> = ({\n\tas: Component = \"main\",\n\tclassName,\n\tchildren,\n}) => {\n\tconst classList = classnames([\"eps-content\", className]);\n\n\treturn <Component className={classList}>{children}</Component>;\n};\n","import { ExpandablePanel } from \"@entur/expand\";\nimport type { VariantType } from \"@entur/form\";\nimport type { ChangeEvent } from \"react\";\nimport React from \"react\";\n\nimport type { LanguageKey, LanguageOption } from \"./LanguageSelect\";\nimport { Stack } from \"./Stack\";\n\nexport type MultiLanguageValues = Record<LanguageKey, string>;\n\ntype ExpandableMultiLanguageInputProps = {\n\ttitle: string;\n\tinputComponent: React.ElementType;\n\tlanguages: LanguageOption[];\n\tvalues: MultiLanguageValues;\n\tonChange: (values: MultiLanguageValues) => void;\n\tname: string;\n\tvariant?: (lang: LanguageKey) => VariantType;\n\tfeedback?: (lang: LanguageKey) => string;\n\t[key: string]: object | string | number | boolean | undefined;\n};\n\nexport const ExpandableMultiLanguageInput = ({\n\ttitle,\n\tinputComponent: InputComponent,\n\tlanguages,\n\tvalues,\n\tonChange,\n\tname,\n\tvariant,\n\tfeedback,\n\t...rest\n}: ExpandableMultiLanguageInputProps) => {\n\tconst handleOnChange = (language: LanguageKey, value?: string) => {\n\t\tconst changes = { ...values };\n\t\tif (value === \"\" || !value) {\n\t\t\tdelete changes[language];\n\t\t} else {\n\t\t\tchanges[language] = value;\n\t\t}\n\t\tonChange(changes);\n\t};\n\n\treturn (\n\t\t<ExpandablePanel\n\t\t\ttitle={title}\n\t\t\tdefaultOpen\n\t\t\tcontentStyle={{\n\t\t\t\tpadding: \"4px 4px 4px 4px\",\n\t\t\t\tmarginTop: \"16px\",\n\t\t\t\tmarginBottom: \"16px\",\n\t\t\t}}\n\t\t>\n\t\t\t<Stack space=\"medium\">\n\t\t\t\t{languages.map(({ value: langKey, label, required }) => (\n\t\t\t\t\t<InputComponent\n\t\t\t\t\t\tdata-testid={`multi-lang-input-${name}-${langKey}`}\n\t\t\t\t\t\tkey={title + langKey}\n\t\t\t\t\t\tlabel={required ? `${label}*` : label}\n\t\t\t\t\t\tvariant={variant?.(langKey)}\n\t\t\t\t\t\tfeedback={feedback?.(langKey)}\n\t\t\t\t\t\tname={name}\n\t\t\t\t\t\tonChange={(e: ChangeEvent<HTMLInputElement>) => {\n\t\t\t\t\t\t\thandleOnChange(langKey, e.target.value);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvalue={values[langKey] || \"\"}\n\t\t\t\t\t\t{...rest}\n\t\t\t\t\t/>\n\t\t\t\t))}\n\t\t\t</Stack>\n\t\t</ExpandablePanel>\n\t);\n};\n","import type { FC } from \"react\";\nimport React from \"react\";\n\nexport interface FormatCurrencyAmountProps {\n\tamount: number | string;\n\tas?: \"span\" | React.ElementType;\n\t[key: string]: object | string | number | boolean | undefined;\n}\n\nexport const FormatCurrencyAmount: FC<FormatCurrencyAmountProps> = ({\n\tamount,\n\tas: Component = \"span\",\n\t...rest\n}) => {\n\tconst parsedAmount = Number(amount) || 0;\n\n\tconst formattedAmount = new Intl.NumberFormat(\"nb-NO\", {\n\t\tmaximumFractionDigits: 2,\n\t\tminimumFractionDigits: 2,\n\t}).format(parsedAmount);\n\n\treturn <Component {...rest}>{formattedAmount}</Component>;\n};\n","import { Link as A } from \"@entur/typography\";\nimport React, { type FC } from \"react\";\nimport { type LinkProps, Link as RouterLink } from \"react-router-dom\";\n\ninterface Props extends LinkProps {}\n\nexport const Link: FC<Props> = (props) => {\n\treturn (\n\t\t<A {...props} as={RouterLink}>\n\t\t\t{props.children}\n\t\t</A>\n\t);\n};\n","import \"./LinkButton.scss\";\n\nimport { Link } from \"@entur/typography\";\nimport cx from \"classnames\";\nimport React, { type ReactNode } from \"react\";\n\nexport interface LinkButtonProps {\n\tchildren: ReactNode;\n\tclassName?: string;\n\t[key: string]: object | string | number | boolean | undefined | ReactNode;\n}\n\nexport const LinkButton = ({\n\tchildren,\n\tclassName,\n\t...rest\n}: LinkButtonProps) => (\n\t<Link {...rest} as=\"button\" className={cx(\"eps-link-button\", className)}>\n\t\t{children}\n\t</Link>\n);\n","import \"./Menu.scss\";\n\nimport classnames from \"classnames\";\nimport type { FC, ReactNode } from \"react\";\nimport React from \"react\";\n\ninterface MenuProps {\n\tchildren: ReactNode;\n\tas?: \"div\" | React.ElementType;\n\tclassName?: string;\n}\nexport const Menu: FC<MenuProps> = ({\n\tas: Component = \"nav\",\n\tclassName,\n\tchildren,\n}) => {\n\tconst classList = classnames([\"eds-contrast\", \"eps-menu\", className]);\n\n\treturn <Component className={classList}>{children}</Component>;\n};\n","import \"./MultiLanguageInput.scss\";\n\nimport type { VariantType } from \"@entur/form\";\nimport cx from \"classnames\";\nimport React, {\n\ttype ChangeEvent,\n\ttype FC,\n\ttype FocusEvent,\n\tuseState,\n} from \"react\";\nimport { type LanguageOption, LanguageSelect } from \"./LanguageSelect\";\nimport { Stack } from \"./Stack\";\n\ntype Values = { [key: string]: string };\n\nexport interface MultiLanguageInputProps {\n\tclassName?: string;\n\tonBlur?: (e: FocusEvent<HTMLDivElement>) => void;\n\tinputComponent: React.ElementType;\n\tvalues: { [key: string]: string };\n\tlanguages: LanguageOption[];\n\tonChange: (values: Values) => void;\n\tname: string;\n\talertLevel?: VariantType;\n\talertLabel?: string;\n\tlabel?: string;\n\tdefaultLanguage?: string;\n\t[key: string]: object | string | number | boolean | undefined;\n}\n/**\n * @deprecated use ExpandableMultiLanguageInput\n */\nexport const MultiLanguageInput: FC<MultiLanguageInputProps> = ({\n\tclassName,\n\tinputComponent: InputComponent,\n\talertLabel,\n\talertLevel,\n\tname,\n\tlanguages,\n\tvalues,\n\tonChange,\n\tdefaultLanguage = \"nob\",\n\tlabel = \"\",\n\tonBlur = () => {},\n\t...rest\n}) => {\n\tconst [language, setLanguage] = useState(defaultLanguage);\n\tconst classNames = cx(\"multi-language-input\", className);\n\tconst currentValue = values[language];\n\n\tconst handleOnBlur = (e: FocusEvent<HTMLDivElement>) => {\n\t\te.persist();\n\t\tconst currentTarget = e.currentTarget;\n\t\tsetTimeout(() => {\n\t\t\tif (currentTarget && !currentTarget.contains(document.activeElement)) {\n\t\t\t\tonBlur(e);\n\t\t\t}\n\t\t}, 0);\n\t};\n\n\tconst handleLanguageChange = (language: string) => {\n\t\tsetLanguage(language);\n\t};\n\n\tconst handleOnChange = (value?: string) => {\n\t\tconst changes = Object.assign({}, values);\n\t\tif (value === \"\" || !value) {\n\t\t\tdelete changes[language];\n\t\t} else {\n\t\t\tchanges[language] = value;\n\t\t}\n\t\tonChange(changes);\n\t};\n\n\treturn (\n\t\t// biome-ignore lint/a11y/noStaticElementInteractions: Legacy component\n\t\t<div\n\t\t\tclassName={classNames}\n\t\t\t// biome-ignore lint/a11y/noNoninteractiveTabindex: Legacy component\n\t\t\ttabIndex={0}\n\t\t\tonBlur={handleOnBlur}\n\t\t\tdata-testid={`multi-lang-input-${name}`}\n\t\t>\n\t\t\t<Stack space=\"extraSmall\">\n\t\t\t\t<LanguageSelect\n\t\t\t\t\tlanguage={language}\n\t\t\t\t\toptions={languages}\n\t\t\t\t\tonChange={(lang) => handleLanguageChange(lang)}\n\t\t\t\t/>\n\t\t\t\t<InputComponent\n\t\t\t\t\tlabel={label}\n\t\t\t\t\tvariant={alertLevel}\n\t\t\t\t\tfeedback={alertLabel}\n\t\t\t\t\tname={name}\n\t\t\t\t\tclassName=\"language-item\"\n\t\t\t\t\tonChange={(e: ChangeEvent<HTMLInputElement>) =>\n\t\t\t\t\t\thandleOnChange(e.target.value)\n\t\t\t\t\t}\n\t\t\t\t\tvalue={currentValue || \"\"}\n\t\t\t\t\t{...rest}\n\t\t\t\t/>\n\t\t\t</Stack>\n\t\t</div>\n\t);\n};\n","import { SearchableDropdown } from \"@entur/dropdown\";\nimport React, { type FC, useEffect, useState } from \"react\";\n\ninterface OrganisationV3 {\n\torganisationId: number;\n\ttradingName: string;\n}\n\ninterface OrganisationDropDownProps {\n\tlabel: string;\n\tonChange: (organisationId: number) => void;\n\torganisations: OrganisationV3[];\n\tselectedOrganisationId?: number;\n\t[key: string]: object | string | number | boolean | undefined;\n}\n\nexport const OrganisationDropDown: FC<OrganisationDropDownProps> = ({\n\tlabel,\n\torganisations,\n\tonChange: handleChange,\n\tselectedOrganisationId,\n\t...rest\n}) => {\n\tconst [selectedOrganisation, setSelectedOrganisation] =\n\t\tuseState<OrganisationV3>();\n\n\tuseEffect(() => {\n\t\tsetSelectedOrganisation(\n\t\t\torganisations.find(\n\t\t\t\t(org) => org.organisationId === selectedOrganisationId,\n\t\t\t),\n\t\t);\n\t}, [selectedOrganisationId, organisations]);\n\n\treturn (\n\t\t<SearchableDropdown\n\t\t\tlabel={label}\n\t\t\titems={[\n\t\t\t\t...organisations\n\t\t\t\t\t.sort((a, b) => a.tradingName.localeCompare(b.tradingName, \"nb\"))\n\t\t\t\t\t.map((organisation) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tvalue: organisation.organisationId,\n\t\t\t\t\t\t\tlabel: organisation.tradingName,\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t]}\n\t\t\tselectedItem={\n\t\t\t\tselectedOrganisation\n\t\t\t\t\t? {\n\t\t\t\t\t\t\tvalue: selectedOrganisation.organisationId,\n\t\t\t\t\t\t\tlabel: selectedOrganisation.tradingName,\n\t\t\t\t\t\t}\n\t\t\t\t\t: null\n\t\t\t}\n\t\t\tonChange={(selectedValue) => {\n\t\t\t\tif (selectedValue) {\n\t\t\t\t\thandleChange(selectedValue.value);\n\t\t\t\t}\n\t\t\t}}\n\t\t\tclearable={false}\n\t\t\t{...rest}\n\t\t/>\n\t);\n};\n","import { splitUrlPath } from \"@entur-partner/util\";\nimport React from \"react\";\nimport { Helmet } from \"react-helmet-async\";\n\ntype Props = {\n\treadonly pathname: string;\n\treadonly onBreadcrumbLookup: (path: string) => string | undefined;\n};\n\n/**\n * This component changes page title by using helmet and current path. It will translate subpaths, join them with a dash\n * and display it on browser tab.\n *\n * @param Props.pathname - The current path from react-router-dom.useLocation()\n * @param Props.onBreadcrumbLookup - A function that takes a path and returns a i18n translated string or undefined\n * @returns A Helmet component with updated title\n */\nexport function PageTitle({ pathname, onBreadcrumbLookup }: Props) {\n\tconst paths: string[] = splitUrlPath(pathname);\n\n\tconst pageTitles = paths\n\t\t.map((path) => ({ title: onBreadcrumbLookup(path), path }))\n\t\t.filter(({ title }) => title !== undefined)\n\t\t.map(({ title }) => title)\n\t\t.reverse()\n\t\t.join(\" | \");\n\n\treturn (\n\t\t<Helmet>\n\t\t\t<title>{pageTitles} | Entur Partner</title>\n\t\t</Helmet>\n\t);\n}\n","import { Pagination } from \"@entur/menu\";\nimport React, { type FC } from \"react\";\n\nexport interface PagerProps {\n\tcurrentPage: number;\n\tcollectionSize: number;\n\tpageSize: number;\n\tonPageChange: (page: number) => void;\n}\n\nexport const Pager: FC<PagerProps> = ({\n\tcollectionSize,\n\tpageSize,\n\tonPageChange,\n\tcurrentPage,\n}) => {\n\tconst pageCount = Math.ceil(collectionSize / pageSize);\n\treturn (\n\t\t<Pagination\n\t\t\tpageCount={pageCount}\n\t\t\tcurrentPage={currentPage}\n\t\t\tonPageChange={(page) => {\n\t\t\t\tonPageChange(page);\n\t\t\t}}\n\t\t/>\n\t);\n};\n","import type { BusinessCapability } from \"@entur-partner/permission-client-node\";\nimport { hasAllPermissions, hasOneOfPermissions } from \"@entur-partner/util\";\nimport React, { type FC, type ReactNode } from \"react\";\n\n/**\n * Note: We use BusinessCapability here, not because we only want to check\n * BusinessCapabilities but because it represents a minimal subset of what we\n * need to check.\n */\nexport interface PermissionCheckProps {\n\tchildren: ReactNode;\n\t/** User permissions to check */\n\tpermissions: BusinessCapability[];\n\t/** Check that at least one of the permissions is present */\n\toneOf?: BusinessCapability[];\n\t/** Check that all of the permissions is present */\n\tall?: BusinessCapability[] | BusinessCapability;\n\t/** Rendered if check fails. Defaults to null */\n\tfallback?: ReactNode;\n}\n\n/**\n * Note: This component uses BusinessCapability, not because we only want to\n * check BusinessCapabilities but because it represents a minimal subset of\n * what we need to check.\n */\nexport const PermissionCheck: FC<PermissionCheckProps> = ({\n\tchildren,\n\tfallback = null,\n\tpermissions,\n\toneOf = [],\n\tall = [],\n}) => {\n\tconst allIsAllowed = hasAllPermissions(all, permissions);\n\n\tconst oneOfIsAllowed = hasOneOfPermissions(oneOf, permissions);\n\n\tconst allowed = allIsAllowed && oneOfIsAllowed;\n\treturn <>{allowed ? children : fallback}</>;\n};\n","import type { ModalProps } from \"@entur/modal\";\nimport { assertIsDefined } from \"@entur-partner/util\";\nimport type { Location } from \"history\";\nimport React, { type FC, type ReactNode } from \"react\";\nimport { useBlocker, useInRouterContext } from \"react-router-dom\";\n\nimport { ConfirmModal } from \"./ConfirmModal\";\n\nexport interface RouteLeavingGuardProps extends Partial<ModalProps> {\n\ttitle: string;\n\tcloseLabel: string;\n\tmessages: {\n\t\tcancel: string;\n\t\tconfirm: string;\n\t};\n\tchildren: ReactNode;\n\tshouldBlockNavigation: (location: Location) => boolean;\n}\n\nexport const RouteLeavingGuard: FC<RouteLeavingGuardProps> = ({\n\tchildren,\n\tshouldBlockNavigation,\n\t...rest\n}) => {\n\tassertIsDefined(\n\t\tuseInRouterContext() ? true : undefined,\n\t\t`RouteLeavingGuard must be used within a data router.`,\n\t);\n\n\tconst blocker = useBlocker(\n\t\t({ currentLocation, nextLocation }) =>\n\t\t\tcurrentLocation.pathname !== nextLocation.pathname &&\n\t\t\tshouldBlockNavigation(nextLocation),\n\t);\n\n\treturn (\n\t\t<ConfirmModal\n\t\t\tonDismiss={() => {\n\t\t\t\tif (blocker.state === \"blocked\") {\n\t\t\t\t\tblocker.reset();\n\t\t\t\t}\n\t\t\t}}\n\t\t\topen={blocker.state === \"blocked\"}\n\t\t\tonConfirm={() => {\n\t\t\t\tif (blocker.state === \"blocked\") {\n\t\t\t\t\tblocker.proceed();\n\t\t\t\t}\n\t\t\t}}\n\t\t\t{...rest}\n\t\t>\n\t\t\t{children}\n\t\t</ConfirmModal>\n\t);\n};\n","import \"./StatusLabel.scss\";\n\nimport cx from \"classnames\";\nimport React, { type FC } from \"react\";\n\ninterface StatusLabelProps {\n\tlabel: string;\n\tactive: boolean;\n\taggressiveInactive?: boolean;\n\tshowBullet?: boolean;\n\tcenter?: boolean;\n}\nexport const StatusLabel: FC<StatusLabelProps> = ({\n\tactive = false,\n\tlabel = \"\",\n\taggressiveInactive,\n\tshowBullet,\n\tcenter,\n}) => {\n\tconst bulletClassNames = cx(\"eps-status-label__bullet\", {\n\t\tactive,\n\t\taggressive: aggressiveInactive,\n\t});\n\tconst statusLabelClassNames = cx(\"eps-status-label\", {\n\t\tcenter,\n\t});\n\treturn (\n\t\t<div className={statusLabelClassNames}>\n\t\t\t{showBullet && <div className={bulletClassNames} />}\n\t\t\t<div>{label}</div>\n\t\t</div>\n\t);\n};\n","import \"./Text.scss\";\n\nimport cx from \"classnames\";\nimport type { ReactNode } from \"react\";\nimport React from \"react\";\n\nimport { Box, responsiveProp, type StyleColor } from \"./Box\";\n\ntype StyleFontSize =\n\t| \"extraSmall\"\n\t| \"small\"\n\t| \"medium\"\n\t| \"large\"\n\t| \"extraLarge\"\n\t| \"extraLarge2\"\n\t| \"extraLarge3\"\n\t| \"extraLarge4\";\n\ntype StyleFontWeight = \"body\" | \"heading\";\n\ntype StyleLineHeight =\n\t| \"extraSmall\"\n\t| \"small\"\n\t| \"medium\"\n\t| \"large\"\n\t| \"extraLarge\"\n\t| \"extraLarge2\"\n\t| \"extraLarge3\"\n\t| \"extraLarge4\"\n\t| \"extraLarge5\"\n\t| \"extraLarge6\"\n\t| \"extraLarge7\";\n\nexport type ResponsiveStyleFontSize =\n\t| StyleFontSize\n\t| [StyleFontSize?, StyleFontSize?, StyleFontSize?];\n\nexport type ResponsiveStyleLineHeight =\n\t| StyleLineHeight\n\t| [StyleLineHeight?, StyleLineHeight?, StyleLineHeight?];\n\nexport interface TextProps {\n\tclassName?: string;\n\tas?: React.ElementType;\n\tchildren: ReactNode;\n\tfontSize?: ResponsiveStyleFontSize;\n\tlineHeight?: ResponsiveStyleLineHeight;\n\tcolor?: StyleColor;\n\tfontWeight?: StyleFontWeight;\n\t// biome-ignore lint/suspicious/noExplicitAny: Ignore for now.\n\t[key: string]: any;\n}\n\nexport const Text = ({\n\tas: component = \"span\",\n\tchildren,\n\tfontSize,\n\tcolor,\n\tlineHeight,\n\tfontWeight,\n\tclassName,\n\t...rest\n}: TextProps) => {\n\tconst classes = [];\n\n\tfontSize && classes.push(...responsiveProp(\"eps-font-size-\", fontSize));\n\tlineHeight && classes.push(...responsiveProp(\"eps-line-height-\", lineHeight));\n\tfontWeight && classes.push(`eps-font-weight-${fontWeight}`);\n\n\tconst classList = cx(classes, className);\n\n\treturn (\n\t\t<Box as={component} color={color} className={classList} {...rest}>\n\t\t\t{children}\n\t\t</Box>\n\t);\n};\n","import \"./Unbutton.scss\";\n\nimport { Button, type ButtonProps } from \"@entur/button\";\nimport cx from \"classnames\";\nimport React, { type FC } from \"react\";\n\ninterface UnbuttonProps extends Omit<ButtonProps<typeof Button>, \"variant\"> {}\n\nexport const Unbutton: FC<UnbuttonProps> = ({\n\tchildren,\n\tclassName,\n\t...rest\n}) => (\n\t<Button variant=\"primary\" {...rest} className={cx(\"eps-unbutton\", className)}>\n\t\t{children}\n\t</Button>\n);\n","import \"./index.scss\";\n\nimport cx from \"classnames\";\nimport React, { type FC, useState } from \"react\";\n\nimport type { Environment } from \"../environment\";\nimport { CookieSettingsMenuItem } from \"./components/CookieSettingsMenuItem\";\nimport { CustomOverflowMenu } from \"./components/CustomOverflowMenu\";\nimport { LanguageSwitchMenuItem } from \"./components/LanguageSwitchMenuItem\";\nimport { LogOutMenuItem } from \"./components/LogOutMenuItem\";\nimport { UserMenuItem } from \"./components/UserMenuItem\";\nimport { VersionMenuItem } from \"./components/VersionMenuItem\";\n\ninterface UserMenuProps {\n\tuserName: string;\n\tmessages: {\n\t\tlogout: string;\n\t\tswitchLanguage: string;\n\t\tappVersion?: string;\n\t\tmyProfile?: string;\n\t\tcookieSettings?: string;\n\t};\n\tonLogout: () => void;\n\tonLanguageChange: (language: string) => void;\n\tlanguage: string;\n\tclassName?: string;\n\tenvironment?: Environment;\n\tshowVersionItem?: boolean;\n\tshowMyProfileItem?: boolean;\n\tshowCookieSettingsItem?: boolean;\n\tonNavigateToMyProfile: () => void;\n\tonCookieSettingsOpen?: () => void;\n}\n\nexport const UserMenu: FC<UserMenuProps> = ({\n\tclassName,\n\tmessages,\n\tonLogout,\n\tonLanguageChange,\n\tuserName,\n\tlanguage,\n\tenvironment,\n\tshowVersionItem,\n\tshowMyProfileItem,\n\tshowCookieSettingsItem,\n\tonNavigateToMyProfile,\n\tonCookieSettingsOpen = () => {},\n}) => {\n\tconst triggerClassList = cx([\"eps-user-menu__trigger-button\", className]);\n\tconst [open, setOpen] = useState(false);\n\n\treturn (\n\t\t<div id=\"eps-user-menu\">\n\t\t\t<CustomOverflowMenu\n\t\t\t\topen={open}\n\t\t\t\tonOpenChange={setOpen}\n\t\t\t\tclassName={triggerClassList}\n\t\t\t\tuserName={userName}\n\t\t\t\tenvironment={environment}\n\t\t\t>\n\t\t\t\t<div id=\"eps-overflow-menu\">\n\t\t\t\t\t<LanguageSwitchMenuItem\n\t\t\t\t\t\tname={messages.switchLanguage}\n\t\t\t\t\t\tlanguage={language}\n\t\t\t\t\t\tonLanguageChange={onLanguageChange}\n\t\t\t\t\t\tsetOpen={setOpen}\n\t\t\t\t\t/>\n\t\t\t\t\t{showVersionItem && messages.appVersion && (\n\t\t\t\t\t\t<VersionMenuItem title={messages.appVersion} setOpen={setOpen} />\n\t\t\t\t\t)}\n\t\t\t\t\t{showMyProfileItem && messages.myProfile && (\n\t\t\t\t\t\t<UserMenuItem\n\t\t\t\t\t\t\tname={messages.myProfile}\n\t\t\t\t\t\t\tsetOpen={setOpen}\n\t\t\t\t\t\t\tonNavigateToMyProfile={onNavigateToMyProfile}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t{showCookieSettingsItem && messages.cookieSettings && (\n\t\t\t\t\t\t<CookieSettingsMenuItem\n\t\t\t\t\t\t\tname={messages.cookieSettings}\n\t\t\t\t\t\t\tsetOpen={setOpen}\n\t\t\t\t\t\t\tonCookieSettingsOpen={onCookieSettingsOpen}\n\t\t\t\t\t\t/>\n\t\t\t\t\t)}\n\t\t\t\t\t<LogOutMenuItem\n\t\t\t\t\t\tname={messages.logout}\n\t\t\t\t\t\tsetOpen={setOpen}\n\t\t\t\t\t\tonLogout={onLogout}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</CustomOverflowMenu>\n\t\t</div>\n\t);\n};\n","/*global EventListener WindowEventHandlers*/\nimport { useEffect, useRef } from \"react\";\n\ntype TypedEventListener<T extends Event> = (evt: T) => void;\n\nexport function useEventListener<T extends Event = Event>(\n\teventName: string,\n\thandler: TypedEventListener<T>,\n\telement: WindowEventHandlers = window,\n) {\n\tconst savedHandler = useRef<TypedEventListener<T>>();\n\n\tuseEffect(() => {\n\t\tsavedHandler.current = handler;\n\t}, [handler]);\n\n\tuseEffect(() => {\n\t\tconst isSupported = element?.addEventListener;\n\t\tif (!isSupported) return;\n\n\t\tconst eventListener = ((event: T): void =>\n\t\t\tsavedHandler.current?.(event)) as EventListener;\n\n\t\telement.addEventListener(eventName, eventListener);\n\n\t\treturn () => {\n\t\t\telement.removeEventListener(eventName, eventListener);\n\t\t};\n\t}, [eventName, element]);\n}\n"],"names":["FormatDateTime","_ref","date","locale","_ref$as","as","Component","hideTime","rest","_objectWithoutPropertiesLoose","_excluded","React","createElement","_extends","localeDate","localeDateTime","responsiveProp","prefix","prop","Array","isArray","classes","push","Environment","Box","children","contrast","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","padding","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","margin","display","justifyContent","alignItems","maxWidth","width","background","color","flexDirection","flexWrap","className","resolvedPaddingTop","resolvedPaddingBottom","resolvedPaddingLeft","resolvedPaddingRight","resolvedMarginTop","resolvedMarginBottom","resolvedMarginLeft","resolvedMarginRight","apply","classList","cx","Stack","space","stackItems","Children","toArray","length","Fragment","map","child","index","key","ConfirmModal","_ref$isOpen","isOpen","message","_ref$size","size","buttons","onConfirm","messages","onClose","onDismiss","childrenToRender","handleDismiss","Modal","open","isString","Paragraph","ButtonGroup","SecondaryButton","onClick","cancel","PrimaryButton","confirm","environmentColors","_environmentColors","Local","Development","Staging","getColorForEnvironment","environment","humanReadableEnvironment","_humanReadableEnviron","Production","getHumanReadableEnvironment","EnturPartnerLogoSvg","title","_ref$accentColor","accentColor","height","viewBox","fill","fillRule","d","ErrorBoundary","_Component","props","_this","call","this","state","error","getDerivedStateFromError","_proto","prototype","componentDidCatch","errorInfo","_this$props$handleErr","_this$props","handleError","render","_this2","_this$props2","fallback","isFunction","retry","setState","name","RefreshBannerInfo","LANGUAGE_STORAGE_KEY","language","localStorage","getItem","isNorwegian","BannerAlertBox","variant","window","location","reload","featureFlag","flag","_window$localStorage","_window$localStorage2","import","useFeatureToggle","LanguageSelect","options","onChange","classNames","SegmentedControl","assertIsDefined","selectedValue","option","SegmentedChoice","value","label","required","CustomOverflowMenuItem","role","CookieSettingsMenuItem","setOpen","onCookieSettingsOpen","CookieIcon","inline","elementContainsEventTarget","element","event","contains","target","composed","composedPath","find","CustomOverflowMenu","ref","buttonRef","handler","userName","onOpenChange","overflowItemsClasses","overflowContentRef","useRef","overflowMenuTriggerRef","useEffect","listener","current","document","addEventListener","removeEventListener","UserIcon","Heading6","undefined","style","DownArrowIcon","LanguageSwitchMenuItem","onLanguageChange","useB47LanguageKey","norwegianLanguageKey","englishLanguageKey","NorwayIcon","UKIcon","LogOutMenuItem","onLogout","LogOutIcon","UserMenuItem","onNavigateToMyProfile","Link","to","textDecoration","VersionMenuItem","navigate","useNavigate","ChannelsIcon","_ref3","_ref2","items","toString","isDate","isDateString","prependBreadcrumbItem","onBreadcrumbLookup","breadcrumbs","splitUrlPath","pathname","path","filter","breadcrumbElements","i","BreadcrumbItem","BreadcrumbNavigation","concat","classnames","_ref2$as","altText","InputComponent","inputComponent","languages","values","feedback","ExpandablePanel","defaultOpen","contentStyle","langKey","e","changes","amount","parsedAmount","Number","formattedAmount","Intl","NumberFormat","maximumFractionDigits","minimumFractionDigits","format","A","RouterLink","alertLabel","alertLevel","_ref$defaultLanguage","defaultLanguage","_ref$label","_ref$onBlur","onBlur","_useState","useState","setLanguage","currentValue","tabIndex","persist","currentTarget","setTimeout","activeElement","lang","handleLanguageChange","Object","assign","organisations","handleChange","selectedOrganisationId","selectedOrganisation","setSelectedOrganisation","org","organisationId","SearchableDropdown","sort","a","b","tradingName","localeCompare","organisation","selectedItem","clearable","pageTitles","reverse","join","Helmet","onPageChange","currentPage","pageCount","Math","ceil","collectionSize","pageSize","Pagination","page","_ref$fallback","permissions","_ref$oneOf","oneOf","_ref$all","all","allIsAllowed","hasAllPermissions","oneOfIsAllowed","hasOneOfPermissions","shouldBlockNavigation","useInRouterContext","blocker","useBlocker","nextLocation","currentLocation","reset","proceed","_ref$active","active","showBullet","center","bulletClassNames","aggressive","aggressiveInactive","statusLabelClassNames","component","fontSize","lineHeight","fontWeight","Button","showVersionItem","showMyProfileItem","showCookieSettingsItem","_ref$onCookieSettings","triggerClassList","id","switchLanguage","appVersion","myProfile","cookieSettings","logout","eventName","savedHandler","_element","eventListener"],"mappings":"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"}