@kodaris/krubble-app-components 1.0.37 → 1.0.39
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/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/krubble-app.bundled.js +18 -974
- package/dist/krubble-app.bundled.js.map +1 -1
- package/dist/krubble-app.bundled.min.js +56 -785
- package/dist/krubble-app.bundled.min.js.map +1 -1
- package/dist/krubble-app.umd.js +17 -973
- package/dist/krubble-app.umd.js.map +1 -1
- package/dist/krubble-app.umd.min.js +52 -781
- package/dist/krubble-app.umd.min.js.map +1 -1
- package/dist/screen-nav.js +3 -3
- package/package.json +1 -5
- package/dist/shell.d.ts +0 -105
- package/dist/shell.d.ts.map +0 -1
- package/dist/shell.js +0 -961
- package/dist/shell.js.map +0 -1
|
@@ -55,971 +55,15 @@ const t={ATTRIBUTE:1,CHILD:2},e$2=t=>(...e)=>({_$litDirective$:t,values:e});clas
|
|
|
55
55
|
|
|
56
56
|
/**
|
|
57
57
|
* @license
|
|
58
|
-
* Copyright
|
|
59
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* @license
|
|
64
|
-
* Copyright 2017 Google LLC
|
|
65
|
-
* SPDX-License-Identifier: BSD-3-Clause
|
|
66
|
-
*/class e extends i{constructor(i){if(super(i),this.it=A,i.type!==t.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(r){if(r===A||null==r)return this._t=void 0,this.it=r;if(r===E)return r;if("string"!=typeof r)throw Error(this.constructor.directiveName+"() called with a non-string value");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}}e.directiveName="unsafeHTML",e.resultType=1;const o=e$2(e);
|
|
67
|
-
|
|
68
|
-
var __decorate$5 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
69
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
70
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
71
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
72
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
73
|
-
};
|
|
74
|
-
/**
|
|
75
|
-
* Global shell component with app bar for app switching.
|
|
76
|
-
*
|
|
77
|
-
* The shell provides a horizontal app bar across the top of the viewport containing:
|
|
78
|
-
* - Logo/home link on the left
|
|
79
|
-
* - App switcher icons in the middle
|
|
80
|
-
* - User avatar/menu on the right
|
|
81
|
-
*
|
|
82
|
-
* This allows individual apps (using kr-scaffold) to utilize the full width
|
|
83
|
-
* of the browser window while maintaining consistent global navigation.
|
|
84
|
-
*
|
|
85
|
-
* @slot - The main content (typically kr-scaffold with the app)
|
|
86
|
-
*
|
|
87
|
-
* @property {string} logo - URL for the logo image
|
|
88
|
-
* @property {KRApp[]} apps - Available applications for the switcher
|
|
89
|
-
* @property {string} activeAppId - ID of the currently active app
|
|
90
|
-
* @property {KRShellUser} user - User profile data
|
|
91
|
-
* @property {KRShellMenuItem[]} menuItems - Custom menu items for user menu
|
|
92
|
-
*
|
|
93
|
-
* @fires app-click - When an app icon is clicked. Detail: { app: KRApp }
|
|
94
|
-
* @fires menu-item-click - When a menu item is clicked. Detail: { item: KRShellMenuItem }
|
|
95
|
-
* @fires logout - When logout is clicked
|
|
96
|
-
*/
|
|
97
|
-
let KRShell = class KRShell extends i$1 {
|
|
98
|
-
constructor() {
|
|
99
|
-
super(...arguments);
|
|
100
|
-
this.logo = 'https://s3.amazonaws.com/kodariscom/kodariscom/content/website/kodaris-logo-icon-light-53.png';
|
|
101
|
-
this.apps = [];
|
|
102
|
-
this.activeAppId = '';
|
|
103
|
-
this.user = null;
|
|
104
|
-
this.menuItems = [];
|
|
105
|
-
this.isUserMenuOpen = false;
|
|
106
|
-
this.isAppsMenuOpen = false;
|
|
107
|
-
this.pendingRequests = 0;
|
|
108
|
-
this.originalFetch = null;
|
|
109
|
-
this.originalXhrOpen = null;
|
|
110
|
-
// Default icons
|
|
111
|
-
this.defaultLogoutIcon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M17 7l-1.41 1.41L18.17 11H8v2h10.17l-2.58 2.58L17 17l5-5zM4 5h8V3H4c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h8v-2H4V5z"/></svg>';
|
|
112
|
-
this.appsGridIcon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M4 8h4V4H4v4zm6 12h4v-4h-4v4zm-6 0h4v-4H4v4zm0-6h4v-4H4v4zm6 0h4v-4h-4v4zm6-10v4h4V4h-4zm-6 4h4V4h-4v4zm6 6h4v-4h-4v4zm0 6h4v-4h-4v4z"/></svg>';
|
|
113
|
-
this.closeIcon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>';
|
|
114
|
-
}
|
|
115
|
-
connectedCallback() {
|
|
116
|
-
super.connectedCallback();
|
|
117
|
-
this.installFetchInterceptor();
|
|
118
|
-
// Hide the default Chatlio close button (we use our own custom button)
|
|
119
|
-
if (!document.getElementById('chatlio-widget-styles')) {
|
|
120
|
-
const style = document.createElement('style');
|
|
121
|
-
style.id = 'chatlio-widget-styles';
|
|
122
|
-
style.textContent = `
|
|
123
|
-
.chatlio-title-bar {
|
|
124
|
-
display: none !important;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
.chatlio-widget-body {
|
|
128
|
-
bottom: 36px !important;
|
|
129
|
-
}
|
|
130
|
-
`;
|
|
131
|
-
document.head.appendChild(style);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
disconnectedCallback() {
|
|
135
|
-
super.disconnectedCallback();
|
|
136
|
-
this.uninstallFetchInterceptor();
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Installs global interceptors for fetch and XMLHttpRequest to track pending HTTP requests.
|
|
140
|
-
* Updates `pendingRequests` state when requests start/complete.
|
|
141
|
-
*/
|
|
142
|
-
installFetchInterceptor() {
|
|
143
|
-
if (this.originalFetch)
|
|
144
|
-
return;
|
|
145
|
-
const shell = this;
|
|
146
|
-
// Intercept fetch
|
|
147
|
-
this.originalFetch = window.fetch.bind(window);
|
|
148
|
-
const originalFetch = this.originalFetch;
|
|
149
|
-
window.fetch = function (...args) {
|
|
150
|
-
shell.pendingRequests++;
|
|
151
|
-
return originalFetch(...args).finally(() => {
|
|
152
|
-
shell.pendingRequests--;
|
|
153
|
-
});
|
|
154
|
-
};
|
|
155
|
-
// Intercept XMLHttpRequest
|
|
156
|
-
this.originalXhrOpen = XMLHttpRequest.prototype.open;
|
|
157
|
-
const originalXhrOpen = this.originalXhrOpen;
|
|
158
|
-
XMLHttpRequest.prototype.open = function (method, url, async = true, username, password) {
|
|
159
|
-
shell.pendingRequests++;
|
|
160
|
-
this.addEventListener('loadend', () => {
|
|
161
|
-
shell.pendingRequests--;
|
|
162
|
-
}, { once: true });
|
|
163
|
-
return originalXhrOpen.call(this, method, url, async, username, password);
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Restores the original fetch and XMLHttpRequest functions.
|
|
168
|
-
*/
|
|
169
|
-
uninstallFetchInterceptor() {
|
|
170
|
-
if (this.originalFetch) {
|
|
171
|
-
window.fetch = this.originalFetch;
|
|
172
|
-
this.originalFetch = null;
|
|
173
|
-
}
|
|
174
|
-
if (this.originalXhrOpen) {
|
|
175
|
-
XMLHttpRequest.prototype.open = this.originalXhrOpen;
|
|
176
|
-
this.originalXhrOpen = null;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
handleLogoClick() {
|
|
180
|
-
this.dispatchEvent(new CustomEvent('logo-click', {
|
|
181
|
-
bubbles: true,
|
|
182
|
-
composed: true,
|
|
183
|
-
}));
|
|
184
|
-
}
|
|
185
|
-
toggleUserMenu() {
|
|
186
|
-
this.isUserMenuOpen = !this.isUserMenuOpen;
|
|
187
|
-
this.isAppsMenuOpen = false;
|
|
188
|
-
}
|
|
189
|
-
closeUserMenu() {
|
|
190
|
-
this.isUserMenuOpen = false;
|
|
191
|
-
}
|
|
192
|
-
toggleAppsMenu() {
|
|
193
|
-
this.isAppsMenuOpen = !this.isAppsMenuOpen;
|
|
194
|
-
this.isUserMenuOpen = false;
|
|
195
|
-
}
|
|
196
|
-
closeAppsMenu() {
|
|
197
|
-
this.isAppsMenuOpen = false;
|
|
198
|
-
}
|
|
199
|
-
handleMenuItemClick(item) {
|
|
200
|
-
this.closeUserMenu();
|
|
201
|
-
this.dispatchEvent(new CustomEvent('menu-item-click', {
|
|
202
|
-
detail: { item },
|
|
203
|
-
bubbles: true,
|
|
204
|
-
composed: true,
|
|
205
|
-
}));
|
|
206
|
-
}
|
|
207
|
-
handleLogout() {
|
|
208
|
-
this.closeUserMenu();
|
|
209
|
-
this.dispatchEvent(new CustomEvent('logout', {
|
|
210
|
-
bubbles: true,
|
|
211
|
-
composed: true,
|
|
212
|
-
}));
|
|
213
|
-
}
|
|
214
|
-
handleChatClick() {
|
|
215
|
-
// Toggle Chatlio widget
|
|
216
|
-
if (typeof window._chatlio !== 'undefined') {
|
|
217
|
-
window._chatlio.showOrHide();
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
renderAppsMenu() {
|
|
221
|
-
return b `
|
|
222
|
-
<div class="appbar-apps">
|
|
223
|
-
${this.isAppsMenuOpen ? b `
|
|
224
|
-
<div class="menu-backdrop" @click=${this.closeAppsMenu}></div>
|
|
225
|
-
` : A}
|
|
226
|
-
|
|
227
|
-
<button
|
|
228
|
-
class=${e$1({
|
|
229
|
-
'appbar-apps-btn': true,
|
|
230
|
-
'appbar-apps-btn--open': this.isAppsMenuOpen,
|
|
231
|
-
})}
|
|
232
|
-
@click=${this.toggleAppsMenu}
|
|
233
|
-
>
|
|
234
|
-
<span class="appbar-apps-btn__icon">${o(this.appsGridIcon)}</span>
|
|
235
|
-
</button>
|
|
236
|
-
|
|
237
|
-
<div class=${e$1({
|
|
238
|
-
'appbar-apps-menu': true,
|
|
239
|
-
'appbar-apps-menu--open': this.isAppsMenuOpen,
|
|
240
|
-
})}>
|
|
241
|
-
<div class="appbar-apps-menu__header">
|
|
242
|
-
<h2 class="appbar-apps-menu__title">Applications</h2>
|
|
243
|
-
<button class="appbar-apps-menu__close" @click=${this.closeAppsMenu}>
|
|
244
|
-
${o(this.closeIcon)}
|
|
245
|
-
</button>
|
|
246
|
-
</div>
|
|
247
|
-
<div class="appbar-apps-menu__content">
|
|
248
|
-
<div class="appbar-apps-menu__list">
|
|
249
|
-
${this.apps.map((app) => b `
|
|
250
|
-
<a
|
|
251
|
-
class="appbar-apps-menu__item"
|
|
252
|
-
href=${app.url}
|
|
253
|
-
@click=${(e) => {
|
|
254
|
-
this.closeAppsMenu();
|
|
255
|
-
const event = new CustomEvent('app-click', {
|
|
256
|
-
detail: { app },
|
|
257
|
-
bubbles: true,
|
|
258
|
-
composed: true,
|
|
259
|
-
cancelable: true,
|
|
260
|
-
});
|
|
261
|
-
this.dispatchEvent(event);
|
|
262
|
-
if (event.defaultPrevented) {
|
|
263
|
-
e.preventDefault();
|
|
264
|
-
}
|
|
265
|
-
}}
|
|
266
|
-
>
|
|
267
|
-
${app.name}
|
|
268
|
-
</a>
|
|
269
|
-
`)}
|
|
270
|
-
</div>
|
|
271
|
-
</div>
|
|
272
|
-
</div>
|
|
273
|
-
</div>
|
|
274
|
-
`;
|
|
275
|
-
}
|
|
276
|
-
renderUserMenu() {
|
|
277
|
-
if (!this.user)
|
|
278
|
-
return A;
|
|
279
|
-
const initials = this.user.name
|
|
280
|
-
.split(' ')
|
|
281
|
-
.map((part) => part[0])
|
|
282
|
-
.join('')
|
|
283
|
-
.toUpperCase()
|
|
284
|
-
.slice(0, 2);
|
|
285
|
-
return b `
|
|
286
|
-
<div class="appbar-user">
|
|
287
|
-
${this.isUserMenuOpen ? b `
|
|
288
|
-
<div class="menu-backdrop" @click=${this.closeUserMenu}></div>
|
|
289
|
-
` : A}
|
|
290
|
-
|
|
291
|
-
<div
|
|
292
|
-
class="appbar-user__avatar"
|
|
293
|
-
@click=${this.toggleUserMenu}
|
|
294
|
-
>
|
|
295
|
-
${this.user.avatar
|
|
296
|
-
? b `<img src=${this.user.avatar} alt=${this.user.name} />`
|
|
297
|
-
: initials}
|
|
298
|
-
</div>
|
|
299
|
-
|
|
300
|
-
<div class=${e$1({
|
|
301
|
-
'appbar-user__menu': true,
|
|
302
|
-
'appbar-user__menu--open': this.isUserMenuOpen,
|
|
303
|
-
})}>
|
|
304
|
-
<div class="appbar-user__header">
|
|
305
|
-
<p class="appbar-user__name">${this.user.name}</p>
|
|
306
|
-
${this.user.email ? b `
|
|
307
|
-
<p class="appbar-user__email">${this.user.email}</p>
|
|
308
|
-
` : A}
|
|
309
|
-
</div>
|
|
310
|
-
|
|
311
|
-
${this.menuItems.map((item) => item.divider
|
|
312
|
-
? b `<div class="appbar-user__menu-divider"></div>`
|
|
313
|
-
: b `
|
|
314
|
-
<button
|
|
315
|
-
class="appbar-user__menu-item"
|
|
316
|
-
@click=${() => this.handleMenuItemClick(item)}
|
|
317
|
-
>
|
|
318
|
-
${item.icon ? b `
|
|
319
|
-
<span class="appbar-user__menu-item__icon">${o(item.icon)}</span>
|
|
320
|
-
` : A}
|
|
321
|
-
${item.label}
|
|
322
|
-
</button>
|
|
323
|
-
`)}
|
|
324
|
-
|
|
325
|
-
${this.menuItems.length > 0 ? b `
|
|
326
|
-
<div class="appbar-user__menu-divider"></div>
|
|
327
|
-
` : A}
|
|
328
|
-
|
|
329
|
-
<button
|
|
330
|
-
class="appbar-user__menu-item appbar-user__menu-item--danger"
|
|
331
|
-
@click=${this.handleLogout}
|
|
332
|
-
>
|
|
333
|
-
<span class="appbar-user__menu-item__icon">${o(this.defaultLogoutIcon)}</span>
|
|
334
|
-
Sign Out
|
|
335
|
-
</button>
|
|
336
|
-
</div>
|
|
337
|
-
</div>
|
|
338
|
-
`;
|
|
339
|
-
}
|
|
340
|
-
render() {
|
|
341
|
-
return b `
|
|
342
|
-
<div class=${e$1({
|
|
343
|
-
'progress': true,
|
|
344
|
-
'progress--loading': this.pendingRequests > 0,
|
|
345
|
-
})}>
|
|
346
|
-
<div class="progress__track"></div>
|
|
347
|
-
<div class="progress__bar progress__bar--primary">
|
|
348
|
-
<span class="progress__bar-inner"></span>
|
|
349
|
-
</div>
|
|
350
|
-
<div class="progress__bar progress__bar--secondary">
|
|
351
|
-
<span class="progress__bar-inner"></span>
|
|
352
|
-
</div>
|
|
353
|
-
</div>
|
|
354
|
-
|
|
355
|
-
<header class="appbar">
|
|
356
|
-
<!-- Logo -->
|
|
357
|
-
${this.logo ? b `
|
|
358
|
-
<div class="appbar-logo" @click=${this.handleLogoClick}>
|
|
359
|
-
<img src=${this.logo} alt="Home" />
|
|
360
|
-
</div>
|
|
361
|
-
<div class="appbar-divider"></div>
|
|
362
|
-
` : A}
|
|
363
|
-
|
|
364
|
-
<!-- App Switcher -->
|
|
365
|
-
${this.renderAppsMenu()}
|
|
366
|
-
|
|
367
|
-
<div class="appbar-spacer"></div>
|
|
368
|
-
|
|
369
|
-
<!-- User -->
|
|
370
|
-
${this.renderUserMenu()}
|
|
371
|
-
</header>
|
|
372
|
-
|
|
373
|
-
<!-- <div class="subbar">-->
|
|
374
|
-
<!-- <nav class="breadcrumbs">-->
|
|
375
|
-
<!-- <a href="#">Home</a>-->
|
|
376
|
-
<!-- <span class="breadcrumbs__separator">/</span>-->
|
|
377
|
-
<!-- <a href="#">Companies</a>-->
|
|
378
|
-
<!-- <span class="breadcrumbs__separator">/</span>-->
|
|
379
|
-
<!-- <span>Acme Corp</span>-->
|
|
380
|
-
<!-- </nav>-->
|
|
381
|
-
<!-- </div>-->
|
|
382
|
-
|
|
383
|
-
<main class="main">
|
|
384
|
-
<slot></slot>
|
|
385
|
-
</main>
|
|
386
|
-
|
|
387
|
-
<footer class="footer">
|
|
388
|
-
<div class="footer-content">
|
|
389
|
-
<div class="footer-info">
|
|
390
|
-
<span>© ${new Date().getFullYear()} Kodaris. All Rights Reserved.</span>
|
|
391
|
-
</div>
|
|
392
|
-
<a class="footer-link" target="_blank" href="https://www.kodaris.com/content/privacy-policy">Privacy</a>
|
|
393
|
-
<a class="footer-link" target="_blank" href="https://www.kodaris.com/content/terms-use">Terms</a>
|
|
394
|
-
<button class="footer-chat" data-chatlio-widget-button @click=${this.handleChatClick}>
|
|
395
|
-
<span class="footer-chat__icon">
|
|
396
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-messages-square-icon lucide-messages-square">
|
|
397
|
-
<path d="M16 10a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 14.286V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"/><path d="M20 9a2 2 0 0 1 2 2v10.286a.71.71 0 0 1-1.212.502l-2.202-2.202A2 2 0 0 0 17.172 19H10a2 2 0 0 1-2-2v-1"/>
|
|
398
|
-
</svg>
|
|
399
|
-
</span>
|
|
400
|
-
Chat with us
|
|
401
|
-
</button>
|
|
402
|
-
</div>
|
|
403
|
-
</footer>
|
|
404
|
-
`;
|
|
405
|
-
}
|
|
406
|
-
};
|
|
407
|
-
KRShell.styles = i$4 `
|
|
408
|
-
:host {
|
|
409
|
-
display: flex;
|
|
410
|
-
flex-direction: column;
|
|
411
|
-
height: 100vh;
|
|
412
|
-
width: 100vw;
|
|
413
|
-
--kr-shell-bar-height: 48px;
|
|
414
|
-
--kr-shell-bar-bg: #10172a; /* matches scaffold nav-bg */
|
|
415
|
-
/* --kr-shell-bar-bg: #0a0f1a; */ /* original darker bg */
|
|
416
|
-
--kr-shell-bar-border: rgba(255, 255, 255, 0.08);
|
|
417
|
-
--kr-shell-icon-size: 36px;
|
|
418
|
-
--kr-shell-icon-color: rgba(255, 255, 255, 0.7);
|
|
419
|
-
--kr-shell-icon-color-hover: rgba(255, 255, 255, 1);
|
|
420
|
-
--kr-shell-icon-color-active: #beea4e;
|
|
421
|
-
--kr-shell-icon-bg-hover: rgba(255, 255, 255, 0.08);
|
|
422
|
-
--kr-shell-icon-bg-active: rgba(190, 234, 78, 0.15);
|
|
423
|
-
--kr-shell-tooltip-bg: #1a2332;
|
|
424
|
-
--kr-shell-tooltip-color: #ffffff;
|
|
425
|
-
--kr-shell-menu-bg: #1a2332;
|
|
426
|
-
--kr-shell-menu-border: rgba(255, 255, 255, 0.1);
|
|
427
|
-
--kr-shell-menu-hover: rgba(255, 255, 255, 0.08);
|
|
428
|
-
}
|
|
429
|
-
|
|
430
|
-
*,
|
|
431
|
-
*::before,
|
|
432
|
-
*::after {
|
|
433
|
-
box-sizing: border-box;
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
/* App Bar */
|
|
437
|
-
.appbar {
|
|
438
|
-
height: var(--kr-shell-bar-height);
|
|
439
|
-
background: var(--kr-shell-bar-bg);
|
|
440
|
-
border-bottom: 1px solid var(--kr-shell-bar-border);
|
|
441
|
-
display: flex;
|
|
442
|
-
align-items: center;
|
|
443
|
-
padding: 0 16px;
|
|
444
|
-
flex-shrink: 0;
|
|
445
|
-
z-index: 100;
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
/* Logo */
|
|
449
|
-
.appbar-logo {
|
|
450
|
-
cursor: pointer;
|
|
451
|
-
margin-right: 8px;
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
.appbar-logo img {
|
|
455
|
-
display: block;
|
|
456
|
-
max-width: 24px;
|
|
457
|
-
max-height: 24px;
|
|
458
|
-
object-fit: contain;
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
/* Divider */
|
|
462
|
-
.appbar-divider {
|
|
463
|
-
width: 1px;
|
|
464
|
-
height: 24px;
|
|
465
|
-
background: #ffffff4f;
|
|
466
|
-
margin: 0 10px;
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
/* Apps Button */
|
|
470
|
-
.appbar-apps {
|
|
471
|
-
position: relative;
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
.appbar-apps-btn {
|
|
475
|
-
width: var(--kr-shell-icon-size);
|
|
476
|
-
height: var(--kr-shell-icon-size);
|
|
477
|
-
display: flex;
|
|
478
|
-
align-items: center;
|
|
479
|
-
justify-content: center;
|
|
480
|
-
border-radius: 6px;
|
|
481
|
-
cursor: pointer;
|
|
482
|
-
color: var(--kr-shell-icon-color);
|
|
483
|
-
background: transparent;
|
|
484
|
-
border: none;
|
|
485
|
-
padding: 0;
|
|
486
|
-
transition: all 0.15s ease;
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
.appbar-apps-btn:hover {
|
|
490
|
-
color: var(--kr-shell-icon-color-hover);
|
|
491
|
-
background: var(--kr-shell-icon-bg-hover);
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
.appbar-apps-btn--open {
|
|
495
|
-
color: var(--kr-shell-icon-color-hover);
|
|
496
|
-
background: var(--kr-shell-icon-bg-hover);
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
.appbar-apps-btn__icon {
|
|
500
|
-
width: 24px;
|
|
501
|
-
height: 24px;
|
|
502
|
-
display: flex;
|
|
503
|
-
align-items: center;
|
|
504
|
-
justify-content: center;
|
|
505
|
-
color: #ffffff;
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
.appbar-apps-btn__icon svg {
|
|
509
|
-
width: 100%;
|
|
510
|
-
height: 100%;
|
|
511
|
-
fill: currentColor;
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
/* Apps Megamenu */
|
|
515
|
-
.appbar-apps-menu {
|
|
516
|
-
position: absolute;
|
|
517
|
-
left: 0;
|
|
518
|
-
top: 100%;
|
|
519
|
-
margin-top: 6px;
|
|
520
|
-
min-width: 320px;
|
|
521
|
-
min-height: 90vh;
|
|
522
|
-
max-height: calc(100vh - var(--kr-shell-bar-height));
|
|
523
|
-
background: #10172a;
|
|
524
|
-
border: 1px solid var(--kr-shell-menu-border);
|
|
525
|
-
border-top: none;
|
|
526
|
-
border-radius: 0 0 8px 8px;
|
|
527
|
-
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
528
|
-
z-index: 1000;
|
|
529
|
-
opacity: 0;
|
|
530
|
-
visibility: hidden;
|
|
531
|
-
transform: translateY(-10px);
|
|
532
|
-
transition: all 0.15s ease;
|
|
533
|
-
overflow-y: auto;
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
.appbar-apps-menu--open {
|
|
537
|
-
opacity: 1;
|
|
538
|
-
visibility: visible;
|
|
539
|
-
transform: translateY(0);
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
.appbar-apps-menu__header {
|
|
543
|
-
display: flex;
|
|
544
|
-
align-items: center;
|
|
545
|
-
justify-content: space-between;
|
|
546
|
-
padding: 16px 16px 16px 24px;
|
|
547
|
-
border-bottom: 1px solid var(--kr-shell-menu-border);
|
|
548
|
-
}
|
|
549
|
-
|
|
550
|
-
.appbar-apps-menu__title {
|
|
551
|
-
font-size: 16px;
|
|
552
|
-
font-weight: 500;
|
|
553
|
-
color: #ffffff;
|
|
554
|
-
margin: 0;
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
.appbar-apps-menu__close {
|
|
558
|
-
width: 32px;
|
|
559
|
-
height: 32px;
|
|
560
|
-
display: flex;
|
|
561
|
-
align-items: center;
|
|
562
|
-
justify-content: center;
|
|
563
|
-
background: none;
|
|
564
|
-
border: none;
|
|
565
|
-
color: rgba(255, 255, 255, 0.6);
|
|
566
|
-
cursor: pointer;
|
|
567
|
-
border-radius: 6px;
|
|
568
|
-
transition: all 0.15s ease;
|
|
569
|
-
}
|
|
570
|
-
|
|
571
|
-
.appbar-apps-menu__close:hover {
|
|
572
|
-
background: var(--kr-shell-menu-hover);
|
|
573
|
-
color: #ffffff;
|
|
574
|
-
}
|
|
575
|
-
|
|
576
|
-
.appbar-apps-menu__close svg {
|
|
577
|
-
width: 24px;
|
|
578
|
-
height: 24px;
|
|
579
|
-
fill: #ffffff;
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
.appbar-apps-menu__content {
|
|
583
|
-
padding: 16px 8px;
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
.appbar-apps-menu__list {
|
|
587
|
-
display: flex;
|
|
588
|
-
flex-direction: column;
|
|
589
|
-
gap: 2px;
|
|
590
|
-
max-width: 320px;
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
.appbar-apps-menu__item {
|
|
594
|
-
display: block;
|
|
595
|
-
width: 100%;
|
|
596
|
-
padding: 12px 16px;
|
|
597
|
-
background: none;
|
|
598
|
-
border: none;
|
|
599
|
-
color: #ffffff;
|
|
600
|
-
font-size: 14px;
|
|
601
|
-
font-family: inherit;
|
|
602
|
-
text-align: left;
|
|
603
|
-
text-decoration: none;
|
|
604
|
-
cursor: pointer;
|
|
605
|
-
border-radius: 6px;
|
|
606
|
-
transition: all 0.15s ease;
|
|
607
|
-
}
|
|
608
|
-
|
|
609
|
-
.appbar-apps-menu__item:hover {
|
|
610
|
-
background: var(--kr-shell-menu-hover);
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
.appbar-apps-menu__item--active,
|
|
614
|
-
.appbar-apps-menu__item--active:hover {
|
|
615
|
-
color: var(--kr-shell-icon-color-active);
|
|
616
|
-
}
|
|
617
|
-
|
|
618
|
-
/* Spacer to push user to the right */
|
|
619
|
-
.appbar-spacer {
|
|
620
|
-
flex: 1;
|
|
621
|
-
}
|
|
622
|
-
|
|
623
|
-
/* User Section */
|
|
624
|
-
.appbar-user {
|
|
625
|
-
position: relative;
|
|
626
|
-
margin-left: 8px;
|
|
627
|
-
}
|
|
628
|
-
|
|
629
|
-
.appbar-user__avatar {
|
|
630
|
-
width: 32px;
|
|
631
|
-
height: 32px;
|
|
632
|
-
border-radius: 50%;
|
|
633
|
-
background: #beea4e;
|
|
634
|
-
color: #0a0f1a;
|
|
635
|
-
display: flex;
|
|
636
|
-
align-items: center;
|
|
637
|
-
justify-content: center;
|
|
638
|
-
font-size: 12px;
|
|
639
|
-
font-weight: 600;
|
|
640
|
-
cursor: pointer;
|
|
641
|
-
overflow: hidden;
|
|
642
|
-
border: 2px solid transparent;
|
|
643
|
-
transition: border-color 0.15s ease;
|
|
644
|
-
}
|
|
645
|
-
|
|
646
|
-
.appbar-user__avatar:hover {
|
|
647
|
-
border-color: rgba(255, 255, 255, 0.3);
|
|
648
|
-
}
|
|
649
|
-
|
|
650
|
-
.appbar-user__avatar img {
|
|
651
|
-
width: 100%;
|
|
652
|
-
height: 100%;
|
|
653
|
-
object-fit: cover;
|
|
654
|
-
}
|
|
655
|
-
|
|
656
|
-
/* User Menu */
|
|
657
|
-
.appbar-user__menu {
|
|
658
|
-
position: absolute;
|
|
659
|
-
right: 0;
|
|
660
|
-
top: calc(100% + 8px);
|
|
661
|
-
min-width: 200px;
|
|
662
|
-
background: var(--kr-shell-menu-bg);
|
|
663
|
-
border: 1px solid var(--kr-shell-menu-border);
|
|
664
|
-
border-radius: 8px;
|
|
665
|
-
padding: 8px;
|
|
666
|
-
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
|
|
667
|
-
z-index: 1000;
|
|
668
|
-
opacity: 0;
|
|
669
|
-
visibility: hidden;
|
|
670
|
-
transform: translateY(-8px);
|
|
671
|
-
transition: all 0.15s ease;
|
|
672
|
-
}
|
|
673
|
-
|
|
674
|
-
.appbar-user__menu--open {
|
|
675
|
-
opacity: 1;
|
|
676
|
-
visibility: visible;
|
|
677
|
-
transform: translateY(0);
|
|
678
|
-
}
|
|
679
|
-
|
|
680
|
-
.appbar-user__header {
|
|
681
|
-
padding: 8px 12px 12px;
|
|
682
|
-
border-bottom: 1px solid var(--kr-shell-menu-border);
|
|
683
|
-
margin-bottom: 8px;
|
|
684
|
-
}
|
|
685
|
-
|
|
686
|
-
.appbar-user__name {
|
|
687
|
-
font-size: 14px;
|
|
688
|
-
font-weight: 600;
|
|
689
|
-
color: #ffffff;
|
|
690
|
-
margin: 0 0 2px;
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
.appbar-user__email {
|
|
694
|
-
font-size: 12px;
|
|
695
|
-
color: rgba(255, 255, 255, 0.6);
|
|
696
|
-
margin: 0;
|
|
697
|
-
}
|
|
698
|
-
|
|
699
|
-
.appbar-user__menu-item {
|
|
700
|
-
display: flex;
|
|
701
|
-
align-items: center;
|
|
702
|
-
gap: 10px;
|
|
703
|
-
width: 100%;
|
|
704
|
-
padding: 10px 12px;
|
|
705
|
-
background: none;
|
|
706
|
-
border: none;
|
|
707
|
-
color: rgba(255, 255, 255, 0.8);
|
|
708
|
-
font-size: 13px;
|
|
709
|
-
font-family: inherit;
|
|
710
|
-
text-align: left;
|
|
711
|
-
cursor: pointer;
|
|
712
|
-
border-radius: 6px;
|
|
713
|
-
transition: all 0.15s ease;
|
|
714
|
-
}
|
|
715
|
-
|
|
716
|
-
.appbar-user__menu-item:hover {
|
|
717
|
-
background: var(--kr-shell-menu-hover);
|
|
718
|
-
color: #ffffff;
|
|
719
|
-
}
|
|
720
|
-
|
|
721
|
-
.appbar-user__menu-item--danger {
|
|
722
|
-
color: #f87171;
|
|
723
|
-
}
|
|
724
|
-
|
|
725
|
-
.appbar-user__menu-item--danger:hover {
|
|
726
|
-
background: rgba(248, 113, 113, 0.1);
|
|
727
|
-
color: #f87171;
|
|
728
|
-
}
|
|
729
|
-
|
|
730
|
-
.appbar-user__menu-item__icon {
|
|
731
|
-
width: 16px;
|
|
732
|
-
height: 16px;
|
|
733
|
-
display: flex;
|
|
734
|
-
align-items: center;
|
|
735
|
-
justify-content: center;
|
|
736
|
-
flex-shrink: 0;
|
|
737
|
-
}
|
|
738
|
-
|
|
739
|
-
.appbar-user__menu-item__icon svg {
|
|
740
|
-
width: 100%;
|
|
741
|
-
height: 100%;
|
|
742
|
-
fill: currentColor;
|
|
743
|
-
}
|
|
744
|
-
|
|
745
|
-
.appbar-user__menu-divider {
|
|
746
|
-
height: 1px;
|
|
747
|
-
background: var(--kr-shell-menu-border);
|
|
748
|
-
margin: 8px 0;
|
|
749
|
-
}
|
|
750
|
-
|
|
751
|
-
/* Secondary App Bar */
|
|
752
|
-
.subbar {
|
|
753
|
-
height: 30px;
|
|
754
|
-
background: #364365;
|
|
755
|
-
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
|
|
756
|
-
display: flex;
|
|
757
|
-
align-items: center;
|
|
758
|
-
padding: 0 16px;
|
|
759
|
-
flex-shrink: 0;
|
|
760
|
-
}
|
|
761
|
-
|
|
762
|
-
.breadcrumbs {
|
|
763
|
-
display: flex;
|
|
764
|
-
align-items: center;
|
|
765
|
-
gap: 8px;
|
|
766
|
-
font-size: 12px;
|
|
767
|
-
color: #ffffff;
|
|
768
|
-
}
|
|
769
|
-
|
|
770
|
-
.breadcrumbs a {
|
|
771
|
-
color: #ffffff;
|
|
772
|
-
text-decoration: none;
|
|
773
|
-
}
|
|
774
|
-
|
|
775
|
-
.breadcrumbs a:hover {
|
|
776
|
-
text-decoration: underline;
|
|
777
|
-
}
|
|
778
|
-
|
|
779
|
-
.breadcrumbs__separator {
|
|
780
|
-
color: #ffffff;
|
|
781
|
-
}
|
|
782
|
-
|
|
783
|
-
/* Main Content */
|
|
784
|
-
.main {
|
|
785
|
-
flex: 1;
|
|
786
|
-
min-height: 0;
|
|
787
|
-
display: flex;
|
|
788
|
-
flex-direction: column;
|
|
789
|
-
overflow: hidden;
|
|
790
|
-
position: relative;
|
|
791
|
-
}
|
|
792
|
-
|
|
793
|
-
/* Click outside overlay */
|
|
794
|
-
.menu-backdrop {
|
|
795
|
-
position: fixed;
|
|
796
|
-
inset: 0;
|
|
797
|
-
z-index: 999;
|
|
798
|
-
}
|
|
799
|
-
|
|
800
|
-
/* Progress bar */
|
|
801
|
-
.progress {
|
|
802
|
-
position: fixed;
|
|
803
|
-
top: 0;
|
|
804
|
-
left: 0;
|
|
805
|
-
right: 0;
|
|
806
|
-
height: 4px;
|
|
807
|
-
overflow-x: hidden;
|
|
808
|
-
z-index: 1000;
|
|
809
|
-
display: none;
|
|
810
|
-
}
|
|
811
|
-
|
|
812
|
-
.progress--loading {
|
|
813
|
-
display: block;
|
|
814
|
-
}
|
|
815
|
-
|
|
816
|
-
.progress__track {
|
|
817
|
-
position: absolute;
|
|
818
|
-
top: 0;
|
|
819
|
-
bottom: 0;
|
|
820
|
-
width: 100%;
|
|
821
|
-
background: rgb(190 234 78 / 50%); // rgba(190, 234, 78, 0.3);
|
|
822
|
-
}
|
|
823
|
-
|
|
824
|
-
.progress__bar {
|
|
825
|
-
position: absolute;
|
|
826
|
-
top: 0;
|
|
827
|
-
bottom: 0;
|
|
828
|
-
width: 100%;
|
|
829
|
-
transform-origin: left center;
|
|
830
|
-
}
|
|
831
|
-
|
|
832
|
-
.progress__bar-inner {
|
|
833
|
-
display: inline-block;
|
|
834
|
-
position: absolute;
|
|
835
|
-
width: 100%;
|
|
836
|
-
height: 100%;
|
|
837
|
-
background: #beea4e;
|
|
838
|
-
}
|
|
839
|
-
|
|
840
|
-
.progress__bar--primary {
|
|
841
|
-
left: -145.166611%;
|
|
842
|
-
}
|
|
843
|
-
|
|
844
|
-
.progress--loading .progress__bar--primary {
|
|
845
|
-
animation: progress-primary-translate 2s infinite linear;
|
|
846
|
-
}
|
|
847
|
-
|
|
848
|
-
.progress--loading .progress__bar--primary .progress__bar-inner {
|
|
849
|
-
animation: progress-primary-scale 2s infinite linear;
|
|
850
|
-
}
|
|
851
|
-
|
|
852
|
-
.progress__bar--secondary {
|
|
853
|
-
left: -54.888891%;
|
|
854
|
-
}
|
|
855
|
-
|
|
856
|
-
.progress--loading .progress__bar--secondary {
|
|
857
|
-
animation: progress-secondary-translate 2s infinite linear;
|
|
858
|
-
}
|
|
859
|
-
|
|
860
|
-
.progress--loading .progress__bar--secondary .progress__bar-inner {
|
|
861
|
-
animation: progress-secondary-scale 2s infinite linear;
|
|
862
|
-
}
|
|
863
|
-
|
|
864
|
-
@keyframes progress-primary-translate {
|
|
865
|
-
0% {
|
|
866
|
-
transform: translateX(0);
|
|
867
|
-
}
|
|
868
|
-
20% {
|
|
869
|
-
animation-timing-function: cubic-bezier(0.5, 0, 0.701732, 0.495819);
|
|
870
|
-
transform: translateX(0);
|
|
871
|
-
}
|
|
872
|
-
59.15% {
|
|
873
|
-
animation-timing-function: cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);
|
|
874
|
-
transform: translateX(83.67142%);
|
|
875
|
-
}
|
|
876
|
-
100% {
|
|
877
|
-
transform: translateX(200.611057%);
|
|
878
|
-
}
|
|
879
|
-
}
|
|
880
|
-
|
|
881
|
-
@keyframes progress-primary-scale {
|
|
882
|
-
0% {
|
|
883
|
-
transform: scaleX(0.08);
|
|
884
|
-
}
|
|
885
|
-
36.65% {
|
|
886
|
-
animation-timing-function: cubic-bezier(0.334731, 0.12482, 0.785844, 1);
|
|
887
|
-
transform: scaleX(0.08);
|
|
888
|
-
}
|
|
889
|
-
69.15% {
|
|
890
|
-
animation-timing-function: cubic-bezier(0.06, 0.11, 0.6, 1);
|
|
891
|
-
transform: scaleX(0.661479);
|
|
892
|
-
}
|
|
893
|
-
100% {
|
|
894
|
-
transform: scaleX(0.08);
|
|
895
|
-
}
|
|
896
|
-
}
|
|
897
|
-
|
|
898
|
-
@keyframes progress-secondary-translate {
|
|
899
|
-
0% {
|
|
900
|
-
animation-timing-function: cubic-bezier(0.15, 0, 0.515058, 0.409685);
|
|
901
|
-
transform: translateX(0);
|
|
902
|
-
}
|
|
903
|
-
25% {
|
|
904
|
-
animation-timing-function: cubic-bezier(0.31033, 0.284058, 0.8, 0.733712);
|
|
905
|
-
transform: translateX(37.651913%);
|
|
906
|
-
}
|
|
907
|
-
48.35% {
|
|
908
|
-
animation-timing-function: cubic-bezier(0.4, 0.627035, 0.6, 0.902026);
|
|
909
|
-
transform: translateX(84.386165%);
|
|
910
|
-
}
|
|
911
|
-
100% {
|
|
912
|
-
transform: translateX(160.277782%);
|
|
913
|
-
}
|
|
914
|
-
}
|
|
915
|
-
|
|
916
|
-
@keyframes progress-secondary-scale {
|
|
917
|
-
0% {
|
|
918
|
-
animation-timing-function: cubic-bezier(0.205028, 0.057051, 0.57661, 0.453971);
|
|
919
|
-
transform: scaleX(0.08);
|
|
920
|
-
}
|
|
921
|
-
19.15% {
|
|
922
|
-
animation-timing-function: cubic-bezier(0.152313, 0.196432, 0.648374, 1.004315);
|
|
923
|
-
transform: scaleX(0.457104);
|
|
924
|
-
}
|
|
925
|
-
44.15% {
|
|
926
|
-
animation-timing-function: cubic-bezier(0.257759, -0.003163, 0.211762, 1.38179);
|
|
927
|
-
transform: scaleX(0.72796);
|
|
928
|
-
}
|
|
929
|
-
100% {
|
|
930
|
-
transform: scaleX(0.08);
|
|
931
|
-
}
|
|
932
|
-
}
|
|
933
|
-
|
|
934
|
-
.footer {
|
|
935
|
-
background: var(--kr-shell-bar-bg);
|
|
936
|
-
border-top: 1px solid var(--kr-shell-bar-border);
|
|
937
|
-
padding: 8px 16px;
|
|
938
|
-
flex-shrink: 0;
|
|
939
|
-
}
|
|
940
|
-
|
|
941
|
-
.footer-content {
|
|
942
|
-
display: flex;
|
|
943
|
-
justify-content: flex-end;
|
|
944
|
-
align-items: center;
|
|
945
|
-
gap: 36px;
|
|
946
|
-
}
|
|
947
|
-
|
|
948
|
-
.footer-info {
|
|
949
|
-
font-size: 12px;
|
|
950
|
-
color: rgba(255, 255, 255, 0.7);
|
|
951
|
-
}
|
|
952
|
-
|
|
953
|
-
.footer-link {
|
|
954
|
-
color: rgba(255, 255, 255, 0.7);
|
|
955
|
-
text-decoration: none;
|
|
956
|
-
font-size: 12px;
|
|
957
|
-
}
|
|
958
|
-
|
|
959
|
-
.footer-link:hover {
|
|
960
|
-
color: #ffffff;
|
|
961
|
-
text-decoration: underline;
|
|
962
|
-
}
|
|
963
|
-
|
|
964
|
-
.footer-chat {
|
|
965
|
-
display: flex;
|
|
966
|
-
align-items: center;
|
|
967
|
-
gap: 6px;
|
|
968
|
-
font-size: 14px;
|
|
969
|
-
color: #beea4e;
|
|
970
|
-
cursor: pointer;
|
|
971
|
-
background: none;
|
|
972
|
-
border: none;
|
|
973
|
-
border-radius: 4px;
|
|
974
|
-
font-family: inherit;
|
|
975
|
-
transition: background 0.15s ease;
|
|
976
|
-
}
|
|
977
|
-
|
|
978
|
-
.footer-chat:hover {
|
|
979
|
-
background: rgba(255, 255, 255, 0.08);
|
|
980
|
-
}
|
|
981
|
-
|
|
982
|
-
.footer-chat__icon {
|
|
983
|
-
width: 16px;
|
|
984
|
-
height: 16px;
|
|
985
|
-
display: flex;
|
|
986
|
-
align-items: center;
|
|
987
|
-
justify-content: center;
|
|
988
|
-
}
|
|
58
|
+
* Copyright 2017 Google LLC
|
|
59
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
60
|
+
*/let e$1 = class e extends i{constructor(i){if(super(i),this.it=A,i.type!==t.CHILD)throw Error(this.constructor.directiveName+"() can only be used in child bindings")}render(r){if(r===A||null==r)return this._t=void 0,this.it=r;if(r===E)return r;if("string"!=typeof r)throw Error(this.constructor.directiveName+"() called with a non-string value");if(r===this.it)return this._t;this.it=r;const s=[r];return s.raw=s,this._t={_$litType$:this.constructor.resultType,strings:s,values:[]}}};e$1.directiveName="unsafeHTML",e$1.resultType=1;const o=e$2(e$1);
|
|
989
61
|
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
`;
|
|
996
|
-
__decorate$5([
|
|
997
|
-
n({ type: String })
|
|
998
|
-
], KRShell.prototype, "logo", void 0);
|
|
999
|
-
__decorate$5([
|
|
1000
|
-
n({ type: Array })
|
|
1001
|
-
], KRShell.prototype, "apps", void 0);
|
|
1002
|
-
__decorate$5([
|
|
1003
|
-
n({ type: String, attribute: 'active-app-id' })
|
|
1004
|
-
], KRShell.prototype, "activeAppId", void 0);
|
|
1005
|
-
__decorate$5([
|
|
1006
|
-
n({ type: Object })
|
|
1007
|
-
], KRShell.prototype, "user", void 0);
|
|
1008
|
-
__decorate$5([
|
|
1009
|
-
n({ type: Array, attribute: 'menu-items' })
|
|
1010
|
-
], KRShell.prototype, "menuItems", void 0);
|
|
1011
|
-
__decorate$5([
|
|
1012
|
-
r()
|
|
1013
|
-
], KRShell.prototype, "isUserMenuOpen", void 0);
|
|
1014
|
-
__decorate$5([
|
|
1015
|
-
r()
|
|
1016
|
-
], KRShell.prototype, "isAppsMenuOpen", void 0);
|
|
1017
|
-
__decorate$5([
|
|
1018
|
-
r()
|
|
1019
|
-
], KRShell.prototype, "pendingRequests", void 0);
|
|
1020
|
-
KRShell = __decorate$5([
|
|
1021
|
-
t$1('kr-shell')
|
|
1022
|
-
], KRShell);
|
|
62
|
+
/**
|
|
63
|
+
* @license
|
|
64
|
+
* Copyright 2018 Google LLC
|
|
65
|
+
* SPDX-License-Identifier: BSD-3-Clause
|
|
66
|
+
*/const e=e$2(class extends i{constructor(t$1){if(super(t$1),t$1.type!==t.ATTRIBUTE||"class"!==t$1.name||t$1.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(t){return " "+Object.keys(t).filter(s=>t[s]).join(" ")+" "}update(s,[i]){if(void 0===this.st){this.st=new Set,void 0!==s.strings&&(this.nt=new Set(s.strings.join(" ").split(/\s/).filter(t=>""!==t)));for(const t in i)i[t]&&!this.nt?.has(t)&&this.st.add(t);return this.render(i)}const r=s.element.classList;for(const t of this.st)t in i||(r.remove(t),this.st.delete(t));for(const t in i){const s=!!i[t];s===this.st.has(t)||this.nt?.has(t)||(s?(r.add(t),this.st.add(t)):(r.remove(t),this.st.delete(t)));}return E}});
|
|
1023
67
|
|
|
1024
68
|
var __decorate$4 = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
1025
69
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -2215,7 +1259,7 @@ let KRScaffold = class KRScaffold extends i$1 {
|
|
|
2215
1259
|
const children = this.getNavItemChildren(item.id);
|
|
2216
1260
|
return b `
|
|
2217
1261
|
<button
|
|
2218
|
-
class=${e
|
|
1262
|
+
class=${e({
|
|
2219
1263
|
'nav-item': true,
|
|
2220
1264
|
'nav-item--expanded': this.navItemsExpanded.has(item.id),
|
|
2221
1265
|
'nav-item--hidden': this.isEditing && item.active === false,
|
|
@@ -2240,7 +1284,7 @@ let KRScaffold = class KRScaffold extends i$1 {
|
|
|
2240
1284
|
<path d="M6 9l6 6 6-6" stroke-linecap="round" stroke-linejoin="round" />
|
|
2241
1285
|
</svg>
|
|
2242
1286
|
</button>
|
|
2243
|
-
<div class=${e
|
|
1287
|
+
<div class=${e({
|
|
2244
1288
|
'nav-group': true,
|
|
2245
1289
|
'nav-group--expanded': this.navItemsExpanded.has(item.id),
|
|
2246
1290
|
})}>
|
|
@@ -2250,7 +1294,7 @@ let KRScaffold = class KRScaffold extends i$1 {
|
|
|
2250
1294
|
}
|
|
2251
1295
|
return b `
|
|
2252
1296
|
<a
|
|
2253
|
-
class=${e
|
|
1297
|
+
class=${e({
|
|
2254
1298
|
'nav-item': true,
|
|
2255
1299
|
'nav-item--active': this.activeNavItemId === item.id,
|
|
2256
1300
|
'nav-item--hidden': this.isEditing && item.active === false,
|
|
@@ -2275,7 +1319,7 @@ let KRScaffold = class KRScaffold extends i$1 {
|
|
|
2275
1319
|
// Use unfiltered count to determine if search should show (so it doesn't disappear while typing)
|
|
2276
1320
|
const totalTopLevelItems = this.getComputedNav().filter(item => item.parentId === null).length;
|
|
2277
1321
|
return b `
|
|
2278
|
-
<div class=${e
|
|
1322
|
+
<div class=${e({
|
|
2279
1323
|
'progress': true,
|
|
2280
1324
|
'progress--loading': this.pendingRequests > 0,
|
|
2281
1325
|
})}>
|
|
@@ -2295,7 +1339,7 @@ let KRScaffold = class KRScaffold extends i$1 {
|
|
|
2295
1339
|
` : A}
|
|
2296
1340
|
|
|
2297
1341
|
<div class="wrapper">
|
|
2298
|
-
<nav class=${e
|
|
1342
|
+
<nav class=${e({
|
|
2299
1343
|
'nav': true,
|
|
2300
1344
|
'nav--scrolled': this.isNavScrolled,
|
|
2301
1345
|
'nav--opened': !this.subbar || this.isNavOpened,
|
|
@@ -3269,8 +2313,8 @@ KRScreenNav.styles = i$4 `
|
|
|
3269
2313
|
|
|
3270
2314
|
.nav {
|
|
3271
2315
|
width: 200px;
|
|
3272
|
-
background:
|
|
3273
|
-
|
|
2316
|
+
background: white;
|
|
2317
|
+
border-right: 1px solid #e5e7eb;
|
|
3274
2318
|
display: flex;
|
|
3275
2319
|
flex-direction: column;
|
|
3276
2320
|
flex-shrink: 0;
|
|
@@ -3287,7 +2331,7 @@ KRScreenNav.styles = i$4 `
|
|
|
3287
2331
|
}
|
|
3288
2332
|
|
|
3289
2333
|
.nav-header__title {
|
|
3290
|
-
font-size:
|
|
2334
|
+
font-size: 18px;
|
|
3291
2335
|
font-weight: 600;
|
|
3292
2336
|
color: #111827;
|
|
3293
2337
|
white-space: nowrap;
|
|
@@ -3562,7 +2606,7 @@ let KRSubbar = class KRSubbar extends i$1 {
|
|
|
3562
2606
|
return b `
|
|
3563
2607
|
${index > 0 ? b `<span class="breadcrumb-separator">/</span>` : ''}
|
|
3564
2608
|
<a
|
|
3565
|
-
class=${e
|
|
2609
|
+
class=${e({ 'breadcrumb': true, 'breadcrumb--current': isCurrent })}
|
|
3566
2610
|
href=${this.resolveUrl(crumb)}
|
|
3567
2611
|
@click=${(e) => this._handleBreadcrumbClick(e, crumb, isCurrent)}
|
|
3568
2612
|
>${crumb.label}</a>
|
|
@@ -3653,5 +2697,5 @@ KRSubbar = __decorate([
|
|
|
3653
2697
|
t$1('kr-subbar')
|
|
3654
2698
|
], KRSubbar);
|
|
3655
2699
|
|
|
3656
|
-
export { KRScaffold, KRScreenDetail, KRScreenNav,
|
|
2700
|
+
export { KRScaffold, KRScreenDetail, KRScreenNav, KRSubbar };
|
|
3657
2701
|
//# sourceMappingURL=krubble-app.bundled.js.map
|