@idp.global/catalog 7.1.3 → 8.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.
@@ -62,6 +62,9 @@ let IdpAdminSidebar = (() => {
62
62
  let _globalAdmin_decorators;
63
63
  let _globalAdmin_initializers = [];
64
64
  let _globalAdmin_extraInitializers = [];
65
+ let _superadmin_decorators;
66
+ let _superadmin_initializers = [];
67
+ let _superadmin_extraInitializers = [];
65
68
  let _sessionCount_decorators;
66
69
  let _sessionCount_initializers = [];
67
70
  let _sessionCount_extraInitializers = [];
@@ -81,6 +84,7 @@ let IdpAdminSidebar = (() => {
81
84
  _orgs_decorators = [property({ type: Array })];
82
85
  _selectedOrgId_decorators = [property({ type: String, attribute: 'selected-org-id' })];
83
86
  _globalAdmin_decorators = [property({ type: Boolean, attribute: 'global-admin', reflect: true })];
87
+ _superadmin_decorators = [property({ type: Boolean, reflect: true })];
84
88
  _sessionCount_decorators = [property({ type: Number, attribute: 'session-count' })];
85
89
  _orgMenuOpen_decorators = [state()];
86
90
  _userMenuOpen_decorators = [state()];
@@ -90,6 +94,7 @@ let IdpAdminSidebar = (() => {
90
94
  __esDecorate(this, null, _orgs_decorators, { kind: "accessor", name: "orgs", static: false, private: false, access: { has: obj => "orgs" in obj, get: obj => obj.orgs, set: (obj, value) => { obj.orgs = value; } }, metadata: _metadata }, _orgs_initializers, _orgs_extraInitializers);
91
95
  __esDecorate(this, null, _selectedOrgId_decorators, { kind: "accessor", name: "selectedOrgId", static: false, private: false, access: { has: obj => "selectedOrgId" in obj, get: obj => obj.selectedOrgId, set: (obj, value) => { obj.selectedOrgId = value; } }, metadata: _metadata }, _selectedOrgId_initializers, _selectedOrgId_extraInitializers);
92
96
  __esDecorate(this, null, _globalAdmin_decorators, { kind: "accessor", name: "globalAdmin", static: false, private: false, access: { has: obj => "globalAdmin" in obj, get: obj => obj.globalAdmin, set: (obj, value) => { obj.globalAdmin = value; } }, metadata: _metadata }, _globalAdmin_initializers, _globalAdmin_extraInitializers);
97
+ __esDecorate(this, null, _superadmin_decorators, { kind: "accessor", name: "superadmin", static: false, private: false, access: { has: obj => "superadmin" in obj, get: obj => obj.superadmin, set: (obj, value) => { obj.superadmin = value; } }, metadata: _metadata }, _superadmin_initializers, _superadmin_extraInitializers);
93
98
  __esDecorate(this, null, _sessionCount_decorators, { kind: "accessor", name: "sessionCount", static: false, private: false, access: { has: obj => "sessionCount" in obj, get: obj => obj.sessionCount, set: (obj, value) => { obj.sessionCount = value; } }, metadata: _metadata }, _sessionCount_initializers, _sessionCount_extraInitializers);
94
99
  __esDecorate(this, null, _orgMenuOpen_decorators, { kind: "accessor", name: "orgMenuOpen", static: false, private: false, access: { has: obj => "orgMenuOpen" in obj, get: obj => obj.orgMenuOpen, set: (obj, value) => { obj.orgMenuOpen = value; } }, metadata: _metadata }, _orgMenuOpen_initializers, _orgMenuOpen_extraInitializers);
95
100
  __esDecorate(this, null, _userMenuOpen_decorators, { kind: "accessor", name: "userMenuOpen", static: false, private: false, access: { has: obj => "userMenuOpen" in obj, get: obj => obj.userMenuOpen, set: (obj, value) => { obj.userMenuOpen = value; } }, metadata: _metadata }, _userMenuOpen_initializers, _userMenuOpen_extraInitializers);
@@ -486,7 +491,10 @@ let IdpAdminSidebar = (() => {
486
491
  #globalAdmin_accessor_storage = (__runInitializers(this, _selectedOrgId_extraInitializers), __runInitializers(this, _globalAdmin_initializers, false));
487
492
  get globalAdmin() { return this.#globalAdmin_accessor_storage; }
488
493
  set globalAdmin(value) { this.#globalAdmin_accessor_storage = value; }
489
- #sessionCount_accessor_storage = (__runInitializers(this, _globalAdmin_extraInitializers), __runInitializers(this, _sessionCount_initializers, 0));
494
+ #superadmin_accessor_storage = (__runInitializers(this, _globalAdmin_extraInitializers), __runInitializers(this, _superadmin_initializers, false));
495
+ get superadmin() { return this.#superadmin_accessor_storage; }
496
+ set superadmin(value) { this.#superadmin_accessor_storage = value; }
497
+ #sessionCount_accessor_storage = (__runInitializers(this, _superadmin_extraInitializers), __runInitializers(this, _sessionCount_initializers, 0));
490
498
  get sessionCount() { return this.#sessionCount_accessor_storage; }
491
499
  set sessionCount(value) { this.#sessionCount_accessor_storage = value; }
492
500
  #orgMenuOpen_accessor_storage = (__runInitializers(this, _sessionCount_extraInitializers), __runInitializers(this, _orgMenuOpen_initializers, false));
@@ -604,32 +612,36 @@ let IdpAdminSidebar = (() => {
604
612
  <div class="user-meta"><div class="user-name">${this.user?.name || 'Unknown User'}</div><div class="user-email">${this.user?.email || 'No email'}</div></div>
605
613
  ${this.globalAdmin ? html `<idp-badge variant="accent">Admin</idp-badge>` : html ``}
606
614
  </div>
607
- <button class="user-menu-item" @click=${() => this.setPage('profile')}>
608
- <idp-icon name="user" size="14"></idp-icon><span>Profile</span>
609
- </button>
610
- <button class="user-menu-item" @click=${() => this.setPage('security')}>
611
- <idp-icon name="shield" size="14"></idp-icon><span>Security</span>
612
- </button>
613
- <button class="user-menu-item" @click=${() => this.setPage('sessions')}>
614
- <idp-icon name="monitor" size="14"></idp-icon><span>Sessions &amp; Devices</span>
615
- ${this.sessionCount ? html `<span class="user-menu-hint">${this.sessionCount} active</span>` : html ``}
616
- </button>
617
- ${otherAccounts.length
618
- ? html `
619
- <div class="user-menu-divider"></div>
620
- <div class="user-menu-title">Switch account</div>
621
- ${otherAccounts.map((accountArg) => html `
622
- <button class="user-menu-item account" @click=${() => this.switchAccount(accountArg)}>
623
- <idp-avatar name=${accountArg.name || accountArg.email} size="22"></idp-avatar>
624
- <div class="user-meta"><div class="user-name">${accountArg.name}</div><div class="user-email">${accountArg.email}</div></div>
625
- <idp-icon name="lucide:ArrowLeftRight" size="12"></idp-icon>
626
- </button>
627
- `)}
628
- <button class="user-menu-item" @click=${() => this.requestAddAccount()}>
629
- <idp-icon name="plus" size="14"></idp-icon><span>Add account</span>
615
+ ${this.superadmin
616
+ ? html ``
617
+ : html `
618
+ <button class="user-menu-item" @click=${() => this.setPage('profile')}>
619
+ <idp-icon name="user" size="14"></idp-icon><span>Profile</span>
620
+ </button>
621
+ <button class="user-menu-item" @click=${() => this.setPage('security')}>
622
+ <idp-icon name="shield" size="14"></idp-icon><span>Security</span>
623
+ </button>
624
+ <button class="user-menu-item" @click=${() => this.setPage('sessions')}>
625
+ <idp-icon name="monitor" size="14"></idp-icon><span>Sessions &amp; Devices</span>
626
+ ${this.sessionCount ? html `<span class="user-menu-hint">${this.sessionCount} active</span>` : html ``}
630
627
  </button>
631
- `
632
- : html ``}
628
+ ${otherAccounts.length
629
+ ? html `
630
+ <div class="user-menu-divider"></div>
631
+ <div class="user-menu-title">Switch account</div>
632
+ ${otherAccounts.map((accountArg) => html `
633
+ <button class="user-menu-item account" @click=${() => this.switchAccount(accountArg)}>
634
+ <idp-avatar name=${accountArg.name || accountArg.email} size="22"></idp-avatar>
635
+ <div class="user-meta"><div class="user-name">${accountArg.name}</div><div class="user-email">${accountArg.email}</div></div>
636
+ <idp-icon name="lucide:ArrowLeftRight" size="12"></idp-icon>
637
+ </button>
638
+ `)}
639
+ <button class="user-menu-item" @click=${() => this.requestAddAccount()}>
640
+ <idp-icon name="plus" size="14"></idp-icon><span>Add account</span>
641
+ </button>
642
+ `
643
+ : html ``}
644
+ `}
633
645
  <div class="user-menu-divider"></div>
634
646
  <button class="user-menu-item destructive" @click=${() => this.requestLogout()}>
635
647
  <idp-icon name="logout" size="14"></idp-icon><span>Sign out</span>
@@ -652,35 +664,40 @@ let IdpAdminSidebar = (() => {
652
664
  </div>
653
665
  </div>
654
666
  <nav class="nav-wrap" aria-label="Console navigation">
655
- <div class="nav-section"><div class="nav-title">Workspace</div>${this.renderNavGroup(this.workspaceNav, this.page)}</div>
656
- <div class="nav-section"><div class="nav-title">My Account</div>${this.renderNavGroup(this.accountNav, this.page)}</div>
657
- <div class="nav-section">
658
- <div class="nav-title">Organisation</div>
659
- <div class="org-switch-wrap">
660
- <button class="org-switch ${this.orgMenuOpen ? 'open' : ''}" aria-haspopup="menu" aria-expanded=${this.orgMenuOpen} @click=${() => { this.orgMenuOpen = !this.orgMenuOpen; }}>
661
- <span class="org-avatar">${currentOrg.name.slice(0, 2).toUpperCase()}</span>
662
- <span class="org-name">${currentOrg.name}</span>
663
- <idp-icon name="chevron-down" size="10"></idp-icon>
664
- </button>
665
- ${this.orgMenuOpen ? html `
666
- <div class="org-menu">
667
- <div class="org-menu-title">Switch organisation</div>
668
- ${this.safeOrgs.map((orgArg) => html `
669
- <button class="org-menu-item ${orgArg.id === this.selectedOrgId ? 'selected' : ''}" @click=${() => this.selectOrg(orgArg.id)}>
670
- <span class="org-avatar">${orgArg.name.slice(0, 2).toUpperCase()}</span>
671
- <span style="flex:1;min-width:0"><span class="org-menu-name">${orgArg.name}</span><span class="org-menu-role">${orgArg.myRole || 'member'}</span></span>
672
- ${orgArg.id === this.selectedOrgId ? html `<idp-icon name="check" size="11"></idp-icon>` : html ``}
667
+ ${this.superadmin
668
+ ? this.globalAdmin
669
+ ? html `<div class="nav-section"><div class="nav-title">Global Admin</div>${this.renderNavGroup(this.adminNav, this.page)}</div>`
670
+ : html ``
671
+ : html `
672
+ <div class="nav-section"><div class="nav-title">Workspace</div>${this.renderNavGroup(this.workspaceNav, this.page)}</div>
673
+ <div class="nav-section"><div class="nav-title">My Account</div>${this.renderNavGroup(this.accountNav, this.page)}</div>
674
+ <div class="nav-section">
675
+ <div class="nav-title">Organisation</div>
676
+ <div class="org-switch-wrap">
677
+ <button class="org-switch ${this.orgMenuOpen ? 'open' : ''}" aria-haspopup="menu" aria-expanded=${this.orgMenuOpen} @click=${() => { this.orgMenuOpen = !this.orgMenuOpen; }}>
678
+ <span class="org-avatar">${currentOrg.name.slice(0, 2).toUpperCase()}</span>
679
+ <span class="org-name">${currentOrg.name}</span>
680
+ <idp-icon name="chevron-down" size="10"></idp-icon>
673
681
  </button>
674
- `)}
675
- <div class="org-menu-divider"></div>
676
- <button class="org-create" @click=${() => this.requestOrgCreate()}><span class="org-create-icon"><idp-icon name="plus" size="9"></idp-icon></span>Create organisation</button>
682
+ ${this.orgMenuOpen ? html `
683
+ <div class="org-menu">
684
+ <div class="org-menu-title">Switch organisation</div>
685
+ ${this.safeOrgs.map((orgArg) => html `
686
+ <button class="org-menu-item ${orgArg.id === this.selectedOrgId ? 'selected' : ''}" @click=${() => this.selectOrg(orgArg.id)}>
687
+ <span class="org-avatar">${orgArg.name.slice(0, 2).toUpperCase()}</span>
688
+ <span style="flex:1;min-width:0"><span class="org-menu-name">${orgArg.name}</span><span class="org-menu-role">${orgArg.myRole || 'member'}</span></span>
689
+ ${orgArg.id === this.selectedOrgId ? html `<idp-icon name="check" size="11"></idp-icon>` : html ``}
690
+ </button>
691
+ `)}
692
+ <div class="org-menu-divider"></div>
693
+ <button class="org-create" @click=${() => this.requestOrgCreate()}><span class="org-create-icon"><idp-icon name="plus" size="9"></idp-icon></span>Create organisation</button>
694
+ </div>
695
+ ` : html ``}
696
+ </div>
697
+ ${this.renderNavGroup(this.orgNav, this.page)}
677
698
  </div>
678
- ` : html ``}
679
- </div>
680
- ${this.renderNavGroup(this.orgNav, this.page)}
681
- </div>
682
- <div class="nav-section"><div class="nav-title">Support</div>${this.renderNavGroup(this.supportNav, this.page)}</div>
683
- ${this.globalAdmin ? html `<div class="nav-section"><div class="nav-title">Global Admin</div>${this.renderNavGroup(this.adminNav, this.page)}</div>` : html ``}
699
+ <div class="nav-section"><div class="nav-title">Support</div>${this.renderNavGroup(this.supportNav, this.page)}</div>
700
+ `}
684
701
  </nav>
685
702
  <div class="user-footer">
686
703
  <button class="user-trigger ${this.userMenuOpen ? 'open' : ''}" aria-haspopup="menu" aria-expanded=${this.userMenuOpen} @click=${() => { this.userMenuOpen = !this.userMenuOpen; }}>
@@ -700,4 +717,4 @@ let IdpAdminSidebar = (() => {
700
717
  return IdpAdminSidebar = _classThis;
701
718
  })();
702
719
  export { IdpAdminSidebar };
703
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRwLWFkbWluLXNpZGViYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvaWRwLWFkbWluLXNpZGViYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBdUIsTUFBTSw2QkFBNkIsQ0FBQztBQUMxSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxlQUFlLENBQUM7QUFDdkIsT0FBTyxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLGlCQUFpQixDQUFDO0lBd0JaLGVBQWU7NEJBRDNCLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCQUFuQixTQUFRLFdBQVc7Ozs7Z0NBbVg3QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0NBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztvQ0FNMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO2dDQUd6QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7eUNBR3pCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUM7dUNBR3hELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7d0NBR3JFLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxN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
720
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWRwLWFkbWluLXNpZGViYXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi90c193ZWIvZWxlbWVudHMvaWRwLWFkbWluLXNpZGViYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEdBQUcsRUFBdUIsTUFBTSw2QkFBNkIsQ0FBQztBQUMxSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxlQUFlLENBQUM7QUFDdkIsT0FBTyxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLGlCQUFpQixDQUFDO0lBd0JaLGVBQWU7NEJBRDNCLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQzs7OztzQkFDRSxXQUFXOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytCQUFuQixTQUFRLFdBQVc7Ozs7Z0NBbVg3QyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0NBRzFCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQztvQ0FNMUIsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO2dDQUd6QixRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUM7eUNBR3pCLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLENBQUM7dUNBR3hELFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7c0NBR3JFLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idp.global/catalog",
3
- "version": "7.1.3",
3
+ "version": "8.0.0",
4
4
  "private": false,
5
5
  "description": "Web component catalog for idp.global, based on the v5 Apple-system design language.",
6
6
  "exports": {
@@ -12,19 +12,19 @@
12
12
  "author": "Task Venture Capital GmbH",
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
- "@design.estate/dees-catalog": "^3.96.3",
16
- "@design.estate/dees-domtools": "^2.5.6",
17
- "@design.estate/dees-element": "^2.4.0",
18
- "@design.estate/dees-wcctools": "^3.9.2",
15
+ "@design.estate/dees-catalog": "^16.13.0",
16
+ "@design.estate/dees-domtools": "^3.0.1",
17
+ "@design.estate/dees-element": "^3.4.0",
19
18
  "@idp.global/interfaces": "^25.1.0",
20
19
  "lucide": "^1.24.0"
21
20
  },
22
21
  "devDependencies": {
23
- "@git.zone/tsbuild": "^4.4.2",
24
- "@git.zone/tsbundle": "^2.11.3",
25
- "@git.zone/tswatch": "^3.3.5",
22
+ "@design.estate/dees-wcctools": "^4.0.0",
23
+ "@git.zone/tsbuild": "^5.0.0",
24
+ "@git.zone/tsbundle": "^3.0.0",
25
+ "@git.zone/tswatch": "^4.0.2",
26
26
  "@push.rocks/projectinfo": "^5.1.0",
27
- "@types/node": "^26.1.1"
27
+ "@types/node": "^26.6.2"
28
28
  },
29
29
  "files": [
30
30
  "ts_web/**/*",
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@idp.global/catalog',
6
- version: '7.1.3',
6
+ version: '8.0.0',
7
7
  description: 'Web component catalog for idp.global, based on the v5 Apple-system design language.'
8
8
  }
@@ -245,8 +245,8 @@ export class IdpAdminOverview extends DeesElement {
245
245
  <div class="primary-grid">
246
246
  ${data?.chartSeries?.length ? html`
247
247
  <div class="card chart-card">
248
- <div class="card-head"><span class="card-title">${data.chartLabel || 'Approval activity'}</span></div>
249
248
  <dees-chart-area
249
+ .frameless=${true}
250
250
  .label=${data.chartLabel || 'Approval activity'}
251
251
  .yAxisFormatter=${(valueArg: number) => `${Math.round(valueArg)}`}
252
252
  .series=${data.chartSeries.map((seriesArg) => ({
@@ -48,6 +48,8 @@ export type TIdpAdminPage =
48
48
  | 'ga-orgs'
49
49
  | 'ga-apps';
50
50
 
51
+ const globalAdminPages = new Set<TIdpAdminPage>(['ga-users', 'ga-orgs', 'ga-apps']);
52
+
51
53
  export interface IIdpAdminUser {
52
54
  name: string;
53
55
  email: string;
@@ -1001,6 +1003,9 @@ export class IdpAdminShell extends DeesElement {
1001
1003
  @property({ type: Boolean, attribute: 'global-admin', reflect: true })
1002
1004
  public accessor globalAdmin = false;
1003
1005
 
1006
+ @property({ type: Boolean, reflect: true })
1007
+ public accessor superadmin = false;
1008
+
1004
1009
  @property({ type: Boolean, attribute: 'data-loading', reflect: true })
1005
1010
  public accessor dataLoading = false;
1006
1011
 
@@ -2973,6 +2978,13 @@ export class IdpAdminShell extends DeesElement {
2973
2978
  'ga-orgs': () => this.renderGAOrgs(),
2974
2979
  'ga-apps': () => this.renderGAApps(),
2975
2980
  };
2981
+ const isGlobalAdminPage = globalAdminPages.has(this.page);
2982
+ if (this.superadmin && !isGlobalAdminPage) {
2983
+ return renderers['ga-apps']();
2984
+ }
2985
+ if (!this.superadmin && isGlobalAdminPage) {
2986
+ return renderers.overview();
2987
+ }
2976
2988
  return (renderers[this.page] || renderers.overview)();
2977
2989
  }
2978
2990
 
@@ -3004,6 +3016,7 @@ export class IdpAdminShell extends DeesElement {
3004
3016
  .orgs=${this.orgs}
3005
3017
  .selectedOrgId=${this.selectedOrgId}
3006
3018
  .globalAdmin=${this.globalAdmin}
3019
+ .superadmin=${this.superadmin}
3007
3020
  .sessionCount=${this.sessions.length}
3008
3021
  ></idp-admin-sidebar>
3009
3022
  ${this.mobileNavOpen
@@ -3020,6 +3033,7 @@ export class IdpAdminShell extends DeesElement {
3020
3033
  .orgs=${this.orgs}
3021
3034
  .selectedOrgId=${this.selectedOrgId}
3022
3035
  .globalAdmin=${this.globalAdmin}
3036
+ .superadmin=${this.superadmin}
3023
3037
  .sessionCount=${this.sessions.length}
3024
3038
  ></idp-admin-sidebar>
3025
3039
  </div>
@@ -419,6 +419,9 @@ export class IdpAdminSidebar extends DeesElement {
419
419
  @property({ type: Boolean, attribute: 'global-admin', reflect: true })
420
420
  public accessor globalAdmin = false;
421
421
 
422
+ @property({ type: Boolean, reflect: true })
423
+ public accessor superadmin = false;
424
+
422
425
  @property({ type: Number, attribute: 'session-count' })
423
426
  public accessor sessionCount = 0;
424
427
 
@@ -554,34 +557,39 @@ export class IdpAdminSidebar extends DeesElement {
554
557
  <div class="user-meta"><div class="user-name">${this.user?.name || 'Unknown User'}</div><div class="user-email">${this.user?.email || 'No email'}</div></div>
555
558
  ${this.globalAdmin ? html`<idp-badge variant="accent">Admin</idp-badge>` : html``}
556
559
  </div>
557
- <button class="user-menu-item" @click=${() => this.setPage('profile')}>
558
- <idp-icon name="user" size="14"></idp-icon><span>Profile</span>
559
- </button>
560
- <button class="user-menu-item" @click=${() => this.setPage('security')}>
561
- <idp-icon name="shield" size="14"></idp-icon><span>Security</span>
562
- </button>
563
- <button class="user-menu-item" @click=${() => this.setPage('sessions')}>
564
- <idp-icon name="monitor" size="14"></idp-icon><span>Sessions &amp; Devices</span>
565
- ${this.sessionCount ? html`<span class="user-menu-hint">${this.sessionCount} active</span>` : html``}
566
- </button>
567
- ${otherAccounts.length
568
- ? html`
569
- <div class="user-menu-divider"></div>
570
- <div class="user-menu-title">Switch account</div>
571
- ${otherAccounts.map(
572
- (accountArg) => html`
573
- <button class="user-menu-item account" @click=${() => this.switchAccount(accountArg)}>
574
- <idp-avatar name=${accountArg.name || accountArg.email} size="22"></idp-avatar>
575
- <div class="user-meta"><div class="user-name">${accountArg.name}</div><div class="user-email">${accountArg.email}</div></div>
576
- <idp-icon name="lucide:ArrowLeftRight" size="12"></idp-icon>
577
- </button>
578
- `
579
- )}
580
- <button class="user-menu-item" @click=${() => this.requestAddAccount()}>
581
- <idp-icon name="plus" size="14"></idp-icon><span>Add account</span>
560
+ ${this.superadmin
561
+ ? html``
562
+ : html`
563
+ <button class="user-menu-item" @click=${() => this.setPage('profile')}>
564
+ <idp-icon name="user" size="14"></idp-icon><span>Profile</span>
565
+ </button>
566
+ <button class="user-menu-item" @click=${() => this.setPage('security')}>
567
+ <idp-icon name="shield" size="14"></idp-icon><span>Security</span>
582
568
  </button>
569
+ <button class="user-menu-item" @click=${() => this.setPage('sessions')}>
570
+ <idp-icon name="monitor" size="14"></idp-icon><span>Sessions &amp; Devices</span>
571
+ ${this.sessionCount ? html`<span class="user-menu-hint">${this.sessionCount} active</span>` : html``}
572
+ </button>
573
+ ${otherAccounts.length
574
+ ? html`
575
+ <div class="user-menu-divider"></div>
576
+ <div class="user-menu-title">Switch account</div>
577
+ ${otherAccounts.map(
578
+ (accountArg) => html`
579
+ <button class="user-menu-item account" @click=${() => this.switchAccount(accountArg)}>
580
+ <idp-avatar name=${accountArg.name || accountArg.email} size="22"></idp-avatar>
581
+ <div class="user-meta"><div class="user-name">${accountArg.name}</div><div class="user-email">${accountArg.email}</div></div>
582
+ <idp-icon name="lucide:ArrowLeftRight" size="12"></idp-icon>
583
+ </button>
584
+ `
585
+ )}
586
+ <button class="user-menu-item" @click=${() => this.requestAddAccount()}>
587
+ <idp-icon name="plus" size="14"></idp-icon><span>Add account</span>
588
+ </button>
589
+ `
590
+ : html``}
583
591
  `
584
- : html``}
592
+ }
585
593
  <div class="user-menu-divider"></div>
586
594
  <button class="user-menu-item destructive" @click=${() => this.requestLogout()}>
587
595
  <idp-icon name="logout" size="14"></idp-icon><span>Sign out</span>
@@ -605,35 +613,40 @@ export class IdpAdminSidebar extends DeesElement {
605
613
  </div>
606
614
  </div>
607
615
  <nav class="nav-wrap" aria-label="Console navigation">
608
- <div class="nav-section"><div class="nav-title">Workspace</div>${this.renderNavGroup(this.workspaceNav, this.page)}</div>
609
- <div class="nav-section"><div class="nav-title">My Account</div>${this.renderNavGroup(this.accountNav, this.page)}</div>
610
- <div class="nav-section">
611
- <div class="nav-title">Organisation</div>
612
- <div class="org-switch-wrap">
613
- <button class="org-switch ${this.orgMenuOpen ? 'open' : ''}" aria-haspopup="menu" aria-expanded=${this.orgMenuOpen} @click=${() => { this.orgMenuOpen = !this.orgMenuOpen; }}>
614
- <span class="org-avatar">${currentOrg.name.slice(0, 2).toUpperCase()}</span>
615
- <span class="org-name">${currentOrg.name}</span>
616
- <idp-icon name="chevron-down" size="10"></idp-icon>
617
- </button>
618
- ${this.orgMenuOpen ? html`
619
- <div class="org-menu">
620
- <div class="org-menu-title">Switch organisation</div>
621
- ${this.safeOrgs.map((orgArg) => html`
622
- <button class="org-menu-item ${orgArg.id === this.selectedOrgId ? 'selected' : ''}" @click=${() => this.selectOrg(orgArg.id)}>
623
- <span class="org-avatar">${orgArg.name.slice(0, 2).toUpperCase()}</span>
624
- <span style="flex:1;min-width:0"><span class="org-menu-name">${orgArg.name}</span><span class="org-menu-role">${orgArg.myRole || 'member'}</span></span>
625
- ${orgArg.id === this.selectedOrgId ? html`<idp-icon name="check" size="11"></idp-icon>` : html``}
616
+ ${this.superadmin
617
+ ? this.globalAdmin
618
+ ? html`<div class="nav-section"><div class="nav-title">Global Admin</div>${this.renderNavGroup(this.adminNav, this.page)}</div>`
619
+ : html``
620
+ : html`
621
+ <div class="nav-section"><div class="nav-title">Workspace</div>${this.renderNavGroup(this.workspaceNav, this.page)}</div>
622
+ <div class="nav-section"><div class="nav-title">My Account</div>${this.renderNavGroup(this.accountNav, this.page)}</div>
623
+ <div class="nav-section">
624
+ <div class="nav-title">Organisation</div>
625
+ <div class="org-switch-wrap">
626
+ <button class="org-switch ${this.orgMenuOpen ? 'open' : ''}" aria-haspopup="menu" aria-expanded=${this.orgMenuOpen} @click=${() => { this.orgMenuOpen = !this.orgMenuOpen; }}>
627
+ <span class="org-avatar">${currentOrg.name.slice(0, 2).toUpperCase()}</span>
628
+ <span class="org-name">${currentOrg.name}</span>
629
+ <idp-icon name="chevron-down" size="10"></idp-icon>
626
630
  </button>
627
- `)}
628
- <div class="org-menu-divider"></div>
629
- <button class="org-create" @click=${() => this.requestOrgCreate()}><span class="org-create-icon"><idp-icon name="plus" size="9"></idp-icon></span>Create organisation</button>
631
+ ${this.orgMenuOpen ? html`
632
+ <div class="org-menu">
633
+ <div class="org-menu-title">Switch organisation</div>
634
+ ${this.safeOrgs.map((orgArg) => html`
635
+ <button class="org-menu-item ${orgArg.id === this.selectedOrgId ? 'selected' : ''}" @click=${() => this.selectOrg(orgArg.id)}>
636
+ <span class="org-avatar">${orgArg.name.slice(0, 2).toUpperCase()}</span>
637
+ <span style="flex:1;min-width:0"><span class="org-menu-name">${orgArg.name}</span><span class="org-menu-role">${orgArg.myRole || 'member'}</span></span>
638
+ ${orgArg.id === this.selectedOrgId ? html`<idp-icon name="check" size="11"></idp-icon>` : html``}
639
+ </button>
640
+ `)}
641
+ <div class="org-menu-divider"></div>
642
+ <button class="org-create" @click=${() => this.requestOrgCreate()}><span class="org-create-icon"><idp-icon name="plus" size="9"></idp-icon></span>Create organisation</button>
643
+ </div>
644
+ ` : html``}
645
+ </div>
646
+ ${this.renderNavGroup(this.orgNav, this.page)}
630
647
  </div>
631
- ` : html``}
632
- </div>
633
- ${this.renderNavGroup(this.orgNav, this.page)}
634
- </div>
635
- <div class="nav-section"><div class="nav-title">Support</div>${this.renderNavGroup(this.supportNav, this.page)}</div>
636
- ${this.globalAdmin ? html`<div class="nav-section"><div class="nav-title">Global Admin</div>${this.renderNavGroup(this.adminNav, this.page)}</div>` : html``}
648
+ <div class="nav-section"><div class="nav-title">Support</div>${this.renderNavGroup(this.supportNav, this.page)}</div>
649
+ `}
637
650
  </nav>
638
651
  <div class="user-footer">
639
652
  <button class="user-trigger ${this.userMenuOpen ? 'open' : ''}" aria-haspopup="menu" aria-expanded=${this.userMenuOpen} @click=${() => { this.userMenuOpen = !this.userMenuOpen; }}>