@visma-swno/customer-onboarding-wizard 1.0.12 → 1.0.13

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 CHANGED
@@ -51,6 +51,8 @@ import { CustomerOnboardingWizard } from '@visma-swno/customer-onboarding-wizard
51
51
  | `locale` | String | `'en-US'` | No | Locale for translations. Accepted values: `en-US`, `en-GB` (mapped to `en-US`), `da-DK`, `fi-FI`, `nb-NO`, `nl-NL`, `sv-SE` |
52
52
  | `step` | String | `'welcome'` | No | Initial step to navigate to: `welcome`, `company`, `administrators`, `partner-access`, `complete` |
53
53
  | `adminUrl` | String | `''` | No | Absolute `http`/`https` URL to redirect to after task cleanup when the user clicks "Go to Admin" on the completion step. Relative paths and other schemes are ignored and the wizard closes without redirecting. |
54
+ | `userName` | String | `''` | **Yes** | Display name of the logged-in user. Set via the `user-name` HTML attribute (e.g. `[attr.user-name]="userName"` in Angular). The component does not call any profile API. |
55
+ | `userEmail` | String | `''` | No | Email of the logged-in user. Set via the `user-email` HTML attribute (e.g. `[attr.user-email]="userEmail"` in Angular). When provided, highlights the current user's row in the Administrators step. |
54
56
 
55
57
  ## CSS Custom Properties
56
58
 
@@ -116,7 +118,7 @@ The component emits custom events for host application integration:
116
118
 
117
119
  ### `request-token`
118
120
 
119
- **Emitted**: Once during component initialization
121
+ **Emitted**: Once after first render (after host property bindings are applied)
120
122
 
121
123
  **Purpose**: Request OAuth2 access token from host application
122
124
 
