@serve.zone/catalog 2.11.0 → 2.11.2

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.
@@ -9401,33 +9401,23 @@ Set the 'coep' option to 'require-corp'.`),a?.includes("/")||a===".."||a===".")t
9401
9401
  </div>
9402
9402
  `:""}
9403
9403
  </div>
9404
- `}renderDomains(a){let r=Array.isArray(a)?a:[a];return w`${r.map(s=>w`<span class="domain-chip ${s.includes("*")?"glob":""}">${s}</span>`)}`}renderVpn(){let a=this.route?.vpn;return a?.enabled?w`
9404
+ `}renderDomains(a){let r=Array.isArray(a)?a:[a];return w`${r.map(s=>w`<span class="domain-chip ${s.includes("*")?"glob":""}">${s}</span>`)}`}renderVpn(){return this.route?.vpnOnly?w`
9405
9405
  <div class="section vpn">
9406
9406
  <div class="section-label">VPN Access</div>
9407
9407
  <div class="field-row">
9408
9408
  <span class="field-key">Mode</span>
9409
9409
  <span class="field-value">
9410
- <span class="vpn-badge ${a.mandatory!==!1?"mandatory":"optional"}">
9411
- ${a.mandatory!==!1?"VPN Only":"VPN + Public"}
9412
- </span>
9410
+ <span class="vpn-badge mandatory">VPN Only</span>
9413
9411
  </span>
9414
9412
  </div>
9415
- ${a.allowedServerDefinedClientTags?.length?w`
9416
- <div class="field-row">
9417
- <span class="field-key">Tags</span>
9418
- <span class="field-value">
9419
- ${a.allowedServerDefinedClientTags.map(r=>w`<span class="vpn-tag">${r}</span>`)}
9420
- </span>
9421
- </div>
9422
- `:""}
9423
9413
  </div>
9424
- `:w``}renderLinked(){let a=this.route?.metadata;if(!a)return w``;let r=!!a.securityProfileName,s=!!a.networkTargetName;return!r&&!s?w``:w`
9414
+ `:w``}renderLinked(){let a=this.route?.metadata;if(!a)return w``;let r=!!a.sourceProfileName,s=!!a.networkTargetName;return!r&&!s?w``:w`
9425
9415
  <div class="section linked">
9426
9416
  <div class="section-label">Linked</div>
9427
9417
  ${r?w`
9428
9418
  <div class="field-row">
9429
9419
  <span class="field-key">Profile</span>
9430
- <span class="field-value"><span class="linked-name">${a.securityProfileName}</span></span>
9420
+ <span class="field-value"><span class="linked-name">${a.sourceProfileName}</span></span>
9431
9421
  </div>
9432
9422
  `:""}
9433
9423
  ${s?w`
@@ -9437,10 +9427,10 @@ Set the 'coep' option to 'require-corp'.`),a?.includes("/")||a===".."||a===".")t
9437
9427
  </div>
