@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.
Files changed (67) hide show
  1. package/README.md +71 -68
  2. package/dist/custom-elements.json +1039 -0
  3. package/dist/index.d.ts +8 -6
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +6 -6
  6. package/dist/index.js.map +1 -1
  7. package/dist/register.d.ts +5 -5
  8. package/dist/register.d.ts.map +1 -1
  9. package/dist/register.js +5 -5
  10. package/dist/register.js.map +1 -1
  11. package/dist/src/internal/light-dom-slot-controller.d.ts +22 -0
  12. package/dist/src/internal/light-dom-slot-controller.d.ts.map +1 -0
  13. package/dist/src/internal/light-dom-slot-controller.js +91 -0
  14. package/dist/src/internal/light-dom-slot-controller.js.map +1 -0
  15. package/dist/src/internal/router.d.ts +36 -0
  16. package/dist/src/internal/router.d.ts.map +1 -0
  17. package/dist/{router.js → src/internal/router.js} +26 -19
  18. package/dist/src/internal/router.js.map +1 -0
  19. package/dist/src/structures/uik-shell-activity-bar-contract.d.ts +10 -0
  20. package/dist/src/structures/uik-shell-activity-bar-contract.d.ts.map +1 -0
  21. package/dist/src/structures/uik-shell-activity-bar-contract.js +2 -0
  22. package/dist/src/structures/uik-shell-activity-bar-contract.js.map +1 -0
  23. package/dist/src/structures/uik-shell-activity-bar.d.ts +30 -0
  24. package/dist/src/structures/uik-shell-activity-bar.d.ts.map +1 -0
  25. package/dist/src/structures/uik-shell-activity-bar.js +272 -0
  26. package/dist/src/structures/uik-shell-activity-bar.js.map +1 -0
  27. package/dist/src/structures/uik-shell-layout.d.ts +16 -0
  28. package/dist/src/structures/uik-shell-layout.d.ts.map +1 -0
  29. package/dist/src/structures/uik-shell-layout.js +123 -0
  30. package/dist/src/structures/uik-shell-layout.js.map +1 -0
  31. package/dist/src/structures/uik-shell-secondary-sidebar.d.ts +21 -0
  32. package/dist/src/structures/uik-shell-secondary-sidebar.d.ts.map +1 -0
  33. package/dist/src/structures/uik-shell-secondary-sidebar.js +169 -0
  34. package/dist/src/structures/uik-shell-secondary-sidebar.js.map +1 -0
  35. package/dist/src/structures/uik-shell-sidebar.d.ts +21 -0
  36. package/dist/src/structures/uik-shell-sidebar.d.ts.map +1 -0
  37. package/dist/src/structures/uik-shell-sidebar.js +176 -0
  38. package/dist/src/structures/uik-shell-sidebar.js.map +1 -0
  39. package/dist/src/structures/uik-shell-status-bar.d.ts +23 -0
  40. package/dist/src/structures/uik-shell-status-bar.d.ts.map +1 -0
  41. package/dist/src/structures/uik-shell-status-bar.js +144 -0
  42. package/dist/src/structures/uik-shell-status-bar.js.map +1 -0
  43. package/package.json +31 -27
  44. package/dist/ActivityBar.d.ts +0 -25
  45. package/dist/ActivityBar.d.ts.map +0 -1
  46. package/dist/ActivityBar.js +0 -81
  47. package/dist/ActivityBar.js.map +0 -1
  48. package/dist/AppShellLayout.d.ts +0 -17
  49. package/dist/AppShellLayout.d.ts.map +0 -1
  50. package/dist/AppShellLayout.js +0 -66
  51. package/dist/AppShellLayout.js.map +0 -1
  52. package/dist/SecondarySidebar.d.ts +0 -18
  53. package/dist/SecondarySidebar.d.ts.map +0 -1
  54. package/dist/SecondarySidebar.js +0 -84
  55. package/dist/SecondarySidebar.js.map +0 -1
  56. package/dist/Sidebar.d.ts +0 -20
  57. package/dist/Sidebar.d.ts.map +0 -1
  58. package/dist/Sidebar.js +0 -105
  59. package/dist/Sidebar.js.map +0 -1
  60. package/dist/Statusbar.d.ts +0 -19
  61. package/dist/Statusbar.d.ts.map +0 -1
  62. package/dist/Statusbar.js +0 -73
  63. package/dist/Statusbar.js.map +0 -1
  64. package/dist/router.d.ts +0 -36
  65. package/dist/router.d.ts.map +0 -1
  66. package/dist/router.js.map +0 -1
  67. 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.0",
4
- "description": "Light DOM shell components for Tailwind-friendly layouts built with Lit.",
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", "tailwind", "ui"],
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/AppShellLayout.d.ts",
31
- "import": "./dist/AppShellLayout.js",
32
- "default": "./dist/AppShellLayout.js"
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/ActivityBar.d.ts",
36
- "import": "./dist/ActivityBar.js",
37
- "default": "./dist/ActivityBar.js"
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/Sidebar.d.ts",
41
- "import": "./dist/Sidebar.js",
42
- "default": "./dist/Sidebar.js"
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/SecondarySidebar.d.ts",
46
- "import": "./dist/SecondarySidebar.js",
47
- "default": "./dist/SecondarySidebar.js"
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
- "./statusbar": {
50
- "types": "./dist/Statusbar.d.ts",
51
- "import": "./dist/Statusbar.js",
52
- "default": "./dist/Statusbar.js"
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 && node -e \"const fs = require('fs'); fs.mkdirSync('dist', {recursive: true}); fs.copyFileSync('tailwind-source.css', 'dist/tailwind-source.css');\"",
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.0",
89
+ "@ismail-elkorchi/ui-primitives": "^0.1.1",
86
90
  "lit": "^3.1.0"
87
91
  },
88
92
  "publishConfig": {
@@ -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"}
@@ -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
@@ -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"}
@@ -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"}