@visma-swno/customer-onboarding-wizard 1.0.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.
- package/README.md +233 -0
- package/dist/assets/Inter-Medium.woff2 +0 -0
- package/dist/assets/Inter-Regular.woff2 +0 -0
- package/dist/assets/Inter-SemiBold.woff2 +0 -0
- package/dist/assets/index.js +2315 -0
- package/dist/index.html +182 -0
- package/package.json +41 -0
|
@@ -0,0 +1,2315 @@
|
|
|
1
|
+
(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))a(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const o of s.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&a(o)}).observe(document,{childList:!0,subtree:!0});function r(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function a(i){if(i.ep)return;i.ep=!0;const s=r(i);fetch(i.href,s)}})();/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2019 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
5
|
+
*/const X=globalThis,ce=X.ShadowRoot&&(X.ShadyCSS===void 0||X.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,ge=Symbol(),me=new WeakMap;let Se=class{constructor(e,r,a){if(this._$cssResult$=!0,a!==ge)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=r}get styleSheet(){let e=this.o;const r=this.t;if(ce&&e===void 0){const a=r!==void 0&&r.length===1;a&&(e=me.get(r)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),a&&me.set(r,e))}return e}toString(){return this.cssText}};const Re=t=>new Se(typeof t=="string"?t:t+"",void 0,ge),E=(t,...e)=>{const r=t.length===1?t[0]:e.reduce((a,i,s)=>a+(o=>{if(o._$cssResult$===!0)return o.cssText;if(typeof o=="number")return o;throw Error("Value passed to 'css' function must be a 'css' function result: "+o+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(i)+t[s+1],t[0]);return new Se(r,t,ge)},Ie=(t,e)=>{if(ce)t.adoptedStyleSheets=e.map(r=>r instanceof CSSStyleSheet?r:r.styleSheet);else for(const r of e){const a=document.createElement("style"),i=X.litNonce;i!==void 0&&a.setAttribute("nonce",i),a.textContent=r.cssText,t.appendChild(a)}},ve=ce?t=>t:t=>t instanceof CSSStyleSheet?(e=>{let r="";for(const a of e.cssRules)r+=a.cssText;return Re(r)})(t):t;/**
|
|
6
|
+
* @license
|
|
7
|
+
* Copyright 2017 Google LLC
|
|
8
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
9
|
+
*/const{is:Te,defineProperty:Be,getOwnPropertyDescriptor:Ue,getOwnPropertyNames:Oe,getOwnPropertySymbols:De,getPrototypeOf:qe}=Object,N=globalThis,fe=N.trustedTypes,Me=fe?fe.emptyScript:"",ie=N.reactiveElementPolyfillSupport,F=(t,e)=>t,ee={toAttribute(t,e){switch(e){case Boolean:t=t?Me:null;break;case Object:case Array:t=t==null?t:JSON.stringify(t)}return t},fromAttribute(t,e){let r=t;switch(e){case Boolean:r=t!==null;break;case Number:r=t===null?null:Number(t);break;case Object:case Array:try{r=JSON.parse(t)}catch{r=null}}return r}},pe=(t,e)=>!Te(t,e),ye={attribute:!0,type:String,converter:ee,reflect:!1,useDefault:!1,hasChanged:pe};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),N.litPropertyMetadata??(N.litPropertyMetadata=new WeakMap);let T=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??(this.l=[])).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,r=ye){if(r.state&&(r.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((r=Object.create(r)).wrapped=!0),this.elementProperties.set(e,r),!r.noAccessor){const a=Symbol(),i=this.getPropertyDescriptor(e,a,r);i!==void 0&&Be(this.prototype,e,i)}}static getPropertyDescriptor(e,r,a){const{get:i,set:s}=Ue(this.prototype,e)??{get(){return this[r]},set(o){this[r]=o}};return{get:i,set(o){const l=i==null?void 0:i.call(this);s==null||s.call(this,o),this.requestUpdate(e,l,a)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??ye}static _$Ei(){if(this.hasOwnProperty(F("elementProperties")))return;const e=qe(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(F("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(F("properties"))){const r=this.properties,a=[...Oe(r),...De(r)];for(const i of a)this.createProperty(i,r[i])}const e=this[Symbol.metadata];if(e!==null){const r=litPropertyMetadata.get(e);if(r!==void 0)for(const[a,i]of r)this.elementProperties.set(a,i)}this._$Eh=new Map;for(const[r,a]of this.elementProperties){const i=this._$Eu(r,a);i!==void 0&&this._$Eh.set(i,r)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){const r=[];if(Array.isArray(e)){const a=new Set(e.flat(1/0).reverse());for(const i of a)r.unshift(ve(i))}else e!==void 0&&r.push(ve(e));return r}static _$Eu(e,r){const a=r.attribute;return a===!1?void 0:typeof a=="string"?a:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var e;this._$ES=new Promise(r=>this.enableUpdating=r),this._$AL=new Map,this._$E_(),this.requestUpdate(),(e=this.constructor.l)==null||e.forEach(r=>r(this))}addController(e){var r;(this._$EO??(this._$EO=new Set)).add(e),this.renderRoot!==void 0&&this.isConnected&&((r=e.hostConnected)==null||r.call(e))}removeController(e){var r;(r=this._$EO)==null||r.delete(e)}_$E_(){const e=new Map,r=this.constructor.elementProperties;for(const a of r.keys())this.hasOwnProperty(a)&&(e.set(a,this[a]),delete this[a]);e.size>0&&(this._$Ep=e)}createRenderRoot(){const e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Ie(e,this.constructor.elementStyles),e}connectedCallback(){var e;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$EO)==null||e.forEach(r=>{var a;return(a=r.hostConnected)==null?void 0:a.call(r)})}enableUpdating(e){}disconnectedCallback(){var e;(e=this._$EO)==null||e.forEach(r=>{var a;return(a=r.hostDisconnected)==null?void 0:a.call(r)})}attributeChangedCallback(e,r,a){this._$AK(e,a)}_$ET(e,r){var s;const a=this.constructor.elementProperties.get(e),i=this.constructor._$Eu(e,a);if(i!==void 0&&a.reflect===!0){const o=(((s=a.converter)==null?void 0:s.toAttribute)!==void 0?a.converter:ee).toAttribute(r,a.type);this._$Em=e,o==null?this.removeAttribute(i):this.setAttribute(i,o),this._$Em=null}}_$AK(e,r){var s,o;const a=this.constructor,i=a._$Eh.get(e);if(i!==void 0&&this._$Em!==i){const l=a.getPropertyOptions(i),n=typeof l.converter=="function"?{fromAttribute:l.converter}:((s=l.converter)==null?void 0:s.fromAttribute)!==void 0?l.converter:ee;this._$Em=i;const p=n.fromAttribute(r,l.type);this[i]=p??((o=this._$Ej)==null?void 0:o.get(i))??p,this._$Em=null}}requestUpdate(e,r,a,i=!1,s){var o;if(e!==void 0){const l=this.constructor;if(i===!1&&(s=this[e]),a??(a=l.getPropertyOptions(e)),!((a.hasChanged??pe)(s,r)||a.useDefault&&a.reflect&&s===((o=this._$Ej)==null?void 0:o.get(e))&&!this.hasAttribute(l._$Eu(e,a))))return;this.C(e,r,a)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,r,{useDefault:a,reflect:i,wrapped:s},o){a&&!(this._$Ej??(this._$Ej=new Map)).has(e)&&(this._$Ej.set(e,o??r??this[e]),s!==!0||o!==void 0)||(this._$AL.has(e)||(this.hasUpdated||a||(r=void 0),this._$AL.set(e,r)),i===!0&&this._$Em!==e&&(this._$Eq??(this._$Eq=new Set)).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(r){Promise.reject(r)}const e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var a;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[s,o]of this._$Ep)this[s]=o;this._$Ep=void 0}const i=this.constructor.elementProperties;if(i.size>0)for(const[s,o]of i){const{wrapped:l}=o,n=this[s];l!==!0||this._$AL.has(s)||n===void 0||this.C(s,void 0,o,n)}}let e=!1;const r=this._$AL;try{e=this.shouldUpdate(r),e?(this.willUpdate(r),(a=this._$EO)==null||a.forEach(i=>{var s;return(s=i.hostUpdate)==null?void 0:s.call(i)}),this.update(r)):this._$EM()}catch(i){throw e=!1,this._$EM(),i}e&&this._$AE(r)}willUpdate(e){}_$AE(e){var r;(r=this._$EO)==null||r.forEach(a=>{var i;return(i=a.hostUpdated)==null?void 0:i.call(a)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&(this._$Eq=this._$Eq.forEach(r=>this._$ET(r,this[r]))),this._$EM()}updated(e){}firstUpdated(e){}};T.elementStyles=[],T.shadowRootOptions={mode:"open"},T[F("elementProperties")]=new Map,T[F("finalized")]=new Map,ie==null||ie({ReactiveElement:T}),(N.reactiveElementVersions??(N.reactiveElementVersions=[])).push("2.1.2");/**
|
|
10
|
+
* @license
|
|
11
|
+
* Copyright 2017 Google LLC
|
|
12
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
13
|
+
*/const V=globalThis,be=t=>t,te=V.trustedTypes,we=te?te.createPolicy("lit-html",{createHTML:t=>t}):void 0,Ee="$lit$",_=`lit$${Math.random().toFixed(9).slice(2)}$`,Le="?"+_,Fe=`<${Le}>`,I=document,H=()=>I.createComment(""),W=t=>t===null||typeof t!="object"&&typeof t!="function",ue=Array.isArray,Ve=t=>ue(t)||typeof(t==null?void 0:t[Symbol.iterator])=="function",se=`[
|
|
14
|
+
\f\r]`,q=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,xe=/-->/g,$e=/>/g,P=RegExp(`>|${se}(?:([^\\s"'>=/]+)(${se}*=${se}*(?:[^
|
|
15
|
+
\f\r"'\`<>=]|("|')|))|$)`,"g"),ke=/'/g,ze=/"/g,_e=/^(?:script|style|textarea|title)$/i,Ne=t=>(e,...r)=>({_$litType$:t,strings:e,values:r}),d=Ne(1),x=Ne(2),B=Symbol.for("lit-noChange"),v=Symbol.for("lit-nothing"),Ce=new WeakMap,j=I.createTreeWalker(I,129);function Pe(t,e){if(!ue(t)||!t.hasOwnProperty("raw"))throw Error("invalid template strings array");return we!==void 0?we.createHTML(e):e}const He=(t,e)=>{const r=t.length-1,a=[];let i,s=e===2?"<svg>":e===3?"<math>":"",o=q;for(let l=0;l<r;l++){const n=t[l];let p,c,g=-1,C=0;for(;C<n.length&&(o.lastIndex=C,c=o.exec(n),c!==null);)C=o.lastIndex,o===q?c[1]==="!--"?o=xe:c[1]!==void 0?o=$e:c[2]!==void 0?(_e.test(c[2])&&(i=RegExp("</"+c[2],"g")),o=P):c[3]!==void 0&&(o=P):o===P?c[0]===">"?(o=i??q,g=-1):c[1]===void 0?g=-2:(g=o.lastIndex-c[2].length,p=c[1],o=c[3]===void 0?P:c[3]==='"'?ze:ke):o===ze||o===ke?o=P:o===xe||o===$e?o=q:(o=P,i=void 0);const L=o===P&&t[l+1].startsWith("/>")?" ":"";s+=o===q?n+Fe:g>=0?(a.push(p),n.slice(0,g)+Ee+n.slice(g)+_+L):n+_+(g===-2?l:L)}return[Pe(t,s+(t[r]||"<?>")+(e===2?"</svg>":e===3?"</math>":"")),a]};class G{constructor({strings:e,_$litType$:r},a){let i;this.parts=[];let s=0,o=0;const l=e.length-1,n=this.parts,[p,c]=He(e,r);if(this.el=G.createElement(p,a),j.currentNode=this.el.content,r===2||r===3){const g=this.el.content.firstChild;g.replaceWith(...g.childNodes)}for(;(i=j.nextNode())!==null&&n.length<l;){if(i.nodeType===1){if(i.hasAttributes())for(const g of i.getAttributeNames())if(g.endsWith(Ee)){const C=c[o++],L=i.getAttribute(g).split(_),Q=/([.?@])?(.*)/.exec(C);n.push({type:1,index:s,name:Q[2],strings:L,ctor:Q[1]==="."?Ge:Q[1]==="?"?Ke:Q[1]==="@"?Ye:ae}),i.removeAttribute(g)}else g.startsWith(_)&&(n.push({type:6,index:s}),i.removeAttribute(g));if(_e.test(i.tagName)){const g=i.textContent.split(_),C=g.length-1;if(C>0){i.textContent=te?te.emptyScript:"";for(let L=0;L<C;L++)i.append(g[L],H()),j.nextNode(),n.push({type:2,index:++s});i.append(g[C],H())}}}else if(i.nodeType===8)if(i.data===Le)n.push({type:2,index:s});else{let g=-1;for(;(g=i.data.indexOf(_,g+1))!==-1;)n.push({type:7,index:s}),g+=_.length-1}s++}}static createElement(e,r){const a=I.createElement("template");return a.innerHTML=e,a}}function U(t,e,r=t,a){var o,l;if(e===B)return e;let i=a!==void 0?(o=r._$Co)==null?void 0:o[a]:r._$Cl;const s=W(e)?void 0:e._$litDirective$;return(i==null?void 0:i.constructor)!==s&&((l=i==null?void 0:i._$AO)==null||l.call(i,!1),s===void 0?i=void 0:(i=new s(t),i._$AT(t,r,a)),a!==void 0?(r._$Co??(r._$Co=[]))[a]=i:r._$Cl=i),i!==void 0&&(e=U(t,i._$AS(t,e.values),i,a)),e}class We{constructor(e,r){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=r}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){const{el:{content:r},parts:a}=this._$AD,i=((e==null?void 0:e.creationScope)??I).importNode(r,!0);j.currentNode=i;let s=j.nextNode(),o=0,l=0,n=a[0];for(;n!==void 0;){if(o===n.index){let p;n.type===2?p=new Y(s,s.nextSibling,this,e):n.type===1?p=new n.ctor(s,n.name,n.strings,this,e):n.type===6&&(p=new Ze(s,this,e)),this._$AV.push(p),n=a[++l]}o!==(n==null?void 0:n.index)&&(s=j.nextNode(),o++)}return j.currentNode=I,i}p(e){let r=0;for(const a of this._$AV)a!==void 0&&(a.strings!==void 0?(a._$AI(e,a,r),r+=a.strings.length-2):a._$AI(e[r])),r++}}class Y{get _$AU(){var e;return((e=this._$AM)==null?void 0:e._$AU)??this._$Cv}constructor(e,r,a,i){this.type=2,this._$AH=v,this._$AN=void 0,this._$AA=e,this._$AB=r,this._$AM=a,this.options=i,this._$Cv=(i==null?void 0:i.isConnected)??!0}get parentNode(){let e=this._$AA.parentNode;const r=this._$AM;return r!==void 0&&(e==null?void 0:e.nodeType)===11&&(e=r.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,r=this){e=U(this,e,r),W(e)?e===v||e==null||e===""?(this._$AH!==v&&this._$AR(),this._$AH=v):e!==this._$AH&&e!==B&&this._(e):e._$litType$!==void 0?this.$(e):e.nodeType!==void 0?this.T(e):Ve(e)?this.k(e):this._(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==v&&W(this._$AH)?this._$AA.nextSibling.data=e:this.T(I.createTextNode(e)),this._$AH=e}$(e){var s;const{values:r,_$litType$:a}=e,i=typeof a=="number"?this._$AC(e):(a.el===void 0&&(a.el=G.createElement(Pe(a.h,a.h[0]),this.options)),a);if(((s=this._$AH)==null?void 0:s._$AD)===i)this._$AH.p(r);else{const o=new We(i,this),l=o.u(this.options);o.p(r),this.T(l),this._$AH=o}}_$AC(e){let r=Ce.get(e.strings);return r===void 0&&Ce.set(e.strings,r=new G(e)),r}k(e){ue(this._$AH)||(this._$AH=[],this._$AR());const r=this._$AH;let a,i=0;for(const s of e)i===r.length?r.push(a=new Y(this.O(H()),this.O(H()),this,this.options)):a=r[i],a._$AI(s),i++;i<r.length&&(this._$AR(a&&a._$AB.nextSibling,i),r.length=i)}_$AR(e=this._$AA.nextSibling,r){var a;for((a=this._$AP)==null?void 0:a.call(this,!1,!0,r);e!==this._$AB;){const i=be(e).nextSibling;be(e).remove(),e=i}}setConnected(e){var r;this._$AM===void 0&&(this._$Cv=e,(r=this._$AP)==null||r.call(this,e))}}class ae{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,r,a,i,s){this.type=1,this._$AH=v,this._$AN=void 0,this.element=e,this.name=r,this._$AM=i,this.options=s,a.length>2||a[0]!==""||a[1]!==""?(this._$AH=Array(a.length-1).fill(new String),this.strings=a):this._$AH=v}_$AI(e,r=this,a,i){const s=this.strings;let o=!1;if(s===void 0)e=U(this,e,r,0),o=!W(e)||e!==this._$AH&&e!==B,o&&(this._$AH=e);else{const l=e;let n,p;for(e=s[0],n=0;n<s.length-1;n++)p=U(this,l[a+n],r,n),p===B&&(p=this._$AH[n]),o||(o=!W(p)||p!==this._$AH[n]),p===v?e=v:e!==v&&(e+=(p??"")+s[n+1]),this._$AH[n]=p}o&&!i&&this.j(e)}j(e){e===v?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??"")}}class Ge extends ae{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===v?void 0:e}}class Ke extends ae{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==v)}}class Ye extends ae{constructor(e,r,a,i,s){super(e,r,a,i,s),this.type=5}_$AI(e,r=this){if((e=U(this,e,r,0)??v)===B)return;const a=this._$AH,i=e===v&&a!==v||e.capture!==a.capture||e.once!==a.once||e.passive!==a.passive,s=e!==v&&(a===v||i);i&&this.element.removeEventListener(this.name,this,a),s&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){var r;typeof this._$AH=="function"?this._$AH.call(((r=this.options)==null?void 0:r.host)??this.element,e):this._$AH.handleEvent(e)}}class Ze{constructor(e,r,a){this.element=e,this.type=6,this._$AN=void 0,this._$AM=r,this.options=a}get _$AU(){return this._$AM._$AU}_$AI(e){U(this,e)}}const oe=V.litHtmlPolyfillSupport;oe==null||oe(G,Y),(V.litHtmlVersions??(V.litHtmlVersions=[])).push("3.3.2");const Je=(t,e,r)=>{const a=(r==null?void 0:r.renderBefore)??e;let i=a._$litPart$;if(i===void 0){const s=(r==null?void 0:r.renderBefore)??null;a._$litPart$=i=new Y(e.insertBefore(H(),s),s,void 0,r??{})}return i._$AI(t),i};/**
|
|
16
|
+
* @license
|
|
17
|
+
* Copyright 2017 Google LLC
|
|
18
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
19
|
+
*/const R=globalThis;class S extends T{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var r;const e=super.createRenderRoot();return(r=this.renderOptions).renderBefore??(r.renderBefore=e.firstChild),e}update(e){const r=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Je(r,this.renderRoot,this.renderOptions)}connectedCallback(){var e;super.connectedCallback(),(e=this._$Do)==null||e.setConnected(!0)}disconnectedCallback(){var e;super.disconnectedCallback(),(e=this._$Do)==null||e.setConnected(!1)}render(){return B}}var Ae;S._$litElement$=!0,S.finalized=!0,(Ae=R.litElementHydrateSupport)==null||Ae.call(R,{LitElement:S});const ne=R.litElementPolyfillSupport;ne==null||ne({LitElement:S});(R.litElementVersions??(R.litElementVersions=[])).push("4.2.2");E`
|
|
20
|
+
:root {
|
|
21
|
+
--font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
|
|
22
|
+
--primary-color: #0066cc;
|
|
23
|
+
--secondary-color: #6c757d;
|
|
24
|
+
--success-color: #28a745;
|
|
25
|
+
--danger-color: #dc3545;
|
|
26
|
+
--warning-color: #ffc107;
|
|
27
|
+
--info-color: #17a2b8;
|
|
28
|
+
|
|
29
|
+
--background-color: #ffffff;
|
|
30
|
+
--surface-color: #f8f9fa;
|
|
31
|
+
--border-color: #dee2e6;
|
|
32
|
+
|
|
33
|
+
--ga-text-primary: #212529;
|
|
34
|
+
--ga-text-secondary: #6c757d;
|
|
35
|
+
|
|
36
|
+
--spacing-xs: 0.25rem;
|
|
37
|
+
--spacing-sm: 0.5rem;
|
|
38
|
+
--spacing-md: 1rem;
|
|
39
|
+
--spacing-lg: 1.5rem;
|
|
40
|
+
--spacing-xl: 2rem;
|
|
41
|
+
|
|
42
|
+
--border-radius: 4px;
|
|
43
|
+
--box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
* {
|
|
47
|
+
box-sizing: border-box;
|
|
48
|
+
}
|
|
49
|
+
`;/**
|
|
50
|
+
* @license
|
|
51
|
+
* Copyright 2017 Google LLC
|
|
52
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
53
|
+
*/const O=t=>(e,r)=>{r!==void 0?r.addInitializer(()=>{customElements.define(t,e)}):customElements.define(t,e)};/**
|
|
54
|
+
* @license
|
|
55
|
+
* Copyright 2017 Google LLC
|
|
56
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
57
|
+
*/const Qe={attribute:!0,type:String,converter:ee,reflect:!1,hasChanged:pe},Xe=(t=Qe,e,r)=>{const{kind:a,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(s===void 0&&globalThis.litPropertyMetadata.set(i,s=new Map),a==="setter"&&((t=Object.create(t)).wrapped=!0),s.set(r.name,t),a==="accessor"){const{name:o}=r;return{set(l){const n=e.get.call(this);e.set.call(this,l),this.requestUpdate(o,n,t,!0,l)},init(l){return l!==void 0&&this.C(o,void 0,t,l),l}}}if(a==="setter"){const{name:o}=r;return function(l){const n=this[o];e.call(this,l),this.requestUpdate(o,n,t,!0,l)}}throw Error("Unsupported decorator location: "+a)};function m(t){return(e,r)=>typeof r=="object"?Xe(t,e,r):((a,i,s)=>{const o=i.hasOwnProperty(s);return i.constructor.createProperty(s,a),o?Object.getOwnPropertyDescriptor(i,s):void 0})(t,e,r)}/**
|
|
58
|
+
* @license
|
|
59
|
+
* Copyright 2017 Google LLC
|
|
60
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
61
|
+
*/function u(t){return m({...t,state:!0,attribute:!1})}const D=E`
|
|
62
|
+
|
|
63
|
+
:host {
|
|
64
|
+
--ga-color-black: #000;
|
|
65
|
+
--ga-color-blue-10: #edf4fe;
|
|
66
|
+
--ga-color-information-accent: var(--ga-color-utility-blue-accent);
|
|
67
|
+
--ga-color-surface-information: var(--ga-color-information-accent);
|
|
68
|
+
--ga-color-utility-blue-accent: var(--ga-color-blue-10);
|
|
69
|
+
--ga-color-blue-40: #93bbf9;
|
|
70
|
+
--ga-color-utility-blue: var(--ga-color-blue-40);
|
|
71
|
+
--ga-color-blue-60: #366af6;
|
|
72
|
+
--ga-color-border-information: var(--ga-color-information);
|
|
73
|
+
--ga-color-icon-information: var(--ga-color-information);
|
|
74
|
+
--ga-color-information: var(--ga-color-blue-60);
|
|
75
|
+
--ga-color-border-action: var(--ga-color-primary);
|
|
76
|
+
--ga-color-border-action-hover: var(--ga-color-primary-60);
|
|
77
|
+
--ga-color-border-action-hover-2: var(--ga-color-secondary-30);
|
|
78
|
+
--ga-color-border-disabled: var(--ga-color-neutral);
|
|
79
|
+
--ga-color-border-error: var(--ga-color-error);
|
|
80
|
+
--ga-color-border-focus: var(--ga-color-primary);
|
|
81
|
+
--ga-color-border-primary: var(--ga-color-neutral-60);
|
|
82
|
+
--ga-color-border-secondary: var(--ga-color-secondary-30);
|
|
83
|
+
--ga-color-border-selected: var(--ga-color-green-60);
|
|
84
|
+
--ga-color-border-success: var(--ga-color-success);
|
|
85
|
+
--ga-color-border-tertiary: var(--ga-color-neutral);
|
|
86
|
+
--ga-color-border-warning: var(--ga-color-warning);
|
|
87
|
+
--ga-color-categorical-graph-01: #6769d8;
|
|
88
|
+
--ga-color-categorical-graph-02: #479fc6;
|
|
89
|
+
--ga-color-categorical-graph-03: var(--ga-color-teal-70);
|
|
90
|
+
--ga-color-categorical-graph-04: #c0497d;
|
|
91
|
+
--ga-color-categorical-graph-05: #041255;
|
|
92
|
+
--ga-color-categorical-graph-06: #dc756b;
|
|
93
|
+
--ga-color-categorical-graph-07: var(--ga-color-rose-40);
|
|
94
|
+
--ga-color-categorical-graph-08: #984319;
|
|
95
|
+
--ga-color-categorical-graph-09: var(--ga-color-indigo-40);
|
|
96
|
+
--ga-color-categorical-graph-10: #610f08;
|
|
97
|
+
--ga-color-cyan-60: #377ea0;
|
|
98
|
+
--ga-color-icon-action-hover: var(--ga-color-primary-60);
|
|
99
|
+
--ga-color-primary-60: var(--ga-color-cyan-60);
|
|
100
|
+
--ga-color-surface-progress-2: var(--ga-color-primary-60);
|
|
101
|
+
--ga-color-cyan-70: #2a6480;
|
|
102
|
+
--ga-color-primary-70: var(--ga-color-cyan-70);
|
|
103
|
+
--ga-color-surface-progress: var(--ga-color-primary-70);
|
|
104
|
+
--ga-color-text-body-secondary: var(--ga-color-primary-70);
|
|
105
|
+
--ga-color-cyan-80: #1f4e66;
|
|
106
|
+
--ga-color-icon-action: var(--ga-color-primary);
|
|
107
|
+
--ga-color-primary: var(--ga-color-cyan-80);
|
|
108
|
+
--ga-color-surface-action: var(--ga-color-primary);
|
|
109
|
+
--ga-color-text-action: var(--ga-color-primary);
|
|
110
|
+
--ga-color-cyan-90: #133445;
|
|
111
|
+
--ga-color-icon-primary: var(--ga-color-primary-90);
|
|
112
|
+
--ga-color-primary-90: var(--ga-color-cyan-90);
|
|
113
|
+
--ga-color-surface-action-hover: var(--ga-color-primary-90);
|
|
114
|
+
--ga-color-text-action-hover: var(--ga-color-primary-90);
|
|
115
|
+
--ga-color-text-body: var(--ga-color-primary-90);
|
|
116
|
+
--ga-color-text-error: var(--ga-color-primary-90);
|
|
117
|
+
--ga-color-text-headings: var(--ga-color-primary-90);
|
|
118
|
+
--ga-color-text-information: var(--ga-color-primary-90);
|
|
119
|
+
--ga-color-text-success: var(--ga-color-primary-90);
|
|
120
|
+
--ga-color-text-warning: var(--ga-color-primary-90);
|
|
121
|
+
--ga-color-diverging-graph-01: #281986;
|
|
122
|
+
--ga-color-diverging-graph-02: #3d37a3;
|
|
123
|
+
--ga-color-diverging-graph-03: #504fba;
|
|
124
|
+
--ga-color-diverging-graph-04: #6769d8;
|
|
125
|
+
--ga-color-diverging-graph-05: #8489f5;
|
|
126
|
+
--ga-color-diverging-graph-06: var(--ga-color-indigo-40);
|
|
127
|
+
--ga-color-diverging-graph-07: #c5cbfb;
|
|
128
|
+
--ga-color-diverging-graph-08: var(--ga-color-indigo-10);
|
|
129
|
+
--ga-color-diverging-graph-09: var(--ga-color-teal-30);
|
|
130
|
+
--ga-color-diverging-graph-10: var(--ga-color-teal-40);
|
|
131
|
+
--ga-color-diverging-graph-11: var(--ga-color-teal-50);
|
|
132
|
+
--ga-color-diverging-graph-12: var(--ga-color-teal-60);
|
|
133
|
+
--ga-color-diverging-graph-13: var(--ga-color-teal-70);
|
|
134
|
+
--ga-color-diverging-graph-14: var(--ga-color-teal-80);
|
|
135
|
+
--ga-color-diverging-graph-15: var(--ga-color-teal-90);
|
|
136
|
+
--ga-color-error: var(--ga-color-red-60);
|
|
137
|
+
--ga-color-icon-error: var(--ga-color-error);
|
|
138
|
+
--ga-color-error-accent: var(--ga-color-utility-red-accent);
|
|
139
|
+
--ga-color-green-10: #eef5ee;
|
|
140
|
+
--ga-color-success-accent: var(--ga-color-utility-green-accent);
|
|
141
|
+
--ga-color-surface-selected: var(--ga-color-green-10);
|
|
142
|
+
--ga-color-surface-success: var(--ga-color-success-accent);
|
|
143
|
+
--ga-color-utility-green-accent: var(--ga-color-green-10);
|
|
144
|
+
--ga-color-green-40: #9bc59b;
|
|
145
|
+
--ga-color-utility-green: var(--ga-color-green-40);
|
|
146
|
+
--ga-color-green-60: #448548;
|
|
147
|
+
--ga-color-icon-success: var(--ga-color-success);
|
|
148
|
+
--ga-color-success: var(--ga-color-green-60);
|
|
149
|
+
--ga-color-grey-10: #f2f2f2;
|
|
150
|
+
--ga-color-utility-grey-accent: var(--ga-color-grey-10);
|
|
151
|
+
--ga-color-grey-40: #b9b9b9;
|
|
152
|
+
--ga-color-text-disabled: var(--ga-color-utility-grey);
|
|
153
|
+
--ga-color-utility-grey: var(--ga-color-grey-40);
|
|
154
|
+
--ga-color-icon-disabled: var(--ga-color-neutral);
|
|
155
|
+
--ga-color-icon-on-action: var(--ga-color-secondary);
|
|
156
|
+
--ga-color-icon-on-disabled: var(--ga-color-neutral-60);
|
|
157
|
+
--ga-color-icon-on-primary: var(--ga-color-white);
|
|
158
|
+
--ga-color-icon-warning: var(--ga-color-warning);
|
|
159
|
+
--ga-color-indigo-10: #f0f2fe;
|
|
160
|
+
--ga-color-utility-indigo-accent: var(--ga-color-indigo-10);
|
|
161
|
+
--ga-color-indigo-40: #adb4f9;
|
|
162
|
+
--ga-color-utility-indigo: var(--ga-color-indigo-40);
|
|
163
|
+
--ga-color-lime-10: #edf6dd;
|
|
164
|
+
--ga-color-utility-lime-accent: var(--ga-color-lime-10);
|
|
165
|
+
--ga-color-lime-40: #a5c656;
|
|
166
|
+
--ga-color-utility-lime: var(--ga-color-lime-40);
|
|
167
|
+
--ga-color-miscellaneous-overlay: #70778891;
|
|
168
|
+
--ga-color-miscellaneous-skeleton-element: var(--ga-color-neutral-10);
|
|
169
|
+
--ga-color-miscellaneous-skeleton-highlight: var(--ga-color-neutral-20);
|
|
170
|
+
--ga-color-neutral: var(--ga-color-neutral-30);
|
|
171
|
+
--ga-color-neutral-10: #f2f3f5;
|
|
172
|
+
--ga-color-surface-page: var(--ga-color-neutral-10);
|
|
173
|
+
--ga-color-neutral-20: #e2e4e9;
|
|
174
|
+
--ga-color-surface-container: var(--ga-color-neutral-20);
|
|
175
|
+
--ga-color-surface-disabled: var(--ga-color-neutral-20);
|
|
176
|
+
--ga-color-neutral-30: #cccfd7;
|
|
177
|
+
--ga-color-neutral-60: #6f7687;
|
|
178
|
+
--ga-color-surface-disable-selected: var(--ga-color-neutral-60);
|
|
179
|
+
--ga-color-text-disable-selected: var(--ga-color-neutral-60);
|
|
180
|
+
--ga-color-text-on-disabled: var(--ga-color-neutral-60);
|
|
181
|
+
--ga-color-orange-10: #fcf0e7;
|
|
182
|
+
--ga-color-secondary-10: var(--ga-color-orange-10);
|
|
183
|
+
--ga-color-surface-warning: var(--ga-color-utility-orange-accent);
|
|
184
|
+
--ga-color-text-on-action: var(--ga-color-secondary-10);
|
|
185
|
+
--ga-color-utility-orange-accent: var(--ga-color-orange-10);
|
|
186
|
+
--ga-color-warning-accent: var(--ga-color-utility-orange-accent);
|
|
187
|
+
--ga-color-orange-20: #fae0ce;
|
|
188
|
+
--ga-color-secondary: var(--ga-color-orange-20);
|
|
189
|
+
--ga-color-surface-action-hover-2: var(--ga-color-orange-20);
|
|
190
|
+
--ga-color-text-menu: var(--ga-color-secondary);
|
|
191
|
+
--ga-color-orange-30: #f5c3a1;
|
|
192
|
+
--ga-color-secondary-30: var(--ga-color-orange-30);
|
|
193
|
+
--ga-color-surface-highlight: var(--ga-color-secondary-30);
|
|
194
|
+
--ga-color-orange-40: #f2a676;
|
|
195
|
+
--ga-color-utility-orange: var(--ga-color-orange-40);
|
|
196
|
+
--ga-color-orange-60: #bb5822;
|
|
197
|
+
--ga-color-warning: var(--ga-color-orange-60);
|
|
198
|
+
--ga-color-pink-10: #fbeefc;
|
|
199
|
+
--ga-color-utility-pink-accent: var(--ga-color-pink-10);
|
|
200
|
+
--ga-color-pink-40: #e79dee;
|
|
201
|
+
--ga-color-utility-pink: var(--ga-color-pink-40);
|
|
202
|
+
--ga-color-purple-10: #f3f1fe;
|
|
203
|
+
--ga-color-utility-purple-accent: var(--ga-color-purple-10);
|
|
204
|
+
--ga-color-purple-40: #c3acf9;
|
|
205
|
+
--ga-color-utility-purple: var(--ga-color-purple-40);
|
|
206
|
+
--ga-color-purple-80: #591ab5;
|
|
207
|
+
--ga-color-text-link-visited: var(--ga-color-purple-80);
|
|
208
|
+
--ga-color-red-10: #fcf1ee;
|
|
209
|
+
--ga-color-surface-error: var(--ga-color-utility-red-accent);
|
|
210
|
+
--ga-color-utility-red-accent: var(--ga-color-red-10);
|
|
211
|
+
--ga-color-red-40: #eca79e;
|
|
212
|
+
--ga-color-utility-red: var(--ga-color-red-40);
|
|
213
|
+
--ga-color-red-60: #cc453e;
|
|
214
|
+
--ga-color-rose-10: #fcf0f4;
|
|
215
|
+
--ga-color-utility-rose-accent: var(--ga-color-rose-10);
|
|
216
|
+
--ga-color-rose-40: #efa1bd;
|
|
217
|
+
--ga-color-utility-rose: var(--ga-color-rose-40);
|
|
218
|
+
--ga-color-sequential-graph-10: var(--ga-color-teal-10);
|
|
219
|
+
--ga-color-sequential-graph-20: var(--ga-color-teal-20);
|
|
220
|
+
--ga-color-sequential-graph-30: var(--ga-color-teal-30);
|
|
221
|
+
--ga-color-sequential-graph-40: var(--ga-color-teal-40);
|
|
222
|
+
--ga-color-sequential-graph-50: var(--ga-color-teal-50);
|
|
223
|
+
--ga-color-sequential-graph-60: var(--ga-color-teal-60);
|
|
224
|
+
--ga-color-sequential-graph-70: var(--ga-color-teal-70);
|
|
225
|
+
--ga-color-sequential-graph-80: var(--ga-color-teal-80);
|
|
226
|
+
--ga-color-sequential-graph-90: var(--ga-color-teal-90);
|
|
227
|
+
--ga-color-sequential-graph-100: var(--ga-color-teal-100);
|
|
228
|
+
--ga-color-surface-primary: var(--ga-color-white);
|
|
229
|
+
--ga-color-teal-10: #ecf5f4;
|
|
230
|
+
--ga-color-utility-teal-accent: var(--ga-color-teal-10);
|
|
231
|
+
--ga-color-teal-20: #d5e8e6;
|
|
232
|
+
--ga-color-teal-30: #b4d7d4;
|
|
233
|
+
--ga-color-teal-40: #92c3c0;
|
|
234
|
+
--ga-color-utility-teal: var(--ga-color-teal-40);
|
|
235
|
+
--ga-color-teal-50: #51a39e;
|
|
236
|
+
--ga-color-teal-60: #3a837e;
|
|
237
|
+
--ga-color-teal-70: #2c6764;
|
|
238
|
+
--ga-color-teal-80: #21514e;
|
|
239
|
+
--ga-color-teal-90: #143734;
|
|
240
|
+
--ga-color-teal-100: #081f1f;
|
|
241
|
+
--ga-color-white: #fff;
|
|
242
|
+
--ga-duration-0: 0ms;
|
|
243
|
+
--ga-duration-fast: 100ms;
|
|
244
|
+
--ga-transition-state: var(--ga-duration-fast) 0ms var(--ga-easing-standard);
|
|
245
|
+
--ga-duration-instant: 50ms;
|
|
246
|
+
--ga-transition-hover: var(--ga-duration-instant) 0ms var(--ga-easing-standard);
|
|
247
|
+
--ga-duration-moderate: 150ms;
|
|
248
|
+
--ga-transition-dismiss: var(--ga-duration-moderate) 0ms var(--ga-easing-exit);
|
|
249
|
+
--ga-transition-reveal: var(--ga-duration-moderate) 0ms var(--ga-easing-entrance);
|
|
250
|
+
--ga-duration-slow: 250ms;
|
|
251
|
+
--ga-transition-overlay-in: var(--ga-duration-slow) 0ms var(--ga-easing-entrance);
|
|
252
|
+
--ga-transition-overlay-out: var(--ga-duration-slow) 0ms var(--ga-easing-exit);
|
|
253
|
+
--ga-duration-slower: 400ms;
|
|
254
|
+
--ga-transition-backdrop: var(--ga-duration-slower) 0ms var(--ga-easing-standard);
|
|
255
|
+
--ga-easing-entrance: cubic-bezier(0, 0, 0.38, 0.9);
|
|
256
|
+
--ga-easing-exit: cubic-bezier(0.2, 0, 1, 0.9);
|
|
257
|
+
--ga-easing-standard: cubic-bezier(0.2, 0, 0.38, 0.9);
|
|
258
|
+
--ga-font-family-primary: "Inter", system-ui, sans-serif;
|
|
259
|
+
--ga-font-weight-bold: 700;
|
|
260
|
+
--ga-font-weight-medium: 500;
|
|
261
|
+
--ga-font-weight-normal: 400;
|
|
262
|
+
--ga-font-weight-semibold: 600;
|
|
263
|
+
--ga-radius: 4px;
|
|
264
|
+
--ga-radius-round: 999px;
|
|
265
|
+
--ga-radius-sharp: 0.02rem;
|
|
266
|
+
--ga-shadow-east: -2px 0 5px 0 #1334451a, -8px 0 8px 0 #13344517, -19px 0 11px 0 #1334450d, -34px 0 14px 0 #13344503, -53px 0 15px 0 #13344500;
|
|
267
|
+
--ga-shadow-north: 0 4px 8px 0 #1334451a, 0 15px 15px 0 #13344517, 0 34px 21px 0 #1334450d, 0 61px 24px 0 #13344503, 0 95px 27px 0 #13344500;
|
|
268
|
+
--ga-shadow-south: 0 -1px 1px 0 #13344514, 0 -2px 2px 0 #13344512, 0 -6px 3px 0 #1334450a, 0 -10px 4px 0 #13344503, 0 -15px 4px 0 #13344500;
|
|
269
|
+
--ga-shadow-west: 1px 0 3px 0 #1334451a, 5px 0 5px 0 #13344517, 12px 0 7px 0 #1334450d, 21px 0 8px 0 #13344503, 33px 0 9px 0 #13344500;
|
|
270
|
+
--ga-size-0: 0;
|
|
271
|
+
--ga-size-1: 0.0625rem;
|
|
272
|
+
--ga-size-2: 0.125rem;
|
|
273
|
+
--ga-size-4: 0.25rem;
|
|
274
|
+
--ga-size-6: 0.375rem;
|
|
275
|
+
--ga-size-8: 0.5rem;
|
|
276
|
+
--ga-size-10: 0.625rem;
|
|
277
|
+
--ga-size-11: 0.6875rem;
|
|
278
|
+
--ga-size-12: 0.75rem;
|
|
279
|
+
--ga-size-14: 0.875rem;
|
|
280
|
+
--ga-size-16: 1rem;
|
|
281
|
+
--ga-size-18: 1.125rem;
|
|
282
|
+
--ga-size-20: 1.25rem;
|
|
283
|
+
--ga-size-24: 1.5rem;
|
|
284
|
+
--ga-size-28: 1.75rem;
|
|
285
|
+
--ga-size-32: 2rem;
|
|
286
|
+
--ga-size-36: 2.25rem;
|
|
287
|
+
--ga-size-40: 2.5rem;
|
|
288
|
+
--ga-size-44: 2.75rem;
|
|
289
|
+
--ga-size-48: 3rem;
|
|
290
|
+
--ga-size-56: 3.5rem;
|
|
291
|
+
--ga-size-64: 4rem;
|
|
292
|
+
--ga-size-80: 5rem;
|
|
293
|
+
--ga-size-96: 6rem;
|
|
294
|
+
--ga-size-112: 7rem;
|
|
295
|
+
--ga-size-128: 8rem;
|
|
296
|
+
--ga-size-144: 9rem;
|
|
297
|
+
--ga-size-160: 10rem;
|
|
298
|
+
--ga-size-192: 12rem;
|
|
299
|
+
--ga-size-224: 14rem;
|
|
300
|
+
--ga-size-256: 16rem;
|
|
301
|
+
--ga-size-288: 18rem;
|
|
302
|
+
--ga-size-320: 20rem;
|
|
303
|
+
--ga-size-352: 22rem;
|
|
304
|
+
--ga-size-384: 24rem;
|
|
305
|
+
--ga-size-416: 26rem;
|
|
306
|
+
--ga-size-border-width-lg: 4px;
|
|
307
|
+
--ga-size-border-width-md: 2px;
|
|
308
|
+
--ga-size-border-width-none: 0;
|
|
309
|
+
--ga-size-border-width-sm: 1px;
|
|
310
|
+
--ga-size-spacing-00: 0;
|
|
311
|
+
--ga-size-spacing-01: 0.125rem;
|
|
312
|
+
--ga-size-spacing-02: 0.25rem;
|
|
313
|
+
--ga-size-spacing-03: 0.5rem;
|
|
314
|
+
--ga-size-spacing-04: 0.75rem;
|
|
315
|
+
--ga-size-spacing-05: 1rem;
|
|
316
|
+
--ga-size-spacing-06: 1.5rem;
|
|
317
|
+
--ga-size-spacing-07: 2rem;
|
|
318
|
+
--ga-size-spacing-08: 2.5rem;
|
|
319
|
+
--ga-size-spacing-09: 3rem;
|
|
320
|
+
--ga-size-spacing-10: 4rem;
|
|
321
|
+
--ga-size-spacing-11: 5rem;
|
|
322
|
+
--ga-size-spacing-12: 6rem;
|
|
323
|
+
--ga-size-spacing-13: 10rem;
|
|
324
|
+
--ga-text-2xl-font-size: 1.5rem;
|
|
325
|
+
--ga-text-2xl-font-style: normal;
|
|
326
|
+
--ga-text-2xl-line-height: 2rem;
|
|
327
|
+
--ga-text-2xl-font-family: inherit;
|
|
328
|
+
--ga-text-2xl-font-weight: 400;
|
|
329
|
+
--ga-text-2xl-letter-spacing: -0.019rem;
|
|
330
|
+
--ga-text-2xl: var(--ga-text-2xl-font-style) var(--ga-text-2xl-font-weight) var(--ga-text-2xl-font-size)/var(--ga-text-2xl-line-height) var(--ga-text-2xl-font-family);
|
|
331
|
+
--ga-text-3xl-font-size: 2rem;
|
|
332
|
+
--ga-text-3xl-font-style: normal;
|
|
333
|
+
--ga-text-3xl-line-height: 2.5rem;
|
|
334
|
+
--ga-text-3xl-font-family: inherit;
|
|
335
|
+
--ga-text-3xl-font-weight: 400;
|
|
336
|
+
--ga-text-3xl-letter-spacing: -0.022rem;
|
|
337
|
+
--ga-text-3xl: var(--ga-text-3xl-font-style) var(--ga-text-3xl-font-weight) var(--ga-text-3xl-font-size)/var(--ga-text-3xl-line-height) var(--ga-text-3xl-font-family);
|
|
338
|
+
--ga-text-lg-font-size: 1rem;
|
|
339
|
+
--ga-text-lg-font-style: normal;
|
|
340
|
+
--ga-text-lg-line-height: 1.5rem;
|
|
341
|
+
--ga-text-lg-font-family: inherit;
|
|
342
|
+
--ga-text-lg-font-weight: 400;
|
|
343
|
+
--ga-text-lg-letter-spacing: -0.011rem;
|
|
344
|
+
--ga-text-lg: var(--ga-text-lg-font-style) var(--ga-text-lg-font-weight) var(--ga-text-lg-font-size)/var(--ga-text-lg-line-height) var(--ga-text-lg-font-family);
|
|
345
|
+
--ga-text-md-font-size: 0.875rem;
|
|
346
|
+
--ga-text-md-font-style: normal;
|
|
347
|
+
--ga-text-md-line-height: 1.25rem;
|
|
348
|
+
--ga-text-md-font-family: inherit;
|
|
349
|
+
--ga-text-md-font-weight: 400;
|
|
350
|
+
--ga-text-md-letter-spacing: -0.006rem;
|
|
351
|
+
--ga-text-md: var(--ga-text-md-font-style) var(--ga-text-md-font-weight) var(--ga-text-md-font-size)/var(--ga-text-md-line-height) var(--ga-text-md-font-family);
|
|
352
|
+
--ga-text-sm-font-size: 0.75rem;
|
|
353
|
+
--ga-text-sm-font-style: normal;
|
|
354
|
+
--ga-text-sm-line-height: 1.25rem;
|
|
355
|
+
--ga-text-sm-font-family: inherit;
|
|
356
|
+
--ga-text-sm-font-weight: 400;
|
|
357
|
+
--ga-text-sm-letter-spacing: 0;
|
|
358
|
+
--ga-text-sm: var(--ga-text-sm-font-style) var(--ga-text-sm-font-weight) var(--ga-text-sm-font-size)/var(--ga-text-sm-line-height) var(--ga-text-sm-font-family);
|
|
359
|
+
--ga-text-xl-font-size: 1.125rem;
|
|
360
|
+
--ga-text-xl-font-style: normal;
|
|
361
|
+
--ga-text-xl-line-height: 1.5rem;
|
|
362
|
+
--ga-text-xl-font-family: inherit;
|
|
363
|
+
--ga-text-xl-font-weight: 400;
|
|
364
|
+
--ga-text-xl-letter-spacing: -0.017rem;
|
|
365
|
+
--ga-text-xl: var(--ga-text-xl-font-style) var(--ga-text-xl-font-weight) var(--ga-text-xl-font-size)/var(--ga-text-xl-line-height) var(--ga-text-xl-font-family);
|
|
366
|
+
--ga-text-xs-font-size: 0.6875rem;
|
|
367
|
+
--ga-text-xs-font-style: normal;
|
|
368
|
+
--ga-text-xs-line-height: 1rem;
|
|
369
|
+
--ga-text-xs-font-family: inherit;
|
|
370
|
+
--ga-text-xs-font-weight: 400;
|
|
371
|
+
--ga-text-xs-letter-spacing: 0.005rem;
|
|
372
|
+
--ga-text-xs: var(--ga-text-xs-font-style) var(--ga-text-xs-font-weight) var(--ga-text-xs-font-size)/var(--ga-text-xs-line-height) var(--ga-text-xs-font-family);
|
|
373
|
+
/* ── Project-specific font family ── */
|
|
374
|
+
--vsn-customer-onboarding-wizard-font-family: var(--font-family, Inter, ui-sans-serif, system-ui, sans-serif);
|
|
375
|
+
|
|
376
|
+
/* ── Typography aliases ──────────────────────────────────────────────────
|
|
377
|
+
Component CSS uses --ga-text-*-size and --ga-text-*-tracking.
|
|
378
|
+
The dist file names them --ga-text-*-font-size and --ga-text-*-letter-spacing.
|
|
379
|
+
These aliases bridge the gap so no component CSS needs to change. */
|
|
380
|
+
--ga-text-sm-size: var(--ga-text-sm-font-size);
|
|
381
|
+
--ga-text-md-size: var(--ga-text-md-font-size);
|
|
382
|
+
--ga-text-md-tracking: var(--ga-text-md-letter-spacing);
|
|
383
|
+
--ga-text-xl-size: var(--ga-text-xl-font-size);
|
|
384
|
+
--ga-text-xl-tracking: var(--ga-text-xl-letter-spacing);
|
|
385
|
+
--ga-text-2xl-size: var(--ga-text-2xl-font-size);
|
|
386
|
+
--ga-text-2xl-tracking: var(--ga-text-2xl-letter-spacing);
|
|
387
|
+
|
|
388
|
+
/* ── Project-specific tokens — not present in gaia-styles ── */
|
|
389
|
+
--ga-size-content-2xs: 11.25rem;
|
|
390
|
+
--ga-size-content-xs: 15rem;
|
|
391
|
+
--ga-size-content-sm: 22.5rem;
|
|
392
|
+
--ga-color-utility-green-light: var(--ga-color-green-10);
|
|
393
|
+
--ga-shadow-dropdown: var(--ga-shadow-south);
|
|
394
|
+
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
@media (width >= 48rem) {
|
|
398
|
+
:host {
|
|
399
|
+
--ga-text-2xl-font-size: 1.5rem;
|
|
400
|
+
--ga-text-2xl-font-style: normal;
|
|
401
|
+
--ga-text-2xl-line-height: 2.5rem;
|
|
402
|
+
--ga-text-2xl-font-family: inherit;
|
|
403
|
+
--ga-text-2xl-font-weight: 400;
|
|
404
|
+
--ga-text-2xl-letter-spacing: -0.019rem;
|
|
405
|
+
--ga-text-2xl: var(--ga-text-2xl-font-style) var(--ga-text-2xl-font-weight) var(--ga-text-2xl-font-size)/var(--ga-text-2xl-line-height) var(--ga-text-2xl-font-family);
|
|
406
|
+
--ga-text-3xl-font-size: 2.25rem;
|
|
407
|
+
--ga-text-3xl-font-style: normal;
|
|
408
|
+
--ga-text-3xl-line-height: 3rem;
|
|
409
|
+
--ga-text-3xl-font-family: inherit;
|
|
410
|
+
--ga-text-3xl-font-weight: 400;
|
|
411
|
+
--ga-text-3xl-letter-spacing: -0.022rem;
|
|
412
|
+
--ga-text-3xl: var(--ga-text-3xl-font-style) var(--ga-text-3xl-font-weight) var(--ga-text-3xl-font-size)/var(--ga-text-3xl-line-height) var(--ga-text-3xl-font-family);
|
|
413
|
+
--ga-text-xl-font-size: 1.25rem;
|
|
414
|
+
--ga-text-xl-font-style: normal;
|
|
415
|
+
--ga-text-xl-line-height: 2rem;
|
|
416
|
+
--ga-text-xl-font-family: inherit;
|
|
417
|
+
--ga-text-xl-font-weight: 400;
|
|
418
|
+
--ga-text-xl-letter-spacing: -0.017rem;
|
|
419
|
+
--ga-text-xl: var(--ga-text-xl-font-style) var(--ga-text-xl-font-weight) var(--ga-text-xl-font-size)/var(--ga-text-xl-line-height) var(--ga-text-xl-font-family);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
`,h={circle:()=>x`
|
|
424
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
425
|
+
<circle cx="12" cy="12" r="10"/>
|
|
426
|
+
</svg>
|
|
427
|
+
`,circleDashed:()=>x`
|
|
428
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
429
|
+
<path d="M10.1 2.18a9.93 9.93 0 0 1 3.8 0"/>
|
|
430
|
+
<path d="M17.6 3.71a9.95 9.95 0 0 1 2.69 2.7"/>
|
|
431
|
+
<path d="M21.82 10.1a9.93 9.93 0 0 1 0 3.8"/>
|
|
432
|
+
<path d="M20.29 17.6a9.95 9.95 0 0 1-2.7 2.69"/>
|
|
433
|
+
<path d="M13.9 21.82a9.94 9.94 0 0 1-3.8 0"/>
|
|
434
|
+
<path d="M6.4 20.29a9.95 9.95 0 0 1-2.69-2.7"/>
|
|
435
|
+
<path d="M2.18 13.9a9.93 9.93 0 0 1 0-3.8"/>
|
|
436
|
+
<path d="M3.71 6.4a9.95 9.95 0 0 1 2.7-2.69"/>
|
|
437
|
+
</svg>
|
|
438
|
+
`,check:()=>x`
|
|
439
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
440
|
+
<path d="M20 6 9 17l-5-5"/>
|
|
441
|
+
</svg>
|
|
442
|
+
`,circleDotDashed:()=>x`
|
|
443
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
444
|
+
<path d="M10.1 2.18a9.93 9.93 0 0 1 3.8 0"/>
|
|
445
|
+
<path d="M17.6 3.71a9.95 9.95 0 0 1 2.69 2.7"/>
|
|
446
|
+
<path d="M21.82 10.1a9.93 9.93 0 0 1 0 3.8"/>
|
|
447
|
+
<path d="M20.29 17.6a9.95 9.95 0 0 1-2.7 2.69"/>
|
|
448
|
+
<path d="M13.9 21.82a9.94 9.94 0 0 1-3.8 0"/>
|
|
449
|
+
<path d="M6.4 20.29a9.95 9.95 0 0 1-2.69-2.7"/>
|
|
450
|
+
<path d="M2.18 13.9a9.93 9.93 0 0 1 0-3.8"/>
|
|
451
|
+
<path d="M3.71 6.4a9.95 9.95 0 0 1 2.7-2.69"/>
|
|
452
|
+
<circle cx="12" cy="12" r="1"/>
|
|
453
|
+
</svg>
|
|
454
|
+
`,circleCheckBig:()=>x`
|
|
455
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
456
|
+
<path d="M21.801 10A10 10 0 1 1 17 3.335"/>
|
|
457
|
+
<path d="m9 11 3 3L22 4"/>
|
|
458
|
+
</svg>
|
|
459
|
+
`,octagonAlert:()=>x`
|
|
460
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
461
|
+
<path d="M12 16h.01"/>
|
|
462
|
+
<path d="M12 8v4"/>
|
|
463
|
+
<path d="M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z"/>
|
|
464
|
+
</svg>
|
|
465
|
+
`,x:()=>x`
|
|
466
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
467
|
+
<path d="M18 6 6 18"/>
|
|
468
|
+
<path d="m6 6 12 12"/>
|
|
469
|
+
</svg>
|
|
470
|
+
`,pencil:()=>x`
|
|
471
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
472
|
+
<path d="M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z"/>
|
|
473
|
+
<path d="m15 5 4 4"/>
|
|
474
|
+
</svg>
|
|
475
|
+
`,info:()=>x`
|
|
476
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
477
|
+
<circle cx="12" cy="12" r="10"/>
|
|
478
|
+
<path d="M12 16v-4"/>
|
|
479
|
+
<path d="M12 8h.01"/>
|
|
480
|
+
</svg>
|
|
481
|
+
`,chevronDown:()=>x`
|
|
482
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
483
|
+
<path d="m6 9 6 6 6-6"/>
|
|
484
|
+
</svg>
|
|
485
|
+
`,trash:()=>x`
|
|
486
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
487
|
+
<polyline points="3 6 5 6 21 6"/>
|
|
488
|
+
<path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2"/>
|
|
489
|
+
<line x1="10" y1="11" x2="10" y2="17"/>
|
|
490
|
+
<line x1="14" y1="11" x2="14" y2="17"/>
|
|
491
|
+
</svg>
|
|
492
|
+
`,userRound:()=>x`
|
|
493
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
494
|
+
<circle cx="12" cy="8" r="5"/>
|
|
495
|
+
<path d="M20 21a8 8 0 0 0-16 0"/>
|
|
496
|
+
</svg>
|
|
497
|
+
`,plus:()=>x`
|
|
498
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
499
|
+
<path d="M5 12h14"/>
|
|
500
|
+
<path d="M12 5v14"/>
|
|
501
|
+
</svg>
|
|
502
|
+
`,search:()=>x`
|
|
503
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
504
|
+
<circle cx="11" cy="11" r="8"/>
|
|
505
|
+
<path d="m21 21-4.3-4.3"/>
|
|
506
|
+
</svg>
|
|
507
|
+
`},le={"en-GB":{wizard:{title:"Set up your company"},steps:{company:"Company",administrators:"Administrators",partnerAccess:"Partner Access",progressLabel:"Setup progress"},welcome:{greeting:"Welcome to Visma Software,",description:"Let's get your company account ready. This setup takes about 5 minutes and helps you hit the ground running."},company:{title:"Your company",description:"Confirm your company details. This information will be used for your profile and system identity. You can always edit this later in settings.",placeholder:"Company information placeholder",contactLabel:"Contact",editContactLabel:"Edit contact",subscriptionLabel:"Your subscription includes",address2Placeholder:"Address Line 2 (Optional)",saveChanges:"Save changes",cancelEdit:"Cancel",companyNameLabel:"Company name",address1Label:"Address",postalCodeLabel:"Postal code",cityLabel:"City",countryLabel:"Country",webUrlLabel:"Website",emailLabel:"Email",editFormLabel:"Edit company details",addressGroupLabel:"Postal code and city",managePlanMessage:"Manage your plan by reaching out to your partner {partnerName}.",fieldRequired:"This field is required.",emailInvalid:"Please enter a valid email address."},administrators:{title:"Administrators",description:"Invite colleagues to help manage your company account and users. You can always add more administrators or adjust permissions later in the Admin settings.",addAdministratorButton:"Add Administrator",addNameButton:"Add name",firstNameLabel:"First name",lastNameLabel:"Last name",youLabel:"You",deleteRowLabel:"Delete administrator",confirmSingular:"Confirm {count} Administrator",confirmPlural:"Confirm {count} Administrators",doneButton:"Done",editButton:"Edit"},partnerAccess:{title:"Give access to consultants",description:"Invite consultants from {partnerName}, and give them access to help you configure the system. You can manage or revoke their access at any time.",findConsultantPlaceholder:"Find consultant",loading:"Loading consultants...",confirmSingular:"Confirm {count} consultant",confirmPlural:"Confirm {count} consultants"},complete:{title:"Setup complete!",message1:"We have invited your administrators and partners to join you. Your company is now ready.",message2:"Please see our admin page to see where you can make further changes.",goToAdminButton:"Go to Admin Page"},common:{saveAndClose:"Save and close",startSetup:"Start Set Up",confirm:"Confirm",close:"Close",loading:"Loading customer information...",dismissError:"Dismiss error"},errors:{invalidRequest:{title:"Invalid Request",message:"Invalid request. Please check your input."},validationError:{title:"Validation Error",message:"Validation error. Please check your input."},notFound:{title:"Not Found",message:"Resource not found."},serverError:{title:"Server Error",message:"Server error. Please try again later."},requestTimeout:{title:"Request Timeout",message:"Request timeout. Please try again."},networkError:{title:"Network Error",message:"Network error. Please check your connection."},requestFailed:{title:"Request Failed",message:"Request failed. Please try again."}}},"en-US":{wizard:{title:"Set up your company"},steps:{company:"Company",administrators:"Administrators",partnerAccess:"Partner Access",progressLabel:"Setup progress"},welcome:{greeting:"Welcome to Visma Software,",description:"Let's get your company account ready. This setup takes about 5 minutes and helps you hit the ground running."},company:{title:"Your company",description:"Confirm your company details. This information will be used for your profile and system identity. You can always edit this later in settings.",placeholder:"Company information placeholder",contactLabel:"Contact",editContactLabel:"Edit contact",subscriptionLabel:"Your subscription includes",address2Placeholder:"Address Line 2 (Optional)",saveChanges:"Save changes",cancelEdit:"Cancel",companyNameLabel:"Company name",address1Label:"Address",postalCodeLabel:"Postal code",cityLabel:"City",countryLabel:"Country",webUrlLabel:"Website",emailLabel:"Email",editFormLabel:"Edit company details",addressGroupLabel:"Postal code and city",managePlanMessage:"Manage your plan by reaching out to your partner {partnerName}.",fieldRequired:"This field is required.",emailInvalid:"Please enter a valid email address."},administrators:{title:"Administrators",description:"Invite colleagues to help manage your company account and users. You can always add more administrators or adjust permissions later in the Admin settings.",addAdministratorButton:"Add Administrator",addNameButton:"Add name",firstNameLabel:"First name",lastNameLabel:"Last name",youLabel:"You",deleteRowLabel:"Delete administrator",confirmSingular:"Confirm {count} Administrator",confirmPlural:"Confirm {count} Administrators",doneButton:"Done",editButton:"Edit"},partnerAccess:{title:"Give access to consultants",description:"Invite consultants from {partnerName}, and give them access to help you configure the system. You can manage or revoke their access at any time.",findConsultantPlaceholder:"Find consultant",loading:"Loading consultants...",confirmSingular:"Confirm {count} consultant",confirmPlural:"Confirm {count} consultants"},complete:{title:"Setup complete!",message1:"We have invited your administrators and partners to join you. Your company is now ready.",message2:"Please see our admin page to see where you can make further changes.",goToAdminButton:"Go to Admin Page"},common:{saveAndClose:"Save and close",startSetup:"Start Set Up",confirm:"Confirm",close:"Close",loading:"Loading customer information...",dismissError:"Dismiss error"},errors:{invalidRequest:{title:"Invalid Request",message:"Invalid request. Please check your input."},validationError:{title:"Validation Error",message:"Validation error. Please check your input."},notFound:{title:"Not Found",message:"Resource not found."},serverError:{title:"Server Error",message:"Server error. Please try again later."},requestTimeout:{title:"Request Timeout",message:"Request timeout. Please try again."},networkError:{title:"Network Error",message:"Network error. Please check your connection."},requestFailed:{title:"Request Failed",message:"Request failed. Please try again."}}},"da-DK":{wizard:{title:"Konfigurer din virksomhed"},steps:{company:"Virksomhed",administrators:"Administratorer",partnerAccess:"Partneradgang",progressLabel:"Opsætningsfremgang"},welcome:{greeting:"Velkommen til Visma Software,",description:"Lad os få din virksomhedskonto klar. Denne opsætning tager omkring 5 minutter og hjælper dig med at komme godt i gang."},company:{title:"Din virksomhed",description:"Bekræft dine virksomhedsoplysninger. Disse oplysninger vil blive brugt til din profil og systemidentitet. Du kan altid redigere dette senere i indstillingerne.",placeholder:"Virksomhedsoplysninger pladsholder",contactLabel:"Kontakt",editContactLabel:"Rediger kontakt",subscriptionLabel:"Dit abonnement inkluderer",address2Placeholder:"Adresselinje 2 (Valgfri)",saveChanges:"Gem ændringer",cancelEdit:"Annuller",companyNameLabel:"Virksomhedsnavn",address1Label:"Adresse",postalCodeLabel:"Postnummer",cityLabel:"By",countryLabel:"Land",webUrlLabel:"Hjemmeside",emailLabel:"E-mail",editFormLabel:"Rediger virksomhedsoplysninger",addressGroupLabel:"Postnummer og by",managePlanMessage:"Administrer din plan ved at kontakte din partner {partnerName}.",fieldRequired:"Dette felt er påkrævet.",emailInvalid:"Indtast venligst en gyldig e-mailadresse."},administrators:{title:"Administratorer",description:"Inviter kolleger til at hjælpe med at administrere din virksomhedskonto og brugere. Du kan altid tilføje flere administratorer eller justere tilladelser senere i administratorindstillingerne.",addAdministratorButton:"Tilføj administrator",addNameButton:"Tilføj navn",firstNameLabel:"Fornavn",lastNameLabel:"Efternavn",youLabel:"Dig",deleteRowLabel:"Slet administrator",confirmSingular:"Bekræft {count} administrator",confirmPlural:"Bekræft {count} administratorer",doneButton:"Udført",editButton:"Rediger"},partnerAccess:{title:"Giv adgang til konsulenter",description:"Inviter konsulenter fra {partnerName}, og giv dem adgang til at hjælpe dig med at konfigurere systemet. Du kan administrere eller tilbagekalde deres adgang når som helst.",findConsultantPlaceholder:"Find konsulent",loading:"Indlæser konsulenter...",confirmSingular:"Bekræft {count} konsulent",confirmPlural:"Bekræft {count} konsulenter"},complete:{title:"Opsætning fuldført!",message1:"Vi har inviteret dine administratorer og partnere til at slutte sig til dig. Din virksomhed er nu klar.",message2:"Se vores administratorside for at se, hvor du kan foretage yderligere ændringer.",goToAdminButton:"Gå til administratorside"},common:{saveAndClose:"Gem og luk",startSetup:"Start opsætning",confirm:"Bekræft",close:"Luk",loading:"Indlæser kundeoplysninger...",dismissError:"Afvis fejl"},errors:{invalidRequest:{title:"Ugyldig anmodning",message:"Ugyldig anmodning. Tjek venligst dine indtastninger."},validationError:{title:"Valideringsfejl",message:"Valideringsfejl. Tjek venligst dine indtastninger."},notFound:{title:"Ikke fundet",message:"Ressource ikke fundet."},serverError:{title:"Serverfejl",message:"Serverfejl. Prøv venligst igen senere."},requestTimeout:{title:"Anmodningstimeout",message:"Anmodningstimeout. Prøv venligst igen."},networkError:{title:"Netværksfejl",message:"Netværksfejl. Tjek venligst din forbindelse."},requestFailed:{title:"Anmodning mislykkedes",message:"Anmodning mislykkedes. Prøv venligst igen."}}},"fi-FI":{wizard:{title:"Määritä yrityksesi"},steps:{company:"Yritys",administrators:"Ylläpitäjät",partnerAccess:"Kumppanin käyttöoikeus",progressLabel:"Asennuksen edistyminen"},welcome:{greeting:"Tervetuloa Visma Softwareen,",description:"Tehdään yrityksesi tili valmiiksi. Tämä asetus kestää noin 5 minuuttia ja auttaa sinua pääsemään alkuun."},company:{title:"Yrityksesi",description:"Vahvista yrityksesi tiedot. Näitä tietoja käytetään profiiliisi ja järjestelmän tunnistamiseen. Voit aina muokata tätä myöhemmin asetuksissa.",placeholder:"Yritystietojen paikkamerkki",contactLabel:"Yhteystiedot",editContactLabel:"Muokkaa yhteystietoja",subscriptionLabel:"Tilauksesi sisältää",address2Placeholder:"Osoiterivi 2 (Valinnainen)",saveChanges:"Tallenna muutokset",cancelEdit:"Peruuta",companyNameLabel:"Yrityksen nimi",address1Label:"Osoite",postalCodeLabel:"Postinumero",cityLabel:"Kaupunki",countryLabel:"Maa",webUrlLabel:"Verkkosivusto",emailLabel:"Sähköposti",editFormLabel:"Muokkaa yritystietoja",addressGroupLabel:"Postinumero ja kaupunki",managePlanMessage:"Hallinnoi suunnitelmaasi ottamalla yhteyttä kumppaniisi {partnerName}.",fieldRequired:"Tämä kenttä on pakollinen.",emailInvalid:"Syötä kelvollinen sähköpostiosoite."},administrators:{title:"Ylläpitäjät",description:"Kutsu kollegoita auttamaan yrityksesi tilin ja käyttäjien hallinnassa. Voit aina lisätä lisää ylläpitäjiä tai muokata käyttöoikeuksia myöhemmin ylläpitoasetuksissa.",addAdministratorButton:"Lisää ylläpitäjä",addNameButton:"Lisää nimi",firstNameLabel:"Etunimi",lastNameLabel:"Sukunimi",youLabel:"Sinä",deleteRowLabel:"Poista ylläpitäjä",confirmSingular:"Vahvista {count} ylläpitäjä",confirmPlural:"Vahvista {count} ylläpitäjää",doneButton:"Valmis",editButton:"Muokkaa"},partnerAccess:{title:"Anna käyttöoikeus konsulteille",description:"Kutsu konsultteja {partnerName}:stä ja anna heille käyttöoikeus auttaaksesi järjestelmän määrittämisessä. Voit hallita tai peruuttaa heidän käyttöoikeutensa milloin tahansa.",findConsultantPlaceholder:"Etsi konsultti",loading:"Ladataan konsultteja...",confirmSingular:"Vahvista {count} konsultti",confirmPlural:"Vahvista {count} konsultit"},complete:{title:"Asetus valmis!",message1:"Olemme kutsuneet ylläpitäjät ja kumppanit liittymään. Yrityksesi on nyt valmis.",message2:"Katso ylläpitosivu nähdäksesi, missä voit tehdä lisämuutoksia.",goToAdminButton:"Siirry ylläpitosivulle"},common:{saveAndClose:"Tallenna ja sulje",startSetup:"Aloita asetus",confirm:"Vahvista",close:"Sulje",loading:"Ladataan asiakastietoja...",dismissError:"Sulje virhe"},errors:{invalidRequest:{title:"Virheellinen pyyntö",message:"Virheellinen pyyntö. Tarkista syöttämäsi tiedot."},validationError:{title:"Validointivirhe",message:"Validointivirhe. Tarkista syöttämäsi tiedot."},notFound:{title:"Ei löytynyt",message:"Resurssia ei löytynyt."},serverError:{title:"Palvelinvirhe",message:"Palvelinvirhe. Yritä myöhemmin uudelleen."},requestTimeout:{title:"Pyynnön aikakatkaisu",message:"Pyynnön aikakatkaisu. Yritä uudelleen."},networkError:{title:"Verkkovirhe",message:"Verkkovirhe. Tarkista yhteytesi."},requestFailed:{title:"Pyyntö epäonnistui",message:"Pyyntö epäonnistui. Yritä uudelleen."}}},"nb-NO":{wizard:{title:"Konfigurer selskapet ditt"},steps:{company:"Selskap",administrators:"Administratorer",partnerAccess:"Partnertilgang",progressLabel:"Oppsettfremgang"},welcome:{greeting:"Velkommen til Visma Software,",description:"La oss få selskapskontoen din klar. Denne oppsettet tar rundt 5 minutter og hjelper deg i gang."},company:{title:"Ditt selskap",description:"Bekreft selskapsdetaljene dine. Denne informasjonen vil bli brukt til profilen din og systemidentiteten. Du kan alltid redigere dette senere i innstillingene.",placeholder:"Selskapsinformasjon plassholder",contactLabel:"Kontakt",editContactLabel:"Rediger kontakt",subscriptionLabel:"Abonnementet ditt inkluderer",address2Placeholder:"Adresselinje 2 (Valgfri)",saveChanges:"Lagre endringer",cancelEdit:"Avbryt",companyNameLabel:"Selskapsnavn",address1Label:"Adresse",postalCodeLabel:"Postnummer",cityLabel:"By",countryLabel:"Land",webUrlLabel:"Nettside",emailLabel:"E-post",editFormLabel:"Rediger bedriftsdetaljer",addressGroupLabel:"Postnummer og by",managePlanMessage:"Administrer planen din ved å ta kontakt med partneren din {partnerName}.",fieldRequired:"Dette feltet er obligatorisk.",emailInvalid:"Vennligst skriv inn en gyldig e-postadresse."},administrators:{title:"Administratorer",description:"Inviter kolleger til å hjelpe med å administrere selskapskontoen og brukerne dine. Du kan alltid legge til flere administratorer eller justere tillatelser senere i administratorinnstillingene.",addAdministratorButton:"Legg til administrator",addNameButton:"Legg til navn",firstNameLabel:"Fornavn",lastNameLabel:"Etternavn",youLabel:"Deg",deleteRowLabel:"Slett administrator",confirmSingular:"Bekreft {count} administrator",confirmPlural:"Bekreft {count} administratorer",doneButton:"Ferdig",editButton:"Rediger"},partnerAccess:{title:"Gi tilgang til konsulenter",description:"Inviter konsulenter fra {partnerName}, og gi dem tilgang til å hjelpe deg med å konfigurere systemet. Du kan administrere eller tilbakekalle tilgangen deres når som helst.",findConsultantPlaceholder:"Finn konsulent",loading:"Laster konsulenter...",confirmSingular:"Bekreft {count} konsulent",confirmPlural:"Bekreft {count} konsulenter"},complete:{title:"Oppsett fullført!",message1:"Vi har invitert administratorene og partnerne dine til å bli med deg. Selskapet ditt er nå klart.",message2:"Se vår administratorside for å se hvor du kan gjøre ytterligere endringer.",goToAdminButton:"Gå til administratorside"},common:{saveAndClose:"Lagre og lukk",startSetup:"Start oppsett",confirm:"Bekreft",close:"Lukk",loading:"Laster kundeinformasjon...",dismissError:"Avvis feil"},errors:{invalidRequest:{title:"Ugyldig forespørsel",message:"Ugyldig forespørsel. Vennligst sjekk inndataene dine."},validationError:{title:"Valideringsfeil",message:"Valideringsfeil. Vennligst sjekk inndataene dine."},notFound:{title:"Ikke funnet",message:"Ressurs ikke funnet."},serverError:{title:"Serverfeil",message:"Serverfeil. Vennligst prøv igjen senere."},requestTimeout:{title:"Tidsavbrudd for forespørsel",message:"Tidsavbrudd for forespørsel. Vennligst prøv igjen."},networkError:{title:"Nettverksfeil",message:"Nettverksfeil. Vennligst sjekk tilkoblingen din."},requestFailed:{title:"Forespørsel mislyktes",message:"Forespørsel mislyktes. Vennligst prøv igjen."}}},"nl-NL":{wizard:{title:"Stel uw bedrijf in"},steps:{company:"Bedrijf",administrators:"Beheerders",partnerAccess:"Partnertoegang",progressLabel:"Installatievoortgang"},welcome:{greeting:"Welkom bij Visma Software,",description:"Laten we uw bedrijfsaccount gereed maken. Deze installatie duurt ongeveer 5 minuten en helpt u snel aan de slag te gaan."},company:{title:"Uw bedrijf",description:"Bevestig uw bedrijfsgegevens. Deze informatie wordt gebruikt voor uw profiel en systeemidentiteit. U kunt dit later altijd bewerken in de instellingen.",placeholder:"Bedrijfsinformatie tijdelijke aanduiding",contactLabel:"Contact",editContactLabel:"Contactgegevens bewerken",subscriptionLabel:"Uw abonnement omvat",address2Placeholder:"Adresregel 2 (Optioneel)",saveChanges:"Wijzigingen opslaan",cancelEdit:"Annuleren",companyNameLabel:"Bedrijfsnaam",address1Label:"Adres",postalCodeLabel:"Postcode",cityLabel:"Stad",countryLabel:"Land",webUrlLabel:"Website",emailLabel:"E-mail",editFormLabel:"Bedrijfsgegevens bewerken",addressGroupLabel:"Postcode en stad",managePlanMessage:"Beheer uw abonnement door contact op te nemen met uw partner {partnerName}.",fieldRequired:"Dit veld is verplicht.",emailInvalid:"Voer een geldig e-mailadres in."},administrators:{title:"Beheerders",description:"Nodig collega's uit om te helpen bij het beheren van uw bedrijfsaccount en gebruikers. U kunt altijd meer beheerders toevoegen of machtigingen aanpassen in de beheerdersettings.",addAdministratorButton:"Beheerder toevoegen",addNameButton:"Naam toevoegen",firstNameLabel:"Voornaam",lastNameLabel:"Achternaam",youLabel:"U",deleteRowLabel:"Beheerder verwijderen",confirmSingular:"Bevestig {count} beheerder",confirmPlural:"Bevestig {count} beheerders",doneButton:"Klaar",editButton:"Bewerken"},partnerAccess:{title:"Geef toegang aan consultants",description:"Nodig consultants van {partnerName} uit en geef ze toegang om u te helpen bij het configureren van het systeem. U kunt hun toegang op elk moment beheren of intrekken.",findConsultantPlaceholder:"Zoek consultant",loading:"Consultants laden...",confirmSingular:"Bevestig {count} consultant",confirmPlural:"Bevestig {count} consultants"},complete:{title:"Installatie voltooid!",message1:"We hebben uw beheerders en partners uitgenodigd om zich bij u aan te sluiten. Uw bedrijf is nu klaar.",message2:"Zie onze beheerders pagina om te zien waar u verdere wijzigingen kunt aanbrengen.",goToAdminButton:"Ga naar beheerders pagina"},common:{saveAndClose:"Opslaan en sluiten",startSetup:"Start installatie",confirm:"Bevestigen",close:"Sluiten",loading:"Klantinformatie laden...",dismissError:"Fout sluiten"},errors:{invalidRequest:{title:"Ongeldig verzoek",message:"Ongeldig verzoek. Controleer uw invoer."},validationError:{title:"Validatiefout",message:"Validatiefout. Controleer uw invoer."},notFound:{title:"Niet gevonden",message:"Bron niet gevonden."},serverError:{title:"Serverfout",message:"Serverfout. Probeer het later opnieuw."},requestTimeout:{title:"Verzoek time-out",message:"Verzoek time-out. Probeer het opnieuw."},networkError:{title:"Netwerkfout",message:"Netwerkfout. Controleer uw verbinding."},requestFailed:{title:"Verzoek mislukt",message:"Verzoek mislukt. Probeer het opnieuw."}}},"sv-SE":{wizard:{title:"Konfigurera ditt företag"},steps:{company:"Företag",administrators:"Administratörer",partnerAccess:"Partneråtkomst",progressLabel:"Installationsförlopp"},welcome:{greeting:"Välkommen till Visma Software,",description:"Låt oss göra ditt företagskonto redo. Denna installation tar cirka 5 minuter och hjälper dig att komma igång snabbt."},company:{title:"Ditt företag",description:"Bekräfta dina företagsuppgifter. Denna information kommer att användas för din profil och systemidentitet. Du kan alltid redigera detta senare i inställningarna.",placeholder:"Företagsinformation platshållare",contactLabel:"Kontakt",editContactLabel:"Redigera kontakt",subscriptionLabel:"Din prenumeration inkluderar",address2Placeholder:"Adressrad 2 (Valfri)",saveChanges:"Spara ändringar",cancelEdit:"Avbryt",companyNameLabel:"Företagsnamn",address1Label:"Adress",postalCodeLabel:"Postnummer",cityLabel:"Stad",countryLabel:"Land",webUrlLabel:"Webbplats",emailLabel:"E-post",editFormLabel:"Redigera företagsuppgifter",addressGroupLabel:"Postnummer och stad",managePlanMessage:"Hantera din plan genom att kontakta din partner {partnerName}.",fieldRequired:"Det här fältet är obligatoriskt.",emailInvalid:"Ange en giltig e-postadress."},administrators:{title:"Administratörer",description:"Bjud in kollegor för att hjälpa till att hantera ditt företagskonto och användare. Du kan alltid lägga till fler administratörer eller justera behörigheter senare i administratörsinställningarna.",addAdministratorButton:"Lägg till administratör",addNameButton:"Lägg till namn",firstNameLabel:"Förnamn",lastNameLabel:"Efternamn",youLabel:"Du",deleteRowLabel:"Ta bort administratör",confirmSingular:"Bekräfta {count} administratör",confirmPlural:"Bekräfta {count} administratörer",doneButton:"Klar",editButton:"Redigera"},partnerAccess:{title:"Ge åtkomst till konsulter",description:"Bjud in konsulter från {partnerName} och ge dem åtkomst för att hjälpa dig konfigurera systemet. Du kan hantera eller återkalla deras åtkomst när som helst.",findConsultantPlaceholder:"Hitta konsult",loading:"Laddar konsulter...",confirmSingular:"Bekräfta {count} konsult",confirmPlural:"Bekräfta {count} konsulter"},complete:{title:"Installation klar!",message1:"Vi har bjudit in dina administratörer och partners att gå med dig. Ditt företag är nu redo.",message2:"Se vår administratörssida för att se var du kan göra ytterligare ändringar.",goToAdminButton:"Gå till administratörssida"},common:{saveAndClose:"Spara och stäng",startSetup:"Starta installation",confirm:"Bekräfta",close:"Stäng",loading:"Laddar kundinformation...",dismissError:"Stäng fel"},errors:{invalidRequest:{title:"Ogiltig begäran",message:"Ogiltig begäran. Kontrollera din inmatning."},validationError:{title:"Valideringsfel",message:"Valideringsfel. Kontrollera din inmatning."},notFound:{title:"Hittades inte",message:"Resursen hittades inte."},serverError:{title:"Serverfel",message:"Serverfel. Försök igen senare."},requestTimeout:{title:"Timeout för begäran",message:"Timeout för begäran. Försök igen."},networkError:{title:"Nätverksfel",message:"Nätverksfel. Kontrollera din anslutning."},requestFailed:{title:"Begäran misslyckades",message:"Begäran misslyckades. Försök igen."}}}};class et{constructor(){this.currentLocale="en-GB"}setLocale(e){return le[e]?(this.currentLocale=e,!0):(console.warn(`Locale "${e}" not supported. Falling back to en-GB.`),this.currentLocale="en-GB",!1)}getLocale(){return this.currentLocale}getTranslations(){return le[this.currentLocale]}t(e){const r=e.split(".");let a=le[this.currentLocale];for(const i of r)a=a==null?void 0:a[i];return typeof a=="string"?a:e}}class de extends Error{constructor(e,r){super(`HTTP ${e}: ${r}`),this.status=e,this.name="HttpError"}}class tt{constructor(e,r={},a){if(this.authToken=null,!e)throw new Error("[HttpService] baseUrl is required");this.baseUrl=e,this.defaultHeaders={"Content-Type":"application/json",...r},this.eventTarget=a??globalThis.document}setAuthToken(e){this.authToken=e}getAuthToken(){return this.authToken}emitHttpError(e,r,a,i,s){var n;if(e!==401&&e!==403)return;const o={status:e,statusText:r,message:`HTTP ${e}: ${r}`,endpoint:a,method:i,retry:s},l=new CustomEvent("http-error",{detail:o,bubbles:!0,composed:!0});(n=this.eventTarget)==null||n.dispatchEvent(l)}emitErrorMessage(e,r,a,i){var l;const s={status:e,errorKey:r,endpoint:a,method:i},o=new CustomEvent("error-message",{detail:s,bubbles:!0,composed:!0});(l=this.eventTarget)==null||l.dispatchEvent(o)}async request(e,r={}){const{method:a="GET",headers:i={},body:s,timeout:o=3e4}=r,l=new AbortController,n=setTimeout(()=>l.abort(),o),p={...this.defaultHeaders,...i};this.authToken&&(p.Authorization=`Bearer ${this.authToken}`);try{const c=await fetch(`${this.baseUrl}${e}`,{method:a,headers:p,body:s?JSON.stringify(s):void 0,signal:l.signal});if(clearTimeout(n),!c.ok){if(c.status===401||c.status===403)this.emitHttpError(c.status,c.statusText,e,a,()=>this.request(e,r));else if(!(r.suppressErrorStatuses??[]).includes(c.status)){const C=this.getErrorKey(c.status);this.emitErrorMessage(c.status,C,e,a)}throw new de(c.status,c.statusText)}return c.status===204?void 0:await c.json()}catch(c){if(clearTimeout(n),c instanceof de)throw c;if(c instanceof Error){const g=c.message.includes("aborted")?"requestTimeout":"networkError";throw this.emitErrorMessage(0,g,e,a),new Error(`Request failed: ${c.message}`)}throw c}}getErrorKey(e){return e>=500?"serverError":e===400?"invalidRequest":e===422?"validationError":e===404?"notFound":"requestFailed"}get(e,r){return this.request(e,{method:"GET",headers:r})}post(e,r,a){return this.request(e,{method:"POST",body:r,headers:a})}put(e,r,a){return this.request(e,{method:"PUT",body:r,headers:a})}delete(e,r){return this.request(e,{method:"DELETE",headers:r})}getUserProfile(){return this.get("/api/v1/me/profile")}getCustomerInfo(e){return this.get(`/api/v1/onboarding/customers/${e}`)}getAdministrators(e){return this.get(`/api/v1/onboarding/customers/${e}/administrators`)}editCustomer(e,r){return this.put(`/api/v1/customers/${e}`,r)}saveProgress(e,r){return this.patch(`/api/v1/onboarding/tasks/${e}`,{step:r})}deleteTask(e){return this.delete(`/api/v1/onboarding/tasks/${e}`)}async getUserByEmail(e){try{return await this.request(`/api/v1/users/email/${encodeURIComponent(e)}`,{suppressErrorStatuses:[404]})}catch(r){if(r instanceof de&&r.status===404)return null;throw r}}addCustomerAdministrators(e,r){return this.post(`/api/v1/onboarding/customers/${e}/administrators`,r)}getPartnerConsultants(e){return this.get(`/api/v1/onboarding/partners/${e}/consultants`)}addCustomerConsultants(e,r){return this.post(`/api/v1/onboarding/customers/${e}/consultants`,r)}patch(e,r,a){return this.request(e,{method:"PATCH",body:r,headers:a})}}const Z=E`
|
|
508
|
+
button {
|
|
509
|
+
padding: var(--ga-size-spacing-04) var(--ga-size-spacing-07);
|
|
510
|
+
border-radius: var(--ga-radius);
|
|
511
|
+
font-size: var(--ga-text-md-size);
|
|
512
|
+
font-weight: var(--ga-font-weight-medium);
|
|
513
|
+
cursor: pointer;
|
|
514
|
+
transition: background-color var(--ga-transition-hover), border-color var(--ga-transition-hover);
|
|
515
|
+
border: var(--ga-size-border-width-sm) solid transparent;
|
|
516
|
+
white-space: nowrap;
|
|
517
|
+
font-family: var(--vsn-customer-onboarding-wizard-font-family);
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
.btn-primary {
|
|
521
|
+
background: var(--ga-color-surface-action);
|
|
522
|
+
color: var(--ga-color-secondary-10);
|
|
523
|
+
border-color: var(--ga-color-surface-action);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
.btn-primary:hover:not(:disabled) {
|
|
527
|
+
background: var(--ga-color-surface-action-hover);
|
|
528
|
+
border-color: var(--ga-color-surface-action-hover);
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
.btn-primary:disabled {
|
|
532
|
+
opacity: 0.5;
|
|
533
|
+
cursor: not-allowed;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
.btn-secondary {
|
|
537
|
+
background: var(--ga-color-white);
|
|
538
|
+
color: var(--ga-color-text-body);
|
|
539
|
+
border-color: var(--ga-color-cyan-80);
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
.btn-secondary:hover {
|
|
543
|
+
background: var(--ga-color-secondary-10);
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
.btn-primary:focus-visible,
|
|
547
|
+
.btn-secondary:focus-visible {
|
|
548
|
+
outline: var(--ga-size-border-width-md) solid var(--ga-color-border-focus);
|
|
549
|
+
outline-offset: var(--ga-size-border-width-md);
|
|
550
|
+
}
|
|
551
|
+
`,J=E`
|
|
552
|
+
:host {
|
|
553
|
+
display: block;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
.step-content {
|
|
557
|
+
text-align: left;
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
.step-content h2 {
|
|
561
|
+
font-size: var(--ga-text-2xl-size);
|
|
562
|
+
line-height: var(--ga-text-2xl-line-height);
|
|
563
|
+
letter-spacing: var(--ga-text-2xl-tracking);
|
|
564
|
+
font-weight: var(--ga-font-weight-normal);
|
|
565
|
+
margin: 0 0 var(--ga-size-spacing-03);
|
|
566
|
+
color: var(--ga-color-text-headings);
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
.wizard-actions {
|
|
570
|
+
display: flex;
|
|
571
|
+
justify-content: flex-end;
|
|
572
|
+
align-items: center;
|
|
573
|
+
margin-top: var(--ga-size-spacing-09);
|
|
574
|
+
gap: var(--ga-size-spacing-05);
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
.field-error {
|
|
578
|
+
display: flex;
|
|
579
|
+
align-items: center;
|
|
580
|
+
gap: var(--ga-size-spacing-02);
|
|
581
|
+
margin-top: var(--ga-size-spacing-01);
|
|
582
|
+
color: var(--ga-color-icon-error);
|
|
583
|
+
font-size: var(--ga-text-sm-size);
|
|
584
|
+
font-family: var(--vsn-customer-onboarding-wizard-font-family);
|
|
585
|
+
line-height: var(--ga-text-sm-line-height);
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
.field-error svg {
|
|
589
|
+
width: var(--ga-size-spacing-04);
|
|
590
|
+
height: var(--ga-size-spacing-04);
|
|
591
|
+
flex-shrink: 0;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
.field-error-text {
|
|
595
|
+
color: var(--ga-color-text-body);
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
.field-error--empty {
|
|
599
|
+
visibility: hidden;
|
|
600
|
+
}
|
|
601
|
+
`;var rt=Object.defineProperty,at=Object.getOwnPropertyDescriptor,he=(t,e,r,a)=>{for(var i=a>1?void 0:a?at(e,r):e,s=t.length-1,o;s>=0;s--)(o=t[s])&&(i=(a?o(e,r,i):o(i))||i);return a&&i&&rt(e,r,i),i};let K=class extends S{constructor(){super(...arguments),this.userName="User"}handleStartSetup(){this.dispatchEvent(new CustomEvent("start-setup",{bubbles:!0,composed:!0}))}handleSaveAndClose(){this.dispatchEvent(new CustomEvent("save-and-close",{bubbles:!0,composed:!0}))}render(){const t=this.translations;return d`
|
|
602
|
+
<div class="wizard-content">
|
|
603
|
+
<div class="welcome-wrapper">
|
|
604
|
+
<h2 class="welcome-message">
|
|
605
|
+
${t.welcome.greeting}<br />
|
|
606
|
+
<span class="user-name">${this.userName}!</span>
|
|
607
|
+
</h2>
|
|
608
|
+
<p>
|
|
609
|
+
${t.welcome.description}
|
|
610
|
+
</p>
|
|
611
|
+
</div>
|
|
612
|
+
</div>
|
|
613
|
+
<div class="wizard-actions">
|
|
614
|
+
<button type="button" class="btn-secondary" @click=${this.handleSaveAndClose}>
|
|
615
|
+
${t.common.saveAndClose}
|
|
616
|
+
</button>
|
|
617
|
+
<button type="button" class="btn-primary" @click=${this.handleStartSetup}>
|
|
618
|
+
${t.common.startSetup}
|
|
619
|
+
</button>
|
|
620
|
+
</div>
|
|
621
|
+
`}};K.styles=[D,Z,J,E`
|
|
622
|
+
.wizard-content {
|
|
623
|
+
text-align: left;
|
|
624
|
+
padding: var(--ga-size-spacing-08) 0 var(--ga-size-spacing-06);
|
|
625
|
+
}
|
|
626
|
+
|
|
627
|
+
.welcome-wrapper {
|
|
628
|
+
width: var(--ga-size-content-sm);
|
|
629
|
+
margin: 0 auto;
|
|
630
|
+
text-align: left;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
.welcome-wrapper p {
|
|
634
|
+
font-size: var(--ga-text-md-size);
|
|
635
|
+
line-height: var(--ga-text-md-line-height);
|
|
636
|
+
letter-spacing: var(--ga-text-md-tracking);
|
|
637
|
+
color: var(--ga-color-text-body);
|
|
638
|
+
margin: 0;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
.welcome-wrapper h2.welcome-message {
|
|
642
|
+
font-size: var(--ga-text-2xl-size);
|
|
643
|
+
line-height: var(--ga-text-2xl-line-height);
|
|
644
|
+
letter-spacing: var(--ga-text-2xl-tracking);
|
|
645
|
+
font-weight: 400;
|
|
646
|
+
margin: 0 0 var(--ga-size-spacing-06);
|
|
647
|
+
color: var(--ga-color-text-headings);
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
`];he([m({type:String})],K.prototype,"userName",2);he([m({type:Object})],K.prototype,"translations",2);K=he([O("wizard-step-welcome")],K);var it=Object.defineProperty,st=Object.getOwnPropertyDescriptor,b=(t,e,r,a)=>{for(var i=a>1?void 0:a?st(e,r):e,s=t.length-1,o;s>=0;s--)(o=t[s])&&(i=(a?o(e,r,i):o(i))||i);return a&&i&&it(e,r,i),i};const M=["NO","SE","DK","FI","NL"];let f=class extends S{constructor(){super(...arguments),this.locale="en-GB",this.customerInfo=null,this.editingContact=!1,this.countryDropdownOpen=!1,this.fieldErrors={},this.editName="",this.editAddress1="",this.editAddress2="",this.editPostalCode="",this.editCity="",this.editCountryCode="",this.editWebUrl="",this.editContactEmail="",this.localCustomer=null}getCountryLabel(t){try{return new Intl.DisplayNames([this.locale],{type:"region"}).of(t)??t}catch{return t}}handleNext(){this.dispatchEvent(new CustomEvent("next",{bubbles:!0,composed:!0}))}handleSaveAndClose(){this.dispatchEvent(new CustomEvent("save-and-close",{bubbles:!0,composed:!0}))}handleEditContact(){const t=this.localCustomer??this.customerInfo.customer;this.editName=t.name,this.editAddress1=t.address1,this.editAddress2=t.address2,this.editPostalCode=t.postalCode,this.editCity=t.city,this.editCountryCode=t.countryCode??"",this.editWebUrl=t.webUrl,this.editContactEmail=t.contactEmail,this.editingContact=!0}handleSaveChanges(){if(!this.validateForm())return;const t=this.localCustomer??this.customerInfo.customer;this.localCustomer={...t,name:this.editName,address1:this.editAddress1,address2:this.editAddress2,postalCode:this.editPostalCode,city:this.editCity,countryCode:this.editCountryCode,webUrl:this.editWebUrl,contactEmail:this.editContactEmail},this.editingContact=!1;const e={name:this.editName,address1:this.editAddress1,address2:this.editAddress2,postalCode:this.editPostalCode,city:this.editCity,countryCode:this.editCountryCode||void 0,emailAddress:this.editContactEmail,webAddress:this.editWebUrl};this.dispatchEvent(new CustomEvent("edit-customer",{detail:e,bubbles:!0,composed:!0}))}handleCancelEdit(){this.editingContact=!1,this.countryDropdownOpen=!1,this.fieldErrors={}}validateField(t,e){const r=this.translations,a={...this.fieldErrors};t==="contactEmail"?e.trim()?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?delete a.contactEmail:a.contactEmail=r.company.emailInvalid:a.contactEmail=r.company.fieldRequired:e.trim()?delete a[t]:a[t]=r.company.fieldRequired,this.fieldErrors=a}clearFieldError(t){if(this.fieldErrors[t]){const{[t]:e,...r}=this.fieldErrors;this.fieldErrors=r}}validateForm(){const t=this.translations,e={};return this.editName.trim()||(e.name=t.company.fieldRequired),this.editAddress1.trim()||(e.address1=t.company.fieldRequired),this.editPostalCode.trim()||(e.postalCode=t.company.fieldRequired),this.editCity.trim()||(e.city=t.company.fieldRequired),this.editWebUrl.trim()||(e.webUrl=t.company.fieldRequired),this.editContactEmail.trim()?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(this.editContactEmail)||(e.contactEmail=t.company.emailInvalid):e.contactEmail=t.company.fieldRequired,this.fieldErrors=e,Object.keys(e).length===0}toggleCountryDropdown(){this.countryDropdownOpen=!this.countryDropdownOpen}selectCountry(t){this.editCountryCode=t,this.countryDropdownOpen=!1,this.updateComplete.then(()=>{var e,r;(r=(e=this.shadowRoot)==null?void 0:e.querySelector(".select-trigger"))==null||r.focus()})}handleCountryFocusOut(t){t.currentTarget.contains(t.relatedTarget)||(this.countryDropdownOpen=!1)}handleCountryKeydown(t){const e=M.indexOf(this.editCountryCode);if(t.key==="ArrowDown"){t.preventDefault(),this.countryDropdownOpen=!0;const r=Math.min(e+1,M.length-1);this.editCountryCode=M[r]}else if(t.key==="ArrowUp"){t.preventDefault(),this.countryDropdownOpen=!0;const r=Math.max(e-1,0);this.editCountryCode=M[r]}else t.key==="Escape"&&(this.countryDropdownOpen=!1)}updated(t){var e;if(t.has("editingContact"))if(this.editingContact)this.updateComplete.then(()=>{var a;const r=(a=this.shadowRoot)==null?void 0:a.querySelector(".company-name-input");r==null||r.focus()});else{const r=(e=this.shadowRoot)==null?void 0:e.querySelector(".edit-contact-btn");r==null||r.focus()}}handleStepKeydown(t){t.key==="Escape"&&this.editingContact&&(t.preventDefault(),this.handleCancelEdit())}render(){const t=this.translations;if(!this.customerInfo)return d`
|
|
652
|
+
<div class="step-content">
|
|
653
|
+
<h2>${t.company.title}</h2>
|
|
654
|
+
<p>${t.company.description}</p>
|
|
655
|
+
<hr class="section-divider" />
|
|
656
|
+
<div class="loading-placeholder">
|
|
657
|
+
<p>${t.common.loading}</p>
|
|
658
|
+
</div>
|
|
659
|
+
</div>
|
|
660
|
+
<div class="wizard-actions">
|
|
661
|
+
<button type="button" class="btn-secondary" @click=${this.handleSaveAndClose}>
|
|
662
|
+
${t.common.saveAndClose}
|
|
663
|
+
</button>
|
|
664
|
+
<button type="button" class="btn-primary" disabled>
|
|
665
|
+
${t.common.confirm}
|
|
666
|
+
</button>
|
|
667
|
+
</div>
|
|
668
|
+
`;const{customer:e,subscriptions:r}=this.customerInfo,a=this.localCustomer??e,i=a.name.split(" ").map(s=>s[0]).join("").toUpperCase().substring(0,2);return d`
|
|
669
|
+
<div class="step-content" @keydown=${this.handleStepKeydown}>
|
|
670
|
+
<h2>${t.company.title}</h2>
|
|
671
|
+
<p>${t.company.description}</p>
|
|
672
|
+
|
|
673
|
+
<hr class="section-divider" />
|
|
674
|
+
|
|
675
|
+
<div class="company-header">
|
|
676
|
+
<div class="company-avatar" aria-hidden="true">${i}</div>
|
|
677
|
+
${this.editingContact?d`<div class="company-name-wrapper">
|
|
678
|
+
<input
|
|
679
|
+
class="form-input company-name-input ${this.fieldErrors.name?"has-error":""}"
|
|
680
|
+
type="text"
|
|
681
|
+
aria-label=${t.company.companyNameLabel}
|
|
682
|
+
aria-invalid=${this.fieldErrors.name?"true":"false"}
|
|
683
|
+
.value=${this.editName}
|
|
684
|
+
@input=${s=>{this.editName=s.target.value,this.clearFieldError("name")}}
|
|
685
|
+
@blur=${s=>{this.validateField("name",s.target.value)}}
|
|
686
|
+
/>
|
|
687
|
+
${this.fieldErrors.name?d`<span class="field-error">${h.octagonAlert()}<span class="field-error-text">${this.fieldErrors.name}</span></span>`:""}
|
|
688
|
+
</div>`:d`<h3 class="company-name">${a.name}</h3>`}
|
|
689
|
+
</div>
|
|
690
|
+
|
|
691
|
+
<div class="company-columns">
|
|
692
|
+
<!-- Left column: Contact info or edit form -->
|
|
693
|
+
<div class="contact-column">
|
|
694
|
+
${this.editingContact?d`
|
|
695
|
+
<div class="edit-form" role="group" aria-label=${t.company.editFormLabel}>
|
|
696
|
+
<div class="form-field">
|
|
697
|
+
<input
|
|
698
|
+
class="form-input ${this.fieldErrors.address1?"has-error":""}"
|
|
699
|
+
type="text"
|
|
700
|
+
aria-label=${t.company.address1Label}
|
|
701
|
+
aria-invalid=${this.fieldErrors.address1?"true":"false"}
|
|
702
|
+
.value=${this.editAddress1}
|
|
703
|
+
@input=${s=>{this.editAddress1=s.target.value,this.clearFieldError("address1")}}
|
|
704
|
+
@blur=${s=>{this.validateField("address1",s.target.value)}}
|
|
705
|
+
/>
|
|
706
|
+
${this.fieldErrors.address1?d`<span class="field-error">${h.octagonAlert()}<span class="field-error-text">${this.fieldErrors.address1}</span></span>`:""}
|
|
707
|
+
</div>
|
|
708
|
+
<input
|
|
709
|
+
class="form-input"
|
|
710
|
+
type="text"
|
|
711
|
+
aria-label=${t.company.address2Placeholder}
|
|
712
|
+
.value=${this.editAddress2}
|
|
713
|
+
placeholder=${t.company.address2Placeholder}
|
|
714
|
+
@input=${s=>{this.editAddress2=s.target.value}}
|
|
715
|
+
/>
|
|
716
|
+
<div class="form-field">
|
|
717
|
+
<div class="postal-city-row" role="group" aria-label=${t.company.addressGroupLabel}>
|
|
718
|
+
<input
|
|
719
|
+
class="form-input input-postal ${this.fieldErrors.postalCode?"has-error":""}"
|
|
720
|
+
type="text"
|
|
721
|
+
inputmode="numeric"
|
|
722
|
+
pattern="[0-9]*"
|
|
723
|
+
aria-label=${t.company.postalCodeLabel}
|
|
724
|
+
aria-invalid=${this.fieldErrors.postalCode?"true":"false"}
|
|
725
|
+
.value=${this.editPostalCode}
|
|
726
|
+
@input=${s=>{this.editPostalCode=s.target.value,this.clearFieldError("postalCode")}}
|
|
727
|
+
@blur=${s=>{this.validateField("postalCode",s.target.value)}}
|
|
728
|
+
/>
|
|
729
|
+
<input
|
|
730
|
+
class="form-input input-city ${this.fieldErrors.city?"has-error":""}"
|
|
731
|
+
type="text"
|
|
732
|
+
aria-label=${t.company.cityLabel}
|
|
733
|
+
aria-invalid=${this.fieldErrors.city?"true":"false"}
|
|
734
|
+
.value=${this.editCity}
|
|
735
|
+
@input=${s=>{this.editCity=s.target.value,this.clearFieldError("city")}}
|
|
736
|
+
@blur=${s=>{this.validateField("city",s.target.value)}}
|
|
737
|
+
/>
|
|
738
|
+
</div>
|
|
739
|
+
${this.fieldErrors.postalCode?d`<span class="field-error">${h.octagonAlert()}<span class="field-error-text">${this.fieldErrors.postalCode}</span></span>`:""}
|
|
740
|
+
${this.fieldErrors.city?d`<span class="field-error">${h.octagonAlert()}<span class="field-error-text">${this.fieldErrors.city}</span></span>`:""}
|
|
741
|
+
</div>
|
|
742
|
+
<div
|
|
743
|
+
class="select-wrapper"
|
|
744
|
+
@focusout=${this.handleCountryFocusOut}
|
|
745
|
+
>
|
|
746
|
+
<button
|
|
747
|
+
type="button"
|
|
748
|
+
class="form-input select-trigger"
|
|
749
|
+
aria-haspopup="listbox"
|
|
750
|
+
aria-expanded=${String(this.countryDropdownOpen)}
|
|
751
|
+
aria-label=${t.company.countryLabel}
|
|
752
|
+
@click=${this.toggleCountryDropdown}
|
|
753
|
+
@keydown=${this.handleCountryKeydown}
|
|
754
|
+
>
|
|
755
|
+
<span>${this.editCountryCode?this.getCountryLabel(this.editCountryCode):""}</span>
|
|
756
|
+
${h.chevronDown()}
|
|
757
|
+
</button>
|
|
758
|
+
${this.countryDropdownOpen?d`
|
|
759
|
+
<ul class="dropdown-menu" role="listbox" aria-label=${t.company.countryLabel}>
|
|
760
|
+
${M.map(s=>d`
|
|
761
|
+
<li
|
|
762
|
+
class="dropdown-option"
|
|
763
|
+
role="option"
|
|
764
|
+
aria-selected=${String(s===this.editCountryCode)}
|
|
765
|
+
tabindex="0"
|
|
766
|
+
@click=${()=>this.selectCountry(s)}
|
|
767
|
+
@keydown=${o=>{(o.key==="Enter"||o.key===" ")&&(o.preventDefault(),this.selectCountry(s))}}
|
|
768
|
+
>
|
|
769
|
+
<span class="dropdown-option-icon">${s===this.editCountryCode?h.check():""}</span>
|
|
770
|
+
${this.getCountryLabel(s)}
|
|
771
|
+
</li>
|
|
772
|
+
`)}
|
|
773
|
+
</ul>
|
|
774
|
+
`:""}
|
|
775
|
+
</div>
|
|
776
|
+
<div class="form-field">
|
|
777
|
+
<input
|
|
778
|
+
class="form-input ${this.fieldErrors.webUrl?"has-error":""}"
|
|
779
|
+
type="text"
|
|
780
|
+
aria-label=${t.company.webUrlLabel}
|
|
781
|
+
aria-invalid=${this.fieldErrors.webUrl?"true":"false"}
|
|
782
|
+
.value=${this.editWebUrl}
|
|
783
|
+
@input=${s=>{this.editWebUrl=s.target.value,this.clearFieldError("webUrl")}}
|
|
784
|
+
@blur=${s=>{this.validateField("webUrl",s.target.value)}}
|
|
785
|
+
/>
|
|
786
|
+
${this.fieldErrors.webUrl?d`<span class="field-error">${h.octagonAlert()}<span class="field-error-text">${this.fieldErrors.webUrl}</span></span>`:""}
|
|
787
|
+
</div>
|
|
788
|
+
<div class="form-field">
|
|
789
|
+
<input
|
|
790
|
+
class="form-input ${this.fieldErrors.contactEmail?"has-error":""}"
|
|
791
|
+
type="email"
|
|
792
|
+
aria-label=${t.company.emailLabel}
|
|
793
|
+
aria-invalid=${this.fieldErrors.contactEmail?"true":"false"}
|
|
794
|
+
.value=${this.editContactEmail}
|
|
795
|
+
@input=${s=>{this.editContactEmail=s.target.value,this.clearFieldError("contactEmail")}}
|
|
796
|
+
@blur=${s=>{this.validateField("contactEmail",s.target.value)}}
|
|
797
|
+
/>
|
|
798
|
+
${this.fieldErrors.contactEmail?d`<span class="field-error">${h.octagonAlert()}<span class="field-error-text">${this.fieldErrors.contactEmail}</span></span>`:""}
|
|
799
|
+
</div>
|
|
800
|
+
<div class="edit-actions">
|
|
801
|
+
<button type="button" class="btn-primary" @click=${this.handleSaveChanges}>
|
|
802
|
+
${t.company.saveChanges}
|
|
803
|
+
</button>
|
|
804
|
+
<button type="button" class="btn-secondary" @click=${this.handleCancelEdit}>
|
|
805
|
+
${t.company.cancelEdit}
|
|
806
|
+
</button>
|
|
807
|
+
</div>
|
|
808
|
+
</div>
|
|
809
|
+
`:d`
|
|
810
|
+
<div class="contact-info">
|
|
811
|
+
<div class="contact-group">
|
|
812
|
+
<p>${a.address1}</p>
|
|
813
|
+
${a.address2?d`<p>${a.address2}</p>`:""}
|
|
814
|
+
<p>${a.postalCode} ${a.city}</p>
|
|
815
|
+
<p>${this.getCountryLabel(a.countryCode)}</p>
|
|
816
|
+
</div>
|
|
817
|
+
<div class="contact-group">
|
|
818
|
+
<p>${a.webUrl}</p>
|
|
819
|
+
<p>${a.contactEmail}</p>
|
|
820
|
+
</div>
|
|
821
|
+
</div>
|
|
822
|
+
<button class="edit-contact-btn" type="button" aria-label=${t.company.editContactLabel} aria-expanded=${String(this.editingContact)} title=${t.company.editContactLabel} @click=${this.handleEditContact}>
|
|
823
|
+
${h.pencil()}
|
|
824
|
+
</button>
|
|
825
|
+
`}
|
|
826
|
+
</div>
|
|
827
|
+
|
|
828
|
+
<!-- Right column: Subscription card -->
|
|
829
|
+
<div class="subscription-card">
|
|
830
|
+
<h4 class="subscription-title">${t.company.subscriptionLabel}</h4>
|
|
831
|
+
<ul class="subscription-list">
|
|
832
|
+
${r.map(s=>d`
|
|
833
|
+
<li>
|
|
834
|
+
${h.check()}
|
|
835
|
+
${s}
|
|
836
|
+
</li>
|
|
837
|
+
`)}
|
|
838
|
+
</ul>
|
|
839
|
+
${this.editingContact?d`
|
|
840
|
+
<div class="plan-notification" role="note">
|
|
841
|
+
<div class="plan-notification-icon">${h.info()}</div>
|
|
842
|
+
<p class="plan-notification-text">
|
|
843
|
+
${(()=>{const s=t.company.managePlanMessage.split("{partnerName}"),o=this.customerInfo.partner.name;return d`${s[0]}<strong>${o}</strong>${s[1]}`})()}
|
|
844
|
+
</p>
|
|
845
|
+
</div>
|
|
846
|
+
`:""}
|
|
847
|
+
</div>
|
|
848
|
+
</div>
|
|
849
|
+
</div>
|
|
850
|
+
|
|
851
|
+
<hr class="section-divider" />
|
|
852
|
+
|
|
853
|
+
<div class="wizard-actions">
|
|
854
|
+
<button type="button" class="btn-secondary" @click=${this.handleSaveAndClose}>
|
|
855
|
+
${t.common.saveAndClose}
|
|
856
|
+
</button>
|
|
857
|
+
<button type="button" class="btn-primary" ?disabled=${this.editingContact} @click=${this.handleNext}>
|
|
858
|
+
${t.common.confirm}
|
|
859
|
+
</button>
|
|
860
|
+
</div>
|
|
861
|
+
`}};f.styles=[D,Z,J,E`
|
|
862
|
+
:host {
|
|
863
|
+
--avatar-size: var(--ga-size-spacing-09);
|
|
864
|
+
}
|
|
865
|
+
|
|
866
|
+
.step-content > p {
|
|
867
|
+
font-size: var(--ga-text-md-size);
|
|
868
|
+
line-height: var(--ga-text-md-line-height);
|
|
869
|
+
letter-spacing: var(--ga-text-md-tracking);
|
|
870
|
+
color: var(--ga-color-text-body);
|
|
871
|
+
margin: 0 0 var(--ga-size-spacing-06);
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
/* Separator between description and company info */
|
|
875
|
+
.section-divider {
|
|
876
|
+
border: none;
|
|
877
|
+
border-top: var(--ga-size-border-width-sm) solid var(--ga-color-neutral-30);
|
|
878
|
+
margin: 0 0 var(--ga-size-spacing-06);
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
/* Loading state */
|
|
882
|
+
.loading-placeholder {
|
|
883
|
+
padding: var(--ga-size-spacing-05);
|
|
884
|
+
background: var(--ga-color-neutral-10);
|
|
885
|
+
border-radius: var(--ga-radius);
|
|
886
|
+
color: var(--ga-color-neutral-60);
|
|
887
|
+
font-size: var(--ga-text-md-size);
|
|
888
|
+
line-height: var(--ga-text-md-line-height);
|
|
889
|
+
}
|
|
890
|
+
|
|
891
|
+
/* Company header: avatar + name */
|
|
892
|
+
.company-header {
|
|
893
|
+
display: flex;
|
|
894
|
+
align-items: center;
|
|
895
|
+
gap: var(--ga-size-spacing-05);
|
|
896
|
+
margin-bottom: var(--ga-size-spacing-07);
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
.company-avatar {
|
|
900
|
+
width: var(--avatar-size);
|
|
901
|
+
height: var(--avatar-size);
|
|
902
|
+
border-radius: var(--ga-radius-round);
|
|
903
|
+
background: transparent;
|
|
904
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-text-headings);
|
|
905
|
+
color: var(--ga-color-text-headings);
|
|
906
|
+
display: flex;
|
|
907
|
+
align-items: center;
|
|
908
|
+
justify-content: center;
|
|
909
|
+
font-size: var(--ga-text-md-size);
|
|
910
|
+
font-weight: 600;
|
|
911
|
+
flex-shrink: 0;
|
|
912
|
+
}
|
|
913
|
+
|
|
914
|
+
.company-name {
|
|
915
|
+
font-size: var(--ga-text-xl-size);
|
|
916
|
+
line-height: var(--ga-text-xl-line-height);
|
|
917
|
+
letter-spacing: var(--ga-text-xl-tracking);
|
|
918
|
+
font-weight: 400;
|
|
919
|
+
margin: 0;
|
|
920
|
+
color: var(--ga-color-text-headings);
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
/* Two-column layout for contact + subscription */
|
|
924
|
+
.company-columns {
|
|
925
|
+
display: flex;
|
|
926
|
+
gap: var(--ga-size-spacing-07);
|
|
927
|
+
align-items: flex-start;
|
|
928
|
+
padding-bottom: var(--ga-size-spacing-04);
|
|
929
|
+
padding-left: var(--ga-size-spacing-10);
|
|
930
|
+
padding-right: var(--ga-size-spacing-10);
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
/* Contact column: fixed width */
|
|
934
|
+
.contact-column {
|
|
935
|
+
width: var(--ga-size-content-xs);
|
|
936
|
+
flex-shrink: 0;
|
|
937
|
+
display: flex;
|
|
938
|
+
flex-direction: column;
|
|
939
|
+
gap: var(--ga-size-spacing-05);
|
|
940
|
+
}
|
|
941
|
+
|
|
942
|
+
/* Edit button: standalone icon button */
|
|
943
|
+
.edit-contact-btn {
|
|
944
|
+
all: unset;
|
|
945
|
+
display: flex;
|
|
946
|
+
align-items: center;
|
|
947
|
+
justify-content: center;
|
|
948
|
+
width: var(--ga-size-spacing-07);
|
|
949
|
+
height: var(--ga-size-spacing-07);
|
|
950
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-border-primary);
|
|
951
|
+
border-radius: var(--ga-radius);
|
|
952
|
+
cursor: pointer;
|
|
953
|
+
color: var(--ga-color-text-body);
|
|
954
|
+
}
|
|
955
|
+
|
|
956
|
+
.edit-contact-btn:hover {
|
|
957
|
+
background: var(--ga-color-neutral-10);
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
.edit-contact-btn:focus-visible {
|
|
961
|
+
outline: var(--ga-size-border-width-md) solid var(--ga-color-primary);
|
|
962
|
+
outline-offset: var(--ga-size-border-width-md);
|
|
963
|
+
}
|
|
964
|
+
|
|
965
|
+
.edit-contact-btn svg {
|
|
966
|
+
width: var(--ga-size-spacing-05);
|
|
967
|
+
height: var(--ga-size-spacing-05);
|
|
968
|
+
}
|
|
969
|
+
|
|
970
|
+
/* Edit form */
|
|
971
|
+
.edit-form {
|
|
972
|
+
display: flex;
|
|
973
|
+
flex-direction: column;
|
|
974
|
+
gap: var(--ga-size-spacing-05);
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
.form-field {
|
|
978
|
+
display: flex;
|
|
979
|
+
flex-direction: column;
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
.form-input {
|
|
983
|
+
width: 100%;
|
|
984
|
+
padding: var(--ga-size-spacing-03) var(--ga-size-spacing-04);
|
|
985
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-border-primary);
|
|
986
|
+
border-radius: var(--ga-radius);
|
|
987
|
+
font-size: var(--ga-text-md-size);
|
|
988
|
+
font-family: var(--ga-font-family-primary);
|
|
989
|
+
line-height: var(--ga-text-md-line-height);
|
|
990
|
+
letter-spacing: var(--ga-text-md-tracking);
|
|
991
|
+
color: var(--ga-color-text-action);
|
|
992
|
+
background: var(--ga-color-white);
|
|
993
|
+
box-sizing: border-box;
|
|
994
|
+
outline: none;
|
|
995
|
+
transition: border-color 0.2s;
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
.form-input:focus {
|
|
999
|
+
border-color: var(--ga-color-border-focus);
|
|
1000
|
+
box-shadow: 0 0 0 var(--ga-size-border-width-md) var(--ga-color-white), 0 0 0 var(--ga-size-border-width-lg) var(--ga-color-border-focus);
|
|
1001
|
+
}
|
|
1002
|
+
|
|
1003
|
+
.form-input.has-error {
|
|
1004
|
+
border-color: var(--ga-color-border-error);
|
|
1005
|
+
background: var(--ga-color-surface-error);
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
.form-input.has-error:focus {
|
|
1009
|
+
border-color: var(--ga-color-border-error);
|
|
1010
|
+
box-shadow: 0 0 0 var(--ga-size-border-width-md) var(--ga-color-white), 0 0 0 var(--ga-size-border-width-lg) var(--ga-color-border-error);
|
|
1011
|
+
}
|
|
1012
|
+
|
|
1013
|
+
.postal-city-row {
|
|
1014
|
+
display: flex;
|
|
1015
|
+
gap: var(--ga-size-spacing-03);
|
|
1016
|
+
}
|
|
1017
|
+
|
|
1018
|
+
.input-postal {
|
|
1019
|
+
width: var(--ga-size-spacing-10);
|
|
1020
|
+
flex-shrink: 0;
|
|
1021
|
+
}
|
|
1022
|
+
|
|
1023
|
+
.input-city {
|
|
1024
|
+
flex: 1;
|
|
1025
|
+
}
|
|
1026
|
+
|
|
1027
|
+
.input-country {
|
|
1028
|
+
max-width: var(--ga-size-content-2xs);
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
/* Country custom dropdown */
|
|
1032
|
+
.select-wrapper {
|
|
1033
|
+
position: relative;
|
|
1034
|
+
max-width: var(--ga-size-content-2xs);
|
|
1035
|
+
}
|
|
1036
|
+
|
|
1037
|
+
.select-trigger {
|
|
1038
|
+
display: flex;
|
|
1039
|
+
align-items: center;
|
|
1040
|
+
justify-content: space-between;
|
|
1041
|
+
text-align: left;
|
|
1042
|
+
cursor: pointer;
|
|
1043
|
+
width: 100%;
|
|
1044
|
+
padding-right: var(--ga-size-spacing-04);
|
|
1045
|
+
}
|
|
1046
|
+
|
|
1047
|
+
.select-trigger svg {
|
|
1048
|
+
width: var(--ga-size-spacing-05);
|
|
1049
|
+
height: var(--ga-size-spacing-05);
|
|
1050
|
+
flex-shrink: 0;
|
|
1051
|
+
color: var(--ga-color-text-action);
|
|
1052
|
+
}
|
|
1053
|
+
|
|
1054
|
+
.dropdown-menu {
|
|
1055
|
+
position: absolute;
|
|
1056
|
+
top: calc(100% + var(--ga-size-spacing-01));
|
|
1057
|
+
left: 0;
|
|
1058
|
+
right: 0;
|
|
1059
|
+
background: var(--ga-color-surface-primary);
|
|
1060
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-border-primary);
|
|
1061
|
+
border-radius: var(--ga-radius);
|
|
1062
|
+
box-shadow: var(--ga-shadow-dropdown);
|
|
1063
|
+
list-style: none;
|
|
1064
|
+
margin: 0;
|
|
1065
|
+
padding: 0;
|
|
1066
|
+
z-index: 10;
|
|
1067
|
+
overflow: hidden;
|
|
1068
|
+
}
|
|
1069
|
+
|
|
1070
|
+
.dropdown-option {
|
|
1071
|
+
display: flex;
|
|
1072
|
+
align-items: center;
|
|
1073
|
+
gap: var(--ga-size-spacing-03);
|
|
1074
|
+
padding: var(--ga-size-spacing-03) var(--ga-size-spacing-04);
|
|
1075
|
+
font-size: var(--ga-text-md-size);
|
|
1076
|
+
font-family: var(--ga-font-family-primary);
|
|
1077
|
+
line-height: var(--ga-text-md-line-height);
|
|
1078
|
+
letter-spacing: var(--ga-text-md-tracking);
|
|
1079
|
+
color: var(--ga-color-text-body);
|
|
1080
|
+
cursor: pointer;
|
|
1081
|
+
list-style: none;
|
|
1082
|
+
outline: none;
|
|
1083
|
+
position: relative;
|
|
1084
|
+
}
|
|
1085
|
+
|
|
1086
|
+
.dropdown-option[aria-selected='true'] {
|
|
1087
|
+
background: var(--ga-color-surface-selected);
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
.dropdown-option:hover {
|
|
1091
|
+
background: var(--ga-color-surface-action-hover-2);
|
|
1092
|
+
color: var(--ga-color-text-action-hover);
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
.dropdown-option:focus {
|
|
1096
|
+
box-shadow: inset 0 0 0 var(--ga-size-border-width-md) var(--ga-color-border-focus);
|
|
1097
|
+
}
|
|
1098
|
+
|
|
1099
|
+
.dropdown-option-icon {
|
|
1100
|
+
width: var(--ga-size-spacing-05);
|
|
1101
|
+
height: var(--ga-size-spacing-05);
|
|
1102
|
+
flex-shrink: 0;
|
|
1103
|
+
display: flex;
|
|
1104
|
+
align-items: center;
|
|
1105
|
+
justify-content: center;
|
|
1106
|
+
color: var(--ga-color-text-body);
|
|
1107
|
+
}
|
|
1108
|
+
|
|
1109
|
+
.dropdown-option-icon svg {
|
|
1110
|
+
width: var(--ga-size-spacing-05);
|
|
1111
|
+
height: var(--ga-size-spacing-05);
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1114
|
+
.company-name-wrapper {
|
|
1115
|
+
flex: 1;
|
|
1116
|
+
min-width: 0;
|
|
1117
|
+
display: flex;
|
|
1118
|
+
flex-direction: column;
|
|
1119
|
+
}
|
|
1120
|
+
|
|
1121
|
+
.company-name-input {
|
|
1122
|
+
width: 100%;
|
|
1123
|
+
}
|
|
1124
|
+
|
|
1125
|
+
.edit-actions {
|
|
1126
|
+
display: flex;
|
|
1127
|
+
gap: var(--ga-size-spacing-05);
|
|
1128
|
+
align-items: center;
|
|
1129
|
+
margin-top: var(--ga-size-spacing-03);
|
|
1130
|
+
}
|
|
1131
|
+
|
|
1132
|
+
/* Subscription card */
|
|
1133
|
+
.subscription-card {
|
|
1134
|
+
flex: 1;
|
|
1135
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-border-primary);
|
|
1136
|
+
border-radius: var(--ga-radius);
|
|
1137
|
+
background: var(--ga-color-white);
|
|
1138
|
+
padding: var(--ga-size-spacing-03) var(--ga-size-spacing-03) var(--ga-size-spacing-03) var(--ga-size-spacing-05);
|
|
1139
|
+
display: flex;
|
|
1140
|
+
flex-direction: column;
|
|
1141
|
+
gap: var(--ga-size-spacing-03);
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
.subscription-title {
|
|
1145
|
+
font-size: var(--ga-text-md-size);
|
|
1146
|
+
line-height: var(--ga-text-md-line-height);
|
|
1147
|
+
letter-spacing: var(--ga-text-md-tracking);
|
|
1148
|
+
font-weight: 700;
|
|
1149
|
+
color: var(--ga-color-text-body);
|
|
1150
|
+
margin: 0;
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
/* Contact info lines */
|
|
1154
|
+
.contact-info {
|
|
1155
|
+
display: flex;
|
|
1156
|
+
flex-direction: column;
|
|
1157
|
+
gap: var(--ga-size-spacing-05);
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
.contact-group {
|
|
1161
|
+
display: flex;
|
|
1162
|
+
flex-direction: column;
|
|
1163
|
+
gap: var(--ga-size-spacing-01);
|
|
1164
|
+
}
|
|
1165
|
+
|
|
1166
|
+
.contact-info p {
|
|
1167
|
+
margin: 0;
|
|
1168
|
+
font-size: var(--ga-text-md-size);
|
|
1169
|
+
line-height: var(--ga-text-md-line-height);
|
|
1170
|
+
letter-spacing: var(--ga-text-md-tracking);
|
|
1171
|
+
color: var(--ga-color-text-body);
|
|
1172
|
+
}
|
|
1173
|
+
|
|
1174
|
+
/* Subscription list */
|
|
1175
|
+
.subscription-list {
|
|
1176
|
+
list-style: none;
|
|
1177
|
+
padding: 0;
|
|
1178
|
+
margin: 0;
|
|
1179
|
+
display: flex;
|
|
1180
|
+
flex-direction: column;
|
|
1181
|
+
gap: var(--ga-size-spacing-03);
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
.subscription-list li {
|
|
1185
|
+
display: flex;
|
|
1186
|
+
align-items: center;
|
|
1187
|
+
gap: var(--ga-size-spacing-03);
|
|
1188
|
+
font-size: var(--ga-text-md-size);
|
|
1189
|
+
line-height: var(--ga-text-md-line-height);
|
|
1190
|
+
letter-spacing: var(--ga-text-md-tracking);
|
|
1191
|
+
color: var(--ga-color-text-body);
|
|
1192
|
+
}
|
|
1193
|
+
|
|
1194
|
+
.subscription-list li svg {
|
|
1195
|
+
width: var(--ga-size-spacing-05);
|
|
1196
|
+
height: var(--ga-size-spacing-05);
|
|
1197
|
+
color: var(--ga-color-text-body);
|
|
1198
|
+
flex-shrink: 0;
|
|
1199
|
+
}
|
|
1200
|
+
|
|
1201
|
+
.plan-notification {
|
|
1202
|
+
display: flex;
|
|
1203
|
+
align-items: flex-start;
|
|
1204
|
+
gap: var(--ga-size-spacing-05);
|
|
1205
|
+
padding: var(--ga-size-spacing-03) var(--ga-size-spacing-03) var(--ga-size-spacing-03) var(--ga-size-spacing-05);
|
|
1206
|
+
background: var(--ga-color-surface-information);
|
|
1207
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-border-information);
|
|
1208
|
+
border-radius: var(--ga-radius);
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
.plan-notification-icon {
|
|
1212
|
+
color: var(--ga-color-icon-information);
|
|
1213
|
+
flex-shrink: 0;
|
|
1214
|
+
padding-top: var(--ga-size-spacing-03);
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
.plan-notification-icon svg {
|
|
1218
|
+
width: var(--ga-size-spacing-05);
|
|
1219
|
+
height: var(--ga-size-spacing-05);
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1222
|
+
.plan-notification-text {
|
|
1223
|
+
font-size: var(--ga-text-md-size);
|
|
1224
|
+
line-height: var(--ga-text-md-line-height);
|
|
1225
|
+
color: var(--ga-color-text-body);
|
|
1226
|
+
margin: var(--ga-size-spacing-03) 0;
|
|
1227
|
+
}
|
|
1228
|
+
|
|
1229
|
+
/* Wizard actions row */
|
|
1230
|
+
.wizard-actions {
|
|
1231
|
+
margin-top: 0;
|
|
1232
|
+
}
|
|
1233
|
+
|
|
1234
|
+
`];b([m({type:Object})],f.prototype,"translations",2);b([m({type:String})],f.prototype,"locale",2);b([m({type:Object})],f.prototype,"customerInfo",2);b([u()],f.prototype,"editingContact",2);b([u()],f.prototype,"countryDropdownOpen",2);b([u()],f.prototype,"fieldErrors",2);b([u()],f.prototype,"editName",2);b([u()],f.prototype,"editAddress1",2);b([u()],f.prototype,"editAddress2",2);b([u()],f.prototype,"editPostalCode",2);b([u()],f.prototype,"editCity",2);b([u()],f.prototype,"editCountryCode",2);b([u()],f.prototype,"editWebUrl",2);b([u()],f.prototype,"editContactEmail",2);b([u()],f.prototype,"localCustomer",2);f=b([O("wizard-step1-company")],f);var ot=Object.defineProperty,nt=Object.getOwnPropertyDescriptor,z=(t,e,r,a)=>{for(var i=a>1?void 0:a?nt(e,r):e,s=t.length-1,o;s>=0;s--)(o=t[s])&&(i=(a?o(e,r,i):o(i))||i);return a&&i&&ot(e,r,i),i};let w=class extends S{constructor(){super(...arguments),this.httpService=null,this.customerId="",this.locale="en-GB",this.currentUser=null,this.existingAdmins=[],this.isLoadingAdmins=!1,this.rows=[],this.nextId=1,this.lookingUpIds=new Set,this.isConfirming=!1,this.rowErrors=new Map,this._loadSequence=0}updated(t){t.has("httpService")||t.has("customerId")?this.loadExistingAdmins():t.has("currentUser")&&this.existingAdmins.length>0&&(this.existingAdmins=this.sortAdmins([...this.existingAdmins]))}sortAdmins(t){var r;const e=(r=this.currentUser)==null?void 0:r.email.toLowerCase();return e?t.sort((a,i)=>{const s=a.email.toLowerCase()===e,o=i.email.toLowerCase()===e;return s&&o?0:s?-1:o?1:0}):t}async loadExistingAdmins(){if(!this.httpService||!this.customerId)return;const t=++this._loadSequence;this.isLoadingAdmins=!0;try{const e=await this.httpService.getAdministrators(this.customerId);if(t!==this._loadSequence)return;this.existingAdmins=this.sortAdmins([...e.content])}catch{}finally{t===this._loadSequence&&(this.isLoadingAdmins=!1)}}get hasOpenRow(){return this.rows.some(t=>!t.isDone)}get validAdminCount(){return this.rows.filter(t=>t.isDone&&(t.state==="found"||t.state==="not-found"&&t.firstName.trim()!==""&&t.lastName.trim()!=="")).length}get canConfirm(){return!this.hasOpenRow&&!this.isConfirming&&!this.isLoadingAdmins}get canAddMore(){return!this.hasOpenRow&&!this.isConfirming}get confirmButtonLabel(){const t=this.translations,e=this.validAdminCount;return e===0?t.common.confirm:(e===1?t.administrators.confirmSingular:t.administrators.confirmPlural).replace("{count}",String(e))}async addRow(){var r;if(!this.canAddMore)return;const t=this.nextId++;this.rows=[...this.rows,{id:t,state:"lookup",isDone:!1,email:"",firstName:"",lastName:""}],await this.updateComplete;const e=(r=this.shadowRoot)==null?void 0:r.querySelectorAll('input[type="email"]');e&&e.length>0&&e[e.length-1].focus()}removeRow(t){this.rows=this.rows.filter(r=>r.id!==t);const e=new Map(this.rowErrors);e.delete(t),this.rowErrors=e}doneRow(t){const e=this.rows.find(r=>r.id===t);if(e&&e.state!=="lookup"){if(e.state==="not-found"){const r=this.validateRowRequiredField(t,"firstName",e.firstName),a=this.validateRowRequiredField(t,"lastName",e.lastName);if(!r||!a)return}this.rows=this.rows.map(r=>r.id===t?{...r,isDone:!0,email:r.email.trim(),firstName:r.firstName.trim(),lastName:r.lastName.trim()}:r)}}editRow(t){this.rows=this.rows.map(e=>e.id===t?{...e,isDone:!1}:e)}updateRowEmail(t,e){this.rows=this.rows.map(a=>a.id===t?{...a,email:e,state:"lookup",firstName:"",lastName:""}:a);const r=new Map(this.rowErrors);r.delete(t),this.rowErrors=r}updateFirstName(t,e){this.rows=this.rows.map(r=>r.id===t?{...r,firstName:e}:r),this.clearRowFieldError(t,"firstName")}updateLastName(t,e){this.rows=this.rows.map(r=>r.id===t?{...r,lastName:e}:r),this.clearRowFieldError(t,"lastName")}setRowFieldError(t,e,r){const a=new Map(this.rowErrors);a.set(t,{...a.get(t)??{},[e]:r}),this.rowErrors=a}clearRowFieldError(t,e){const r=this.rowErrors.get(t);if(!(r!=null&&r[e]))return;const{[e]:a,...i}=r,s=new Map(this.rowErrors);Object.keys(i).length===0?s.delete(t):s.set(t,i),this.rowErrors=s}validateRowEmail(t,e){const r=this.translations;return e.trim()?/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim())?(this.clearRowFieldError(t,"email"),!0):(this.setRowFieldError(t,"email",r.company.emailInvalid),!1):(this.setRowFieldError(t,"email",r.company.fieldRequired),!1)}validateRowRequiredField(t,e,r){const a=this.translations;return r.trim()?(this.clearRowFieldError(t,e),!0):(this.setRowFieldError(t,e,a.company.fieldRequired),!1)}validateAllRows(){let t=!0;for(const e of this.rows)e.state==="not-found"&&(this.validateRowRequiredField(e.id,"firstName",e.firstName)||(t=!1),this.validateRowRequiredField(e.id,"lastName",e.lastName)||(t=!1));return t}async lookupUser(t){var a,i,s,o,l,n;const e=this.rows.find(p=>p.id===t);if(!e||!this.httpService)return;if(!this.validateRowEmail(t,e.email)){(i=(a=this.shadowRoot)==null?void 0:a.querySelector(`input[data-email-row-id="${t}"]`))==null||i.focus();return}const r=e.email.trim();this.lookingUpIds=new Set([...this.lookingUpIds,t]);try{const p=await this.httpService.getUserByEmail(r),c=this.rows.find(g=>g.id===t);if(!c||c.email.trim()!==r)return;p?(this.rows=this.rows.map(g=>g.id===t?{...g,state:"found",firstName:p.firstName,lastName:p.lastName}:g),await this.updateComplete,(o=(s=this.shadowRoot)==null?void 0:s.querySelector(`button[data-done-row-id="${t}"]`))==null||o.focus()):(this.rows=this.rows.map(g=>g.id===t?{...g,state:"not-found",firstName:"",lastName:""}:g),await this.updateComplete,(n=(l=this.shadowRoot)==null?void 0:l.querySelector(`input[data-row-id="${t}"]`))==null||n.focus())}catch{}finally{const p=new Set(this.lookingUpIds);p.delete(t),this.lookingUpIds=p}}async handleConfirm(){if(!this.canConfirm||!this.httpService||!this.customerId||!this.validateAllRows())return;this.isConfirming=!0;const t=this.rows.filter(e=>e.state==="found"||e.state==="not-found"&&e.firstName.trim()&&e.lastName.trim());try{if(t.length>0){const e=t.map(r=>({email:r.email.trim(),firstName:r.firstName.trim(),lastName:r.lastName.trim(),languageCode:this.locale}));await this.httpService.addCustomerAdministrators(this.customerId,e)}this.dispatchEvent(new CustomEvent("next",{bubbles:!0,composed:!0}))}catch{}finally{this.isConfirming=!1}}handleSaveAndClose(){this.dispatchEvent(new CustomEvent("save-and-close",{bubbles:!0,composed:!0}))}renderExistingAdminRow(t,e){var i;const r=this.translations,a=((i=this.currentUser)==null?void 0:i.email.toLowerCase())===t.email.toLowerCase();return d`
|
|
1235
|
+
<div class="admin-row admin-row--done">
|
|
1236
|
+
<span class="row-num">${e}</span>
|
|
1237
|
+
<div class="cell-email">
|
|
1238
|
+
<span class="name-text">${t.email}</span>
|
|
1239
|
+
</div>
|
|
1240
|
+
<div class="cell-name">
|
|
1241
|
+
<span class="name-text">${t.firstName}</span>
|
|
1242
|
+
</div>
|
|
1243
|
+
<div class="cell-name-last">
|
|
1244
|
+
<span class="name-text">${t.lastName}</span>
|
|
1245
|
+
</div>
|
|
1246
|
+
<div class="cell-action">
|
|
1247
|
+
${a?d`
|
|
1248
|
+
<div class="you-tag" aria-label=${r.administrators.youLabel}>
|
|
1249
|
+
<span>${h.userRound()}</span>
|
|
1250
|
+
<span>${r.administrators.youLabel}</span>
|
|
1251
|
+
</div>
|
|
1252
|
+
`:v}
|
|
1253
|
+
</div>
|
|
1254
|
+
</div>
|
|
1255
|
+
`}renderLookupRow(t,e){const r=this.translations,a=this.lookingUpIds.has(t.id),i=t.email.trim().length>0,s=this.rowErrors.get(t.id)??{};return d`
|
|
1256
|
+
<div class="admin-row">
|
|
1257
|
+
<span class="row-num">${e}</span>
|
|
1258
|
+
<div class="cell-email">
|
|
1259
|
+
<input
|
|
1260
|
+
class="grid-input ${s.email?"has-error":""}"
|
|
1261
|
+
type="email"
|
|
1262
|
+
data-email-row-id=${t.id}
|
|
1263
|
+
.value=${t.email}
|
|
1264
|
+
placeholder=${r.company.emailLabel}
|
|
1265
|
+
aria-label=${r.company.emailLabel}
|
|
1266
|
+
aria-invalid=${s.email?"true":"false"}
|
|
1267
|
+
@input=${o=>this.updateRowEmail(t.id,o.target.value)}
|
|
1268
|
+
@blur=${o=>this.validateRowEmail(t.id,o.target.value)}
|
|
1269
|
+
/>
|
|
1270
|
+
<span class="field-error ${s.email?"":"field-error--empty"}" aria-hidden=${s.email?"false":"true"}>${h.octagonAlert()}<span class="field-error-text">${s.email??""}</span></span>
|
|
1271
|
+
</div>
|
|
1272
|
+
<div class="cell-lookup-btn">
|
|
1273
|
+
<button
|
|
1274
|
+
type="button"
|
|
1275
|
+
class="btn-add-name"
|
|
1276
|
+
@click=${()=>this.lookupUser(t.id)}
|
|
1277
|
+
?disabled=${!i||a}
|
|
1278
|
+
aria-label=${r.administrators.addNameButton}
|
|
1279
|
+
>
|
|
1280
|
+
${r.administrators.addNameButton}
|
|
1281
|
+
</button>
|
|
1282
|
+
</div>
|
|
1283
|
+
<div class="cell-action">
|
|
1284
|
+
<button
|
|
1285
|
+
type="button"
|
|
1286
|
+
class="btn-icon"
|
|
1287
|
+
@click=${()=>this.removeRow(t.id)}
|
|
1288
|
+
aria-label=${r.administrators.deleteRowLabel}
|
|
1289
|
+
>
|
|
1290
|
+
${h.trash()}
|
|
1291
|
+
</button>
|
|
1292
|
+
</div>
|
|
1293
|
+
</div>
|
|
1294
|
+
`}renderFoundRow(t,e){const r=this.translations;if(t.isDone)return d`
|
|
1295
|
+
<div class="admin-row admin-row--done">
|
|
1296
|
+
<span class="row-num">${e}</span>
|
|
1297
|
+
<div class="cell-email">
|
|
1298
|
+
<span class="name-text">${t.email}</span>
|
|
1299
|
+
</div>
|
|
1300
|
+
<div class="cell-name">
|
|
1301
|
+
<span class="name-text">${t.firstName}</span>
|
|
1302
|
+
</div>
|
|
1303
|
+
<div class="cell-name-last">
|
|
1304
|
+
<span class="name-text">${t.lastName}</span>
|
|
1305
|
+
</div>
|
|
1306
|
+
<div class="cell-action">
|
|
1307
|
+
<button
|
|
1308
|
+
type="button"
|
|
1309
|
+
class="btn-edit"
|
|
1310
|
+
@click=${()=>this.editRow(t.id)}
|
|
1311
|
+
aria-label=${r.administrators.editButton}
|
|
1312
|
+
>
|
|
1313
|
+
${r.administrators.editButton}
|
|
1314
|
+
</button>
|
|
1315
|
+
</div>
|
|
1316
|
+
</div>
|
|
1317
|
+
`;const a=this.lookingUpIds.has(t.id),i=this.rowErrors.get(t.id)??{};return d`
|
|
1318
|
+
<div class="admin-row">
|
|
1319
|
+
<span class="row-num">${e}</span>
|
|
1320
|
+
<div class="cell-email">
|
|
1321
|
+
<input
|
|
1322
|
+
class="grid-input ${i.email?"has-error":""}"
|
|
1323
|
+
type="email"
|
|
1324
|
+
.value=${t.email}
|
|
1325
|
+
placeholder=${r.company.emailLabel}
|
|
1326
|
+
aria-label=${r.company.emailLabel}
|
|
1327
|
+
aria-invalid=${i.email?"true":"false"}
|
|
1328
|
+
?disabled=${a}
|
|
1329
|
+
@input=${s=>this.updateRowEmail(t.id,s.target.value)}
|
|
1330
|
+
@blur=${s=>this.validateRowEmail(t.id,s.target.value)}
|
|
1331
|
+
/>
|
|
1332
|
+
<span class="field-error ${i.email?"":"field-error--empty"}" aria-hidden=${i.email?"false":"true"}>${h.octagonAlert()}<span class="field-error-text">${i.email??""}</span></span>
|
|
1333
|
+
</div>
|
|
1334
|
+
<div class="cell-name">
|
|
1335
|
+
<span class="name-text">${t.firstName}</span>
|
|
1336
|
+
</div>
|
|
1337
|
+
<div class="cell-name-last">
|
|
1338
|
+
<span class="name-text">${t.lastName}</span>
|
|
1339
|
+
</div>
|
|
1340
|
+
<div class="cell-action">
|
|
1341
|
+
<button
|
|
1342
|
+
type="button"
|
|
1343
|
+
data-trash-row-id=${t.id}
|
|
1344
|
+
class="btn-icon"
|
|
1345
|
+
@click=${()=>this.removeRow(t.id)}
|
|
1346
|
+
aria-label=${r.administrators.deleteRowLabel}
|
|
1347
|
+
>
|
|
1348
|
+
${h.trash()}
|
|
1349
|
+
</button>
|
|
1350
|
+
<button
|
|
1351
|
+
type="button"
|
|
1352
|
+
data-done-row-id=${t.id}
|
|
1353
|
+
class="btn-done"
|
|
1354
|
+
@click=${()=>this.doneRow(t.id)}
|
|
1355
|
+
aria-label=${r.administrators.doneButton}
|
|
1356
|
+
>
|
|
1357
|
+
${r.administrators.doneButton}
|
|
1358
|
+
</button>
|
|
1359
|
+
</div>
|
|
1360
|
+
</div>
|
|
1361
|
+
`}renderNotFoundRow(t,e){const r=this.translations,a=this.rowErrors.get(t.id)??{};return t.isDone?d`
|
|
1362
|
+
<div class="admin-row admin-row--done">
|
|
1363
|
+
<span class="row-num">${e}</span>
|
|
1364
|
+
<div class="cell-email">
|
|
1365
|
+
<span class="name-text">${t.email}</span>
|
|
1366
|
+
</div>
|
|
1367
|
+
<div class="cell-name">
|
|
1368
|
+
<span class="name-text">${t.firstName}</span>
|
|
1369
|
+
</div>
|
|
1370
|
+
<div class="cell-name-last">
|
|
1371
|
+
<span class="name-text">${t.lastName}</span>
|
|
1372
|
+
</div>
|
|
1373
|
+
<div class="cell-action">
|
|
1374
|
+
<button
|
|
1375
|
+
type="button"
|
|
1376
|
+
class="btn-edit"
|
|
1377
|
+
@click=${()=>this.editRow(t.id)}
|
|
1378
|
+
aria-label=${r.administrators.editButton}
|
|
1379
|
+
>
|
|
1380
|
+
${r.administrators.editButton}
|
|
1381
|
+
</button>
|
|
1382
|
+
</div>
|
|
1383
|
+
</div>
|
|
1384
|
+
`:d`
|
|
1385
|
+
<div class="admin-row">
|
|
1386
|
+
<span class="row-num">${e}</span>
|
|
1387
|
+
<div class="cell-email">
|
|
1388
|
+
<input
|
|
1389
|
+
class="grid-input ${a.email?"has-error":""}"
|
|
1390
|
+
type="email"
|
|
1391
|
+
.value=${t.email}
|
|
1392
|
+
placeholder=${r.company.emailLabel}
|
|
1393
|
+
aria-label=${r.company.emailLabel}
|
|
1394
|
+
aria-invalid=${a.email?"true":"false"}
|
|
1395
|
+
@input=${i=>this.updateRowEmail(t.id,i.target.value)}
|
|
1396
|
+
@blur=${i=>this.validateRowEmail(t.id,i.target.value)}
|
|
1397
|
+
/>
|
|
1398
|
+
<span class="field-error ${a.email?"":"field-error--empty"}" aria-hidden=${a.email?"false":"true"}>${h.octagonAlert()}<span class="field-error-text">${a.email??""}</span></span>
|
|
1399
|
+
</div>
|
|
1400
|
+
<div class="cell-name">
|
|
1401
|
+
<input
|
|
1402
|
+
data-row-id=${t.id}
|
|
1403
|
+
class="grid-input ${a.firstName?"has-error":""}"
|
|
1404
|
+
type="text"
|
|
1405
|
+
.value=${t.firstName}
|
|
1406
|
+
placeholder=${r.administrators.firstNameLabel}
|
|
1407
|
+
aria-label=${r.administrators.firstNameLabel}
|
|
1408
|
+
aria-invalid=${a.firstName?"true":"false"}
|
|
1409
|
+
@input=${i=>this.updateFirstName(t.id,i.target.value)}
|
|
1410
|
+
/>
|
|
1411
|
+
<span class="field-error ${a.firstName?"":"field-error--empty"}" aria-hidden=${a.firstName?"false":"true"}>${h.octagonAlert()}<span class="field-error-text">${a.firstName??""}</span></span>
|
|
1412
|
+
</div>
|
|
1413
|
+
<div class="cell-name-last">
|
|
1414
|
+
<input
|
|
1415
|
+
class="grid-input ${a.lastName?"has-error":""}"
|
|
1416
|
+
type="text"
|
|
1417
|
+
.value=${t.lastName}
|
|
1418
|
+
placeholder=${r.administrators.lastNameLabel}
|
|
1419
|
+
aria-label=${r.administrators.lastNameLabel}
|
|
1420
|
+
aria-invalid=${a.lastName?"true":"false"}
|
|
1421
|
+
@input=${i=>this.updateLastName(t.id,i.target.value)}
|
|
1422
|
+
/>
|
|
1423
|
+
<span class="field-error ${a.lastName?"":"field-error--empty"}" aria-hidden=${a.lastName?"false":"true"}>${h.octagonAlert()}<span class="field-error-text">${a.lastName??""}</span></span>
|
|
1424
|
+
</div>
|
|
1425
|
+
<div class="cell-action">
|
|
1426
|
+
<button
|
|
1427
|
+
type="button"
|
|
1428
|
+
class="btn-icon"
|
|
1429
|
+
@click=${()=>this.removeRow(t.id)}
|
|
1430
|
+
aria-label=${r.administrators.deleteRowLabel}
|
|
1431
|
+
>
|
|
1432
|
+
${h.trash()}
|
|
1433
|
+
</button>
|
|
1434
|
+
<button
|
|
1435
|
+
type="button"
|
|
1436
|
+
class="btn-done"
|
|
1437
|
+
@click=${()=>this.doneRow(t.id)}
|
|
1438
|
+
aria-label=${r.administrators.doneButton}
|
|
1439
|
+
>
|
|
1440
|
+
${r.administrators.doneButton}
|
|
1441
|
+
</button>
|
|
1442
|
+
</div>
|
|
1443
|
+
</div>
|
|
1444
|
+
`}renderAdminRow(t,e){switch(t.state){case"lookup":return this.renderLookupRow(t,e);case"found":return this.renderFoundRow(t,e);case"not-found":return this.renderNotFoundRow(t,e)}}render(){const t=this.translations,e=this.existingAdmins.length+1;return d`
|
|
1445
|
+
<div class="step-content">
|
|
1446
|
+
<h2>${t.administrators.title}</h2>
|
|
1447
|
+
<p>${t.administrators.description}</p>
|
|
1448
|
+
|
|
1449
|
+
<div class="admin-table">
|
|
1450
|
+
${this.existingAdmins.map((r,a)=>this.renderExistingAdminRow(r,a+1))}
|
|
1451
|
+
${this.rows.map((r,a)=>this.renderAdminRow(r,e+a))}
|
|
1452
|
+
<div class="table-footer">
|
|
1453
|
+
<button
|
|
1454
|
+
type="button"
|
|
1455
|
+
class="btn-add-row"
|
|
1456
|
+
@click=${this.addRow}
|
|
1457
|
+
?disabled=${!this.canAddMore}
|
|
1458
|
+
aria-label=${t.administrators.addAdministratorButton}
|
|
1459
|
+
>
|
|
1460
|
+
${h.plus()}
|
|
1461
|
+
${t.administrators.addAdministratorButton}
|
|
1462
|
+
</button>
|
|
1463
|
+
</div>
|
|
1464
|
+
</div>
|
|
1465
|
+
</div>
|
|
1466
|
+
|
|
1467
|
+
<div class="wizard-actions">
|
|
1468
|
+
<button type="button" class="btn-secondary" @click=${this.handleSaveAndClose}>
|
|
1469
|
+
${t.common.saveAndClose}
|
|
1470
|
+
</button>
|
|
1471
|
+
<button
|
|
1472
|
+
type="button"
|
|
1473
|
+
class="btn-primary"
|
|
1474
|
+
@click=${this.handleConfirm}
|
|
1475
|
+
?disabled=${!this.canConfirm}
|
|
1476
|
+
>
|
|
1477
|
+
${this.confirmButtonLabel}
|
|
1478
|
+
</button>
|
|
1479
|
+
</div>
|
|
1480
|
+
`}};w.styles=[D,Z,J,E`
|
|
1481
|
+
.step-content > p {
|
|
1482
|
+
font-size: var(--ga-text-md-size);
|
|
1483
|
+
line-height: var(--ga-text-md-line-height);
|
|
1484
|
+
letter-spacing: var(--ga-text-md-tracking);
|
|
1485
|
+
color: var(--ga-color-text-body);
|
|
1486
|
+
margin: 0 0 var(--ga-size-spacing-07);
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
/* ── Table panel ── */
|
|
1490
|
+
.admin-table {
|
|
1491
|
+
background: var(--ga-color-surface-page);
|
|
1492
|
+
border-radius: var(--ga-radius);
|
|
1493
|
+
overflow: hidden;
|
|
1494
|
+
}
|
|
1495
|
+
|
|
1496
|
+
/* ── Shared row layout ── */
|
|
1497
|
+
.admin-row {
|
|
1498
|
+
display: flex;
|
|
1499
|
+
align-items: flex-start;
|
|
1500
|
+
gap: var(--ga-size-spacing-04);
|
|
1501
|
+
padding: var(--ga-size-spacing-03) var(--ga-size-spacing-05);
|
|
1502
|
+
min-height: var(--ga-size-56);
|
|
1503
|
+
}
|
|
1504
|
+
|
|
1505
|
+
.admin-row + .admin-row {
|
|
1506
|
+
border-top: var(--ga-size-border-width-sm) solid var(--ga-color-neutral-20);
|
|
1507
|
+
}
|
|
1508
|
+
|
|
1509
|
+
.admin-row--done {
|
|
1510
|
+
align-items: center;
|
|
1511
|
+
}
|
|
1512
|
+
|
|
1513
|
+
.row-num {
|
|
1514
|
+
font-size: var(--ga-text-sm-size);
|
|
1515
|
+
line-height: var(--ga-text-sm-line-height);
|
|
1516
|
+
color: var(--ga-color-text-body);
|
|
1517
|
+
width: var(--ga-size-spacing-05);
|
|
1518
|
+
text-align: right;
|
|
1519
|
+
flex-shrink: 0;
|
|
1520
|
+
align-self: flex-start;
|
|
1521
|
+
padding-top: var(--ga-size-spacing-04);
|
|
1522
|
+
}
|
|
1523
|
+
|
|
1524
|
+
.admin-row--done .row-num {
|
|
1525
|
+
align-self: auto;
|
|
1526
|
+
padding-top: 0;
|
|
1527
|
+
}
|
|
1528
|
+
|
|
1529
|
+
/* Column widths */
|
|
1530
|
+
.cell-email {
|
|
1531
|
+
flex: 0 0 var(--ga-size-content-xs);
|
|
1532
|
+
min-width: 0;
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1535
|
+
.cell-name,
|
|
1536
|
+
.cell-name-last {
|
|
1537
|
+
flex: 1 1 0;
|
|
1538
|
+
min-width: 0;
|
|
1539
|
+
}
|
|
1540
|
+
|
|
1541
|
+
.cell-lookup-btn {
|
|
1542
|
+
flex: 1 1 0;
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
.cell-action {
|
|
1546
|
+
flex-shrink: 0;
|
|
1547
|
+
display: flex;
|
|
1548
|
+
align-items: center;
|
|
1549
|
+
justify-content: flex-end;
|
|
1550
|
+
gap: var(--ga-size-spacing-02);
|
|
1551
|
+
min-width: var(--ga-size-spacing-10);
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
/* Name displayed as plain text (found state) */
|
|
1555
|
+
.name-text {
|
|
1556
|
+
font-size: var(--ga-text-sm-size);
|
|
1557
|
+
line-height: var(--ga-text-sm-line-height);
|
|
1558
|
+
color: var(--ga-color-text-body);
|
|
1559
|
+
overflow: hidden;
|
|
1560
|
+
text-overflow: ellipsis;
|
|
1561
|
+
white-space: nowrap;
|
|
1562
|
+
display: block;
|
|
1563
|
+
padding: 0 var(--ga-size-spacing-02);
|
|
1564
|
+
}
|
|
1565
|
+
|
|
1566
|
+
/* Editable input field */
|
|
1567
|
+
.grid-input {
|
|
1568
|
+
background: var(--ga-color-white);
|
|
1569
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-neutral-30);
|
|
1570
|
+
border-radius: var(--ga-radius);
|
|
1571
|
+
height: var(--ga-size-40);
|
|
1572
|
+
padding: 0 var(--ga-size-spacing-04);
|
|
1573
|
+
font-size: var(--ga-text-sm-size);
|
|
1574
|
+
line-height: var(--ga-text-sm-line-height);
|
|
1575
|
+
color: var(--ga-color-text-body);
|
|
1576
|
+
width: 100%;
|
|
1577
|
+
box-sizing: border-box;
|
|
1578
|
+
outline: none;
|
|
1579
|
+
font-family: var(--vsn-customer-onboarding-wizard-font-family);
|
|
1580
|
+
}
|
|
1581
|
+
|
|
1582
|
+
.grid-input:focus {
|
|
1583
|
+
border-color: var(--ga-color-border-focus);
|
|
1584
|
+
outline: var(--ga-size-border-width-md) solid var(--ga-color-border-focus);
|
|
1585
|
+
outline-offset: var(--ga-size-border-width-md);
|
|
1586
|
+
}
|
|
1587
|
+
|
|
1588
|
+
.grid-input.has-error {
|
|
1589
|
+
border-color: var(--ga-color-border-error);
|
|
1590
|
+
background: var(--ga-color-surface-error);
|
|
1591
|
+
}
|
|
1592
|
+
|
|
1593
|
+
.grid-input.has-error:focus {
|
|
1594
|
+
border-color: var(--ga-color-border-error);
|
|
1595
|
+
}
|
|
1596
|
+
|
|
1597
|
+
/* ── "You" tag ── */
|
|
1598
|
+
.you-tag {
|
|
1599
|
+
display: inline-flex;
|
|
1600
|
+
align-items: center;
|
|
1601
|
+
gap: var(--ga-size-spacing-02);
|
|
1602
|
+
background: var(--ga-color-utility-green-light);
|
|
1603
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-utility-green);
|
|
1604
|
+
border-radius: var(--ga-radius);
|
|
1605
|
+
padding: var(--ga-size-spacing-01) var(--ga-size-spacing-02);
|
|
1606
|
+
font-size: var(--ga-text-sm-size);
|
|
1607
|
+
line-height: var(--ga-text-sm-line-height);
|
|
1608
|
+
color: var(--ga-color-text-body);
|
|
1609
|
+
white-space: nowrap;
|
|
1610
|
+
}
|
|
1611
|
+
|
|
1612
|
+
.you-tag svg {
|
|
1613
|
+
width: var(--ga-size-spacing-05);
|
|
1614
|
+
height: var(--ga-size-spacing-05);
|
|
1615
|
+
flex-shrink: 0;
|
|
1616
|
+
}
|
|
1617
|
+
|
|
1618
|
+
/* ── Add-name ghost button ── */
|
|
1619
|
+
.btn-add-name {
|
|
1620
|
+
background: transparent;
|
|
1621
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-primary);
|
|
1622
|
+
border-radius: var(--ga-radius);
|
|
1623
|
+
color: var(--ga-color-primary);
|
|
1624
|
+
font-size: var(--ga-text-sm-size);
|
|
1625
|
+
font-weight: 500;
|
|
1626
|
+
height: var(--ga-size-40);
|
|
1627
|
+
padding: 0 var(--ga-size-spacing-04);
|
|
1628
|
+
cursor: pointer;
|
|
1629
|
+
white-space: nowrap;
|
|
1630
|
+
font-family: var(--vsn-customer-onboarding-wizard-font-family);
|
|
1631
|
+
}
|
|
1632
|
+
|
|
1633
|
+
.btn-add-name:hover:not(:disabled) {
|
|
1634
|
+
background: var(--ga-color-surface-page);
|
|
1635
|
+
}
|
|
1636
|
+
|
|
1637
|
+
.btn-add-name:focus-visible,
|
|
1638
|
+
.btn-done:focus-visible,
|
|
1639
|
+
.btn-edit:focus-visible,
|
|
1640
|
+
.btn-icon:focus-visible,
|
|
1641
|
+
.btn-add-row:focus-visible {
|
|
1642
|
+
outline: var(--ga-size-border-width-md) solid var(--ga-color-border-focus);
|
|
1643
|
+
outline-offset: var(--ga-size-border-width-md);
|
|
1644
|
+
}
|
|
1645
|
+
|
|
1646
|
+
.btn-add-name:disabled {
|
|
1647
|
+
border-color: var(--ga-color-border-disabled);
|
|
1648
|
+
color: var(--ga-color-text-disabled);
|
|
1649
|
+
cursor: not-allowed;
|
|
1650
|
+
}
|
|
1651
|
+
|
|
1652
|
+
/* ── Done / Edit row action buttons ── */
|
|
1653
|
+
.btn-done {
|
|
1654
|
+
background: var(--ga-color-primary-70);
|
|
1655
|
+
color: var(--ga-color-secondary-10);
|
|
1656
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-primary-70);
|
|
1657
|
+
border-radius: var(--ga-radius);
|
|
1658
|
+
font-size: var(--ga-text-sm-size);
|
|
1659
|
+
font-weight: 500;
|
|
1660
|
+
height: var(--ga-size-40);
|
|
1661
|
+
padding: 0 var(--ga-size-spacing-04);
|
|
1662
|
+
cursor: pointer;
|
|
1663
|
+
white-space: nowrap;
|
|
1664
|
+
font-family: var(--vsn-customer-onboarding-wizard-font-family);
|
|
1665
|
+
}
|
|
1666
|
+
|
|
1667
|
+
.btn-done:hover {
|
|
1668
|
+
background: var(--ga-color-primary-90);
|
|
1669
|
+
border-color: var(--ga-color-primary-90);
|
|
1670
|
+
}
|
|
1671
|
+
|
|
1672
|
+
.btn-edit {
|
|
1673
|
+
background: var(--ga-color-white);
|
|
1674
|
+
color: var(--ga-color-text-body);
|
|
1675
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-cyan-80);
|
|
1676
|
+
border-radius: var(--ga-radius);
|
|
1677
|
+
font-size: var(--ga-text-sm-size);
|
|
1678
|
+
font-weight: 500;
|
|
1679
|
+
height: var(--ga-size-40);
|
|
1680
|
+
padding: 0 var(--ga-size-spacing-04);
|
|
1681
|
+
cursor: pointer;
|
|
1682
|
+
white-space: nowrap;
|
|
1683
|
+
font-family: var(--vsn-customer-onboarding-wizard-font-family);
|
|
1684
|
+
}
|
|
1685
|
+
|
|
1686
|
+
.btn-edit:hover {
|
|
1687
|
+
background: var(--ga-color-secondary-10);
|
|
1688
|
+
}
|
|
1689
|
+
|
|
1690
|
+
/* ── Trash icon button ── */
|
|
1691
|
+
.btn-icon {
|
|
1692
|
+
background: transparent;
|
|
1693
|
+
border: none;
|
|
1694
|
+
padding: var(--ga-size-spacing-02);
|
|
1695
|
+
cursor: pointer;
|
|
1696
|
+
color: var(--ga-color-primary);
|
|
1697
|
+
display: flex;
|
|
1698
|
+
align-items: center;
|
|
1699
|
+
justify-content: center;
|
|
1700
|
+
border-radius: var(--ga-radius);
|
|
1701
|
+
}
|
|
1702
|
+
|
|
1703
|
+
.btn-icon:hover {
|
|
1704
|
+
background: var(--ga-color-surface-page);
|
|
1705
|
+
}
|
|
1706
|
+
|
|
1707
|
+
.btn-icon svg {
|
|
1708
|
+
width: var(--ga-size-spacing-05);
|
|
1709
|
+
height: var(--ga-size-spacing-05);
|
|
1710
|
+
}
|
|
1711
|
+
|
|
1712
|
+
/* ── Table footer row (Add Administrator button) ── */
|
|
1713
|
+
.table-footer {
|
|
1714
|
+
border-top: var(--ga-size-border-width-sm) solid var(--ga-color-neutral-20);
|
|
1715
|
+
padding: var(--ga-size-spacing-03) var(--ga-size-spacing-05);
|
|
1716
|
+
display: flex;
|
|
1717
|
+
align-items: center;
|
|
1718
|
+
}
|
|
1719
|
+
|
|
1720
|
+
.btn-add-row {
|
|
1721
|
+
display: inline-flex;
|
|
1722
|
+
align-items: center;
|
|
1723
|
+
gap: var(--ga-size-spacing-02);
|
|
1724
|
+
background: transparent;
|
|
1725
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-primary);
|
|
1726
|
+
color: var(--ga-color-primary);
|
|
1727
|
+
font-size: var(--ga-text-md-size);
|
|
1728
|
+
font-weight: 500;
|
|
1729
|
+
padding: var(--ga-size-spacing-03) var(--ga-size-spacing-05);
|
|
1730
|
+
cursor: pointer;
|
|
1731
|
+
border-radius: var(--ga-radius);
|
|
1732
|
+
font-family: var(--vsn-customer-onboarding-wizard-font-family);
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
.btn-add-row:hover:not(:disabled) {
|
|
1736
|
+
background: var(--ga-color-surface-page);
|
|
1737
|
+
}
|
|
1738
|
+
|
|
1739
|
+
.btn-add-row:disabled {
|
|
1740
|
+
color: var(--ga-color-text-disabled);
|
|
1741
|
+
border-color: var(--ga-color-neutral-30);
|
|
1742
|
+
cursor: not-allowed;
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1745
|
+
.btn-add-row svg {
|
|
1746
|
+
width: var(--ga-size-16);
|
|
1747
|
+
height: var(--ga-size-16);
|
|
1748
|
+
}
|
|
1749
|
+
|
|
1750
|
+
|
|
1751
|
+
`];z([m({type:Object})],w.prototype,"translations",2);z([m({type:Object})],w.prototype,"httpService",2);z([m({type:String})],w.prototype,"customerId",2);z([m({type:String})],w.prototype,"locale",2);z([m({type:Object})],w.prototype,"currentUser",2);z([u()],w.prototype,"existingAdmins",2);z([u()],w.prototype,"isLoadingAdmins",2);z([u()],w.prototype,"rows",2);z([u()],w.prototype,"nextId",2);z([u()],w.prototype,"lookingUpIds",2);z([u()],w.prototype,"isConfirming",2);z([u()],w.prototype,"rowErrors",2);w=z([O("wizard-step2-administrators")],w);var lt=Object.defineProperty,dt=Object.getOwnPropertyDescriptor,A=(t,e,r,a)=>{for(var i=a>1?void 0:a?dt(e,r):e,s=t.length-1,o;s>=0;s--)(o=t[s])&&(i=(a?o(e,r,i):o(i))||i);return a&&i&<(e,r,i),i};let k=class extends S{constructor(){super(...arguments),this.httpService=null,this.customerId="",this.partnerId="",this.partnerName="",this.consultants=[],this.isLoading=!1,this.isConfirming=!1,this.selectedIds=new Set,this.searchTerm="",this._loadSequence=0}updated(t){(t.has("httpService")||t.has("partnerId"))&&this.loadConsultants()}async loadConsultants(){if(!this.httpService||!this.partnerId){++this._loadSequence,this.consultants=[],this.selectedIds=new Set,this.searchTerm="",this.isLoading=!1;return}const t=++this._loadSequence;this.isLoading=!0,this.consultants=[],this.selectedIds=new Set,this.searchTerm="";try{const e=await this.httpService.getPartnerConsultants(this.partnerId);if(t!==this._loadSequence)return;this.consultants=e.content}catch{}finally{t===this._loadSequence&&(this.isLoading=!1)}}get filteredConsultants(){const t=this.searchTerm.trim().toLowerCase();return t?this.consultants.filter(e=>`${e.firstName} ${e.lastName}`.toLowerCase().includes(t)||e.email.toLowerCase().includes(t)):this.consultants}get confirmButtonLabel(){const t=this.translations,e=this.selectedIds.size;return e===0?t.common.confirm:(e===1?t.partnerAccess.confirmSingular:t.partnerAccess.confirmPlural).replace("{count}",String(e))}toggleConsultant(t){const e=new Set(this.selectedIds);e.has(t)?e.delete(t):e.add(t),this.selectedIds=e}async handleConfirm(){if(!(this.isConfirming||this.isLoading)&&!(!this.httpService||!this.customerId)){this.isConfirming=!0;try{const t=this.consultants.filter(e=>this.selectedIds.has(e.id));t.length>0&&await this.httpService.addCustomerConsultants(this.customerId,t),this.dispatchEvent(new CustomEvent("complete",{bubbles:!0,composed:!0}))}catch{}finally{this.isConfirming=!1}}}handleSaveAndClose(){this.dispatchEvent(new CustomEvent("save-and-close",{bubbles:!0,composed:!0}))}renderConsultantRow(t){const e=this.selectedIds.has(t.id),r=`${t.firstName} ${t.lastName}`;return d`
|
|
1752
|
+
<label class="consultant-row ${e?"consultant-row--selected":""}" role="listitem">
|
|
1753
|
+
<input
|
|
1754
|
+
type="checkbox"
|
|
1755
|
+
class="sr-only"
|
|
1756
|
+
.checked=${e}
|
|
1757
|
+
@change=${()=>this.toggleConsultant(t.id)}
|
|
1758
|
+
/>
|
|
1759
|
+
<span class="checkbox-visual ${e?"checkbox-visual--checked":""}">
|
|
1760
|
+
${e?h.check():v}
|
|
1761
|
+
</span>
|
|
1762
|
+
<span class="consultant-name">${r}</span>
|
|
1763
|
+
<span class="consultant-email">${t.email}</span>
|
|
1764
|
+
</label>
|
|
1765
|
+
`}render(){const t=this.translations;return d`
|
|
1766
|
+
<div class="step-content">
|
|
1767
|
+
<h2>${t.partnerAccess.title}</h2>
|
|
1768
|
+
<p>${(()=>{const e=t.partnerAccess.description.split("{partnerName}");return e.length===1?t.partnerAccess.description:d`${e.map((r,a)=>a<e.length-1?d`${r}<strong>${this.partnerName}</strong>`:r)}`})()}</p>
|
|
1769
|
+
|
|
1770
|
+
<div class="search-row">
|
|
1771
|
+
<div class="search-wrapper">
|
|
1772
|
+
<span class="search-icon" aria-hidden="true">${h.search()}</span>
|
|
1773
|
+
<input
|
|
1774
|
+
type="search"
|
|
1775
|
+
class="search-input"
|
|
1776
|
+
placeholder=${t.partnerAccess.findConsultantPlaceholder}
|
|
1777
|
+
aria-label=${t.partnerAccess.findConsultantPlaceholder}
|
|
1778
|
+
.value=${this.searchTerm}
|
|
1779
|
+
@input=${e=>{this.searchTerm=e.target.value}}
|
|
1780
|
+
/>
|
|
1781
|
+
</div>
|
|
1782
|
+
</div>
|
|
1783
|
+
|
|
1784
|
+
<div class="consultant-list" role="list" aria-label=${t.partnerAccess.title}>
|
|
1785
|
+
${this.isLoading?d`<div class="loading-row" role="listitem">${t.partnerAccess.loading}</div>`:this.filteredConsultants.map(e=>this.renderConsultantRow(e))}
|
|
1786
|
+
</div>
|
|
1787
|
+
</div>
|
|
1788
|
+
|
|
1789
|
+
<div class="wizard-actions">
|
|
1790
|
+
<button type="button" class="btn-secondary" @click=${this.handleSaveAndClose}>
|
|
1791
|
+
${t.common.saveAndClose}
|
|
1792
|
+
</button>
|
|
1793
|
+
<button
|
|
1794
|
+
type="button"
|
|
1795
|
+
class="btn-primary"
|
|
1796
|
+
@click=${this.handleConfirm}
|
|
1797
|
+
?disabled=${this.isConfirming||this.isLoading||!this.httpService||!this.customerId}
|
|
1798
|
+
>
|
|
1799
|
+
${this.confirmButtonLabel}
|
|
1800
|
+
</button>
|
|
1801
|
+
</div>
|
|
1802
|
+
`}};k.styles=[D,Z,J,E`
|
|
1803
|
+
.step-content > p {
|
|
1804
|
+
font-size: var(--ga-text-md-size);
|
|
1805
|
+
line-height: var(--ga-text-md-line-height);
|
|
1806
|
+
color: var(--ga-color-text-body);
|
|
1807
|
+
margin: 0 0 var(--ga-size-spacing-07);
|
|
1808
|
+
}
|
|
1809
|
+
|
|
1810
|
+
/* ── Search row ── */
|
|
1811
|
+
.search-row {
|
|
1812
|
+
display: flex;
|
|
1813
|
+
justify-content: flex-end;
|
|
1814
|
+
margin-bottom: var(--ga-size-spacing-03);
|
|
1815
|
+
}
|
|
1816
|
+
|
|
1817
|
+
.search-wrapper {
|
|
1818
|
+
position: relative;
|
|
1819
|
+
width: var(--ga-size-content-xs);
|
|
1820
|
+
}
|
|
1821
|
+
|
|
1822
|
+
.search-icon {
|
|
1823
|
+
position: absolute;
|
|
1824
|
+
left: var(--ga-size-spacing-03);
|
|
1825
|
+
top: 50%;
|
|
1826
|
+
transform: translateY(-50%);
|
|
1827
|
+
color: var(--ga-color-icon-action);
|
|
1828
|
+
display: flex;
|
|
1829
|
+
align-items: center;
|
|
1830
|
+
pointer-events: none;
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1833
|
+
.search-icon svg {
|
|
1834
|
+
width: var(--ga-size-spacing-05);
|
|
1835
|
+
height: var(--ga-size-spacing-05);
|
|
1836
|
+
}
|
|
1837
|
+
|
|
1838
|
+
.search-input {
|
|
1839
|
+
width: 100%;
|
|
1840
|
+
box-sizing: border-box;
|
|
1841
|
+
height: var(--ga-size-40);
|
|
1842
|
+
padding: 0 var(--ga-size-spacing-04) 0 var(--ga-size-spacing-07);
|
|
1843
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-neutral-30);
|
|
1844
|
+
border-radius: var(--ga-radius);
|
|
1845
|
+
background: var(--ga-color-white);
|
|
1846
|
+
font-size: var(--ga-text-sm-size);
|
|
1847
|
+
line-height: var(--ga-text-sm-line-height);
|
|
1848
|
+
color: var(--ga-color-text-body);
|
|
1849
|
+
outline: none;
|
|
1850
|
+
font-family: var(--vsn-customer-onboarding-wizard-font-family);
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
.search-input::placeholder {
|
|
1854
|
+
color: var(--ga-color-neutral-60);
|
|
1855
|
+
}
|
|
1856
|
+
|
|
1857
|
+
.search-input:focus {
|
|
1858
|
+
border-color: var(--ga-color-border-focus);
|
|
1859
|
+
}
|
|
1860
|
+
|
|
1861
|
+
/* ── Consultant list panel ── */
|
|
1862
|
+
.consultant-list {
|
|
1863
|
+
background: var(--ga-color-surface-page);
|
|
1864
|
+
border-radius: var(--ga-radius);
|
|
1865
|
+
overflow: hidden;
|
|
1866
|
+
}
|
|
1867
|
+
|
|
1868
|
+
/* ── Consultant row ── */
|
|
1869
|
+
.consultant-row {
|
|
1870
|
+
display: flex;
|
|
1871
|
+
align-items: center;
|
|
1872
|
+
gap: var(--ga-size-spacing-03);
|
|
1873
|
+
height: var(--ga-size-56);
|
|
1874
|
+
padding: 0 var(--ga-size-spacing-05);
|
|
1875
|
+
cursor: pointer;
|
|
1876
|
+
}
|
|
1877
|
+
|
|
1878
|
+
.consultant-row + .consultant-row {
|
|
1879
|
+
border-top: var(--ga-size-border-width-sm) solid var(--ga-color-neutral-20);
|
|
1880
|
+
}
|
|
1881
|
+
|
|
1882
|
+
.consultant-row--selected {
|
|
1883
|
+
background: var(--ga-color-surface-selected);
|
|
1884
|
+
}
|
|
1885
|
+
|
|
1886
|
+
.consultant-row:hover:not(.consultant-row--selected) {
|
|
1887
|
+
background: var(--ga-color-neutral-10);
|
|
1888
|
+
}
|
|
1889
|
+
|
|
1890
|
+
.consultant-row:focus-within .checkbox-visual {
|
|
1891
|
+
outline: var(--ga-size-border-width-md) solid var(--ga-color-border-focus);
|
|
1892
|
+
outline-offset: var(--ga-size-border-width-sm);
|
|
1893
|
+
}
|
|
1894
|
+
|
|
1895
|
+
/* ── Checkbox ── */
|
|
1896
|
+
.checkbox-visual {
|
|
1897
|
+
flex-shrink: 0;
|
|
1898
|
+
width: var(--ga-size-16);
|
|
1899
|
+
height: var(--ga-size-16);
|
|
1900
|
+
border: var(--ga-size-border-width-sm) solid var(--ga-color-neutral-30);
|
|
1901
|
+
border-radius: var(--ga-radius);
|
|
1902
|
+
background: var(--ga-color-white);
|
|
1903
|
+
display: flex;
|
|
1904
|
+
align-items: center;
|
|
1905
|
+
justify-content: center;
|
|
1906
|
+
pointer-events: none;
|
|
1907
|
+
}
|
|
1908
|
+
|
|
1909
|
+
.checkbox-visual--checked {
|
|
1910
|
+
background: var(--ga-color-primary-70);
|
|
1911
|
+
border-color: var(--ga-color-primary-70);
|
|
1912
|
+
}
|
|
1913
|
+
|
|
1914
|
+
.checkbox-visual svg {
|
|
1915
|
+
width: var(--ga-size-12);
|
|
1916
|
+
height: var(--ga-size-12);
|
|
1917
|
+
color: var(--ga-color-white);
|
|
1918
|
+
stroke-width: var(--ga-size-border-width-lg);
|
|
1919
|
+
}
|
|
1920
|
+
|
|
1921
|
+
/* Visually hidden native checkbox (for accessibility) */
|
|
1922
|
+
.sr-only {
|
|
1923
|
+
position: absolute;
|
|
1924
|
+
width: var(--ga-size-border-width-sm);
|
|
1925
|
+
height: var(--ga-size-border-width-sm);
|
|
1926
|
+
padding: 0;
|
|
1927
|
+
margin: calc(var(--ga-size-border-width-sm) * -1);
|
|
1928
|
+
overflow: hidden;
|
|
1929
|
+
clip: rect(0, 0, 0, 0);
|
|
1930
|
+
white-space: nowrap;
|
|
1931
|
+
border-width: 0;
|
|
1932
|
+
}
|
|
1933
|
+
|
|
1934
|
+
/* ── Consultant info columns ── */
|
|
1935
|
+
.consultant-name,
|
|
1936
|
+
.consultant-email {
|
|
1937
|
+
flex: 1 1 0;
|
|
1938
|
+
min-width: 0;
|
|
1939
|
+
font-size: var(--ga-text-sm-size);
|
|
1940
|
+
line-height: var(--ga-text-sm-line-height);
|
|
1941
|
+
color: var(--ga-color-text-body);
|
|
1942
|
+
overflow: hidden;
|
|
1943
|
+
text-overflow: ellipsis;
|
|
1944
|
+
white-space: nowrap;
|
|
1945
|
+
}
|
|
1946
|
+
|
|
1947
|
+
.consultant-email {
|
|
1948
|
+
text-align: left;
|
|
1949
|
+
}
|
|
1950
|
+
|
|
1951
|
+
/* ── Loading state ── */
|
|
1952
|
+
.loading-row {
|
|
1953
|
+
padding: var(--ga-size-spacing-05);
|
|
1954
|
+
text-align: center;
|
|
1955
|
+
font-size: var(--ga-text-sm-size);
|
|
1956
|
+
color: var(--ga-color-neutral-60);
|
|
1957
|
+
}
|
|
1958
|
+
|
|
1959
|
+
|
|
1960
|
+
|
|
1961
|
+
`];A([m({type:Object})],k.prototype,"translations",2);A([m({type:Object})],k.prototype,"httpService",2);A([m({type:String})],k.prototype,"customerId",2);A([m({type:String})],k.prototype,"partnerId",2);A([m({type:String})],k.prototype,"partnerName",2);A([u()],k.prototype,"consultants",2);A([u()],k.prototype,"isLoading",2);A([u()],k.prototype,"isConfirming",2);A([u()],k.prototype,"selectedIds",2);A([u()],k.prototype,"searchTerm",2);k=A([O("wizard-step3-partner-access")],k);var ct=Object.defineProperty,gt=Object.getOwnPropertyDescriptor,je=(t,e,r,a)=>{for(var i=a>1?void 0:a?gt(e,r):e,s=t.length-1,o;s>=0;s--)(o=t[s])&&(i=(a?o(e,r,i):o(i))||i);return a&&i&&ct(e,r,i),i};let re=class extends S{handleClose(){this.dispatchEvent(new CustomEvent("close",{bubbles:!0,composed:!0}))}handleGoToAdmin(){this.dispatchEvent(new CustomEvent("close",{detail:{redirect:!0},bubbles:!0,composed:!0}))}render(){const t=this.translations;return d`
|
|
1962
|
+
<div class="step-content">
|
|
1963
|
+
<h2>${t.complete.title}</h2>
|
|
1964
|
+
<p>${t.complete.message1}</p>
|
|
1965
|
+
<p>${t.complete.message2}</p>
|
|
1966
|
+
|
|
1967
|
+
<button type="button" class="btn-primary primary-action" @click=${this.handleGoToAdmin}>
|
|
1968
|
+
${t.complete.goToAdminButton}
|
|
1969
|
+
</button>
|
|
1970
|
+
</div>
|
|
1971
|
+
|
|
1972
|
+
<div class="wizard-actions">
|
|
1973
|
+
<button type="button" class="btn-secondary" @click=${this.handleClose}>
|
|
1974
|
+
${t.common.close}
|
|
1975
|
+
</button>
|
|
1976
|
+
</div>
|
|
1977
|
+
`}};re.styles=[D,Z,J,E`
|
|
1978
|
+
.step-content h2 {
|
|
1979
|
+
font-weight: var(--ga-font-weight-semibold);
|
|
1980
|
+
margin: 0 0 var(--ga-size-spacing-06);
|
|
1981
|
+
}
|
|
1982
|
+
|
|
1983
|
+
.step-content p {
|
|
1984
|
+
font-size: var(--ga-text-md-size);
|
|
1985
|
+
line-height: var(--ga-text-md-line-height);
|
|
1986
|
+
color: var(--ga-color-text-body);
|
|
1987
|
+
margin: 0 0 var(--ga-size-spacing-04);
|
|
1988
|
+
}
|
|
1989
|
+
|
|
1990
|
+
.primary-action {
|
|
1991
|
+
margin-top: var(--ga-size-spacing-06);
|
|
1992
|
+
}
|
|
1993
|
+
`];je([m({type:Object})],re.prototype,"translations",2);re=je([O("wizard-step-complete")],re);var pt=Object.defineProperty,ut=Object.getOwnPropertyDescriptor,$=(t,e,r,a)=>{for(var i=a>1?void 0:a?ut(e,r):e,s=t.length-1,o;s>=0;s--)(o=t[s])&&(i=(a?o(e,r,i):o(i))||i);return a&&i&&pt(e,r,i),i};let y=class extends S{constructor(){super(...arguments),this.locale="en-GB",this.baseUrl="",this.adminUrl="",this.taskId="",this.customerId="",this.step="welcome",this.userName="User",this.currentUserProfile=null,this.currentStep=0,this.completedSteps=new Set,this.errorState=null,this.customerInfo=null,this.visible=!0,this.i18n=new et,this.errorMessageListener=null}get steps(){const t=this.i18n.getTranslations();return[{id:1,label:t.steps.company},{id:2,label:t.steps.administrators},{id:3,label:t.steps.partnerAccess}]}connectedCallback(){super.connectedCallback(),this.currentStep=y.stepMap[this.step]??0,this.httpService=new tt(this.baseUrl,{},this),this.i18n.setLocale(this.locale),this.initializeWithAuth(),this.setupErrorMessageListener()}disconnectedCallback(){super.disconnectedCallback(),this.removeErrorMessageListener()}setupErrorMessageListener(){this.errorMessageListener=(t=>{const{errorKey:e}=t.detail;this.errorState={errorKey:e}}),this.addEventListener("error-message",this.errorMessageListener)}removeErrorMessageListener(){this.errorMessageListener&&(this.removeEventListener("error-message",this.errorMessageListener),this.errorMessageListener=null)}dismissError(){this.errorState=null}async initializeWithAuth(){try{const t=await this.requestAuthToken();if(!t){console.warn("[CustomerOnboardingWizard] No authentication token provided by host application");return}this.httpService.setAuthToken(t),await this.loadUserProfile(),this.loadDataForStep(this.currentStep)}catch(t){console.error("Failed to initialize component:",t)}}requestAuthToken(){return new Promise(t=>{let e=!1;const r=setTimeout(()=>{e||(e=!0,t(null))},5e3),a=new CustomEvent("request-token",{detail:{callback:i=>{e||(e=!0,clearTimeout(r),t(i))}},bubbles:!0,composed:!0});this.dispatchEvent(a)})}async loadUserProfile(){try{const t=await this.httpService.getUserProfile();this.currentUserProfile=t,this.userName=`${t.firstName} ${t.lastName}`}catch(t){console.error("Failed to load user profile:",t)}}async loadCustomerInfo(){if(!this.customerId){console.warn("[CustomerOnboardingWizard] No customerId provided, skipping customer info load");return}try{this.customerInfo=await this.httpService.getCustomerInfo(this.customerId)}catch(t){console.error("Failed to load customer info:",t)}}updateToken(t){this.httpService.setAuthToken(t)}willUpdate(t){t.has("locale")&&(this.i18n.setLocale(this.locale)||(this.locale=this.i18n.getLocale()))}loadDataForStep(t){t>=1&&!this.customerInfo&&this.customerId&&this.loadCustomerInfo()}handleStartSetup(){this.currentStep=1,this.loadDataForStep(1)}handleNext(){if(this.currentStep===1&&!this.customerInfo){console.warn("[CustomerOnboardingWizard] Cannot proceed: customer info not loaded");return}this.currentStep<3&&(this.completedSteps.add(this.currentStep),this.currentStep++,this.requestUpdate())}handleComplete(){this.completedSteps.add(this.currentStep),this.currentStep=4}handleSaveAndClose(){const e={0:"welcome",1:"company",2:"administrators",3:"partner-access"}[this.currentStep];this.visible=!1,this.dispatchEvent(new CustomEvent("wizard-closed",{detail:{completed:!1,currentStep:this.currentStep},bubbles:!0,composed:!0})),e&&this.taskId&&this.httpService.saveProgress(this.taskId,e).catch(()=>{})}handleEditCustomer(t){this.customerId&&this.httpService.editCustomer(this.customerId,t.detail).catch(()=>{})}navigate(t){window.location.href=t}handleClose(t){var i;const r=((i=t.detail)==null?void 0:i.redirect)===!0?this.adminUrl:"";this.dispatchEvent(new CustomEvent("wizard-closed",{detail:{completed:!0},bubbles:!0,composed:!0}));const a=s=>{try{const{protocol:o}=new URL(s);(o==="https:"||o==="http:")&&this.navigate(s)}catch{}};this.taskId?this.httpService.deleteTask(this.taskId).then(()=>{this.visible=!1,r&&a(r)}).catch(()=>{this.visible=!1}):(this.visible=!1,r&&a(r))}getStepClass(t){return this.completedSteps.has(t)?"completed":this.currentStep===t?"active":""}getLineSegmentClass(t){const e=t+1;return this.completedSteps.has(e)?"completed":this.currentStep===e?"active":""}renderStepIndicators(t){return this.currentStep===0||this.currentStep===4?d`
|
|
1994
|
+
<div class="step-indicators">
|
|
1995
|
+
<div class="line-row">
|
|
1996
|
+
${this.steps.map(()=>d`
|
|
1997
|
+
<div class="line-segment ${this.currentStep===4?"completed":""}"></div>
|
|
1998
|
+
`)}
|
|
1999
|
+
</div>
|
|
2000
|
+
<div class="steps-row" role="list" aria-label=${t.steps.progressLabel}>
|
|
2001
|
+
${this.steps.map(e=>d`
|
|
2002
|
+
<div class="step-wrapper" role="listitem">
|
|
2003
|
+
<div class="step-indicator ${this.currentStep===4?"completed":""}">
|
|
2004
|
+
<div class="step-icon">
|
|
2005
|
+
${this.currentStep===4?h.circleCheckBig():h.circleDashed()}
|
|
2006
|
+
</div>
|
|
2007
|
+
<span class="step-label">${e.label}</span>
|
|
2008
|
+
</div>
|
|
2009
|
+
</div>
|
|
2010
|
+
`)}
|
|
2011
|
+
</div>
|
|
2012
|
+
</div>
|
|
2013
|
+
`:d`
|
|
2014
|
+
<div class="step-indicators">
|
|
2015
|
+
<div class="line-row">
|
|
2016
|
+
${this.steps.map((e,r)=>d`
|
|
2017
|
+
<div class="line-segment ${this.getLineSegmentClass(r)}"></div>
|
|
2018
|
+
`)}
|
|
2019
|
+
</div>
|
|
2020
|
+
<div class="steps-row" role="list" aria-label=${t.steps.progressLabel}>
|
|
2021
|
+
${this.steps.map(e=>d`
|
|
2022
|
+
<div class="step-wrapper" role="listitem">
|
|
2023
|
+
<div class="step-indicator ${this.getStepClass(e.id)}" aria-current=${this.currentStep===e.id?"step":v}>
|
|
2024
|
+
<div class="step-icon">
|
|
2025
|
+
${this.completedSteps.has(e.id)?h.circleCheckBig():this.currentStep===e.id?h.circleDotDashed():h.circleDashed()}
|
|
2026
|
+
</div>
|
|
2027
|
+
<span class="step-label">${e.label}</span>
|
|
2028
|
+
</div>
|
|
2029
|
+
</div>
|
|
2030
|
+
`)}
|
|
2031
|
+
</div>
|
|
2032
|
+
</div>
|
|
2033
|
+
`}render(){var e,r,a,i;const t=this.i18n.getTranslations();return d`
|
|
2034
|
+
${this.visible?d`
|
|
2035
|
+
<div class="overlay">
|
|
2036
|
+
<div class="wizard-container" role="dialog" aria-modal="true" aria-labelledby="wizard-title">
|
|
2037
|
+
<h1 class="wizard-title" id="wizard-title">${t.wizard.title}</h1>
|
|
2038
|
+
${this.renderErrorBanner(t)}
|
|
2039
|
+
${this.renderStepIndicators(t)}
|
|
2040
|
+
|
|
2041
|
+
${this.currentStep===0?d`
|
|
2042
|
+
<wizard-step-welcome
|
|
2043
|
+
.userName=${this.userName}
|
|
2044
|
+
.translations=${t}
|
|
2045
|
+
@start-setup=${this.handleStartSetup}
|
|
2046
|
+
@save-and-close=${this.handleSaveAndClose}
|
|
2047
|
+
></wizard-step-welcome>
|
|
2048
|
+
`:""}
|
|
2049
|
+
|
|
2050
|
+
${this.currentStep===1?d`
|
|
2051
|
+
<wizard-step1-company
|
|
2052
|
+
.translations=${t}
|
|
2053
|
+
.locale=${this.locale}
|
|
2054
|
+
.customerInfo=${this.customerInfo}
|
|
2055
|
+
@next=${this.handleNext}
|
|
2056
|
+
@save-and-close=${this.handleSaveAndClose}
|
|
2057
|
+
@edit-customer=${this.handleEditCustomer}
|
|
2058
|
+
></wizard-step1-company>
|
|
2059
|
+
`:""}
|
|
2060
|
+
|
|
2061
|
+
${this.currentStep===2?d`
|
|
2062
|
+
<wizard-step2-administrators
|
|
2063
|
+
.translations=${t}
|
|
2064
|
+
.httpService=${this.httpService}
|
|
2065
|
+
.customerId=${this.customerId}
|
|
2066
|
+
.locale=${this.locale}
|
|
2067
|
+
.currentUser=${this.currentUserProfile}
|
|
2068
|
+
@next=${this.handleNext}
|
|
2069
|
+
@save-and-close=${this.handleSaveAndClose}
|
|
2070
|
+
></wizard-step2-administrators>
|
|
2071
|
+
`:""}
|
|
2072
|
+
|
|
2073
|
+
${this.currentStep===3?d`
|
|
2074
|
+
<wizard-step3-partner-access
|
|
2075
|
+
.translations=${t}
|
|
2076
|
+
.httpService=${this.httpService}
|
|
2077
|
+
.customerId=${this.customerId}
|
|
2078
|
+
.partnerId=${((r=(e=this.customerInfo)==null?void 0:e.partner)==null?void 0:r.partnerId)??""}
|
|
2079
|
+
.partnerName=${((i=(a=this.customerInfo)==null?void 0:a.partner)==null?void 0:i.name)??""}
|
|
2080
|
+
@complete=${this.handleComplete}
|
|
2081
|
+
@save-and-close=${this.handleSaveAndClose}
|
|
2082
|
+
></wizard-step3-partner-access>
|
|
2083
|
+
`:""}
|
|
2084
|
+
|
|
2085
|
+
${this.currentStep===4?d`
|
|
2086
|
+
<wizard-step-complete
|
|
2087
|
+
.translations=${t}
|
|
2088
|
+
@close=${this.handleClose}
|
|
2089
|
+
></wizard-step-complete>
|
|
2090
|
+
`:""}
|
|
2091
|
+
</div>
|
|
2092
|
+
</div>
|
|
2093
|
+
`:""}
|
|
2094
|
+
`}renderErrorBanner(t){if(!this.errorState)return d``;const e=t.errors[this.errorState.errorKey];return d`
|
|
2095
|
+
<div class="error-banner" role="alert">
|
|
2096
|
+
<div class="error-content">
|
|
2097
|
+
<div class="error-icon">
|
|
2098
|
+
${h.octagonAlert()}
|
|
2099
|
+
</div>
|
|
2100
|
+
<div class="error-text-container">
|
|
2101
|
+
<div class="error-title">${e.title}</div>
|
|
2102
|
+
<div class="error-message">${e.message}</div>
|
|
2103
|
+
</div>
|
|
2104
|
+
</div>
|
|
2105
|
+
<button type="button" class="error-dismiss" @click=${this.dismissError} aria-label=${t.common.dismissError}>
|
|
2106
|
+
${h.x()}
|
|
2107
|
+
</button>
|
|
2108
|
+
</div>
|
|
2109
|
+
`}};y.stepMap={welcome:0,company:1,administrators:2,"partner-access":3,complete:4};y.styles=[D,E`
|
|
2110
|
+
:host {
|
|
2111
|
+
display: block;
|
|
2112
|
+
font-family: var(--vsn-customer-onboarding-wizard-font-family);
|
|
2113
|
+
}
|
|
2114
|
+
|
|
2115
|
+
.overlay {
|
|
2116
|
+
position: fixed;
|
|
2117
|
+
inset: 0;
|
|
2118
|
+
background: var(--ga-color-surface-page);
|
|
2119
|
+
display: flex;
|
|
2120
|
+
align-items: center;
|
|
2121
|
+
justify-content: center;
|
|
2122
|
+
z-index: 1000;
|
|
2123
|
+
}
|
|
2124
|
+
|
|
2125
|
+
.wizard-container {
|
|
2126
|
+
background: var(--ga-color-white);
|
|
2127
|
+
width: 780px;
|
|
2128
|
+
min-height: 520px;
|
|
2129
|
+
padding: var(--ga-size-spacing-08) var(--ga-size-spacing-10);
|
|
2130
|
+
border-radius: var(--ga-radius);
|
|
2131
|
+
border: 1px solid var(--ga-color-cyan-80);
|
|
2132
|
+
}
|
|
2133
|
+
|
|
2134
|
+
h1.wizard-title {
|
|
2135
|
+
font-size: var(--ga-text-2xl-size);
|
|
2136
|
+
line-height: var(--ga-text-2xl-line-height);
|
|
2137
|
+
font-weight: 600;
|
|
2138
|
+
margin: 0 0 var(--ga-size-spacing-07);
|
|
2139
|
+
color: var(--ga-color-text-headings);
|
|
2140
|
+
text-align: left;
|
|
2141
|
+
letter-spacing: -0.27px
|
|
2142
|
+
}
|
|
2143
|
+
|
|
2144
|
+
/* Error Banner */
|
|
2145
|
+
.error-banner {
|
|
2146
|
+
display: flex;
|
|
2147
|
+
align-items: flex-start;
|
|
2148
|
+
justify-content: space-between;
|
|
2149
|
+
gap: var(--ga-size-spacing-04);
|
|
2150
|
+
padding: var(--ga-size-spacing-05);
|
|
2151
|
+
margin-bottom: var(--ga-size-spacing-06);
|
|
2152
|
+
background-color: #FEF2F2;
|
|
2153
|
+
border: 1px solid #FCA5A5;
|
|
2154
|
+
border-radius: var(--ga-radius);
|
|
2155
|
+
animation: slideDown 0.3s ease-out;
|
|
2156
|
+
}
|
|
2157
|
+
|
|
2158
|
+
@keyframes slideDown {
|
|
2159
|
+
from {
|
|
2160
|
+
opacity: 0;
|
|
2161
|
+
transform: translateY(-10px);
|
|
2162
|
+
}
|
|
2163
|
+
to {
|
|
2164
|
+
opacity: 1;
|
|
2165
|
+
transform: translateY(0);
|
|
2166
|
+
}
|
|
2167
|
+
}
|
|
2168
|
+
|
|
2169
|
+
.error-content {
|
|
2170
|
+
display: flex;
|
|
2171
|
+
align-items: flex-start;
|
|
2172
|
+
gap: var(--ga-size-spacing-04);
|
|
2173
|
+
flex: 1;
|
|
2174
|
+
}
|
|
2175
|
+
|
|
2176
|
+
.error-icon {
|
|
2177
|
+
width: 24px;
|
|
2178
|
+
height: 24px;
|
|
2179
|
+
color: var(--ga-color-error);
|
|
2180
|
+
flex-shrink: 0;
|
|
2181
|
+
}
|
|
2182
|
+
|
|
2183
|
+
.error-icon svg {
|
|
2184
|
+
width: 24px;
|
|
2185
|
+
height: 24px;
|
|
2186
|
+
}
|
|
2187
|
+
|
|
2188
|
+
.error-text-container {
|
|
2189
|
+
display: flex;
|
|
2190
|
+
flex-direction: column;
|
|
2191
|
+
gap: var(--ga-size-spacing-01);
|
|
2192
|
+
flex: 1;
|
|
2193
|
+
}
|
|
2194
|
+
|
|
2195
|
+
.error-title {
|
|
2196
|
+
font-size: var(--ga-text-sm-size);
|
|
2197
|
+
line-height: var(--ga-text-sm-line-height);
|
|
2198
|
+
color: var(--ga-color-cyan-90);
|
|
2199
|
+
font-weight: 600;
|
|
2200
|
+
margin: 0;
|
|
2201
|
+
}
|
|
2202
|
+
|
|
2203
|
+
.error-message {
|
|
2204
|
+
font-size: var(--ga-text-sm-size);
|
|
2205
|
+
line-height: var(--ga-text-sm-line-height);
|
|
2206
|
+
color: var(--ga-color-cyan-90);
|
|
2207
|
+
font-weight: 400;
|
|
2208
|
+
margin: 0;
|
|
2209
|
+
}
|
|
2210
|
+
|
|
2211
|
+
.error-dismiss {
|
|
2212
|
+
background: none;
|
|
2213
|
+
border: none;
|
|
2214
|
+
padding: 0;
|
|
2215
|
+
cursor: pointer;
|
|
2216
|
+
color: var(--ga-color-red-60);
|
|
2217
|
+
width: 24px;
|
|
2218
|
+
height: 24px;
|
|
2219
|
+
flex-shrink: 0;
|
|
2220
|
+
display: flex;
|
|
2221
|
+
align-items: center;
|
|
2222
|
+
justify-content: center;
|
|
2223
|
+
opacity: 0.7;
|
|
2224
|
+
transition: opacity 0.2s;
|
|
2225
|
+
}
|
|
2226
|
+
|
|
2227
|
+
.error-dismiss:hover {
|
|
2228
|
+
opacity: 1;
|
|
2229
|
+
}
|
|
2230
|
+
|
|
2231
|
+
.error-dismiss svg {
|
|
2232
|
+
width: 20px;
|
|
2233
|
+
height: 20px;
|
|
2234
|
+
}
|
|
2235
|
+
|
|
2236
|
+
/* Step Indicators */
|
|
2237
|
+
.step-indicators {
|
|
2238
|
+
display: flex;
|
|
2239
|
+
flex-direction: column;
|
|
2240
|
+
margin-bottom: var(--ga-size-spacing-10);
|
|
2241
|
+
}
|
|
2242
|
+
|
|
2243
|
+
.line-row {
|
|
2244
|
+
display: flex;
|
|
2245
|
+
gap: 0;
|
|
2246
|
+
margin-bottom: var(--ga-size-spacing-04);
|
|
2247
|
+
}
|
|
2248
|
+
|
|
2249
|
+
.line-segment {
|
|
2250
|
+
flex: 1;
|
|
2251
|
+
border-bottom: 2px solid var(--ga-color-neutral-30);
|
|
2252
|
+
margin: 0;
|
|
2253
|
+
padding: 0;
|
|
2254
|
+
}
|
|
2255
|
+
|
|
2256
|
+
.line-segment.completed {
|
|
2257
|
+
border-bottom-color: var(--ga-color-success);
|
|
2258
|
+
}
|
|
2259
|
+
|
|
2260
|
+
.line-segment.active {
|
|
2261
|
+
border-bottom-color: var(--ga-color-primary);
|
|
2262
|
+
border-bottom-width: 4px;
|
|
2263
|
+
margin-bottom: -2px;
|
|
2264
|
+
}
|
|
2265
|
+
|
|
2266
|
+
.steps-row {
|
|
2267
|
+
display: flex;
|
|
2268
|
+
gap: 0;
|
|
2269
|
+
}
|
|
2270
|
+
|
|
2271
|
+
.step-wrapper {
|
|
2272
|
+
flex: 1;
|
|
2273
|
+
display: flex;
|
|
2274
|
+
align-items: center;
|
|
2275
|
+
}
|
|
2276
|
+
|
|
2277
|
+
.step-indicator {
|
|
2278
|
+
display: flex;
|
|
2279
|
+
align-items: center;
|
|
2280
|
+
gap: var(--ga-size-spacing-03);
|
|
2281
|
+
}
|
|
2282
|
+
|
|
2283
|
+
.step-icon {
|
|
2284
|
+
width: 24px;
|
|
2285
|
+
height: 24px;
|
|
2286
|
+
border-radius: var(--ga-radius-round);
|
|
2287
|
+
background: transparent;
|
|
2288
|
+
display: flex;
|
|
2289
|
+
align-items: center;
|
|
2290
|
+
justify-content: center;
|
|
2291
|
+
flex-shrink: 0;
|
|
2292
|
+
color: var(--ga-color-primary);
|
|
2293
|
+
}
|
|
2294
|
+
|
|
2295
|
+
.step-indicator.active .step-icon {
|
|
2296
|
+
color: var(--ga-color-primary);
|
|
2297
|
+
}
|
|
2298
|
+
|
|
2299
|
+
.step-indicator.completed .step-icon {
|
|
2300
|
+
color: var(--ga-color-success);
|
|
2301
|
+
}
|
|
2302
|
+
|
|
2303
|
+
.step-label {
|
|
2304
|
+
font-size: var(--ga-text-md-size);
|
|
2305
|
+
font-weight: 500;
|
|
2306
|
+
color: var(--ga-color-primary);
|
|
2307
|
+
white-space: nowrap;
|
|
2308
|
+
letter-spacing: -0.1px
|
|
2309
|
+
}
|
|
2310
|
+
|
|
2311
|
+
.step-indicator.active .step-label {
|
|
2312
|
+
color: var(--ga-color-text-headings);
|
|
2313
|
+
font-weight: 500;
|
|
2314
|
+
}
|
|
2315
|
+
`];$([m({type:String})],y.prototype,"locale",2);$([m({type:String})],y.prototype,"baseUrl",2);$([m({type:String})],y.prototype,"adminUrl",2);$([m({type:String})],y.prototype,"taskId",2);$([m({type:String})],y.prototype,"customerId",2);$([m({type:String})],y.prototype,"step",2);$([u()],y.prototype,"userName",2);$([u()],y.prototype,"currentUserProfile",2);$([u()],y.prototype,"currentStep",2);$([u()],y.prototype,"completedSteps",2);$([u()],y.prototype,"errorState",2);$([u()],y.prototype,"customerInfo",2);$([u()],y.prototype,"visible",2);y=$([O("vsn-customer-onboarding-wizard")],y);
|