@ismail-elkorchi/ui-shell 0.1.0 → 0.1.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.
- package/README.md +71 -68
- package/dist/custom-elements.json +1039 -0
- package/dist/index.d.ts +8 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/register.d.ts +5 -5
- package/dist/register.d.ts.map +1 -1
- package/dist/register.js +5 -5
- package/dist/register.js.map +1 -1
- package/dist/src/internal/light-dom-slot-controller.d.ts +22 -0
- package/dist/src/internal/light-dom-slot-controller.d.ts.map +1 -0
- package/dist/src/internal/light-dom-slot-controller.js +91 -0
- package/dist/src/internal/light-dom-slot-controller.js.map +1 -0
- package/dist/src/internal/router.d.ts +36 -0
- package/dist/src/internal/router.d.ts.map +1 -0
- package/dist/{router.js → src/internal/router.js} +26 -19
- package/dist/src/internal/router.js.map +1 -0
- package/dist/src/structures/uik-shell-activity-bar-contract.d.ts +10 -0
- package/dist/src/structures/uik-shell-activity-bar-contract.d.ts.map +1 -0
- package/dist/src/structures/uik-shell-activity-bar-contract.js +2 -0
- package/dist/src/structures/uik-shell-activity-bar-contract.js.map +1 -0
- package/dist/src/structures/uik-shell-activity-bar.d.ts +30 -0
- package/dist/src/structures/uik-shell-activity-bar.d.ts.map +1 -0
- package/dist/src/structures/uik-shell-activity-bar.js +272 -0
- package/dist/src/structures/uik-shell-activity-bar.js.map +1 -0
- package/dist/src/structures/uik-shell-layout.d.ts +16 -0
- package/dist/src/structures/uik-shell-layout.d.ts.map +1 -0
- package/dist/src/structures/uik-shell-layout.js +123 -0
- package/dist/src/structures/uik-shell-layout.js.map +1 -0
- package/dist/src/structures/uik-shell-secondary-sidebar.d.ts +21 -0
- package/dist/src/structures/uik-shell-secondary-sidebar.d.ts.map +1 -0
- package/dist/src/structures/uik-shell-secondary-sidebar.js +169 -0
- package/dist/src/structures/uik-shell-secondary-sidebar.js.map +1 -0
- package/dist/src/structures/uik-shell-sidebar.d.ts +21 -0
- package/dist/src/structures/uik-shell-sidebar.d.ts.map +1 -0
- package/dist/src/structures/uik-shell-sidebar.js +176 -0
- package/dist/src/structures/uik-shell-sidebar.js.map +1 -0
- package/dist/src/structures/uik-shell-status-bar.d.ts +23 -0
- package/dist/src/structures/uik-shell-status-bar.d.ts.map +1 -0
- package/dist/src/structures/uik-shell-status-bar.js +144 -0
- package/dist/src/structures/uik-shell-status-bar.js.map +1 -0
- package/package.json +31 -27
- package/dist/ActivityBar.d.ts +0 -25
- package/dist/ActivityBar.d.ts.map +0 -1
- package/dist/ActivityBar.js +0 -81
- package/dist/ActivityBar.js.map +0 -1
- package/dist/AppShellLayout.d.ts +0 -17
- package/dist/AppShellLayout.d.ts.map +0 -1
- package/dist/AppShellLayout.js +0 -66
- package/dist/AppShellLayout.js.map +0 -1
- package/dist/SecondarySidebar.d.ts +0 -18
- package/dist/SecondarySidebar.d.ts.map +0 -1
- package/dist/SecondarySidebar.js +0 -84
- package/dist/SecondarySidebar.js.map +0 -1
- package/dist/Sidebar.d.ts +0 -20
- package/dist/Sidebar.d.ts.map +0 -1
- package/dist/Sidebar.js +0 -105
- package/dist/Sidebar.js.map +0 -1
- package/dist/Statusbar.d.ts +0 -19
- package/dist/Statusbar.d.ts.map +0 -1
- package/dist/Statusbar.js +0 -73
- package/dist/Statusbar.js.map +0 -1
- package/dist/router.d.ts +0 -36
- package/dist/router.d.ts.map +0 -1
- package/dist/router.js.map +0 -1
- package/dist/tailwind-source.css +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uik-shell-sidebar.d.ts","sourceRoot":"","sources":["../../../src/structures/uik-shell-sidebar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAgB,MAAM,KAAK,CAAC;AAI9C,OAAO,8CAA8C,CAAC;AAItD,qBACa,eAAgB,SAAQ,UAAU;IACnB,QAAQ,CAAC,OAAO,SAAM;IACtB,QAAQ,CAAC,QAAQ,SAAM;IACtB,QAAQ,CAAC,YAAY,UAAQ;IAC7B,QAAQ,CAAC,gBAAgB,UAAQ;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAC5C,OAAO,CAAC,cAAc,CAAC,CAAyB;IAEvC,iBAAiB;IAsBjB,oBAAoB;IAKpB,YAAY;IAIZ,gBAAgB;IAIhB,MAAM;CAiGhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,eAAe,CAAC;KACtC;CACF"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, html, nothing } from 'lit';
|
|
8
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
|
9
|
+
import { styleMap } from 'lit/directives/style-map.js';
|
|
10
|
+
import '@ismail-elkorchi/ui-primitives/uik-separator';
|
|
11
|
+
import { ensureLightDomRoot, LightDomSlotController } from '../internal/light-dom-slot-controller';
|
|
12
|
+
let UikShellSidebar = class UikShellSidebar extends LitElement {
|
|
13
|
+
#heading_accessor_storage = '';
|
|
14
|
+
get heading() { return this.#heading_accessor_storage; }
|
|
15
|
+
set heading(value) { this.#heading_accessor_storage = value; }
|
|
16
|
+
#subtitle_accessor_storage = '';
|
|
17
|
+
get subtitle() { return this.#subtitle_accessor_storage; }
|
|
18
|
+
set subtitle(value) { this.#subtitle_accessor_storage = value; }
|
|
19
|
+
#isBodyPadded_accessor_storage = true;
|
|
20
|
+
get isBodyPadded() { return this.#isBodyPadded_accessor_storage; }
|
|
21
|
+
set isBodyPadded(value) { this.#isBodyPadded_accessor_storage = value; }
|
|
22
|
+
#isBodyScrollable_accessor_storage = true;
|
|
23
|
+
get isBodyScrollable() { return this.#isBodyScrollable_accessor_storage; }
|
|
24
|
+
set isBodyScrollable(value) { this.#isBodyScrollable_accessor_storage = value; }
|
|
25
|
+
#hasFooter_accessor_storage = false;
|
|
26
|
+
get hasFooter() { return this.#hasFooter_accessor_storage; }
|
|
27
|
+
set hasFooter(value) { this.#hasFooter_accessor_storage = value; }
|
|
28
|
+
slotController;
|
|
29
|
+
connectedCallback() {
|
|
30
|
+
super.connectedCallback();
|
|
31
|
+
if (!this.style.display)
|
|
32
|
+
this.style.display = 'block';
|
|
33
|
+
if (!this.style.boxSizing)
|
|
34
|
+
this.style.boxSizing = 'border-box';
|
|
35
|
+
if (!this.style.height)
|
|
36
|
+
this.style.height = '100%';
|
|
37
|
+
this.slotController ??= new LightDomSlotController(this, '[data-shell-root]', [
|
|
38
|
+
{ name: 'actions', containerSelector: '[data-shell-slot="actions"]' },
|
|
39
|
+
{ name: null, containerSelector: '[data-shell-slot="default"]' },
|
|
40
|
+
{ name: 'footer', containerSelector: '[data-shell-slot="footer"]' },
|
|
41
|
+
], root => {
|
|
42
|
+
const footerContainer = root.querySelector('[data-shell-slot="footer"]');
|
|
43
|
+
const nextHasFooter = !!footerContainer?.querySelector('[slot="footer"]');
|
|
44
|
+
if (nextHasFooter !== this.hasFooter)
|
|
45
|
+
this.hasFooter = nextHasFooter;
|
|
46
|
+
});
|
|
47
|
+
this.slotController.connect();
|
|
48
|
+
}
|
|
49
|
+
disconnectedCallback() {
|
|
50
|
+
this.slotController?.disconnect();
|
|
51
|
+
super.disconnectedCallback();
|
|
52
|
+
}
|
|
53
|
+
firstUpdated() {
|
|
54
|
+
this.slotController?.sync();
|
|
55
|
+
}
|
|
56
|
+
createRenderRoot() {
|
|
57
|
+
return ensureLightDomRoot(this);
|
|
58
|
+
}
|
|
59
|
+
render() {
|
|
60
|
+
const sidebarStyles = {
|
|
61
|
+
width: 'var(--uik-component-shell-sidebar-width)',
|
|
62
|
+
backgroundColor: 'oklch(var(--uik-component-shell-sidebar-bg))',
|
|
63
|
+
color: 'oklch(var(--uik-component-shell-sidebar-fg))',
|
|
64
|
+
borderRight: 'var(--uik-border-width-1) solid oklch(var(--uik-component-shell-divider-color))',
|
|
65
|
+
display: 'flex',
|
|
66
|
+
flexDirection: 'column',
|
|
67
|
+
flexShrink: '0',
|
|
68
|
+
height: '100%',
|
|
69
|
+
boxSizing: 'border-box',
|
|
70
|
+
};
|
|
71
|
+
const headerStyles = {
|
|
72
|
+
height: 'var(--uik-size-control-md)',
|
|
73
|
+
paddingInline: 'var(--uik-space-4)',
|
|
74
|
+
display: 'flex',
|
|
75
|
+
alignItems: 'center',
|
|
76
|
+
justifyContent: 'space-between',
|
|
77
|
+
flexShrink: '0',
|
|
78
|
+
userSelect: 'none',
|
|
79
|
+
};
|
|
80
|
+
const headingStyles = {
|
|
81
|
+
fontSize: 'var(--uik-typography-font-size-1)',
|
|
82
|
+
fontWeight: 'var(--uik-typography-font-weight-bold)',
|
|
83
|
+
letterSpacing: 'var(--uik-typography-letter-spacing-wide)',
|
|
84
|
+
lineHeight: 'var(--uik-typography-line-height-2)',
|
|
85
|
+
color: 'oklch(var(--uik-text-muted))',
|
|
86
|
+
textTransform: 'uppercase',
|
|
87
|
+
overflow: 'hidden',
|
|
88
|
+
textOverflow: 'ellipsis',
|
|
89
|
+
whiteSpace: 'nowrap',
|
|
90
|
+
};
|
|
91
|
+
const subtitleStyles = {
|
|
92
|
+
fontSize: 'var(--uik-typography-font-size-1)',
|
|
93
|
+
lineHeight: 'var(--uik-typography-line-height-2)',
|
|
94
|
+
color: 'oklch(var(--uik-text-muted))',
|
|
95
|
+
overflow: 'hidden',
|
|
96
|
+
textOverflow: 'ellipsis',
|
|
97
|
+
whiteSpace: 'nowrap',
|
|
98
|
+
};
|
|
99
|
+
const actionsStyles = {
|
|
100
|
+
display: 'flex',
|
|
101
|
+
alignItems: 'center',
|
|
102
|
+
gap: 'var(--uik-space-1)',
|
|
103
|
+
};
|
|
104
|
+
const bodyContainerStyles = {
|
|
105
|
+
display: 'flex',
|
|
106
|
+
flexDirection: 'column',
|
|
107
|
+
flex: '1 1 auto',
|
|
108
|
+
minHeight: 'var(--uik-space-0)',
|
|
109
|
+
overflow: 'hidden',
|
|
110
|
+
};
|
|
111
|
+
const bodyStyles = {
|
|
112
|
+
padding: this.isBodyPadded ? 'var(--uik-space-3)' : 'var(--uik-space-0)',
|
|
113
|
+
gap: 'var(--uik-space-3)',
|
|
114
|
+
display: 'flex',
|
|
115
|
+
flexDirection: 'column',
|
|
116
|
+
flex: '1 1 auto',
|
|
117
|
+
minHeight: 'var(--uik-space-0)',
|
|
118
|
+
boxSizing: 'border-box',
|
|
119
|
+
overflowY: this.isBodyScrollable ? 'auto' : 'visible',
|
|
120
|
+
scrollbarColor: this.isBodyScrollable
|
|
121
|
+
? 'oklch(var(--uik-component-shell-scrollbar-thumb)) oklch(var(--uik-component-shell-scrollbar-track))'
|
|
122
|
+
: '',
|
|
123
|
+
scrollbarWidth: this.isBodyScrollable ? 'thin' : '',
|
|
124
|
+
};
|
|
125
|
+
const footerStyles = {
|
|
126
|
+
padding: 'var(--uik-space-3)',
|
|
127
|
+
backgroundColor: 'oklch(var(--uik-surface-card))',
|
|
128
|
+
};
|
|
129
|
+
return html `
|
|
130
|
+
<aside part="sidebar" data-region="primary-sidebar" style=${styleMap(sidebarStyles)}>
|
|
131
|
+
<div part="header" style=${styleMap(headerStyles)}>
|
|
132
|
+
<div part="header-content" style=${styleMap({ minWidth: 'var(--uik-space-0)' })}>
|
|
133
|
+
${this.heading ? html `<div part="heading" style=${styleMap(headingStyles)}>${this.heading}</div>` : nothing}
|
|
134
|
+
${this.subtitle ? html `<div part="subtitle" style=${styleMap(subtitleStyles)}>${this.subtitle}</div>` : nothing}
|
|
135
|
+
</div>
|
|
136
|
+
<div part="actions" style=${styleMap(actionsStyles)} data-shell-slot="actions">
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
<uik-separator
|
|
140
|
+
orientation="horizontal"
|
|
141
|
+
style="--uik-separator-color: var(--uik-component-shell-divider-color);"></uik-separator>
|
|
142
|
+
<div part="body-container" style=${styleMap(bodyContainerStyles)}>
|
|
143
|
+
<div part="body" style=${styleMap(bodyStyles)} data-shell-slot="default">
|
|
144
|
+
</div>
|
|
145
|
+
<div ?hidden=${!this.hasFooter}>
|
|
146
|
+
<uik-separator
|
|
147
|
+
orientation="horizontal"
|
|
148
|
+
style="--uik-separator-color: var(--uik-component-shell-divider-color);"></uik-separator>
|
|
149
|
+
<div part="footer" style=${styleMap(footerStyles)} data-shell-slot="footer">
|
|
150
|
+
</div>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
</aside>
|
|
154
|
+
`;
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
__decorate([
|
|
158
|
+
property({ type: String })
|
|
159
|
+
], UikShellSidebar.prototype, "heading", null);
|
|
160
|
+
__decorate([
|
|
161
|
+
property({ type: String })
|
|
162
|
+
], UikShellSidebar.prototype, "subtitle", null);
|
|
163
|
+
__decorate([
|
|
164
|
+
property({ type: Boolean })
|
|
165
|
+
], UikShellSidebar.prototype, "isBodyPadded", null);
|
|
166
|
+
__decorate([
|
|
167
|
+
property({ type: Boolean })
|
|
168
|
+
], UikShellSidebar.prototype, "isBodyScrollable", null);
|
|
169
|
+
__decorate([
|
|
170
|
+
state()
|
|
171
|
+
], UikShellSidebar.prototype, "hasFooter", null);
|
|
172
|
+
UikShellSidebar = __decorate([
|
|
173
|
+
customElement('uik-shell-sidebar')
|
|
174
|
+
], UikShellSidebar);
|
|
175
|
+
export { UikShellSidebar };
|
|
176
|
+
//# sourceMappingURL=uik-shell-sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uik-shell-sidebar.js","sourceRoot":"","sources":["../../../src/structures/uik-shell-sidebar.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
import '@ismail-elkorchi/ui-primitives/uik-badge';
|
|
3
|
+
type StatusBarTone = 'info' | 'success' | 'danger' | 'muted';
|
|
4
|
+
export declare class UikShellStatusBar extends LitElement {
|
|
5
|
+
accessor message: string;
|
|
6
|
+
accessor tone: StatusBarTone;
|
|
7
|
+
accessor meta: string;
|
|
8
|
+
private accessor hasMetaSlot;
|
|
9
|
+
private slotController?;
|
|
10
|
+
connectedCallback(): void;
|
|
11
|
+
disconnectedCallback(): void;
|
|
12
|
+
firstUpdated(): void;
|
|
13
|
+
createRenderRoot(): HTMLElement;
|
|
14
|
+
private getToneColor;
|
|
15
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
16
|
+
}
|
|
17
|
+
declare global {
|
|
18
|
+
interface HTMLElementTagNameMap {
|
|
19
|
+
'uik-shell-status-bar': UikShellStatusBar;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=uik-shell-status-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uik-shell-status-bar.d.ts","sourceRoot":"","sources":["../../../src/structures/uik-shell-status-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAgB,MAAM,KAAK,CAAC;AAI9C,OAAO,0CAA0C,CAAC;AAIlD,KAAK,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE7D,qBACa,iBAAkB,SAAQ,UAAU;IACrB,QAAQ,CAAC,OAAO,SAAW;IAC3B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAU;IACtC,QAAQ,CAAC,IAAI,SAAM;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAC9C,OAAO,CAAC,cAAc,CAAC,CAAyB;IAEvC,iBAAiB;IAyBjB,oBAAoB;IAKpB,YAAY;IAIZ,gBAAgB;IAIzB,OAAO,CAAC,YAAY;IAqBX,MAAM;CAiDhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,iBAAiB,CAAC;KAC3C;CACF"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, html, nothing } from 'lit';
|
|
8
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
|
9
|
+
import { styleMap } from 'lit/directives/style-map.js';
|
|
10
|
+
import '@ismail-elkorchi/ui-primitives/uik-badge';
|
|
11
|
+
import { ensureLightDomRoot, LightDomSlotController } from '../internal/light-dom-slot-controller';
|
|
12
|
+
let UikShellStatusBar = class UikShellStatusBar extends LitElement {
|
|
13
|
+
#message_accessor_storage = 'Ready';
|
|
14
|
+
get message() { return this.#message_accessor_storage; }
|
|
15
|
+
set message(value) { this.#message_accessor_storage = value; }
|
|
16
|
+
#tone_accessor_storage = 'info';
|
|
17
|
+
get tone() { return this.#tone_accessor_storage; }
|
|
18
|
+
set tone(value) { this.#tone_accessor_storage = value; }
|
|
19
|
+
#meta_accessor_storage = '';
|
|
20
|
+
get meta() { return this.#meta_accessor_storage; }
|
|
21
|
+
set meta(value) { this.#meta_accessor_storage = value; }
|
|
22
|
+
#hasMetaSlot_accessor_storage = false;
|
|
23
|
+
get hasMetaSlot() { return this.#hasMetaSlot_accessor_storage; }
|
|
24
|
+
set hasMetaSlot(value) { this.#hasMetaSlot_accessor_storage = value; }
|
|
25
|
+
slotController;
|
|
26
|
+
connectedCallback() {
|
|
27
|
+
super.connectedCallback();
|
|
28
|
+
if (!this.style.display)
|
|
29
|
+
this.style.display = 'block';
|
|
30
|
+
if (!this.style.boxSizing)
|
|
31
|
+
this.style.boxSizing = 'border-box';
|
|
32
|
+
if (!this.style.width)
|
|
33
|
+
this.style.width = '100%';
|
|
34
|
+
this.slotController ??= new LightDomSlotController(this, '[data-shell-root]', [
|
|
35
|
+
{ name: 'actions', containerSelector: '[data-shell-slot="actions"]' },
|
|
36
|
+
{ name: 'meta', containerSelector: '[data-shell-slot="meta"]' },
|
|
37
|
+
], root => {
|
|
38
|
+
const metaContainer = root.querySelector('[data-shell-slot="meta"]');
|
|
39
|
+
const hasMeta = !!metaContainer?.querySelector('[slot="meta"]');
|
|
40
|
+
if (hasMeta !== this.hasMetaSlot)
|
|
41
|
+
this.hasMetaSlot = hasMeta;
|
|
42
|
+
if (hasMeta) {
|
|
43
|
+
const fallback = root.querySelector('[data-shell-fallback="meta"]');
|
|
44
|
+
fallback?.remove();
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
this.slotController.connect();
|
|
48
|
+
}
|
|
49
|
+
disconnectedCallback() {
|
|
50
|
+
this.slotController?.disconnect();
|
|
51
|
+
super.disconnectedCallback();
|
|
52
|
+
}
|
|
53
|
+
firstUpdated() {
|
|
54
|
+
this.slotController?.sync();
|
|
55
|
+
}
|
|
56
|
+
createRenderRoot() {
|
|
57
|
+
return ensureLightDomRoot(this);
|
|
58
|
+
}
|
|
59
|
+
getToneColor() {
|
|
60
|
+
switch (this.tone) {
|
|
61
|
+
case 'info': {
|
|
62
|
+
return 'oklch(var(--uik-text-info))';
|
|
63
|
+
}
|
|
64
|
+
case 'success': {
|
|
65
|
+
return 'oklch(var(--uik-text-success))';
|
|
66
|
+
}
|
|
67
|
+
case 'danger': {
|
|
68
|
+
return 'oklch(var(--uik-text-danger))';
|
|
69
|
+
}
|
|
70
|
+
case 'muted': {
|
|
71
|
+
return 'oklch(var(--uik-text-muted))';
|
|
72
|
+
}
|
|
73
|
+
default: {
|
|
74
|
+
const _exhaustive = this.tone;
|
|
75
|
+
return _exhaustive;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
render() {
|
|
80
|
+
const showMetaFallback = !this.hasMetaSlot && this.meta !== '';
|
|
81
|
+
const metaContent = showMetaFallback ? html `<uik-badge variant="outline">${this.meta}</uik-badge>` : nothing;
|
|
82
|
+
const statusBarStyles = {
|
|
83
|
+
height: 'var(--uik-component-shell-status-bar-height)',
|
|
84
|
+
backgroundColor: 'oklch(var(--uik-component-shell-status-bar-bg))',
|
|
85
|
+
color: 'oklch(var(--uik-component-shell-status-bar-fg))',
|
|
86
|
+
paddingInline: 'var(--uik-space-3)',
|
|
87
|
+
borderTop: 'var(--uik-border-width-1) solid oklch(var(--uik-component-shell-divider-color))',
|
|
88
|
+
fontSize: 'var(--uik-typography-font-size-1)',
|
|
89
|
+
lineHeight: 'var(--uik-typography-line-height-2)',
|
|
90
|
+
display: 'flex',
|
|
91
|
+
alignItems: 'center',
|
|
92
|
+
justifyContent: 'space-between',
|
|
93
|
+
flexShrink: '0',
|
|
94
|
+
userSelect: 'none',
|
|
95
|
+
boxSizing: 'border-box',
|
|
96
|
+
};
|
|
97
|
+
const groupStyles = {
|
|
98
|
+
display: 'flex',
|
|
99
|
+
alignItems: 'center',
|
|
100
|
+
gap: 'var(--uik-space-3)',
|
|
101
|
+
};
|
|
102
|
+
const messageStyles = {
|
|
103
|
+
color: this.getToneColor(),
|
|
104
|
+
fontWeight: 'var(--uik-typography-font-weight-medium)',
|
|
105
|
+
display: 'flex',
|
|
106
|
+
alignItems: 'center',
|
|
107
|
+
gap: 'var(--uik-space-2)',
|
|
108
|
+
};
|
|
109
|
+
const metaStyles = {
|
|
110
|
+
display: 'flex',
|
|
111
|
+
alignItems: 'center',
|
|
112
|
+
gap: 'var(--uik-space-2)',
|
|
113
|
+
color: 'oklch(var(--uik-text-muted))',
|
|
114
|
+
};
|
|
115
|
+
return html `
|
|
116
|
+
<footer part="status-bar" data-region="status-bar" style=${styleMap(statusBarStyles)}>
|
|
117
|
+
<div part="status-main" style=${styleMap(groupStyles)}>
|
|
118
|
+
<span part="message" style=${styleMap(messageStyles)}>${this.message}</span>
|
|
119
|
+
<span part="actions" data-shell-slot="actions"></span>
|
|
120
|
+
</div>
|
|
121
|
+
<div part="meta" style=${styleMap(metaStyles)} data-shell-slot="meta">
|
|
122
|
+
${showMetaFallback ? html `<span data-shell-fallback="meta">${metaContent}</span>` : nothing}
|
|
123
|
+
</div>
|
|
124
|
+
</footer>
|
|
125
|
+
`;
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
__decorate([
|
|
129
|
+
property({ type: String })
|
|
130
|
+
], UikShellStatusBar.prototype, "message", null);
|
|
131
|
+
__decorate([
|
|
132
|
+
property({ type: String })
|
|
133
|
+
], UikShellStatusBar.prototype, "tone", null);
|
|
134
|
+
__decorate([
|
|
135
|
+
property({ type: String })
|
|
136
|
+
], UikShellStatusBar.prototype, "meta", null);
|
|
137
|
+
__decorate([
|
|
138
|
+
state()
|
|
139
|
+
], UikShellStatusBar.prototype, "hasMetaSlot", null);
|
|
140
|
+
UikShellStatusBar = __decorate([
|
|
141
|
+
customElement('uik-shell-status-bar')
|
|
142
|
+
], UikShellStatusBar);
|
|
143
|
+
export { UikShellStatusBar };
|
|
144
|
+
//# sourceMappingURL=uik-shell-status-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uik-shell-status-bar.js","sourceRoot":"","sources":["../../../src/structures/uik-shell-status-bar.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ismail-elkorchi/ui-shell",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Light DOM shell components for
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Token-driven Light DOM shell components for application layouts built with Lit.",
|
|
5
5
|
"author": "Ismail El Korchi",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"type": "module",
|
|
8
|
-
"keywords": ["lit", "web-components", "layout", "shell", "
|
|
8
|
+
"keywords": ["lit", "web-components", "layout", "shell", "ui"],
|
|
9
9
|
"engines": {"node": ">=20.11"},
|
|
10
10
|
"main": "./dist/index.js",
|
|
11
11
|
"module": "./dist/index.js",
|
|
12
12
|
"types": "./dist/index.d.ts",
|
|
13
|
+
"customElements": "dist/custom-elements.json",
|
|
13
14
|
"exports": {
|
|
14
15
|
".": {
|
|
15
16
|
"types": "./dist/index.d.ts",
|
|
@@ -27,36 +28,35 @@
|
|
|
27
28
|
"default": "./dist/register.js"
|
|
28
29
|
},
|
|
29
30
|
"./layout": {
|
|
30
|
-
"types": "./dist/
|
|
31
|
-
"import": "./dist/
|
|
32
|
-
"default": "./dist/
|
|
31
|
+
"types": "./dist/src/structures/uik-shell-layout.d.ts",
|
|
32
|
+
"import": "./dist/src/structures/uik-shell-layout.js",
|
|
33
|
+
"default": "./dist/src/structures/uik-shell-layout.js"
|
|
33
34
|
},
|
|
34
35
|
"./activity-bar": {
|
|
35
|
-
"types": "./dist/
|
|
36
|
-
"import": "./dist/
|
|
37
|
-
"default": "./dist/
|
|
36
|
+
"types": "./dist/src/structures/uik-shell-activity-bar.d.ts",
|
|
37
|
+
"import": "./dist/src/structures/uik-shell-activity-bar.js",
|
|
38
|
+
"default": "./dist/src/structures/uik-shell-activity-bar.js"
|
|
38
39
|
},
|
|
39
40
|
"./sidebar": {
|
|
40
|
-
"types": "./dist/
|
|
41
|
-
"import": "./dist/
|
|
42
|
-
"default": "./dist/
|
|
41
|
+
"types": "./dist/src/structures/uik-shell-sidebar.d.ts",
|
|
42
|
+
"import": "./dist/src/structures/uik-shell-sidebar.js",
|
|
43
|
+
"default": "./dist/src/structures/uik-shell-sidebar.js"
|
|
43
44
|
},
|
|
44
45
|
"./secondary-sidebar": {
|
|
45
|
-
"types": "./dist/
|
|
46
|
-
"import": "./dist/
|
|
47
|
-
"default": "./dist/
|
|
46
|
+
"types": "./dist/src/structures/uik-shell-secondary-sidebar.d.ts",
|
|
47
|
+
"import": "./dist/src/structures/uik-shell-secondary-sidebar.js",
|
|
48
|
+
"default": "./dist/src/structures/uik-shell-secondary-sidebar.js"
|
|
48
49
|
},
|
|
49
|
-
"./
|
|
50
|
-
"types": "./dist/
|
|
51
|
-
"import": "./dist/
|
|
52
|
-
"default": "./dist/
|
|
50
|
+
"./status-bar": {
|
|
51
|
+
"types": "./dist/src/structures/uik-shell-status-bar.d.ts",
|
|
52
|
+
"import": "./dist/src/structures/uik-shell-status-bar.js",
|
|
53
|
+
"default": "./dist/src/structures/uik-shell-status-bar.js"
|
|
53
54
|
},
|
|
54
55
|
"./router": {
|
|
55
|
-
"types": "./dist/router.d.ts",
|
|
56
|
-
"import": "./dist/router.js",
|
|
57
|
-
"default": "./dist/router.js"
|
|
58
|
-
}
|
|
59
|
-
"./tailwind-source.css": "./dist/tailwind-source.css"
|
|
56
|
+
"types": "./dist/src/internal/router.d.ts",
|
|
57
|
+
"import": "./dist/src/internal/router.js",
|
|
58
|
+
"default": "./dist/src/internal/router.js"
|
|
59
|
+
}
|
|
60
60
|
},
|
|
61
61
|
"sideEffects": [
|
|
62
62
|
"./dist/**/*.js",
|
|
@@ -67,10 +67,14 @@
|
|
|
67
67
|
"README.md"
|
|
68
68
|
],
|
|
69
69
|
"scripts": {
|
|
70
|
-
"build": "npm run clean && tsc -p tsconfig.build.json &&
|
|
70
|
+
"build": "npm run clean && tsc -p tsconfig.build.json && npm run cem",
|
|
71
71
|
"clean": "node -e \"const fs = require('fs'); fs.rmSync('dist', {recursive: true, force: true}); fs.rmSync('.tsbuildinfo', {force: true});\"",
|
|
72
|
+
"cem": "cem analyze --config ./custom-elements-manifest.config.cjs --litelement",
|
|
73
|
+
"lint": "eslint . --max-warnings=0 && npm run check:layering",
|
|
74
|
+
"test": "npm run build && vitest --run --project browser --dir . && vitest --run --project node --dir .",
|
|
72
75
|
"typecheck": "tsc -p tsconfig.build.json --noEmit",
|
|
73
|
-
"prepack": "npm run build"
|
|
76
|
+
"prepack": "npm run build",
|
|
77
|
+
"check:layering": "node tools/check-layering.mjs"
|
|
74
78
|
},
|
|
75
79
|
"repository": {
|
|
76
80
|
"type": "git",
|
|
@@ -82,7 +86,7 @@
|
|
|
82
86
|
},
|
|
83
87
|
"homepage": "https://github.com/Ismail-elkorchi/ui-kit",
|
|
84
88
|
"dependencies": {
|
|
85
|
-
"@ismail-elkorchi/ui-primitives": "^0.1.
|
|
89
|
+
"@ismail-elkorchi/ui-primitives": "^0.1.1",
|
|
86
90
|
"lit": "^3.1.0"
|
|
87
91
|
},
|
|
88
92
|
"publishConfig": {
|
package/dist/ActivityBar.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { LitElement, svg } from 'lit';
|
|
2
|
-
import '@ismail-elkorchi/ui-primitives/button';
|
|
3
|
-
export type ActivityBarIcon = string | ReturnType<typeof svg>;
|
|
4
|
-
export interface ActivityBarItem {
|
|
5
|
-
id: string;
|
|
6
|
-
label: string;
|
|
7
|
-
icon?: ActivityBarIcon;
|
|
8
|
-
tooltip?: string;
|
|
9
|
-
}
|
|
10
|
-
export declare class AppShellActivityBar extends LitElement {
|
|
11
|
-
accessor items: ActivityBarItem[];
|
|
12
|
-
accessor activeId: string;
|
|
13
|
-
accessor footer: unknown;
|
|
14
|
-
createRenderRoot(): this;
|
|
15
|
-
private emitSelect;
|
|
16
|
-
private renderIcon;
|
|
17
|
-
private renderItem;
|
|
18
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
19
|
-
}
|
|
20
|
-
declare global {
|
|
21
|
-
interface HTMLElementTagNameMap {
|
|
22
|
-
'uik-shell-activity-bar': AppShellActivityBar;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
//# sourceMappingURL=ActivityBar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityBar.d.ts","sourceRoot":"","sources":["../ActivityBar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAiB,GAAG,EAAC,MAAM,KAAK,CAAC;AAGnD,OAAO,uCAAuC,CAAC;AAE/C,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,UAAU,CAAC,OAAO,GAAG,CAAC,CAAC;AAE9D,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBACa,mBAAoB,SAAQ,UAAU;IACnB,QAAQ,CAAC,KAAK,EAAE,eAAe,EAAE,CAAM;IAC3C,QAAQ,CAAC,QAAQ,SAAM;IACnB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAQ;IAErD,gBAAgB;IAIzB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,UAAU;IAuBT,MAAM;CAWhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,wBAAwB,EAAE,mBAAmB,CAAC;KAC/C;CACF"}
|
package/dist/ActivityBar.js
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
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;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
import { LitElement, html, nothing, svg } from 'lit';
|
|
8
|
-
import { customElement, property } from 'lit/decorators.js';
|
|
9
|
-
import '@ismail-elkorchi/ui-primitives/button';
|
|
10
|
-
let AppShellActivityBar = class AppShellActivityBar extends LitElement {
|
|
11
|
-
#items_accessor_storage = [];
|
|
12
|
-
get items() { return this.#items_accessor_storage; }
|
|
13
|
-
set items(value) { this.#items_accessor_storage = value; }
|
|
14
|
-
#activeId_accessor_storage = '';
|
|
15
|
-
get activeId() { return this.#activeId_accessor_storage; }
|
|
16
|
-
set activeId(value) { this.#activeId_accessor_storage = value; }
|
|
17
|
-
#footer_accessor_storage = null;
|
|
18
|
-
get footer() { return this.#footer_accessor_storage; }
|
|
19
|
-
set footer(value) { this.#footer_accessor_storage = value; }
|
|
20
|
-
createRenderRoot() {
|
|
21
|
-
return this;
|
|
22
|
-
}
|
|
23
|
-
emitSelect(id) {
|
|
24
|
-
this.dispatchEvent(new CustomEvent('activity-select', { detail: { id }, bubbles: true, composed: true }));
|
|
25
|
-
}
|
|
26
|
-
renderIcon(item) {
|
|
27
|
-
if (!item.icon)
|
|
28
|
-
return html `<span class="text-xs font-semibold">${item.label.charAt(0).toUpperCase()}</span>`;
|
|
29
|
-
if (typeof item.icon === 'string') {
|
|
30
|
-
return svg `<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="${item.icon}"></path>`;
|
|
31
|
-
}
|
|
32
|
-
return item.icon;
|
|
33
|
-
}
|
|
34
|
-
renderItem(item) {
|
|
35
|
-
const isActive = this.activeId === item.id;
|
|
36
|
-
return html `
|
|
37
|
-
<div class="relative w-12 h-12 flex items-center justify-center">
|
|
38
|
-
<div class="${isActive ? 'absolute left-0 w-[2px] h-full bg-primary rounded-r-sm' : 'hidden'}"></div>
|
|
39
|
-
<uik-button
|
|
40
|
-
variant="ghost"
|
|
41
|
-
size="icon"
|
|
42
|
-
class="w-12 h-12"
|
|
43
|
-
?muted=${!isActive}
|
|
44
|
-
?active=${isActive}
|
|
45
|
-
aria-pressed=${isActive ? 'true' : 'false'}
|
|
46
|
-
aria-label=${item.label}
|
|
47
|
-
title=${item.tooltip ?? item.label}
|
|
48
|
-
@click=${() => {
|
|
49
|
-
this.emitSelect(item.id);
|
|
50
|
-
}}>
|
|
51
|
-
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">${this.renderIcon(item)}</svg>
|
|
52
|
-
</uik-button>
|
|
53
|
-
</div>
|
|
54
|
-
`;
|
|
55
|
-
}
|
|
56
|
-
render() {
|
|
57
|
-
return html `
|
|
58
|
-
<aside
|
|
59
|
-
data-region="activity-bar"
|
|
60
|
-
class="w-12 bg-secondary flex flex-col items-center py-2 flex-shrink-0 text-muted-foreground h-full">
|
|
61
|
-
${this.items.map(item => this.renderItem(item))}
|
|
62
|
-
<div class="flex-1"></div>
|
|
63
|
-
${this.footer ?? nothing}
|
|
64
|
-
</aside>
|
|
65
|
-
`;
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
__decorate([
|
|
69
|
-
property({ attribute: false })
|
|
70
|
-
], AppShellActivityBar.prototype, "items", null);
|
|
71
|
-
__decorate([
|
|
72
|
-
property({ type: String })
|
|
73
|
-
], AppShellActivityBar.prototype, "activeId", null);
|
|
74
|
-
__decorate([
|
|
75
|
-
property({ attribute: false })
|
|
76
|
-
], AppShellActivityBar.prototype, "footer", null);
|
|
77
|
-
AppShellActivityBar = __decorate([
|
|
78
|
-
customElement('uik-shell-activity-bar')
|
|
79
|
-
], AppShellActivityBar);
|
|
80
|
-
export { AppShellActivityBar };
|
|
81
|
-
//# sourceMappingURL=ActivityBar.js.map
|
package/dist/ActivityBar.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityBar.js","sourceRoot":"","sources":["../ActivityBar.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAC,MAAM,KAAK,CAAC;AACnD,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAC,MAAM,mBAAmB,CAAC;AAE1D,OAAO,uCAAuC,CAAC;AAYxC,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,UAAU;IACV,0BAA2B,EAAE,CAAC;IAA9B,IAAA,KAAK,2CAAyB;IAA9B,IAAA,KAAK,iDAAyB;IAClC,6BAAW,EAAE,CAAC;IAAd,IAAA,QAAQ,8CAAM;IAAd,IAAA,QAAQ,oDAAM;IACV,2BAAkB,IAAI,CAAC;IAAvB,IAAA,MAAM,4CAAiB;IAAvB,IAAA,MAAM,kDAAiB;IAErD,gBAAgB;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,UAAU,CAAC,EAAU;QAC3B,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,iBAAiB,EAAE,EAAC,MAAM,EAAE,EAAC,EAAE,EAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC,CAAC;IACxG,CAAC;IAEO,UAAU,CAAC,IAAqB;QACtC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA,uCAAuC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,SAAS,CAAC;QAC9G,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,GAAG,CAAA,8EAA8E,IAAI,CAAC,IAAI,WAAW,CAAC;QAC/G,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEO,UAAU,CAAC,IAAqB;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAA;;sBAEO,QAAQ,CAAC,CAAC,CAAC,wDAAwD,CAAC,CAAC,CAAC,QAAQ;;;;;mBAKjF,CAAC,QAAQ;oBACR,QAAQ;yBACH,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;uBAC7B,IAAI,CAAC,KAAK;kBACf,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK;mBACzB,GAAG,EAAE;YACZ,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;uFAC4E,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;;KAGvG,CAAC;IACJ,CAAC;IAEQ,MAAM;QACb,OAAO,IAAI,CAAA;;;;UAIL,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;;UAE7C,IAAI,CAAC,MAAM,IAAI,OAAO;;KAE3B,CAAC;IACJ,CAAC;CACF,CAAA;AAtDwC;IAAtC,QAAQ,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;gDAAwC;AAClC;IAAlC,QAAQ,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;mDAAwB;AACV;IAAtC,QAAQ,CAAC,EAAC,SAAS,EAAE,KAAK,EAAC,CAAC;iDAAiC;AAHnD,mBAAmB;IAD/B,aAAa,CAAC,wBAAwB,CAAC;GAC3B,mBAAmB,CAuD/B"}
|
package/dist/AppShellLayout.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
2
|
-
export declare class AppShellLayout extends LitElement {
|
|
3
|
-
accessor activityBar: unknown;
|
|
4
|
-
accessor primarySidebar: unknown;
|
|
5
|
-
accessor mainContent: unknown;
|
|
6
|
-
accessor secondarySidebar: unknown;
|
|
7
|
-
accessor statusBar: unknown;
|
|
8
|
-
accessor showSecondary: boolean;
|
|
9
|
-
createRenderRoot(): this;
|
|
10
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
11
|
-
}
|
|
12
|
-
declare global {
|
|
13
|
-
interface HTMLElementTagNameMap {
|
|
14
|
-
'uik-shell-layout': AppShellLayout;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
//# sourceMappingURL=AppShellLayout.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AppShellLayout.d.ts","sourceRoot":"","sources":["../AppShellLayout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAgB,MAAM,KAAK,CAAC;AAG9C,qBACa,cAAe,SAAQ,UAAU;IACd,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAQ;IACrC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAQ;IACxC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAQ;IACrC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAQ;IAC1C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAQ;IACtC,QAAQ,CAAC,aAAa,UAAS;IAEjD,gBAAgB;IAIhB,MAAM;CAYhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
|