@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
package/dist/index.d.ts CHANGED
@@ -1,7 +1,9 @@
1
- export * from './AppShellLayout';
2
- export * from './ActivityBar';
3
- export * from './Sidebar';
4
- export * from './SecondarySidebar';
5
- export * from './Statusbar';
6
- export * from './router';
1
+ export { UikShellActivityBar } from './src/structures/uik-shell-activity-bar';
2
+ export { UikShellLayout } from './src/structures/uik-shell-layout';
3
+ export { UikShellSecondarySidebar } from './src/structures/uik-shell-secondary-sidebar';
4
+ export { UikShellSidebar } from './src/structures/uik-shell-sidebar';
5
+ export { UikShellStatusBar } from './src/structures/uik-shell-status-bar';
6
+ export { createUikShellRouter, UIK_SHELL_NAVIGATION_EVENT, UikShellRouter } from './src/internal/router';
7
+ export type { UikShellActivityBarIcon, UikShellActivityBarItem } from './src/structures/uik-shell-activity-bar-contract';
8
+ export type { UikShellLocation, UikShellNavigationDetail, UikShellNavigationListener, UikShellRoute, UikShellRouterConfig, } from './src/internal/router';
7
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAC,cAAc,EAAC,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAC,wBAAwB,EAAC,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAC,eAAe,EAAC,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAC,iBAAiB,EAAC,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAC,oBAAoB,EAAE,0BAA0B,EAAE,cAAc,EAAC,MAAM,uBAAuB,CAAC;AACvG,YAAY,EAAC,uBAAuB,EAAE,uBAAuB,EAAC,MAAM,kDAAkD,CAAC;AACvH,YAAY,EACV,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,EAC1B,aAAa,EACb,oBAAoB,GACrB,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- export * from './AppShellLayout';
2
- export * from './ActivityBar';
3
- export * from './Sidebar';
4
- export * from './SecondarySidebar';
5
- export * from './Statusbar';
6
- export * from './router';
1
+ export { UikShellActivityBar } from './src/structures/uik-shell-activity-bar';
2
+ export { UikShellLayout } from './src/structures/uik-shell-layout';
3
+ export { UikShellSecondarySidebar } from './src/structures/uik-shell-secondary-sidebar';
4
+ export { UikShellSidebar } from './src/structures/uik-shell-sidebar';
5
+ export { UikShellStatusBar } from './src/structures/uik-shell-status-bar';
6
+ export { createUikShellRouter, UIK_SHELL_NAVIGATION_EVENT, UikShellRouter } from './src/internal/router';
7
7
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAC,cAAc,EAAC,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAC,wBAAwB,EAAC,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAC,eAAe,EAAC,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAC,iBAAiB,EAAC,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAC,oBAAoB,EAAE,0BAA0B,EAAE,cAAc,EAAC,MAAM,uBAAuB,CAAC"}
@@ -1,6 +1,6 @@
1
- import './AppShellLayout';
2
- import './ActivityBar';
3
- import './Sidebar';
4
- import './SecondarySidebar';
5
- import './Statusbar';
1
+ import './src/structures/uik-shell-layout';
2
+ import './src/structures/uik-shell-activity-bar';
3
+ import './src/structures/uik-shell-sidebar';
4
+ import './src/structures/uik-shell-secondary-sidebar';
5
+ import './src/structures/uik-shell-status-bar';
6
6
  //# sourceMappingURL=register.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../register.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,eAAe,CAAC;AACvB,OAAO,WAAW,CAAC;AACnB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,aAAa,CAAC"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../register.ts"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,yCAAyC,CAAC;AACjD,OAAO,oCAAoC,CAAC;AAC5C,OAAO,8CAA8C,CAAC;AACtD,OAAO,uCAAuC,CAAC"}