9438
9428
  `:""}
9439
9429
  </div>
9440
- `}renderFeatures(){if(!this.route)return w``;let a=[],r=this.route.action,s=this.route.security,o=this.route.headers,n=this.route.metadata;return r.tls&&a.push(w`<span class="feature"><span class="feature-icon">&#x1f512;</span>TLS</span>`),r.websocket?.enabled&&a.push(w`<span class="feature"><span class="feature-icon">&#x2194;</span>WS</span>`),r.loadBalancing&&a.push(w`<span class="feature"><span class="feature-icon">&#x2696;</span>LB</span>`),s&&a.push(w`<span class="feature"><span class="feature-icon">&#x1f6e1;</span>Security</span>`),o&&a.push(w`<span class="feature"><span class="feature-icon">&#x2699;</span>Headers</span>`),this.route?.vpn?.enabled&&a.push(w`<span class="feature"><span class="feature-icon">&#x1f510;</span>VPN</span>`),(n?.securityProfileName||n?.networkTargetName)&&a.push(w`<span class="feature"><span class="feature-icon">&#x1f517;</span>Linked</span>`),a.length===0?w``:w`<div class="features-row">${a}</div>`}};Lo=Ke(O6t),Rse=new WeakMap,Ose=new WeakMap,Me(Lo,4,"route",R6t,zi,Rse),Me(Lo,4,"showActions",F6t,zi,Ose),zi=Me(Lo,0,"SzRouteCard",B6t,zi),i(zi,"SzRouteCard"),Ae(zi,"demo",i(()=>w`
9430
+ `}renderFeatures(){if(!this.route)return w``;let a=[],r=this.route.action,s=this.route.security,o=this.route.headers,n=this.route.metadata;return r.tls&&a.push(w`<span class="feature"><span class="feature-icon">&#x1f512;</span>TLS</span>`),r.websocket?.enabled&&a.push(w`<span class="feature"><span class="feature-icon">&#x2194;</span>WS</span>`),r.loadBalancing&&a.push(w`<span class="feature"><span class="feature-icon">&#x2696;</span>LB</span>`),s&&a.push(w`<span class="feature"><span class="feature-icon">&#x1f6e1;</span>Security</span>`),o&&a.push(w`<span class="feature"><span class="feature-icon">&#x2699;</span>Headers</span>`),this.route?.vpnOnly&&a.push(w`<span class="feature"><span class="feature-icon">&#x1f510;</span>VPN</span>`),(n?.sourceProfileName||n?.networkTargetName)&&a.push(w`<span class="feature"><span class="feature-icon">&#x1f517;</span>Linked</span>`),a.length===0?w``:w`<div class="features-row">${a}</div>`}};Lo=Ke(O6t),Rse=new WeakMap,Ose=new WeakMap,Me(Lo,4,"route",R6t,zi,Rse),Me(Lo,4,"showActions",F6t,zi,Ose),zi=Me(Lo,0,"SzRouteCard",B6t,zi),i(zi,"SzRouteCard"),Ae(zi,"demo",i(()=>w`
9441
9431
  <div style="padding: 24px; max-width: 520px;">
9442
9432
  <sz-route-card
9443
- .route=${{name:"API Gateway",description:"Main API gateway with TLS termination and load balancing",enabled:!0,priority:10,tags:["web","api","production"],match:{ports:[443,8443],domains:["api.example.com","*.api.serve.zone"],path:"/api/*",protocol:"http",clientIp:["10.0.0.0/8"]},action:{type:"forward",targets:[{host:["10.0.0.1","10.0.0.2"],port:8080}],tls:{mode:"terminate",certificate:"auto"},websocket:{enabled:!0},loadBalancing:{algorithm:"round-robin"},forwardingEngine:"nftables"},security:{ipAllowList:["10.0.0.0/8"],ipBlockList:["192.168.100.0/24"],rateLimit:{enabled:!0,maxRequests:100,window:60},maxConnections:1e3},vpn:{enabled:!0,mandatory:!0,allowedServerDefinedClientTags:["admin","devops"]},metadata:{securityProfileName:"STANDARD",networkTargetName:"LOSSLESS_INFRA"}}}
9433
+ .route=${{name:"API Gateway",description:"Main API gateway with TLS termination and load balancing",enabled:!0,priority:10,tags:["web","api","production"],match:{ports:[443,8443],domains:["api.example.com","*.api.serve.zone"],path:"/api/*",protocol:"http",clientIp:["10.0.0.0/8"]},action:{type:"forward",targets:[{host:["10.0.0.1","10.0.0.2"],port:8080}],tls:{mode:"terminate",certificate:"auto"},websocket:{enabled:!0},loadBalancing:{algorithm:"round-robin"},forwardingEngine:"nftables"},security:{ipAllowList:["10.0.0.0/8"],ipBlockList:["192.168.100.0/24"],rateLimit:{enabled:!0,maxRequests:100,window:60},maxConnections:1e3},vpnOnly:!0,metadata:{sourceProfileName:"STANDARD",networkTargetName:"LOSSLESS_INFRA"}}}
9444
9434
  ></sz-route-card>
9445
9435
  </div>
9446
9436
  `,"demo")),Ae(zi,"demoGroups",["Routes"]),Ae(zi,"styles",[l.defaultStyles,Z`
@@ -42162,4 +42152,4 @@ ibantools/jsnext/ibantools.js:
42162
42152
  * @preferred
42163
42153
  *)
42164
42154
  */
42165
- //# sourceMappingURL=bundle-1775164573346.js.map
42155
+ //# sourceMappingURL=bundle-1775356652345.js.map
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/catalog',
6
- version: '2.11.0',
6
+ version: '2.11.2',
7
7
  description: 'UI component catalog for serve.zone'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHNfd2ViLzAwX2NvbW1pdGluZm9fZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRztJQUN4QixJQUFJLEVBQUUscUJBQXFCO0lBQzNCLE9BQU8sRUFBRSxRQUFRO0lBQ2pCLFdBQVcsRUFBRSxxQ0FBcUM7Q0FDbkQsQ0FBQSJ9
@@ -53,17 +53,12 @@ export interface IRouteSecurity {
53
53
  };
54
54
  }
55
55
  export interface IRouteMetadata {
56
- securityProfileRef?: string;
56
+ sourceProfileRef?: string;
57
57
  networkTargetRef?: string;
58
- securityProfileName?: string;
58
+ sourceProfileName?: string;
59
59
  networkTargetName?: string;
60
60
  lastResolvedAt?: number;
61
61
  }
62
- export interface IRouteVpn {
63
- enabled: boolean;
64
- mandatory?: boolean;
65
- allowedServerDefinedClientTags?: string[];
66
- }
67
62
  export interface IRouteConfig {
68
63
  id?: string;
69
64
  match: IRouteMatch;
@@ -74,7 +69,8 @@ export interface IRouteConfig {
74
69
  response?: Record<string, string>;
75
70
  };
76
71
  metadata?: IRouteMetadata;
77
- vpn?: IRouteVpn;
72
+ /** When true, only VPN clients whose TargetProfile matches this route get access */
73
+ vpnOnly?: boolean;
78
74
  name?: string;
79
75
  description?: string;
80
76
  priority?: number;
@@ -114,13 +114,9 @@ let SzRouteCard = (() => {
114
114
  rateLimit: { enabled: true, maxRequests: 100, window: 60 },
115
115
  maxConnections: 1000,
116
116
  },
117
- vpn: {
118
- enabled: true,
119
- mandatory: true,
120
- allowedServerDefinedClientTags: ['admin', 'devops'],
121
- },
117
+ vpnOnly: true,
122
118
  metadata: {
123
- securityProfileName: 'STANDARD',
119
+ sourceProfileName: 'STANDARD',
124
120
  networkTargetName: 'LOSSLESS_INFRA',
125
121
  },
126
122
  }}
@@ -746,8 +742,7 @@ let SzRouteCard = (() => {
746
742
  return html `${list.map((d) => html `<span class="domain-chip ${d.includes('*') ? 'glob' : ''}">${d}</span>`)}`;
747
743
  }
748
744
  renderVpn() {
749
- const vpn = this.route?.vpn;
750
- if (!vpn?.enabled)
745
+ if (!this.route?.vpnOnly)
751
746
  return html ``;
752
747
  return html `
753
748
  <div class="section vpn">
@@ -755,19 +750,9 @@ let SzRouteCard = (() => {
755
750
  <div class="field-row">
756
751
  <span class="field-key">Mode</span>
757
752
  <span class="field-value">
758
- <span class="vpn-badge ${vpn.mandatory !== false ? 'mandatory' : 'optional'}">
759
- ${vpn.mandatory !== false ? 'VPN Only' : 'VPN + Public'}
760
- </span>
753
+ <span class="vpn-badge mandatory">VPN Only</span>
761
754
  </span>
762
755
  </div>
763
- ${vpn.allowedServerDefinedClientTags?.length ? html `
764
- <div class="field-row">
765
- <span class="field-key">Tags</span>
766
- <span class="field-value">
767
- ${vpn.allowedServerDefinedClientTags.map((tag) => html `<span class="vpn-tag">${tag}</span>`)}
768
- </span>
769
- </div>
770
- ` : ''}
771
756
  </div>
772
757
  `;
773
758
  }
@@ -775,7 +760,7 @@ let SzRouteCard = (() => {
775
760
  const meta = this.route?.metadata;
776
761
  if (!meta)
777
762
  return html ``;
778
- const hasProfile = !!meta.securityProfileName;
763
+ const hasProfile = !!meta.sourceProfileName;
779
764
  const hasTarget = !!meta.networkTargetName;
780
765
  if (!hasProfile && !hasTarget)
781
766
  return html ``;
@@ -786,7 +771,7 @@ let SzRouteCard = (() => {
786
771
  ? html `
787
772
  <div class="field-row">
788
773
  <span class="field-key">Profile</span>
789
- <span class="field-value"><span class="linked-name">${meta.securityProfileName}</span></span>
774
+ <span class="field-value"><span class="linked-name">${meta.sourceProfileName}</span></span>
790
775
  </div>
791
776
  `
792
777
  : ''}
@@ -824,10 +809,10 @@ let SzRouteCard = (() => {
824
809
  if (headers) {
825
810
  features.push(html `<span class="feature"><span class="feature-icon">&#x2699;</span>Headers</span>`);
826
811
  }
827
- if (this.route?.vpn?.enabled) {
812
+ if (this.route?.vpnOnly) {
828
813
  features.push(html `<span class="feature"><span class="feature-icon">&#x1f510;</span>VPN</span>`);
829
814
  }
830
- if (meta?.securityProfileName || meta?.networkTargetName) {
815
+ if (meta?.sourceProfileName || meta?.networkTargetName) {
831
816
  features.push(html `<span class="feature"><span class="feature-icon">&#x1f517;</span>Linked</span>`);
832
817
  }
833
818
  if (features.length === 0)
@@ -845,4 +830,4 @@ let SzRouteCard = (() => {
845
830
  return SzRouteCard = _classThis;
846
831
  })();
847
832
  export { SzRouteCard };
848
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3otcm91dGUtY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zei1yb3V0ZS1jYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLGFBQWEsRUFDYixJQUFJLEVBQ0osR0FBRyxFQUNILFVBQVUsRUFDVixRQUFRLEdBRVQsTUFBTSw2QkFBNkIsQ0FBQztBQThFckMsU0FBUyxXQUFXLENBQUMsS0FBaUI7SUFDcEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxLQUFLO2FBQ1QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDVCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLE9BQXVCO0lBQzVDLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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
833
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3otcm91dGUtY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3RzX3dlYi9lbGVtZW50cy9zei1yb3V0ZS1jYXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQ0wsV0FBVyxFQUNYLGFBQWEsRUFDYixJQUFJLEVBQ0osR0FBRyxFQUNILFVBQVUsRUFDVixRQUFRLEdBRVQsTUFBTSw2QkFBNkIsQ0FBQztBQXlFckMsU0FBUyxXQUFXLENBQUMsS0FBaUI7SUFDcEMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRO1FBQUUsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDcEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxLQUFLO2FBQ1QsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDVCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVE7Z0JBQUUsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQzthQUNELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoQixDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLE9BQXVCO0lBQzVDLE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1QixLQUFLLE1BQU0sQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@serve.zone/catalog",
3
- "version": "2.11.0",
3
+ "version": "2.11.2",
4
4
  "private": false,
5
5
  "description": "UI component catalog for serve.zone",
6
6
  "main": "dist_ts_web/index.js",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@serve.zone/catalog',
6
- version: '2.11.0',
6
+ version: '2.11.2',
7
7
  description: 'UI component catalog for serve.zone'
8
8
  }
@@ -56,19 +56,13 @@ export interface IRouteSecurity {
56
56
  }
57
57
 
58
58
  export interface IRouteMetadata {
59
- securityProfileRef?: string;
59
+ sourceProfileRef?: string;
60
60
  networkTargetRef?: string;
61
- securityProfileName?: string;
61
+ sourceProfileName?: string;
62
62
  networkTargetName?: string;
63
63
  lastResolvedAt?: number;
64
64
  }
65
65
 
66
- export interface IRouteVpn {
67
- enabled: boolean;
68
- mandatory?: boolean;
69
- allowedServerDefinedClientTags?: string[];
70
- }
71
-
72
66
  export interface IRouteConfig {
73
67
  id?: string;
74
68
  match: IRouteMatch;
@@ -76,7 +70,8 @@ export interface IRouteConfig {
76
70
  security?: IRouteSecurity;
77
71
  headers?: { request?: Record<string, string>; response?: Record<string, string> };
78
72
  metadata?: IRouteMetadata;
79
- vpn?: IRouteVpn;
73
+ /** When true, only VPN clients whose TargetProfile matches this route get access */
74
+ vpnOnly?: boolean;
80
75
  name?: string;
81
76
  description?: string;
82
77
  priority?: number;
@@ -143,13 +138,9 @@ export class SzRouteCard extends DeesElement {
143
138
  rateLimit: { enabled: true, maxRequests: 100, window: 60 },
144
139
  maxConnections: 1000,
145
140
  },
146
- vpn: {
147
- enabled: true,
148
- mandatory: true,
149
- allowedServerDefinedClientTags: ['admin', 'devops'],
150
- },
141
+ vpnOnly: true,
151
142
  metadata: {
152
- securityProfileName: 'STANDARD',
143
+ sourceProfileName: 'STANDARD',
153
144
  networkTargetName: 'LOSSLESS_INFRA',
154
145
  },
155
146
  } satisfies IRouteConfig}
@@ -787,8 +778,7 @@ export class SzRouteCard extends DeesElement {
787
778
  }
788
779
 
789
780
  private renderVpn(): TemplateResult {
790
- const vpn = this.route?.vpn;
791
- if (!vpn?.enabled) return html``;
781
+ if (!this.route?.vpnOnly) return html``;
792
782
 
793
783
  return html`
794
784
  <div class="section vpn">
@@ -796,21 +786,9 @@ export class SzRouteCard extends DeesElement {
796
786
  <div class="field-row">
797
787
  <span class="field-key">Mode</span>
798
788
  <span class="field-value">
799
- <span class="vpn-badge ${vpn.mandatory !== false ? 'mandatory' : 'optional'}">
800
- ${vpn.mandatory !== false ? 'VPN Only' : 'VPN + Public'}
801
- </span>
789
+ <span class="vpn-badge mandatory">VPN Only</span>
802
790
  </span>
803
791
  </div>
804
- ${vpn.allowedServerDefinedClientTags?.length ? html`
805
- <div class="field-row">
806
- <span class="field-key">Tags</span>
807
- <span class="field-value">
808
- ${vpn.allowedServerDefinedClientTags.map(
809
- (tag) => html`<span class="vpn-tag">${tag}</span>`
810
- )}
811
- </span>
812
- </div>
813
- ` : ''}
814
792
  </div>
815
793
  `;
816
794
  }
@@ -818,7 +796,7 @@ export class SzRouteCard extends DeesElement {
818
796
  private renderLinked(): TemplateResult {
819
797
  const meta = this.route?.metadata;
820
798
  if (!meta) return html``;
821
- const hasProfile = !!meta.securityProfileName;
799
+ const hasProfile = !!meta.sourceProfileName;
822
800
  const hasTarget = !!meta.networkTargetName;
823
801
  if (!hasProfile && !hasTarget) return html``;
824
802
 
@@ -829,7 +807,7 @@ export class SzRouteCard extends DeesElement {
829
807
  ? html`
830
808
  <div class="field-row">
831
809
  <span class="field-key">Profile</span>
832
- <span class="field-value"><span class="linked-name">${meta.securityProfileName}</span></span>
810
+ <span class="field-value"><span class="linked-name">${meta.sourceProfileName}</span></span>
833
811
  </div>
834
812
  `
835
813
  : ''}
@@ -868,10 +846,10 @@ export class SzRouteCard extends DeesElement {
868
846
  if (headers) {
869
847
  features.push(html`<span class="feature"><span class="feature-icon">&#x2699;</span>Headers</span>`);
870
848
  }
871
- if (this.route?.vpn?.enabled) {
849
+ if (this.route?.vpnOnly) {
872
850
  features.push(html`<span class="feature"><span class="feature-icon">&#x1f510;</span>VPN</span>`);
873
851
  }
874
- if (meta?.securityProfileName || meta?.networkTargetName) {
852
+ if (meta?.sourceProfileName || meta?.networkTargetName) {
875
853
  features.push(html`<span class="feature"><span class="feature-icon">&#x1f517;</span>Linked</span>`);
876
854
  }
877
855