@serve.zone/catalog 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist_ts_web/00_commitinfo_data.d.ts +8 -0
  2. package/dist_ts_web/00_commitinfo_data.js +9 -0
  3. package/dist_ts_web/elements/index.d.ts +33 -0
  4. package/dist_ts_web/elements/index.js +45 -0
  5. package/dist_ts_web/elements/sz-certificates-card.d.ts +14 -0
  6. package/dist_ts_web/elements/sz-certificates-card.js +210 -0
  7. package/dist_ts_web/elements/sz-dashboard-view.d.ts +33 -0
  8. package/dist_ts_web/elements/sz-dashboard-view.js +242 -0
  9. package/dist_ts_web/elements/sz-demo-view-dashboard.d.ts +18 -0
  10. package/dist_ts_web/elements/sz-demo-view-dashboard.js +184 -0
  11. package/dist_ts_web/elements/sz-demo-view-network.d.ts +32 -0
  12. package/dist_ts_web/elements/sz-demo-view-network.js +384 -0
  13. package/dist_ts_web/elements/sz-demo-view-registries.d.ts +22 -0
  14. package/dist_ts_web/elements/sz-demo-view-registries.js +240 -0
  15. package/dist_ts_web/elements/sz-demo-view-services.d.ts +32 -0
  16. package/dist_ts_web/elements/sz-demo-view-services.js +468 -0
  17. package/dist_ts_web/elements/sz-demo-view-settings.d.ts +19 -0
  18. package/dist_ts_web/elements/sz-demo-view-settings.js +151 -0
  19. package/dist_ts_web/elements/sz-demo-view-tokens.d.ts +20 -0
  20. package/dist_ts_web/elements/sz-demo-view-tokens.js +141 -0
  21. package/dist_ts_web/elements/sz-dns-ssl-card.d.ts +13 -0
  22. package/dist_ts_web/elements/sz-dns-ssl-card.js +180 -0
  23. package/dist_ts_web/elements/sz-domain-detail-view.d.ts +48 -0
  24. package/dist_ts_web/elements/sz-domain-detail-view.js +789 -0
  25. package/dist_ts_web/elements/sz-login-view.d.ts +18 -0
  26. package/dist_ts_web/elements/sz-login-view.js +384 -0
  27. package/dist_ts_web/elements/sz-network-dns-view.d.ts +20 -0
  28. package/dist_ts_web/elements/sz-network-dns-view.js +244 -0
  29. package/dist_ts_web/elements/sz-network-domains-view.d.ts +28 -0
  30. package/dist_ts_web/elements/sz-network-domains-view.js +312 -0
  31. package/dist_ts_web/elements/sz-network-proxy-view.d.ts +39 -0
  32. package/dist_ts_web/elements/sz-network-proxy-view.js +510 -0
  33. package/dist_ts_web/elements/sz-platform-service-detail-view.d.ts +49 -0
  34. package/dist_ts_web/elements/sz-platform-service-detail-view.js +733 -0
  35. package/dist_ts_web/elements/sz-platform-services-card.d.ts +19 -0
  36. package/dist_ts_web/elements/sz-platform-services-card.js +196 -0
  37. package/dist_ts_web/elements/sz-quick-actions-card.d.ts +19 -0
  38. package/dist_ts_web/elements/sz-quick-actions-card.js +194 -0
  39. package/dist_ts_web/elements/sz-registry-external-view.d.ts +22 -0
  40. package/dist_ts_web/elements/sz-registry-external-view.js +313 -0
  41. package/dist_ts_web/elements/sz-registry-onebox-view.d.ts +14 -0
  42. package/dist_ts_web/elements/sz-registry-onebox-view.js +307 -0
  43. package/dist_ts_web/elements/sz-resource-usage-card.d.ts +25 -0
  44. package/dist_ts_web/elements/sz-resource-usage-card.js +323 -0
  45. package/dist_ts_web/elements/sz-reverse-proxy-card.d.ts +16 -0
  46. package/dist_ts_web/elements/sz-reverse-proxy-card.js +216 -0
  47. package/dist_ts_web/elements/sz-service-create-view.d.ts +67 -0
  48. package/dist_ts_web/elements/sz-service-create-view.js +828 -0
  49. package/dist_ts_web/elements/sz-service-detail-view.d.ts +57 -0
  50. package/dist_ts_web/elements/sz-service-detail-view.js +728 -0
  51. package/dist_ts_web/elements/sz-services-backups-view.d.ts +37 -0
  52. package/dist_ts_web/elements/sz-services-backups-view.js +413 -0
  53. package/dist_ts_web/elements/sz-services-list-view.d.ts +20 -0
  54. package/dist_ts_web/elements/sz-services-list-view.js +272 -0
  55. package/dist_ts_web/elements/sz-settings-view.d.ts +30 -0
  56. package/dist_ts_web/elements/sz-settings-view.js +448 -0
  57. package/dist_ts_web/elements/sz-stat-card.d.ts +17 -0
  58. package/dist_ts_web/elements/sz-stat-card.js +249 -0
  59. package/dist_ts_web/elements/sz-status-grid-cluster.d.ts +19 -0
  60. package/dist_ts_web/elements/sz-status-grid-cluster.js +142 -0
  61. package/dist_ts_web/elements/sz-status-grid-infra.d.ts +17 -0
  62. package/dist_ts_web/elements/sz-status-grid-infra.js +140 -0
  63. package/dist_ts_web/elements/sz-status-grid-network.d.ts +30 -0
  64. package/dist_ts_web/elements/sz-status-grid-network.js +190 -0
  65. package/dist_ts_web/elements/sz-status-grid-services.d.ts +17 -0
  66. package/dist_ts_web/elements/sz-status-grid-services.js +145 -0
  67. package/dist_ts_web/elements/sz-tokens-view.d.ts +26 -0
  68. package/dist_ts_web/elements/sz-tokens-view.js +344 -0
  69. package/dist_ts_web/elements/sz-traffic-card.d.ts +24 -0
  70. package/dist_ts_web/elements/sz-traffic-card.js +255 -0
  71. package/dist_ts_web/index.d.ts +2 -0
  72. package/dist_ts_web/index.js +3 -0
  73. package/dist_ts_web/pages/index.d.ts +3 -0
  74. package/dist_ts_web/pages/index.js +4 -0
  75. package/dist_ts_web/pages/mainpage.d.ts +1 -0
  76. package/dist_ts_web/pages/mainpage.js +46 -0
  77. package/dist_ts_web/pages/sz-demo-app-shell.d.ts +13 -0
  78. package/dist_ts_web/pages/sz-demo-app-shell.js +212 -0
  79. package/dist_ts_web/pages/sz-demo-app.d.ts +2 -0
  80. package/dist_ts_web/pages/sz-demo-app.js +20 -0
  81. package/npmextra.json +24 -0
  82. package/package.json +45 -0
  83. package/ts_web/00_commitinfo_data.ts +8 -0
  84. package/ts_web/elements/index.ts +54 -0
  85. package/ts_web/elements/sz-certificates-card.ts +155 -0
  86. package/ts_web/elements/sz-dashboard-view.ts +217 -0
  87. package/ts_web/elements/sz-demo-view-dashboard.ts +150 -0
  88. package/ts_web/elements/sz-demo-view-network.ts +354 -0
  89. package/ts_web/elements/sz-demo-view-registries.ts +206 -0
  90. package/ts_web/elements/sz-demo-view-services.ts +434 -0
  91. package/ts_web/elements/sz-demo-view-settings.ts +118 -0
  92. package/ts_web/elements/sz-demo-view-tokens.ts +109 -0
  93. package/ts_web/elements/sz-dns-ssl-card.ts +130 -0
  94. package/ts_web/elements/sz-domain-detail-view.ts +766 -0
  95. package/ts_web/elements/sz-login-view.ts +329 -0
  96. package/ts_web/elements/sz-network-dns-view.ts +208 -0
  97. package/ts_web/elements/sz-network-domains-view.ts +273 -0
  98. package/ts_web/elements/sz-network-proxy-view.ts +456 -0
  99. package/ts_web/elements/sz-platform-service-detail-view.ts +714 -0
  100. package/ts_web/elements/sz-platform-services-card.ts +163 -0
  101. package/ts_web/elements/sz-quick-actions-card.ts +161 -0
  102. package/ts_web/elements/sz-registry-external-view.ts +279 -0
  103. package/ts_web/elements/sz-registry-onebox-view.ts +258 -0
  104. package/ts_web/elements/sz-resource-usage-card.ts +284 -0
  105. package/ts_web/elements/sz-reverse-proxy-card.ts +151 -0
  106. package/ts_web/elements/sz-service-create-view.ts +773 -0
  107. package/ts_web/elements/sz-service-detail-view.ts +710 -0
  108. package/ts_web/elements/sz-services-backups-view.ts +390 -0
  109. package/ts_web/elements/sz-services-list-view.ts +237 -0
  110. package/ts_web/elements/sz-settings-view.ts +417 -0
  111. package/ts_web/elements/sz-stat-card.ts +187 -0
  112. package/ts_web/elements/sz-status-grid-cluster.ts +105 -0
  113. package/ts_web/elements/sz-status-grid-infra.ts +88 -0
  114. package/ts_web/elements/sz-status-grid-network.ts +152 -0
  115. package/ts_web/elements/sz-status-grid-services.ts +99 -0
  116. package/ts_web/elements/sz-tokens-view.ts +308 -0
  117. package/ts_web/elements/sz-traffic-card.ts +222 -0
  118. package/ts_web/index.ts +2 -0
  119. package/ts_web/pages/index.ts +3 -0
  120. package/ts_web/pages/mainpage.ts +46 -0
  121. package/ts_web/pages/sz-demo-app-shell.ts +179 -0
  122. package/ts_web/pages/sz-demo-app.ts +20 -0