@@ -8,8 +8,8 @@ export declare class CustomerOnboardingWizard extends LitElement {
8
8
  customerId: string;
9
9
  step: 'welcome' | 'company' | 'administrators' | 'partner-access' | 'complete';
10
10
  private static readonly stepMap;
11
- private userName;
12
- private currentUserProfile;
11
+ userName: string;
12
+ userEmail: string;
13
13
  private currentStep;
14
14
  private completedSteps;
15
15
  private errorState;
@@ -21,6 +21,7 @@ export declare class CustomerOnboardingWizard extends LitElement {
21
21
  private errorMessageListener;
22
22
  private get steps();
23
23
  connectedCallback(): void;
24
+ firstUpdated(): void;
24
25
  disconnectedCallback(): void;
25
26
  /**
26
27
  * Set up listener for error-message events from HttpService
@@ -45,12 +46,6 @@ export declare class CustomerOnboardingWizard extends LitElement {
45
46
  * @returns Promise that resolves with the authentication token
46
47
  */
47
48
  private requestAuthToken;
48
- /**
49
- * Load user profile from API and set userName
50
- * userName is populated from getUserProfile() API call
51
- * Falls back to default 'User' if request fails
52
- */
53
- private loadUserProfile;
54
49
  /**
55
50
  * Load customer data from API (details and subscriptions in parallel)
56
51
  * Falls back gracefully if customerId is missing or requests fail
@@ -1,6 +1,6 @@
1
1
  import { LitElement } from 'lit';
2
2
  import { Translations, SupportedLocale } from '../../core/i18n.service';
3
- import { HttpService, UserProfile } from '../../core/http.service';
3
+ import { HttpService } from '../../core/http.service';
4
4
  /**
5
5
  * Administrators Step Component
6
6
  * Manages administrator user accounts for the customer
@@ -10,7 +10,7 @@ export declare class WizardStep2Administrators extends LitElement {
10
10
  httpService: HttpService | null;
11
11
  customerId: string;
12
12
  locale: SupportedLocale;
13
- currentUser: UserProfile | null;
13
+ currentUserEmail: string;
14
14
  private existingAdmins;
15
15
  private isLoadingAdmins;
16
16
  private rows;
package/dist/index.js CHANGED
@@ -756,7 +756,7 @@ const N = S`:host{--ga-color-black:#000;--ga-color-blue-10:#edf4fe;--ga-color-in
756
756
  }
757
757
  }
758
758
  };
759
- class U {
759
+ class T {
760
760
  constructor() {
761
761
  this.currentLocale = "en-US";
762
762
  }
@@ -798,7 +798,7 @@ class D extends Error {
798
798
  super(`HTTP ${t}: ${a}`), this.status = t, this.name = "HttpError";
799
799
  }
800
800
  }
801
- class T {
801
+ class U {
802
802
  constructor(t, a = {}, i) {
803
803
  if (this.authToken = null, !t)
804
804
  throw new Error("[HttpService] baseUrl is required");
@@ -1101,7 +1101,7 @@ var _ = Object.defineProperty, W = Object.getOwnPropertyDescriptor, h = (e, t, a
1101
1101
  return i && r && _(t, a, r), r;
1102
1102
  };
1103
1103
  const C = ["NO", "SE", "DK", "FI", "NL"];
1104
- let m = class extends E {
1104
+ let u = class extends E {
1105
1105
  constructor() {
1106
1106
  super(...arguments), this.locale = "en-GB", this.customer = null, this.subscriptions = { content: [], totalNumberOfRecords: 0 }, 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;
1107
1107
  }
@@ -1518,7 +1518,7 @@ let m = class extends E {
1518
1518
  `;
1519
1519
  }
1520
1520
  };
1521
- m.styles = [
1521
+ u.styles = [
1522
1522
  N,
1523
1523
  j,
1524
1524
  P,
@@ -1526,63 +1526,63 @@ m.styles = [
1526
1526
  ];
1527
1527
  h([
1528
1528
  d({ type: Object })
1529
- ], m.prototype, "translations", 2);
1529
+ ], u.prototype, "translations", 2);
1530
1530
  h([
1531
1531
  d({ type: String })
1532
- ], m.prototype, "locale", 2);
1532
+ ], u.prototype, "locale", 2);
1533
1533
  h([
1534
1534
  d({ type: Object })
1535
- ], m.prototype, "customer", 2);
1535
+ ], u.prototype, "customer", 2);
1536
1536
  h([
1537
1537
  d({ type: Object })
1538
- ], m.prototype, "subscriptions", 2);
1538
+ ], u.prototype, "subscriptions", 2);
1539
1539
  h([
1540
1540
  l()
1541
- ], m.prototype, "editingContact", 2);
1541
+ ], u.prototype, "editingContact", 2);
1542
1542
  h([
1543
1543
  l()
1544
- ], m.prototype, "countryDropdownOpen", 2);
1544
+ ], u.prototype, "countryDropdownOpen", 2);
1545
1545
  h([
1546
1546
  l()
1547
- ], m.prototype, "fieldErrors", 2);
1547
+ ], u.prototype, "fieldErrors", 2);
1548
1548
  h([
1549
1549
  l()
1550
- ], m.prototype, "editName", 2);
1550
+ ], u.prototype, "editName", 2);
1551
1551
  h([
1552
1552
  l()
1553
- ], m.prototype, "editAddress1", 2);
1553
+ ], u.prototype, "editAddress1", 2);
1554
1554
  h([
1555
1555
  l()
1556
- ], m.prototype, "editAddress2", 2);
1556
+ ], u.prototype, "editAddress2", 2);
1557
1557
  h([
1558
1558
  l()
1559
- ], m.prototype, "editPostalCode", 2);
1559
+ ], u.prototype, "editPostalCode", 2);
1560
1560
  h([
1561
1561
  l()
1562
- ], m.prototype, "editCity", 2);
1562
+ ], u.prototype, "editCity", 2);
1563
1563
  h([
1564
1564
  l()
1565
- ], m.prototype, "editCountryCode", 2);
1565
+ ], u.prototype, "editCountryCode", 2);
1566
1566
  h([
1567
1567
  l()
1568
- ], m.prototype, "editWebUrl", 2);
1568
+ ], u.prototype, "editWebUrl", 2);
1569
1569
  h([
1570
1570
  l()
1571
- ], m.prototype, "editContactEmail", 2);
1571
+ ], u.prototype, "editContactEmail", 2);
1572
1572
  h([
1573
1573
  l()
1574
- ], m.prototype, "localCustomer", 2);
1575
- m = h([
1574
+ ], u.prototype, "localCustomer", 2);
1575
+ u = h([
1576
1576
  A("wizard-step1-company")
1577
- ], m);
1577
+ ], u);
1578
1578
  var K = Object.defineProperty, G = Object.getOwnPropertyDescriptor, x = (e, t, a, i) => {
1579
1579
  for (var r = i > 1 ? void 0 : i ? G(t, a) : t, o = e.length - 1, s; o >= 0; o--)
1580
1580
  (s = e[o]) && (r = (i ? s(t, a, r) : s(r)) || r);
1581
1581
  return i && r && K(t, a, r), r;
1582
1582
  };
1583
- let f = class extends E {
1583
+ let b = class extends E {
1584
1584
  constructor() {
1585
- 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 = /* @__PURE__ */ new Set(), this.isConfirming = !1, this.rowErrors = /* @__PURE__ */ new Map(), this._loadSequence = 0;
1585
+ super(...arguments), this.httpService = null, this.customerId = "", this.locale = "en-GB", this.currentUserEmail = "", this.existingAdmins = [], this.isLoadingAdmins = !1, this.rows = [], this.nextId = 1, this.lookingUpIds = /* @__PURE__ */ new Set(), this.isConfirming = !1, this.rowErrors = /* @__PURE__ */ new Map(), this._loadSequence = 0;
1586
1586
  }
1587
1587
  firstUpdated() {
1588
1588
  this.updateComplete.then(() => {
@@ -1591,11 +1591,11 @@ let f = class extends E {
1591
1591
  });
1592
1592
  }
1593
1593
  updated(e) {
1594
- e.has("httpService") || e.has("customerId") ? this.loadExistingAdmins() : e.has("currentUser") && this.existingAdmins.length > 0 && (this.existingAdmins = this.sortAdmins([...this.existingAdmins]));
1594
+ e.has("httpService") || e.has("customerId") ? this.loadExistingAdmins() : e.has("currentUserEmail") && this.existingAdmins.length > 0 && (this.existingAdmins = this.sortAdmins([...this.existingAdmins]));
1595
1595
  }
1596
1596
  sortAdmins(e) {
1597
1597
  var a;
1598
- const t = (a = this.currentUser) == null ? void 0 : a.email.toLowerCase();
1598
+ const t = (a = this.currentUserEmail) == null ? void 0 : a.toLowerCase();
1599
1599
  return t ? e.sort((i, r) => {
1600
1600
  const o = i.email.toLowerCase() === t, s = r.email.toLowerCase() === t;
1601
1601
  return o && s ? 0 : o ? -1 : s ? 1 : 0;
@@ -1771,8 +1771,7 @@ let f = class extends E {
1771
1771
  this.dispatchEvent(new CustomEvent("save-and-close", { bubbles: !0, composed: !0 }));
1772
1772
  }
1773
1773
  renderExistingAdminRow(e, t) {
1774
- var r;
1775
- const a = this.translations, i = ((r = this.currentUser) == null ? void 0 : r.email.toLowerCase()) === e.email.toLowerCase();
1774
+ const a = this.translations, i = !!this.currentUserEmail && this.currentUserEmail.toLowerCase() === e.email.toLowerCase();
1776
1775
  return n`
1777
1776
  <div class="admin-row admin-row--done">
1778
1777
  <span class="row-num">${t}</span>
@@ -2062,7 +2061,7 @@ let f = class extends E {
2062
2061
  `;
2063
2062
  }
2064
2063
  };
2065
- f.styles = [
2064
+ b.styles = [
2066
2065
  N,
2067
2066
  j,
2068
2067
  P,
@@ -2070,43 +2069,43 @@ f.styles = [
2070
2069
  ];
2071
2070
  x([
2072
2071
  d({ type: Object })
2073
- ], f.prototype, "translations", 2);
2072
+ ], b.prototype, "translations", 2);
2074
2073
  x([
2075
2074
  d({ type: Object })
2076
- ], f.prototype, "httpService", 2);
2075
+ ], b.prototype, "httpService", 2);
2077
2076
  x([
2078
2077
  d({ type: String })
2079
- ], f.prototype, "customerId", 2);
2078
+ ], b.prototype, "customerId", 2);
2080
2079
  x([
2081
2080
  d({ type: String })
2082
- ], f.prototype, "locale", 2);
2081
+ ], b.prototype, "locale", 2);
2083
2082
  x([
2084
- d({ type: Object })
2085
- ], f.prototype, "currentUser", 2);
2083
+ d({ type: String })
2084
+ ], b.prototype, "currentUserEmail", 2);
2086
2085
  x([
2087
2086
  l()
2088
- ], f.prototype, "existingAdmins", 2);
2087
+ ], b.prototype, "existingAdmins", 2);
2089
2088
  x([
2090
2089
  l()
2091
- ], f.prototype, "isLoadingAdmins", 2);
2090
+ ], b.prototype, "isLoadingAdmins", 2);
2092
2091
  x([
2093
2092
  l()
2094
- ], f.prototype, "rows", 2);
2093
+ ], b.prototype, "rows", 2);
2095
2094
  x([
2096
2095
  l()
2097
- ], f.prototype, "nextId", 2);
2096
+ ], b.prototype, "nextId", 2);
2098
2097
  x([
2099
2098
  l()
2100
- ], f.prototype, "lookingUpIds", 2);
2099
+ ], b.prototype, "lookingUpIds", 2);
2101
2100
  x([
2102
2101
  l()
2103
- ], f.prototype, "isConfirming", 2);
2102
+ ], b.prototype, "isConfirming", 2);
2104
2103
  x([
2105
2104
  l()
2106
- ], f.prototype, "rowErrors", 2);
2107
- f = x([
2105
+ ], b.prototype, "rowErrors", 2);
2106
+ b = x([
2108
2107
  A("wizard-step2-administrators")
2109
- ], f);
2108
+ ], b);
2110
2109
  var Y = Object.defineProperty, H = Object.getOwnPropertyDescriptor, $ = (e, t, a, i) => {
2111
2110
  for (var r = i > 1 ? void 0 : i ? H(t, a) : t, o = e.length - 1, s; o >= 0; o--)
2112
2111
  (s = e[o]) && (r = (i ? s(t, a, r) : s(r)) || r);
@@ -2338,14 +2337,14 @@ F([
2338
2337
  B = F([
2339
2338
  A("wizard-step-complete")
2340
2339
  ], B);
2341
- var Q = Object.defineProperty, X = Object.getOwnPropertyDescriptor, b = (e, t, a, i) => {
2340
+ var Q = Object.defineProperty, X = Object.getOwnPropertyDescriptor, f = (e, t, a, i) => {
2342
2341
  for (var r = i > 1 ? void 0 : i ? X(t, a) : t, o = e.length - 1, s; o >= 0; o--)
2343
2342
  (s = e[o]) && (r = (i ? s(t, a, r) : s(r)) || r);
2344
2343
  return i && r && Q(t, a, r), r;
2345
2344
  };
2346
- let u = class extends E {
2345
+ let m = class extends E {
2347
2346
  constructor() {
2348
- super(...arguments), this.locale = "en-US", this.baseUrl = "", this.adminUrl = "", this.taskId = "", this.customerId = "", this.step = "welcome", this.userName = "User", this.currentUserProfile = null, this.currentStep = 0, this.completedSteps = /* @__PURE__ */ new Set(), this.errorState = null, this.customer = null, this.customerSubscriptions = { content: [], totalNumberOfRecords: 0 }, this.visible = !0, this.i18n = new U(), this.errorMessageListener = null;
2347
+ super(...arguments), this.locale = "en-US", this.baseUrl = "", this.adminUrl = "", this.taskId = "", this.customerId = "", this.step = "welcome", this.userName = "User", this.userEmail = "", this.currentStep = 0, this.completedSteps = /* @__PURE__ */ new Set(), this.errorState = null, this.customer = null, this.customerSubscriptions = { content: [], totalNumberOfRecords: 0 }, this.visible = !0, this.i18n = new T(), this.errorMessageListener = null;
2349
2348
  }
2350
2349
  get steps() {
2351
2350
  const e = this.i18n.getTranslations();
@@ -2356,7 +2355,10 @@ let u = class extends E {
2356
2355
  ];
2357
2356
  }
2358
2357
  connectedCallback() {
2359
- super.connectedCallback(), this.currentStep = u.stepMap[this.step] ?? 0, this.httpService = new T(this.baseUrl, {}, this), this.i18n.setLocale(this.locale), this.initializeWithAuth(), this.setupErrorMessageListener();
2358
+ super.connectedCallback(), this.currentStep = m.stepMap[this.step] ?? 0, this.i18n.setLocale(this.locale), this.setupErrorMessageListener();
2359
+ }
2360
+ firstUpdated() {
2361
+ this.httpService = new U(this.baseUrl, {}, this), this.initializeWithAuth();
2360
2362
  }
2361
2363
  disconnectedCallback() {
2362
2364
  super.disconnectedCallback(), this.removeErrorMessageListener();
@@ -2393,7 +2395,7 @@ let u = class extends E {
2393
2395
  console.warn("[CustomerOnboardingWizard] No authentication token provided by host application");
2394
2396
  return;
2395
2397
  }
2396
- this.httpService.setAuthToken(e), await this.loadUserProfile(), this.loadDataForStep(this.currentStep);
2398
+ this.httpService.setAuthToken(e), this.loadDataForStep(this.currentStep);
2397
2399
  } catch (e) {
2398
2400
  console.error("Failed to initialize component:", e);
2399
2401
  }
@@ -2420,19 +2422,6 @@ let u = class extends E {
2420
2422
  this.dispatchEvent(i);
2421
2423
  });
2422
2424
  }
2423
- /**
2424
- * Load user profile from API and set userName
2425
- * userName is populated from getUserProfile() API call
2426
- * Falls back to default 'User' if request fails
2427
- */
2428
- async loadUserProfile() {
2429
- try {
2430
- const e = await this.httpService.getUserProfile();
2431
- this.currentUserProfile = e, this.userName = `${e.firstName} ${e.lastName}`;
2432
- } catch (e) {
2433
- console.error("Failed to load user profile:", e);
2434
- }
2435
- }
2436
2425
  /**
2437
2426
  * Load customer data from API (details and subscriptions in parallel)
2438
2427
  * Falls back gracefully if customerId is missing or requests fail
@@ -2607,7 +2596,7 @@ let u = class extends E {
2607
2596
  .httpService=${this.httpService}
2608
2597
  .customerId=${this.customerId}
2609
2598
  .locale=${this.locale}
2610
- .currentUser=${this.currentUserProfile}
2599
+ .currentUserEmail=${this.userEmail}
2611
2600
  @next=${this.handleNext}
2612
2601
  @save-and-close=${this.handleSaveAndClose}
2613
2602
  ></wizard-step2-administrators>
@@ -2662,63 +2651,66 @@ let u = class extends E {
2662
2651
  `;
2663
2652
  }
2664
2653
  };
2665
- u.stepMap = {
2654
+ m.stepMap = {
2666
2655
  welcome: 0,
2667
2656
  company: 1,
2668
2657
  administrators: 2,
2669
2658
  "partner-access": 3,
2670
2659
  complete: 4
2671
2660
  };
2672
- u.styles = [
2661
+ m.styles = [
2673
2662
  N,
2674
- S`:host{display:block;font-family:var(--vsn-customer-onboarding-wizard-font-family);}.overlay{position:fixed;inset:var(--vsn-customer-onboarding-wizard-navbar-height,var(--vsn-co-navbar-height,0px)) 0 0 0;background:var(--vsn-customer-onboarding-wizard-overlay-bg,transparent);display:flex;align-items:center;justify-content:center;z-index:1000;}.wizard-container{background:var(--ga-color-white);width:780px;max-height:90vh;box-sizing:border-box;padding:var(--ga-size-spacing-05);border-radius:var(--ga-radius);border:1px solid var(--ga-color-cyan-80);display:flex;flex-direction:column;overflow:hidden;}.wizard-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;}h1.wizard-title{font-size:var(--ga-text-xl-size);line-height:var(--ga-text-xl-line-height);font-weight:var(--ga-font-weight-semibold);margin:0;padding-bottom:var(--ga-size-spacing-06);color:var(--ga-color-text-headings);text-align:left;letter-spacing:var(--ga-text-xl-tracking);}.error-banner{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--ga-size-spacing-04);padding:var(--ga-size-spacing-05);margin-bottom:var(--ga-size-spacing-06);background-color:#FEF2F2;border:1px solid #FCA5A5;border-radius:var(--ga-radius);animation:slideDown 0.3s ease-out;}@keyframes slideDown{from{opacity:0;transform:translateY(-10px);}to{opacity:1;transform:translateY(0);}}.error-content{display:flex;align-items:flex-start;gap:var(--ga-size-spacing-04);flex:1;}.error-icon{width:24px;height:24px;color:var(--ga-color-error);flex-shrink:0;}.error-icon svg{width:24px;height:24px;}.error-text-container{display:flex;flex-direction:column;gap:var(--ga-size-spacing-01);flex:1;}.error-title{font-size:var(--ga-text-sm-size);line-height:var(--ga-text-sm-line-height);color:var(--ga-color-cyan-90);font-weight:600;margin:0;}.error-message{font-size:var(--ga-text-sm-size);line-height:var(--ga-text-sm-line-height);color:var(--ga-color-cyan-90);font-weight:400;margin:0;}.error-dismiss{background:none;border:none;padding:0;cursor:pointer;color:var(--ga-color-red-60);width:24px;height:24px;flex-shrink:0;display:flex;align-items:center;justify-content:center;opacity:0.7;transition:opacity 0.2s;}.error-dismiss:hover{opacity:1;}.error-dismiss:focus-visible{outline:var(--ga-size-border-width-md) solid var(--ga-color-border-focus);outline-offset:var(--ga-size-border-width-md);border-radius:var(--ga-radius);}.error-dismiss svg{width:20px;height:20px;}.step-indicators{display:flex;height:82px;align-items:flex-end;}.step-wrapper{flex:1;display:flex;align-items:flex-start;height:100%;box-sizing:border-box;padding:var(--ga-size-spacing-03) var(--ga-size-spacing-02) var(--ga-size-spacing-03) 0;border-top:var(--ga-size-border-width-md) solid var(--ga-color-surface-disabled);}.step-wrapper.active{border-top-width:var(--ga-size-border-width-lg);border-top-color:var(--ga-color-primary);}.step-wrapper.completed{border-top-color:var(--ga-color-success);}.step-indicator{display:flex;align-items:center;gap:var(--ga-size-spacing-02);padding-left:var(--ga-size-spacing-03);}.step-icon{width:24px;height:24px;border-radius:var(--ga-radius-round);background:transparent;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--ga-color-primary);}.step-indicator.active .step-icon{color:var(--ga-color-primary);}.step-indicator.completed .step-icon{color:var(--ga-color-success);}.step-label{font-size:var(--ga-text-md-size);font-weight:500;color:var(--ga-color-primary);white-space:nowrap;letter-spacing:-0.1px}.step-indicator.active .step-label{color:var(--ga-color-text-headings);font-weight:500;}`
2663
+ S`:host{display:block;font-family:var(--vsn-customer-onboarding-wizard-font-family);}.overlay{position:fixed;inset:var(--vsn-customer-onboarding-wizard-navbar-height,var(--vsn-co-navbar-height,0px)) 0 0 0;background:var(--vsn-customer-onboarding-wizard-overlay-bg,var(--ga-color-miscellaneous-overlay));display:flex;align-items:center;justify-content:center;z-index:1000;}.wizard-container{background:var(--ga-color-white);width:780px;max-height:90vh;box-sizing:border-box;padding:var(--ga-size-spacing-05);border-radius:var(--ga-radius);border:1px solid var(--ga-color-cyan-80);display:flex;flex-direction:column;overflow:hidden;}.wizard-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden;}h1.wizard-title{font-size:var(--ga-text-xl-size);line-height:var(--ga-text-xl-line-height);font-weight:var(--ga-font-weight-semibold);margin:0;padding-bottom:var(--ga-size-spacing-06);color:var(--ga-color-text-headings);text-align:left;letter-spacing:var(--ga-text-xl-tracking);}.error-banner{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--ga-size-spacing-04);padding:var(--ga-size-spacing-05);margin-bottom:var(--ga-size-spacing-06);background-color:#FEF2F2;border:1px solid #FCA5A5;border-radius:var(--ga-radius);animation:slideDown 0.3s ease-out;}@keyframes slideDown{from{opacity:0;transform:translateY(-10px);}to{opacity:1;transform:translateY(0);}}.error-content{display:flex;align-items:flex-start;gap:var(--ga-size-spacing-04);flex:1;}.error-icon{width:24px;height:24px;color:var(--ga-color-error);flex-shrink:0;}.error-icon svg{width:24px;height:24px;}.error-text-container{display:flex;flex-direction:column;gap:var(--ga-size-spacing-01);flex:1;}.error-title{font-size:var(--ga-text-sm-size);line-height:var(--ga-text-sm-line-height);color:var(--ga-color-cyan-90);font-weight:600;margin:0;}.error-message{font-size:var(--ga-text-sm-size);line-height:var(--ga-text-sm-line-height);color:var(--ga-color-cyan-90);font-weight:400;margin:0;}.error-dismiss{background:none;border:none;padding:0;cursor:pointer;color:var(--ga-color-red-60);width:24px;height:24px;flex-shrink:0;display:flex;align-items:center;justify-content:center;opacity:0.7;transition:opacity 0.2s;}.error-dismiss:hover{opacity:1;}.error-dismiss:focus-visible{outline:var(--ga-size-border-width-md) solid var(--ga-color-border-focus);outline-offset:var(--ga-size-border-width-md);border-radius:var(--ga-radius);}.error-dismiss svg{width:20px;height:20px;}.step-indicators{display:flex;height:82px;align-items:flex-end;}.step-wrapper{flex:1;display:flex;align-items:flex-start;height:100%;box-sizing:border-box;padding:var(--ga-size-spacing-03) var(--ga-size-spacing-02) var(--ga-size-spacing-03) 0;border-top:var(--ga-size-border-width-md) solid var(--ga-color-surface-disabled);}.step-wrapper.active{border-top-width:var(--ga-size-border-width-lg);border-top-color:var(--ga-color-primary);}.step-wrapper.completed{border-top-color:var(--ga-color-success);}.step-indicator{display:flex;align-items:center;gap:var(--ga-size-spacing-02);padding-left:var(--ga-size-spacing-03);}.step-icon{width:24px;height:24px;border-radius:var(--ga-radius-round);background:transparent;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--ga-color-primary);}.step-indicator.active .step-icon{color:var(--ga-color-primary);}.step-indicator.completed .step-icon{color:var(--ga-color-success);}.step-label{font-size:var(--ga-text-md-size);font-weight:500;color:var(--ga-color-primary);white-space:nowrap;letter-spacing:-0.1px}.step-indicator.active .step-label{color:var(--ga-color-text-headings);font-weight:500;}`
2675
2664
  ];
2676
- b([
2665
+ f([
2677
2666
  d({ type: String })
2678
- ], u.prototype, "locale", 2);
2679
- b([
2667
+ ], m.prototype, "locale", 2);
2668
+ f([
2680
2669
  d({ type: String })
2681
- ], u.prototype, "baseUrl", 2);
2682
- b([
2670
+ ], m.prototype, "baseUrl", 2);
2671
+ f([
2683
2672
  d({ type: String })
2684
- ], u.prototype, "adminUrl", 2);
2685
- b([
2673
+ ], m.prototype, "adminUrl", 2);
2674
+ f([
2686
2675
  d({ type: String })
2687
- ], u.prototype, "taskId", 2);
2688
- b([
2676
+ ], m.prototype, "taskId", 2);
2677
+ f([
2689
2678
  d({ type: String })
2690
- ], u.prototype, "customerId", 2);
2691
- b([
2679
+ ], m.prototype, "customerId", 2);
2680
+ f([
2692
2681
  d({ type: String })
2693
- ], u.prototype, "step", 2);
2694
- b([
2695
- l()
2696
- ], u.prototype, "userName", 2);
2697
- b([
2682
+ ], m.prototype, "step", 2);
2683
+ f([
2684
+ d({ attribute: "user-name" })
2685
+ ], m.prototype, "userName", 2);
2686
+ f([
2687
+ d({ attribute: "user-email" })
2688
+ ], m.prototype, "userEmail", 2);
2689
+ f([
2698
2690
  l()
2699
- ], u.prototype, "currentUserProfile", 2);
2700
- b([
2691
+ ], m.prototype, "currentStep", 2);
2692
+ f([
2701
2693
  l()
2702
- ], u.prototype, "currentStep", 2);
2703
- b([
2694
+ ], m.prototype, "completedSteps", 2);
2695
+ f([
2704
2696
  l()
2705
- ], u.prototype, "completedSteps", 2);
2706
- b([
2697
+ ], m.prototype, "errorState", 2);
2698
+ f([
2707
2699
  l()
2708
- ], u.prototype, "errorState", 2);
2709
- b([
2700
+ ], m.prototype, "customer", 2);
2701
+ f([
2710
2702
  l()
2711
- ], u.prototype, "customer", 2);
2712
- b([
2703
+ ], m.prototype, "customerSubscriptions", 2);
2704
+ f([
2713
2705
  l()
2714
- ], u.prototype, "customerSubscriptions", 2);
2715
- b([
2706
+ ], m.prototype, "visible", 2);
2707
+ f([
2716
2708
  l()
2717
- ], u.prototype, "visible", 2);
2718
- u = b([
2709
+ ], m.prototype, "httpService", 2);
2710
+ m = f([
2719
2711
  A("vsn-customer-onboarding-wizard")
2720
- ], u);
2712
+ ], m);
2721
2713
  export {
2722
- u as CustomerOnboardingWizard,
2723
- T as HttpService
2714
+ m as CustomerOnboardingWizard,
2715
+ U as HttpService
2724
2716
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visma-swno/customer-onboarding-wizard",
3
- "version": "1.0.12",
3
+ "version": "1.0.13",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",