@getflip/swirl-components 0.220.0 → 0.220.2

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.
@@ -86,7 +86,7 @@
86
86
  }
87
87
  }
88
88
 
89
- .shell-layout--navigation-collapsed .shell-layout__secondary-nav-items--grid-view ::slotted(*) {
89
+ .shell-layout--navigation-collapsed .shell-layout__secondary-nav-items--grid-view ::slotted(ul > *) {
90
90
  max-width: 100%;
91
91
  flex-basis: 100%;
92
92
  max-height: 3rem;
@@ -424,20 +424,21 @@
424
424
  display: none;
425
425
  }
426
426
 
427
- .shell-layout__secondary-nav-items {
428
- display: flex;
429
- flex-direction: column;
430
- gap: var(--s-space-2);
431
- }
427
+ .shell-layout__secondary-nav-items ::slotted(ul) {
428
+ display: flex;
429
+ flex-direction: column;
430
+ gap: var(--s-space-2);
431
+ }
432
432
 
433
- .shell-layout__secondary-nav-items--grid-view {
434
- flex-direction: row;
435
- flex-wrap: wrap;
436
- gap: var(--s-space-16);
437
- }
433
+ .shell-layout__secondary-nav-items--grid-view ::slotted(ul) {
434
+ flex-direction: row;
435
+ flex-wrap: wrap;
436
+ gap: var(--s-space-16);
437
+ }
438
438
 
439
- .shell-layout__secondary-nav-items--grid-view ::slotted(*) {
439
+ .shell-layout__secondary-nav-items--grid-view ::slotted(ul > *) {
440
440
  flex-basis: calc(50% - var(--s-space-8));
441
+ max-height: none;
441
442
  }
442
443
 
443
444
  .shell-layout__main {
@@ -95,12 +95,21 @@ export class SwirlShellLayout {
95
95
  });
96
96
  this.toggleNavItemLabels();
97
97
  this.setSecondaryNavItemsTiled();
98
+ this.navMutationObserver = new MutationObserver(() => {
99
+ this.collectNavItems();
100
+ this.setSecondaryNavItemsTiled();
101
+ });
102
+ this.navMutationObserver.observe(this.navElement, {
103
+ childList: true,
104
+ subtree: true,
105
+ });
98
106
  }
99
107
  componentDidRender() {
100
108
  this.focusTrap?.updateContainerElements(this.navElement);
101
109
  }
102
110
  disconnectedCallback() {
103
111
  this.focusTrap?.deactivate();
112
+ this.navMutationObserver?.disconnect();
104
113
  }
105
114
  onWindowKeyDown(event) {
106
115
  if (event.key === "Escape" && this.mobileNavigationActive) {
@@ -142,7 +151,6 @@ export class SwirlShellLayout {
142
151
  item.hideLabel =
143
152
  !!(this.enableSecondaryNavGridLayout && this.navigationCollapsed) ||
144
153
  (!this.enableSecondaryNavGridLayout && this.navigationCollapsed);
145
- console.log(this.enableSecondaryNavGridLayout && this.navigationCollapsed);
146
154
  });
147
155
  }
148
156
  setSecondaryNavItemsTiled() {
@@ -162,22 +170,22 @@ export class SwirlShellLayout {
162
170
  "shell-layout--navigation-collapsed": this.navigationCollapsed,
163
171
  "shell-layout--sidebar-active": this.sidebarActive,
164
172
  });
165
- return (h(Host, { key: '7623fb08b60fe150f78537cc7ffeb34ea08c5a8b' }, h("div", { key: '179a5334ff4a02e6761a4c3f061155bfcc886bac', class: className }, h("header", { key: '6029510b35fe789874ca90b95ecd9df72f055e79', class: "shell-layout__header", "data-tauri-drag-region": "true" }, h("button", { key: '0ed34ec676012469679ac5310b4b4cef83bd9a1a', class: "shell-layout__skip-link", onClick: this.skipLinkClick.emit, type: "button" }, this.skipLinkLabel), h("div", { key: 'eb98efcc123b3b1438e3d6df18425085c33fc67a', class: "shell-layout__header-left" }, h("button", { key: 'fe70cdc5600c04b3d1eb8ab17b0ddff2419b5f9a', class: "shell-layout__header-tool", onClick: this.onNavigationToggleClick, type: "button" }, h("swirl-icon-dock-left", { key: '5dbb38292980a18a5e0219977d785224309bbf69', size: 20 }), h("swirl-visually-hidden", { key: 'c5771fdc7066ee88f9ecf31861d696b18c811533' }, this.navigationToggleLabel)), h("a", { key: 'dcce38cd4e283fbe5a9efae02e1dd15927b37b4d', class: "shell-layout__header-tool", href: "javascript:history.back()" }, h("swirl-icon-arrow-back", { key: '8ad40c88adc3f96df42af2db27e96fec8c965deb', size: 20 }), h("swirl-visually-hidden", { key: '8dd482cb80a11db8aa8a73886beb5ad2f3e780f0' }, this.browserBackButtonLabel)), h("a", { key: 'fe9ca3ea97e5c380d1d26f1c4dab70cce01e7992', class: "shell-layout__header-tool", href: "javascript:history.forward()" }, h("swirl-icon-arrow-forward", { key: '3241be06da7641df9ffe6ca5875f5a90b508e50a', size: 20 }), h("swirl-visually-hidden", { key: 'd024e25f155ae3fbc2102fd70e362e7b1b57cd78' }, this.browserForwardButtonLabel)), h("slot", { key: '2716c16471633c1b29f7a436d8c58a650d8d1f2a', name: "left-header-tools" })), h("div", { key: '883257e625335186493da36c0fdee5fe83adbc0d', class: "shell-layout__logo" }, h("slot", { key: '3ec15894bb6676a965423ddd0d269ee9e8f6b7cc', name: "logo" })), h("div", { key: 'caf685dc0a904fbf021cbbeab27ca39cb21d5e85', class: "shell-layout__header-right" }, h("slot", { key: '8c1323440c8f909ea1ec7b57ba7ed01c1e97837a', name: "right-header-tools" }), h("button", { key: '15435a247715f42cee8d2735befb5236d3fe7a40', class: "shell-layout__header-tool shell-layout__sidebar-toggle", onClick: this.sidebarToggleClick.emit, type: "button" }, h("swirl-icon", { key: 'dd8f71593d240e0b175043da2c15392032080984', glyph: this.sidebarToggleIcon, size: 20 }), h("swirl-visually-hidden", { key: '7fe157d80af2602ef5ab024335fc6ce1738515a2' }, this.sidebarToggleLabel), this.sidebarToggleBadge && (h("swirl-badge", { key: '55b851f1e3506aea0b77f9579b2b560a1cb16a43', "aria-label": this.sidebarToggleBadgeAriaLabel, label: !hasSidebarToggleBadgeWithLabel
173
+ return (h(Host, { key: 'adc9e2fc265a9433423eee24356217b4f092e8b6' }, h("div", { key: 'b3730a8f4f0d38758b26064105889e9ac601792a', class: className }, h("header", { key: '53b44a20ee908f56478c22ad480c10af8e39207c', class: "shell-layout__header", "data-tauri-drag-region": "true" }, h("button", { key: '3e1af2d0750924f10c9249cae89669a23b81f7de', class: "shell-layout__skip-link", onClick: this.skipLinkClick.emit, type: "button" }, this.skipLinkLabel), h("div", { key: 'facbc861dab6ca4ac345d712cc95f0e1e80cf332', class: "shell-layout__header-left" }, h("button", { key: 'af58135756e998be3dda22ce984a4a6665e53152', class: "shell-layout__header-tool", onClick: this.onNavigationToggleClick, type: "button" }, h("swirl-icon-dock-left", { key: 'bd9e8c166ff79094593a36746b7d76658768f70b', size: 20 }), h("swirl-visually-hidden", { key: '7b17513abe295dd3e898f3c972dbbd04e8d8e432' }, this.navigationToggleLabel)), h("a", { key: 'b11db23915c0c6e08d5ae73b4e3121b718b1ba60', class: "shell-layout__header-tool", href: "javascript:history.back()" }, h("swirl-icon-arrow-back", { key: 'e55bf3c9f653257bc6813cba251e94a56f6809ed', size: 20 }), h("swirl-visually-hidden", { key: '1d9ed2b3315d620b53ba186d5c6e4910cb817469' }, this.browserBackButtonLabel)), h("a", { key: '0309c1d01ed19133465ce57d38e6566212cd4d2d', class: "shell-layout__header-tool", href: "javascript:history.forward()" }, h("swirl-icon-arrow-forward", { key: '8b36cbfbbd95d43c371ec2ae679b2c6cfc9cf9b6', size: 20 }), h("swirl-visually-hidden", { key: '0636c9e162db5687f2201f3ecefbd73ab138492e' }, this.browserForwardButtonLabel)), h("slot", { key: 'ff204208cfc3d964de19cf34282151231feffca2', name: "left-header-tools" })), h("div", { key: '3b67421fadb8ae927b41e8a880673d4231a702d8', class: "shell-layout__logo" }, h("slot", { key: '30e035a1e2019df1c8e0c4753986b838d80b2d43', name: "logo" })), h("div", { key: '3a820a285768c3a01df5ce3c27c7a6327f99fbfd', class: "shell-layout__header-right" }, h("slot", { key: '92eec4f65e57bfa62de2f946488e3dbcc5a55ac5', name: "right-header-tools" }), h("button", { key: 'bcb9abe9b026fa5a0bdd8e6a756c87bca571015b', class: "shell-layout__header-tool shell-layout__sidebar-toggle", onClick: this.sidebarToggleClick.emit, type: "button" }, h("swirl-icon", { key: 'a5c2cfd085fa5e2e562444bd0dafe7e752c437b8', glyph: this.sidebarToggleIcon, size: 20 }), h("swirl-visually-hidden", { key: 'bbead2f6466b45151e9b4564bbb8add03b877bb9' }, this.sidebarToggleLabel), this.sidebarToggleBadge && (h("swirl-badge", { key: 'fb11e5178a9ff012f644cece32ad6ce517cba230', "aria-label": this.sidebarToggleBadgeAriaLabel, label: !hasSidebarToggleBadgeWithLabel
166
174
  ? this.sidebarToggleBadgeAriaLabel
167
- : String(this.sidebarToggleBadge), size: "xs", variant: !hasSidebarToggleBadgeWithLabel ? "dot" : "default" }))), h("slot", { key: '30faf24857b927774b5f99fb81bf969b7e9e79d9', name: "avatar" }))), h("div", { key: '3d306e78d42951897ce5fbeb3e4bbb020a8b705b', class: "shell-layout__mobile-nav-backdrop", onClick: this.onNavigationClick }), h("nav", { key: '1241e5d10b77daa77454d8f3157d4905c951bfd9', "aria-labelledby": "main-navigation-label", class: "shell-layout__nav", onClick: this.onNavigationClick, ref: (el) => (this.navElement = el) }, h("div", { key: 'f1f10b0a9b928c9788fa45950b6db93f112f1b00', class: "shell-layout__mobile-header" }, h("slot", { key: 'ea2dd9d1b0721eb1cbee2194ae609f9b8efeb7e8', name: "mobile-logo" }), h("div", { key: '91684c95ab397db06f8fffa3302beeff90b34eef', class: "shell-layout__mobile-header-tools" }, h("slot", { key: 'a3b51069cb48e2624c99a3e36271cc9076ebc6b9', name: "mobile-header-tools" }), h("button", { key: '72faa9f199a14964662724e8deb2a96c527364b1', class: "shell-layout__header-tool", type: "button" }, h("swirl-icon-double-arrow-left", { key: '3258dbb5f8b839cfc98d73e4620df3c7bc33260d', size: 20 }), h("swirl-visually-hidden", { key: '2e480b97affdfd914c3ab4ede0907b6b82d67ff6' }, this.hideMobileNavigationButtonLabel)))), h("div", { key: '1a5350c2b6ef8a787345fc8a9f5824da2d6fd22f', class: "shell-layout__nav-body" }, h("swirl-visually-hidden", { key: '359d25014c23a189979e44eb8680f55b5a088e76' }, h("span", { key: 'b4890f60b20ca0c63a153f0fb5f7bfe49f4bf76e', id: "main-navigation-label" }, this.navigationLabel)), h("slot", { key: '449ba439cf0185fd7bafe10e6122512e17471b9e', name: "nav", onSlotchange: this.collectNavItems }), h("div", { key: '753b0f3c050cfe1147f742bbab983ec9e2238b2e', class: "shell-layout__secondary-nav" }, h("swirl-separator", { key: 'c1cddd993040685ab1b587235bb0d8fc12f1945e', borderColor: "strong", spacing: "16" }), this.enableSecondaryNavGridLayout && (h("swirl-box", { key: '9b0906021e329b2b35b62c0a6fa70e178b59df03', paddingBlockEnd: "16" }, h("swirl-stack", { key: 'f4c6ca124dea40f980dab7980e39c26860d399e3', justify: this.navigationCollapsed ? "center" : "space-between", orientation: "horizontal" }, h("swirl-button", { key: '500d0d44d9dc457b97b2cc0685178eb56b6a7494', hideLabel: this.navigationCollapsed, icon: this.secondaryNavCollapsed
175
+ : String(this.sidebarToggleBadge), size: "xs", variant: !hasSidebarToggleBadgeWithLabel ? "dot" : "default" }))), h("slot", { key: '99ee33d8b3dff40ce4b534266fbdafc4dabf40d3', name: "avatar" }))), h("div", { key: '1e07aec21223b6b1277a1f736305204a9d051c69', class: "shell-layout__mobile-nav-backdrop", onClick: this.onNavigationClick }), h("nav", { key: '593f2d068ec0dcf1161b7f95474611cd0e68a6ef', "aria-labelledby": "main-navigation-label", class: "shell-layout__nav", onClick: this.onNavigationClick, ref: (el) => (this.navElement = el) }, h("div", { key: 'a5c91123dd243bace517da12663747fc3ad71e10', class: "shell-layout__mobile-header" }, h("slot", { key: '1294c6603ac3d687cad4d009f28b651d4f57f451', name: "mobile-logo" }), h("div", { key: '17e63882a7961b5b4284565d548955ba2d6c56d0', class: "shell-layout__mobile-header-tools" }, h("slot", { key: 'c032f2ed1c52472666d62dea4fb2e4d3d31b6be1', name: "mobile-header-tools" }), h("button", { key: 'c3dfbf08c35f2725160a2288b25c306efd0fcf1e', class: "shell-layout__header-tool", type: "button" }, h("swirl-icon-double-arrow-left", { key: 'b05634fac98129147a4509c4461b48c28ed698f7', size: 20 }), h("swirl-visually-hidden", { key: 'b49b592652e0c4377e99934a18d0a81dcbcea55f' }, this.hideMobileNavigationButtonLabel)))), h("div", { key: '537391a48cc90659e367cb933c0625ef1b32146e', class: "shell-layout__nav-body" }, h("swirl-visually-hidden", { key: 'ba3f245289fada7bb8fc0b5c38d1f1c0a43f667d' }, h("span", { key: '7d1808931d93a88dd35746a5df8057f6e5aa46fd', id: "main-navigation-label" }, this.navigationLabel)), h("slot", { key: '3a082bac6933f9de6972ec0b69190c5ba6352405', name: "nav", onSlotchange: this.collectNavItems }), h("div", { key: 'c70a7ccf4d2408b05a8e74b378f9f32bb28fb6fa', class: "shell-layout__secondary-nav" }, h("swirl-separator", { key: '2e961f628c249b66a10121ee936924ff26f272a3', borderColor: "strong", spacing: "16" }), this.enableSecondaryNavGridLayout && (h("swirl-box", { key: 'a554a1070e79b14aac46bc0c73272071c3cc8866', paddingBlockEnd: "16" }, h("swirl-stack", { key: '333b1102a5900d06d5b27c9755e1e65132b248f6', justify: this.navigationCollapsed ? "center" : "space-between", orientation: "horizontal" }, h("swirl-button", { key: 'b3c51308bfb1067e6fc34b26e09efac5e8d251ac', hideLabel: this.navigationCollapsed, icon: this.secondaryNavCollapsed
168
176
  ? "<swirl-icon-expand-more></swirl-icon-expand-more>"
169
177
  : "<swirl-icon-expand-less></swirl-icon-expand-less>", label: this.secondaryNavCollapsed
170
178
  ? this.secondaryNavExpandLabel
171
179
  : this.secondaryNavCollapseLabel, onClick: this.toggleSecondaryNavCollapse, variant: "plain" }), !this.navigationCollapsed &&
172
- !this.secondaryNavCollapsed && (h("swirl-button", { key: 'ac2ff76954943a20902c6733f87899a8b6186b34', icon: this.secondaryNavView === "grid"
180
+ !this.secondaryNavCollapsed && (h("swirl-button", { key: '907779e749bf62369d80c8c9ede8b29c1f8875ee', icon: this.secondaryNavView === "grid"
173
181
  ? "<swirl-icon-menu></swirl-icon-menu>"
174
182
  : "<swirl-icon-hamburger-menu></swirl-icon-hamburger-menu>", iconPosition: "end", label: this.secondaryNavView === "grid"
175
183
  ? this.gridNavLayoutToggleLabel
176
- : this.listNavLayoutToggleLabel, onClick: this.toggleSecondaryNavView, variant: "plain" }))))), h("ul", { key: '845b1077674331b52d0226edec5fdca9d0de61d9', class: {
184
+ : this.listNavLayoutToggleLabel, onClick: this.toggleSecondaryNavView, variant: "plain" }))))), h("div", { key: '63bc109d986d9e6556281f4c32fed5cf0df295bb', class: {
177
185
  "shell-layout__secondary-nav-items": true,
178
186
  "shell-layout__secondary-nav-items--grid-view": this.enableSecondaryNavGridLayout &&
179
187
  this.secondaryNavView === "grid",
180
- } }, h("slot", { key: '9729bdcef478c6d17aacd38a15e9f0dc83376bfd', name: "secondary-nav", onSlotchange: this.collectNavItems }))))), h("main", { key: 'b362c844b7cf75636b3f21537b45d2aca90a84d1', class: "shell-layout__main", id: "main-content" }, h("slot", { key: '869588df1374626baf1533895a826ad1b72770c4' })), h("aside", { key: '5fe6572ca71fc826296dceb3c86eaa557f492bcf', class: "shell-layout__sidebar", inert: this.sidebarActive ? undefined : true }, h("div", { key: '5a1ec6fa64fa3487c5bbfbac7c0a936f7b8484f5', class: "shell-layout__sidebar-body" }, h("div", { key: 'f76b0b784ae026799817e58a543383dfd03d3b6b', class: "shell-layout__sidebar-app-bar" }, h("slot", { key: '9a44404c205282ab06d9dd60bb08fe5b9907c558', name: "sidebar-app-bar" })), h("div", { key: '54b8de1ea6ef504ce7d0c308388393e736f4377e', class: "shell-layout__sidebar-content" }, h("slot", { key: '907b5f09dc7023209f22c3b1f272cd2c98655d27', name: "sidebar" })))))));
188
+ } }, h("slot", { key: 'c80fd6c094acd411b1a3c9ff9f83d3e850926961', name: "secondary-nav", onSlotchange: this.collectNavItems }))))), h("main", { key: 'e124d72f598b847a8cdd10c61133cbbd794c7653', class: "shell-layout__main", id: "main-content" }, h("slot", { key: '5f36222a496b3d09f8cdd4408d0046a1c7cbdd5c' })), h("aside", { key: 'c1230a26362fbefe0b89256f2c66bd45c11ed6ce', class: "shell-layout__sidebar", inert: this.sidebarActive ? undefined : true }, h("div", { key: '661dacd4e864efebb33eaef11542b6c4c38af45d', class: "shell-layout__sidebar-body" }, h("div", { key: 'ba3f25fe287f6b99865d9217e2dc0adf9e90dbe5', class: "shell-layout__sidebar-app-bar" }, h("slot", { key: '12aa5360f51fcef3b196409d42c2adcfabe6aea6', name: "sidebar-app-bar" })), h("div", { key: '82c185521ab9cc78e104fcd39e687bf4e25f7cf6', class: "shell-layout__sidebar-content" }, h("slot", { key: '20b78c6bb03c09ddeda88b39bb4e680f63c5a4f1', name: "sidebar" })))))));
181
189
  }
182
190
  static get is() { return "swirl-shell-layout"; }
183
191
  static get encapsulation() { return "scoped"; }
@@ -1,5 +1,10 @@
1
1
  import { newSpecPage } from "@stencil/core/testing";
2
2
  import { SwirlShellLayout } from "./swirl-shell-layout";
3
+ global.MutationObserver = class {
4
+ constructor() { }
5
+ disconnect() { }
6
+ observe() { }
7
+ };
3
8
  describe("swirl-shell-layout", () => {
4
9
  it("renders its content", async () => {
5
10
  const page = await newSpecPage({
@@ -39,43 +39,55 @@ const Template = (args) => {
39
39
  <div slot="nav">
40
40
  <swirl-stack align="stretch" as="ul" spacing="2">
41
41
  <li>
42
- <swirl-shell-navigation-item label="Home">
43
- <swirl-app-icon icon="<swirl-icon-home size=&quot;24&quot;></swirl-icon-home>" slot="icon"></swirl-app-icon>
42
+ <swirl-shell-navigation-item label="News">
43
+ <swirl-app-icon icon="<swirl-icon-news size=&quot;24&quot;></swirl-icon-news>" slot="icon"></swirl-app-icon>
44
44
  </swirl-shell-navigation-item>
45
45
  </li>
46
46
  <li>
47
- <swirl-shell-navigation-item active label="News" badge-label="">
48
- <swirl-app-icon icon="<swirl-icon-news-filled size=&quot;24&quot;></swirl-icon-news-filled>" slot="icon"></swirl-app-icon>
47
+ <swirl-shell-navigation-item active label="Chats">
48
+ <swirl-app-icon icon="<swirl-icon-chats size=&quot;24&quot;></swirl-icon-chats>" slot="icon"></swirl-app-icon>
49
49
  </swirl-shell-navigation-item>
50
50
  </li>
51
51
  <li>
52
- <swirl-shell-navigation-item label="Chat" badge-label="3">
53
- <swirl-app-icon icon="<swirl-icon-chat-bubble size=&quot;24&quot;></swirl-icon-chat-bubble>" slot="icon"></swirl-app-icon>
52
+ <swirl-shell-navigation-item label="Tasks" badge-label="3">
53
+ <swirl-app-icon icon="<swirl-icon-tasks size=&quot;24&quot;></swirl-icon-tasks>" slot="icon"></swirl-app-icon>
54
54
  </swirl-shell-navigation-item>
55
55
  </li>
56
56
  <li>
57
- <swirl-shell-navigation-item label="Tasks">
58
- <swirl-app-icon icon="<swirl-icon-tasks-filled size=&quot;24&quot;></swirl-icon-tasks-filled>" slot="icon"></swirl-app-icon>
57
+ <swirl-shell-navigation-item label="Calendar">
58
+ <swirl-app-icon icon="<swirl-icon-today size=&quot;24&quot;></swirl-icon-today>" slot="icon"></swirl-app-icon>
59
+ </swirl-shell-navigation-item>
60
+ </li>
61
+ <li>
62
+ <swirl-shell-navigation-item label="Employee directory">
63
+ <swirl-app-icon icon="<swirl-icon-directory size=&quot;24&quot;></swirl-icon-directory>" slot="icon"></swirl-app-icon>
59
64
  </swirl-shell-navigation-item>
60
65
  </li>
61
66
  </swirl-stack>
62
67
  </div>
63
68
 
64
- <li slot="secondary-nav">
65
- <swirl-shell-navigation-item label="Employee directory">
66
- <swirl-app-icon icon="<swirl-icon-groups-filled size=&quot;24&quot;></swirl-icon-groups-filled>" slot="icon"></swirl-app-icon>
69
+ <ul slot="secondary-nav">
70
+ <li>
71
+ <swirl-shell-navigation-item label="Reporting hub">
72
+ <swirl-app-icon src="/menu-item-1.png" slot="icon"></swirl-app-icon>
73
+ </swirl-shell-navigation-item>
74
+ </li>
75
+ <li>
76
+ <swirl-shell-navigation-item label="My absences">
77
+ <swirl-app-icon src="/menu-item-2.png" slot="icon"></swirl-app-icon>
67
78
  </swirl-shell-navigation-item>
68
79
  </li>
69
- <li slot="secondary-nav">
70
- <swirl-shell-navigation-item badge-label="3" label="Custom Link">
71
- <swirl-app-icon slot="icon" label="link" src="https://picsum.photos/id/433/144/144" slot="icon"></swirl-app-icon>
80
+ <li>
81
+ <swirl-shell-navigation-item label="IT self-service">
82
+ <swirl-app-icon src="/menu-item-3.png" slot="icon"></swirl-app-icon>
72
83
  </swirl-shell-navigation-item>
73
84
  </li>
74
- <li slot="secondary-nav">
75
- <swirl-shell-navigation-item label="Custom Link with an unusually long label">
76
- <swirl-app-icon slot="icon" label="link" src="https://picsum.photos/id/433/144/144" slot="icon"></swirl-app-icon>
85
+ <li>
86
+ <swirl-shell-navigation-item label="Office door key">
87
+ <swirl-app-icon src="/menu-item-4.png" slot="icon"></swirl-app-icon>
77
88
  </swirl-shell-navigation-item>
78
89
  </li>
90
+ </ul>
79
91
 
80
92
  <swirl-app-layout app-name="App name">
81
93
  <swirl-button hide-label="true" icon="<swirl-icon-menu></swirl-icon-menu>" label="Menu" slot="navigation-mobile-menu-button"></swirl-button>