package/dist/register.js CHANGED
@@ -1,6 +1,6 @@
1
- import './AppShellLayout';
2
- import './ActivityBar';
3
- import './Sidebar';
4
- import './SecondarySidebar';
5
- import './Statusbar';
1
+ import './src/structures/uik-shell-layout';
2
+ import './src/structures/uik-shell-activity-bar';
3
+ import './src/structures/uik-shell-sidebar';
4
+ import './src/structures/uik-shell-secondary-sidebar';
5
+ import './src/structures/uik-shell-status-bar';
6
6
  //# sourceMappingURL=register.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../register.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,eAAe,CAAC;AACvB,OAAO,WAAW,CAAC;AACnB,OAAO,oBAAoB,CAAC;AAC5B,OAAO,aAAa,CAAC"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../register.ts"],"names":[],"mappings":"AAAA,OAAO,mCAAmC,CAAC;AAC3C,OAAO,yCAAyC,CAAC;AACjD,OAAO,oCAAoC,CAAC;AAC5C,OAAO,8CAA8C,CAAC;AACtD,OAAO,uCAAuC,CAAC"}
@@ -0,0 +1,22 @@
1
+ interface SlotTarget {
2
+ name: string | null;
3
+ containerSelector: string;
4
+ }
5
+ interface SyncResult {
6
+ moved: Record<string, number>;
7
+ }
8
+ export declare function ensureLightDomRoot(host: HTMLElement, attr?: string): HTMLElement;
9
+ export declare class LightDomSlotController {
10
+ private readonly host;
11
+ private readonly rootSelector;
12
+ private readonly targets;
13
+ private readonly onAfterSync?;
14
+ private observer;
15
+ constructor(host: HTMLElement, rootSelector: string, targets: SlotTarget[], onAfterSync?: ((root: HTMLElement, result: SyncResult) => void) | undefined);
16
+ connect(): void;
17
+ disconnect(): void;
18
+ sync(): void;
19
+ private moveToContainer;
20
+ }
21
+ export {};
22
+ //# sourceMappingURL=light-dom-slot-controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"light-dom-slot-controller.d.ts","sourceRoot":"","sources":["../../../src/internal/light-dom-slot-controller.ts"],"names":[],"mappings":"AAAA,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,GAAE,MAAuB,eAWlF;AAED,qBAAa,sBAAsB;IAI/B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;IAN/B,OAAO,CAAC,QAAQ,CAAiC;gBAG9B,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,UAAU,EAAE,EACrB,WAAW,CAAC,GAAE,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,aAAA;IAGhF,OAAO;IAOP,UAAU;IAKV,IAAI;IAqBJ,OAAO,CAAC,eAAe;CA4BxB"}
@@ -0,0 +1,91 @@
1
+ const ROOT_ATTRIBUTE = 'data-shell-root';
2
+ export function ensureLightDomRoot(host, attr = ROOT_ATTRIBUTE) {
3
+ const existing = Array.from(host.children).find(child => child.hasAttribute(attr));
4
+ if (existing instanceof HTMLElement)
5
+ return existing;
6
+ const root = document.createElement('div');
7
+ root.setAttribute(attr, '');
8
+ if (!root.style.display)
9
+ root.style.display = 'block';
10
+ if (!root.style.boxSizing)
11
+ root.style.boxSizing = 'border-box';
12
+ if (!root.style.width)
13
+ root.style.width = '100%';
14
+ if (!root.style.height)
15
+ root.style.height = '100%';
16
+ host.append(root);
17
+ return root;
18
+ }
19
+ export class LightDomSlotController {
20
+ host;
21
+ rootSelector;
22
+ targets;
23
+ onAfterSync;
24
+ observer = null;
25
+ constructor(host, rootSelector, targets, onAfterSync) {
26
+ this.host = host;
27
+ this.rootSelector = rootSelector;
28
+ this.targets = targets;
29
+ this.onAfterSync = onAfterSync;
30
+ }
31
+ connect() {
32
+ if (this.observer)
33
+ return;
34
+ this.sync();
35
+ this.observer = new MutationObserver(() => this.sync());
36
+ this.observer.observe(this.host, { childList: true, subtree: true });
37
+ }
38
+ disconnect() {
39
+ this.observer?.disconnect();
40
+ this.observer = null;
41
+ }
42
+ sync() {
43
+ const scopedSelector = this.rootSelector.includes(':scope')
44
+ ? this.rootSelector
45
+ : `:scope > ${this.rootSelector}`;
46
+ const root = this.host.querySelector(scopedSelector) ?? this.host.querySelector(this.rootSelector);
47
+ if (!root)
48
+ return;
49
+ const result = { moved: {} };
50
+ for (const target of this.targets) {
51
+ const container = root.querySelector(target.containerSelector);
52
+ if (!container)
53
+ continue;
54
+ const movedCount = this.moveToContainer(root, container, target.name);
55
+ result.moved[target.name ?? 'default'] = movedCount;
56
+ }
57
+ this.onAfterSync?.(root, result);
58
+ }
59
+ moveToContainer(root, container, slotName) {
60
+ let moved = 0;
61
+ for (const node of Array.from(this.host.childNodes)) {
62
+ if (node === root)
63
+ continue;
64
+ if (node.nodeType === Node.ELEMENT_NODE) {
65
+ const element = node;
66
+ const childSlot = element.getAttribute('slot');
67
+ if (slotName === null) {
68
+ if (childSlot)
69
+ continue;
70
+ container.append(element);
71
+ moved += 1;
72
+ continue;
73
+ }
74
+ if (childSlot === slotName) {
75
+ container.append(element);
76
+ moved += 1;
77
+ }
78
+ continue;
79
+ }
80
+ if (slotName === null && node.nodeType === Node.TEXT_NODE) {
81
+ const text = node;
82
+ if (!text.textContent || text.textContent.trim() === '')
83
+ continue;
84
+ container.append(text);
85
+ moved += 1;
86
+ }
87
+ }
88
+ return moved;
89
+ }
90
+ }
91
+ //# sourceMappingURL=light-dom-slot-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"light-dom-slot-controller.js","sourceRoot":"","sources":["../../../src/internal/light-dom-slot-controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export declare const UIK_SHELL_NAVIGATION_EVENT = "uik-shell:navigation";
2
+ export interface UikShellRoute {
3
+ id: string;
4
+ label?: string;
5
+ subviews?: string[];
6
+ defaultSubview?: string;
7
+ }
8
+ export interface UikShellLocation {
9
+ view: string;
10
+ subview?: string | undefined;
11
+ }
12
+ export interface UikShellNavigationDetail {
13
+ from: UikShellLocation;
14
+ to: UikShellLocation;
15
+ route: UikShellRoute;
16
+ }
17
+ export interface UikShellRouterConfig {
18
+ routes: UikShellRoute[];
19
+ initialView?: string;
20
+ initialSubview?: string;
21
+ }
22
+ export type UikShellNavigationListener = (location: UikShellLocation) => void;
23
+ export declare class UikShellRouter extends EventTarget {
24
+ private readonly routeRegistry;
25
+ private readonly lastSubviews;
26
+ private location;
27
+ constructor(config: UikShellRouterConfig);
28
+ get current(): UikShellLocation;
29
+ get routes(): UikShellRoute[];
30
+ subscribe(listener: UikShellNavigationListener): () => void;
31
+ navigate(view: string, subview?: string): void;
32
+ private resolveInitialView;
33
+ private resolveSubview;
34
+ }
35
+ export declare const createUikShellRouter: (config: UikShellRouterConfig) => UikShellRouter;
36
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../../src/internal/router.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,gBAAgB,CAAC;IACvB,EAAE,EAAE,gBAAgB,CAAC;IACrB,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,0BAA0B,GAAG,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAE9E,qBAAa,cAAe,SAAQ,WAAW;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoC;IAClE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyC;IACtE,OAAO,CAAC,QAAQ,CAAmB;gBAEvB,MAAM,EAAE,oBAAoB;IAaxC,IAAI,OAAO,IAAI,gBAAgB,CAE9B;IAED,IAAI,MAAM,IAAI,aAAa,EAAE,CAE5B;IAED,SAAS,CAAC,QAAQ,EAAE,0BAA0B,GAAG,MAAM,IAAI;IAc3D,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM;IA4BvC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,cAAc;CAgBvB;AAED,eAAO,MAAM,oBAAoB,GAAI,QAAQ,oBAAoB,mBAA+B,CAAC"}
@@ -1,13 +1,15 @@
1
- export const APP_SHELL_NAV_EVENT = 'app-shell:navigate';
2
- export class AppShellRouter extends EventTarget {
3
- routes = new Map();
1
+ export const UIK_SHELL_NAVIGATION_EVENT = 'uik-shell:navigation';
2
+ export class UikShellRouter extends EventTarget {
3
+ routeRegistry = new Map();
4
4
  lastSubviews = new Map();
5
5
  location;
6
6
  constructor(config) {
7
7
  super();
8
- if (!config.routes.length)
9
- throw new Error('AppShellRouter requires at least one route.');
10
- config.routes.forEach(route => this.routes.set(route.id, route));
8
+ if (config.routes.length === 0)
9
+ throw new Error('UikShellRouter requires at least one route.');
10
+ for (const route of config.routes) {
11
+ this.routeRegistry.set(route.id, route);
12
+ }
11
13
  const view = this.resolveInitialView(config.initialView);
12
14
  const subview = this.resolveSubview(view, config.initialSubview);
13
15
  this.location = { view, subview };
@@ -15,22 +17,22 @@ export class AppShellRouter extends EventTarget {
15
17
  get current() {
16
18
  return { ...this.location };
17
19
  }
18
- get routeList() {
19
- return Array.from(this.routes.values());
20
+ get routes() {
21
+ return [...this.routeRegistry.values()];
20
22
  }
21
23
  subscribe(listener) {
22
24
  const handler = (event) => {
23
25
  const detail = event.detail;
24
26
  listener(detail.to);
25
27
  };
26
- this.addEventListener(APP_SHELL_NAV_EVENT, handler);
28
+ this.addEventListener(UIK_SHELL_NAVIGATION_EVENT, handler);
27
29
  listener(this.current);
28
30
  return () => {
29
- this.removeEventListener(APP_SHELL_NAV_EVENT, handler);
31
+ this.removeEventListener(UIK_SHELL_NAVIGATION_EVENT, handler);
30
32
  };
31
33
  }
32
34
  navigate(view, subview) {
33
- const route = this.routes.get(view);
35
+ const route = this.routeRegistry.get(view);
34
36
  if (!route)
35
37
  throw new Error(`Unknown route "${view}".`);
36
38
  const resolvedSubview = this.resolveSubview(view, subview);
@@ -39,21 +41,26 @@ export class AppShellRouter extends EventTarget {
39
41
  return;
40
42
  const previous = this.location;
41
43
  this.location = next;
42
- this.dispatchEvent(new CustomEvent(APP_SHELL_NAV_EVENT, { detail: { from: previous, to: next, route } }));
43
- if (typeof window !== 'undefined') {
44
- window.dispatchEvent(new CustomEvent(APP_SHELL_NAV_EVENT, { detail: { from: previous, to: next, route } }));
44
+ this.dispatchEvent(new CustomEvent(UIK_SHELL_NAVIGATION_EVENT, {
45
+ detail: { from: previous, to: next, route },
46
+ }));
47
+ const globalWindow = globalThis.window;
48
+ if (globalWindow) {
49
+ globalWindow.dispatchEvent(new CustomEvent(UIK_SHELL_NAVIGATION_EVENT, {
50
+ detail: { from: previous, to: next, route },
51
+ }));
45
52
  }
46
53
  }
47
54
  resolveInitialView(initialView) {
48
- if (initialView && this.routes.has(initialView))
55
+ if (initialView && this.routeRegistry.has(initialView))
49
56
  return initialView;
50
- const first = this.routes.values().next().value;
57
+ const first = this.routeRegistry.values().next().value;
51
58
  if (!first)
52
- throw new Error('AppShellRouter requires at least one route.');
59
+ throw new Error('UikShellRouter requires at least one route.');
53
60
  return first.id;
54
61
  }
55
62
  resolveSubview(view, requested) {
56
- const route = this.routes.get(view);
63
+ const route = this.routeRegistry.get(view);
57
64
  if (!route?.subviews?.length)
58
65
  return undefined;
59
66
  if (requested && route.subviews.includes(requested)) {
@@ -68,5 +75,5 @@ export class AppShellRouter extends EventTarget {
68
75
  return fallback;
69
76
  }
70
77
  }
71
- export const createAppShellRouter = (config) => new AppShellRouter(config);
78
+ export const createUikShellRouter = (config) => new UikShellRouter(config);
72
79
  //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../../src/internal/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { SVGTemplateResult } from 'lit';
2
+ type UikShellActivityBarIcon = string | SVGTemplateResult;
3
+ interface UikShellActivityBarItem {
4
+ id: string;
5
+ label: string;
6
+ icon?: UikShellActivityBarIcon;
7
+ tooltip?: string;
8
+ }
9
+ export type { UikShellActivityBarIcon, UikShellActivityBarItem };
10
+ //# sourceMappingURL=uik-shell-activity-bar-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uik-shell-activity-bar-contract.d.ts","sourceRoot":"","sources":["../../../src/structures/uik-shell-activity-bar-contract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,KAAK,CAAC;AAE3C,KAAK,uBAAuB,GAAG,MAAM,GAAG,iBAAiB,CAAC;AAE1D,UAAU,uBAAuB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,uBAAuB,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,YAAY,EAAC,uBAAuB,EAAE,uBAAuB,EAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=uik-shell-activity-bar-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uik-shell-activity-bar-contract.js","sourceRoot":"","sources":["../../../src/structures/uik-shell-activity-bar-contract.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import { LitElement, type PropertyValues } from 'lit';
2
+ import '@ismail-elkorchi/ui-primitives/uik-button';
3
+ import type { UikShellActivityBarItem } from './uik-shell-activity-bar-contract';
4
+ export type { UikShellActivityBarIcon, UikShellActivityBarItem } from './uik-shell-activity-bar-contract';
5
+ export declare class UikShellActivityBar extends LitElement {
6
+ accessor items: UikShellActivityBarItem[];
7
+ accessor activeId: string;
8
+ private accessor focusedId;
9
+ private slotController?;
10
+ connectedCallback(): void;
11
+ disconnectedCallback(): void;
12
+ firstUpdated(): void;
13
+ updated(changedProperties: PropertyValues<this>): void;
14
+ createRenderRoot(): HTMLElement;
15
+ private emitSelect;
16
+ private resolveDefaultFocusId;
17
+ private focusItemById;
18
+ private renderIcon;
19
+ private readonly onItemClick;
20
+ private readonly onItemFocus;
21
+ private readonly onItemKeydown;
22
+ private renderItem;
23
+ render(): import("lit-html").TemplateResult<1>;
24
+ }
25
+ declare global {
26
+ interface HTMLElementTagNameMap {
27
+ 'uik-shell-activity-bar': UikShellActivityBar;
28
+ }
29
+ }
30
+ //# sourceMappingURL=uik-shell-activity-bar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uik-shell-activity-bar.d.ts","sourceRoot":"","sources":["../../../src/structures/uik-shell-activity-bar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAsB,KAAK,cAAc,EAAC,MAAM,KAAK,CAAC;AAIxE,OAAO,2CAA2C,CAAC;AAEnD,OAAO,KAAK,EAAC,uBAAuB,EAAC,MAAM,mCAAmC,CAAC;AAG/E,YAAY,EAAC,uBAAuB,EAAE,uBAAuB,EAAC,MAAM,mCAAmC,CAAC;AAExG,qBACa,mBAAoB,SAAQ,UAAU;IACnB,QAAQ,CAAC,KAAK,EAAE,uBAAuB,EAAE,CAAM;IACnD,QAAQ,CAAC,QAAQ,SAAM;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAM;IACzC,OAAO,CAAC,cAAc,CAAC,CAAyB;IAEvC,iBAAiB;IAajB,oBAAoB;IAKpB,YAAY;IAIZ,OAAO,CAAC,iBAAiB,EAAE,cAAc,CAAC,IAAI,CAAC;IAa/C,gBAAgB;IAIzB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,UAAU;IAuBlB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAQ1B;IAEF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAM1B;IAEF,OAAO,CAAC,QAAQ,CAAC,aAAa,CA0C5B;IAEF,OAAO,CAAC,UAAU;IA+DT,MAAM;CA8ChB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,wBAAwB,EAAE,mBAAmB,CAAC;KAC/C;CACF"}