@@ -0,0 +1,222 @@
1
+ import {
2
+ DeesElement,
3
+ customElement,
4
+ html,
5
+ css,
6
+ cssManager,
7
+ property,
8
+ type TemplateResult,
9
+ } from '@design.estate/dees-element';
10
+
11
+ declare global {
12
+ interface HTMLElementTagNameMap {
13
+ 'sz-traffic-card': SzTrafficCard;
14
+ }
15
+ }
16
+
17
+ export interface ITrafficData {
18
+ requests: number;
19
+ errors: number;
20
+ errorPercent: number;
21
+ avgResponse: number;
22
+ reqPerMin: number;
23
+ status2xx: number;
24
+ status3xx: number;
25
+ status4xx: number;
26
+ status5xx: number;
27
+ }
28
+
29
+ @customElement('sz-traffic-card')
30
+ export class SzTrafficCard extends DeesElement {
31
+ public static demo = () => html`
32
+ <div style="padding: 24px; max-width: 500px;">
33
+ <sz-traffic-card
34
+ .data=${{
35
+ requests: 1250,
36
+ errors: 15,
37
+ errorPercent: 1.2,
38
+ avgResponse: 145,
39
+ reqPerMin: 21,
40
+ status2xx: 85,
41
+ status3xx: 5,
42
+ status4xx: 8,
43
+ status5xx: 2,
44
+ }}
45
+ ></sz-traffic-card>
46
+ </div>
47
+ `;
48
+
49
+ @property({ type: Object })
50
+ public accessor data: ITrafficData = {
51
+ requests: 0,
52
+ errors: 0,
53
+ errorPercent: 0,
54
+ avgResponse: 0,
55
+ reqPerMin: 0,
56
+ status2xx: 0,
57
+ status3xx: 0,
58
+ status4xx: 0,
59
+ status5xx: 0,
60
+ };
61
+
62
+ public static styles = [
63
+ cssManager.defaultStyles,
64
+ css`
65
+ :host {
66
+ display: block;
67
+ height: 100%;
68
+ }
69
+
70
+ .card {
71
+ background: ${cssManager.bdTheme('#ffffff', '#09090b')};
72
+ border: 1px solid ${cssManager.bdTheme('#e4e4e7', '#27272a')};
73
+ border-radius: 8px;
74
+ padding: 20px;
75
+ height: 100%;
76
+ box-sizing: border-box;
77
+ }
78
+
79
+ .header {
80
+ margin-bottom: 16px;
81
+ }
82
+
83
+ .title {
84
+ font-size: 16px;
85
+ font-weight: 600;
86
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
87
+ }
88
+
89
+ .subtitle {
90
+ font-size: 13px;
91
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
92
+ margin-top: 2px;
93
+ }
94
+
95
+ .metrics {
96
+ display: grid;
97
+ grid-template-columns: repeat(2, 1fr);
98
+ gap: 16px;
99
+ margin-bottom: 16px;
100
+ }
101
+
102
+ .metric {
103
+ display: flex;
104
+ flex-direction: column;
105
+ gap: 2px;
106
+ }
107
+
108
+ .metric-label {
109
+ font-size: 13px;
110
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
111
+ }
112
+
113
+ .metric-value {
114
+ font-size: 18px;
115
+ font-weight: 600;
116
+ color: ${cssManager.bdTheme('#18181b', '#fafafa')};
117
+ }
118
+
119
+ .status-bar-container {
120
+ padding-top: 12px;
121
+ border-top: 1px solid ${cssManager.bdTheme('#f4f4f5', '#27272a')};
122
+ }
123
+
124
+ .status-bar {
125
+ display: flex;
126
+ height: 8px;
127
+ border-radius: 4px;
128
+ overflow: hidden;
129
+ background: ${cssManager.bdTheme('#f4f4f5', '#27272a')};
130
+ margin-bottom: 8px;
131
+ }
132
+
133
+ .status-segment {
134
+ height: 100%;
135
+ transition: width 300ms ease;
136
+ }
137
+
138
+ .status-2xx {
139
+ background: ${cssManager.bdTheme('#22c55e', '#22c55e')};
140
+ }
141
+
142
+ .status-3xx {
143
+ background: ${cssManager.bdTheme('#3b82f6', '#60a5fa')};
144
+ }
145
+
146
+ .status-4xx {
147
+ background: ${cssManager.bdTheme('#facc15', '#facc15')};
148
+ }
149
+
150
+ .status-5xx {
151
+ background: ${cssManager.bdTheme('#ef4444', '#ef4444')};
152
+ }
153
+
154
+ .status-legend {
155
+ display: flex;
156
+ justify-content: space-between;
157
+ }
158
+
159
+ .legend-item {
160
+ font-size: 12px;
161
+ color: ${cssManager.bdTheme('#71717a', '#a1a1aa')};
162
+ }
163
+ `,
164
+ ];
165
+
166
+ public render(): TemplateResult {
167
+ const total = this.data.status2xx + this.data.status3xx + this.data.status4xx + this.data.status5xx;
168
+ const p2xx = total > 0 ? (this.data.status2xx / total) * 100 : 0;
169
+ const p3xx = total > 0 ? (this.data.status3xx / total) * 100 : 0;
170
+ const p4xx = total > 0 ? (this.data.status4xx / total) * 100 : 0;
171
+ const p5xx = total > 0 ? (this.data.status5xx / total) * 100 : 0;
172
+
173
+ return html`
174
+ <div class="card">
175
+ <div class="header">
176
+ <div class="title">Traffic (Last Hour)</div>
177
+ <div class="subtitle">Request metrics from access logs</div>
178
+ </div>
179
+
180
+ <div class="metrics">
181
+ <div class="metric">
182
+ <span class="metric-label">Requests</span>
183
+ <span class="metric-value">${this.formatNumber(this.data.requests)}</span>
184
+ </div>
185
+ <div class="metric">
186
+ <span class="metric-label">Errors</span>
187
+ <span class="metric-value">${this.data.errors} (${this.data.errorPercent}%)</span>
188
+ </div>
189
+ <div class="metric">
190
+ <span class="metric-label">Avg Response</span>
191
+ <span class="metric-value">${this.data.avgResponse}ms</span>
192
+ </div>
193
+ <div class="metric">
194
+ <span class="metric-label">Req/min</span>
195
+ <span class="metric-value">${this.data.reqPerMin}</span>
196
+ </div>
197
+ </div>
198
+
199
+ <div class="status-bar-container">
200
+ <div class="status-bar">
201
+ <div class="status-segment status-2xx" style="width: ${p2xx}%"></div>
202
+ <div class="status-segment status-3xx" style="width: ${p3xx}%"></div>
203
+ <div class="status-segment status-4xx" style="width: ${p4xx}%"></div>
204
+ <div class="status-segment status-5xx" style="width: ${p5xx}%"></div>
205
+ </div>
206
+ <div class="status-legend">
207
+ <span class="legend-item">2xx</span>
208
+ <span class="legend-item">3xx</span>
209
+ <span class="legend-item">4xx</span>
210
+ <span class="legend-item">5xx</span>
211
+ </div>
212
+ </div>
213
+ </div>
214
+ `;
215
+ }
216
+
217
+ private formatNumber(num: number): string {
218
+ if (num >= 1000000) return (num / 1000000).toFixed(1) + 'M';
219
+ if (num >= 1000) return (num / 1000).toFixed(1) + 'K';
220
+ return num.toString();
221
+ }
222
+ }
@@ -0,0 +1,2 @@
1
+ export * from './elements/index.js';
2
+ export * from './pages/index.js';
@@ -0,0 +1,3 @@
1
+ export * from './mainpage.js';
2
+ export * from './sz-demo-app.js';
3
+ export * from './sz-demo-app-shell.js';
@@ -0,0 +1,46 @@
1
+ import { html } from '@design.estate/dees-element';
2
+
3
+ export const mainpage = () => html`
4
+ <style>
5
+ body {
6
+ margin: 0;
7
+ padding: 0;
8
+ background: #f5f5f5;
9
+ }
10
+ .demo-container {
11
+ min-height: 100vh;
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ padding: 24px;
16
+ }
17
+ .demo-section {
18
+ background: white;
19
+ border-radius: 12px;
20
+ padding: 48px;
21
+ box-shadow: 0 4px 24px rgba(0, 0, 0, 0.1);
22
+ max-width: 600px;
23
+ width: 100%;
24
+ }
25
+ h1 {
26
+ margin: 0 0 32px 0;
27
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
28
+ font-size: 28px;
29
+ color: #1a1a1a;
30
+ }
31
+ .component-demo {
32
+ display: flex;
33
+ flex-direction: column;
34
+ gap: 16px;
35
+ }
36
+ </style>
37
+ <div class="demo-container">
38
+ <div class="demo-section">
39
+ <h1>Serve.Zone Catalog</h1>
40
+ <div class="component-demo">
41
+ <sz-hello></sz-hello>
42
+ <sz-hello text="Welcome to Serve.Zone!"></sz-hello>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ `;
@@ -0,0 +1,179 @@
1
+ import {
2
+ DeesElement,
3
+ customElement,
4
+ html,
5
+ css,
6
+ cssManager,
7
+ type TemplateResult,
8
+ } from '@design.estate/dees-element';
9
+ import type { DeesAppui } from '@design.estate/dees-catalog';
10
+ import '@design.estate/dees-catalog';
11
+ import '../elements/index.js';
12
+
13
+ declare global {
14
+ interface HTMLElementTagNameMap {
15
+ 'sz-demo-app-shell': SzDemoAppShell;
16
+ }
17
+ }
18
+
19
+ @customElement('sz-demo-app-shell')
20
+ export class SzDemoAppShell extends DeesElement {
21
+ public static styles = [
22
+ cssManager.defaultStyles,
23
+ css`
24
+ :host {
25
+ display: block;
26
+ height: 100%;
27
+ width: 100%;
28
+ }
29
+
30
+ dees-appui {
31
+ height: 100%;
32
+ width: 100%;
33
+ }
34
+ `,
35
+ ];
36
+
37
+ public render(): TemplateResult {
38
+ return html`
39
+ <dees-appui></dees-appui>
40
+ `;
41
+ }
42
+
43
+ async firstUpdated() {
44
+ const appui = this.shadowRoot?.querySelector('dees-appui') as DeesAppui;
45
+
46
+ if (!appui) return;
47
+
48
+ // Configure the application shell
49
+ appui.configure({
50
+ branding: {
51
+ logoIcon: 'lucide:Box',
52
+ logoText: 'serve.zone',
53
+ },
54
+ appBar: {
55
+ showSearch: true,
56
+ breadcrumbs: 'serve.zone',
57
+ menuItems: [
58
+ {
59
+ name: 'File',
60
+ action: async () => {},
61
+ submenu: [
62
+ { name: 'New Service', shortcut: 'Cmd+N', action: async () => { console.log('New Service'); } },
63
+ { name: 'Import Configuration', action: async () => { console.log('Import'); } },
64
+ { name: 'Export Configuration', action: async () => { console.log('Export'); } },
65
+ { divider: true },
66
+ { name: 'Preferences', shortcut: 'Cmd+,', action: async () => { appui.navigateToView('settings'); } },
67
+ ],
68
+ },
69
+ {
70
+ name: 'View',
71
+ action: async () => {},
72
+ submenu: [
73
+ { name: 'Dashboard', shortcut: 'Cmd+1', action: async () => { appui.navigateToView('dashboard'); } },
74
+ { name: 'Services', shortcut: 'Cmd+2', action: async () => { appui.navigateToView('services'); } },
75
+ { name: 'Network', shortcut: 'Cmd+3', action: async () => { appui.navigateToView('network'); } },
76
+ { divider: true },
77
+ { name: 'Activity Log', shortcut: 'Cmd+Shift+A', action: async () => { appui.toggleActivityLog(); } },
78
+ { name: 'Toggle Sidebar', shortcut: 'Cmd+B', action: async () => { appui.setMainMenuCollapsed(!(appui as any).mainmenuCollapsed); } },
79
+ ],
80
+ },
81
+ {
82
+ name: 'Services',
83
+ action: async () => {},
84
+ submenu: [
85
+ { name: 'Deploy New Service', action: async () => { console.log('Deploy'); } },
86
+ { name: 'Start All', action: async () => { console.log('Start all'); } },
87
+ { name: 'Stop All', action: async () => { console.log('Stop all'); } },
88
+ { divider: true },
89
+ { name: 'Garbage Collect', action: async () => { console.log('GC'); } },
90
+ ],
91
+ },
92
+ {
93
+ name: 'Help',
94
+ action: async () => {},
95
+ submenu: [
96
+ { name: 'Documentation', action: async () => { window.open('https://docs.serve.zone', '_blank'); } },
97
+ { name: 'Release Notes', action: async () => { console.log('Release notes'); } },
98
+ { divider: true },
99
+ { name: 'About serve.zone', action: async () => { console.log('About'); } },
100
+ ],
101
+ },
102
+ ],
103
+ },
104
+ views: [
105
+ {
106
+ id: 'dashboard',
107
+ name: 'Dashboard',
108
+ iconName: 'lucide:LayoutDashboard',
109
+ content: 'sz-demo-view-dashboard',
110
+ },
111
+ {
112
+ id: 'services',
113
+ name: 'Services',
114
+ iconName: 'lucide:Server',
115
+ content: 'sz-demo-view-services',
116
+ },
117
+ {
118
+ id: 'network',
119
+ name: 'Network',
120
+ iconName: 'lucide:Network',
121
+ content: 'sz-demo-view-network',
122
+ },
123
+ {
124
+ id: 'registries',
125
+ name: 'Registries',
126
+ iconName: 'lucide:Archive',
127
+ content: 'sz-demo-view-registries',
128
+ },
129
+ {
130
+ id: 'tokens',
131
+ name: 'Tokens',
132
+ iconName: 'lucide:Key',
133
+ content: 'sz-demo-view-tokens',
134
+ },
135
+ {
136
+ id: 'settings',
137
+ name: 'Settings',
138
+ iconName: 'lucide:Settings',
139
+ content: 'sz-demo-view-settings',
140
+ },
141
+ ],
142
+ mainMenu: {
143
+ sections: [
144
+ {
145
+ name: 'Overview',
146
+ views: ['dashboard'],
147
+ },
148
+ {
149
+ name: 'Infrastructure',
150
+ views: ['services', 'network', 'registries'],
151
+ },
152
+ {
153
+ name: 'Administration',
154
+ views: ['tokens', 'settings'],
155
+ },
156
+ ],
157
+ },
158
+ defaultView: 'dashboard',
159
+ onViewChange: (viewId, view) => {
160
+ console.log('View changed to:', viewId, view);
161
+ },
162
+ });
163
+
164
+ // Set user profile
165
+ appui.setUser({
166
+ name: 'Admin User',
167
+ email: 'admin@serve.zone',
168
+ status: 'online',
169
+ });
170
+
171
+ // Set profile menu items
172
+ appui.setProfileMenuItems([
173
+ { name: 'Profile', iconName: 'lucide:User', action: async () => { console.log('Profile'); } },
174
+ { name: 'Preferences', iconName: 'lucide:SlidersHorizontal', action: async () => { console.log('Preferences'); } },
175
+ { divider: true },
176
+ { name: 'Sign Out', iconName: 'lucide:LogOut', action: async () => { console.log('Sign Out'); } },
177
+ ]);
178
+ }
179
+ }
@@ -0,0 +1,20 @@
1
+ import { html } from '@design.estate/dees-element';
2
+ import '../elements/index.js';
3
+
4
+ export const szDemoApp = () => html`
5
+ <style>
6
+ html, body {
7
+ margin: 0;
8
+ padding: 0;
9
+ height: 100%;
10
+ width: 100%;
11
+ overflow: hidden;
12
+ }
13
+ sz-demo-app-shell {
14
+ display: block;
15
+ height: 100vh;
16
+ width: 100vw;
17
+ }
18
+ </style>
19
+ <sz-demo-app-shell></sz-demo-app-shell>
20
+ `;