@getflip/swirl-components 0.219.0 → 0.220.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 (412) hide show
  1. package/components.json +215 -5
  2. package/dist/cjs/file-manager.cjs.entry.js +1 -1
  3. package/dist/cjs/index-6aba64ed.js +4 -4
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/swirl-app-icon.cjs.entry.js +1 -1
  6. package/dist/cjs/swirl-components.cjs.js +1 -1
  7. package/dist/cjs/swirl-shell-layout.cjs.entry.js +82 -3
  8. package/dist/cjs/swirl-shell-navigation-item.cjs.entry.js +7 -4
  9. package/dist/cjs/swirl-symbol-account-circle.cjs.entry.js +1 -1
  10. package/dist/cjs/swirl-symbol-alternate-email.cjs.entry.js +1 -1
  11. package/dist/cjs/swirl-symbol-android.cjs.entry.js +1 -1
  12. package/dist/cjs/swirl-symbol-announcement.cjs.entry.js +1 -1
  13. package/dist/cjs/swirl-symbol-backup.cjs.entry.js +1 -1
  14. package/dist/cjs/swirl-symbol-beach-access.cjs.entry.js +1 -1
  15. package/dist/cjs/swirl-symbol-bookmark.cjs.entry.js +1 -1
  16. package/dist/cjs/swirl-symbol-cloud.cjs.entry.js +1 -1
  17. package/dist/cjs/swirl-symbol-coronavirus.cjs.entry.js +1 -1
  18. package/dist/cjs/swirl-symbol-desktop-windows.cjs.entry.js +1 -1
  19. package/dist/cjs/swirl-symbol-directions-car-filled.cjs.entry.js +1 -1
  20. package/dist/cjs/swirl-symbol-edit-calendar.cjs.entry.js +1 -1
  21. package/dist/cjs/swirl-symbol-email.cjs.entry.js +1 -1
  22. package/dist/cjs/swirl-symbol-emoji-food-beverage.cjs.entry.js +1 -1
  23. package/dist/cjs/swirl-symbol-event-menu.cjs.entry.js +1 -1
  24. package/dist/cjs/swirl-symbol-facebook.cjs.entry.js +1 -1
  25. package/dist/cjs/swirl-symbol-favorite.cjs.entry.js +1 -1
  26. package/dist/cjs/swirl-symbol-fitness-center.cjs.entry.js +1 -1
  27. package/dist/cjs/swirl-symbol-flag.cjs.entry.js +1 -1
  28. package/dist/cjs/swirl-symbol-folder.cjs.entry.js +1 -1
  29. package/dist/cjs/swirl-symbol-globe.cjs.entry.js +1 -1
  30. package/dist/cjs/swirl-symbol-groups.cjs.entry.js +1 -1
  31. package/dist/cjs/swirl-symbol-help.cjs.entry.js +1 -1
  32. package/dist/cjs/swirl-symbol-image.cjs.entry.js +1 -1
  33. package/dist/cjs/swirl-symbol-info-menu.cjs.entry.js +1 -1
  34. package/dist/cjs/swirl-symbol-instagram.cjs.entry.js +1 -1
  35. package/dist/cjs/swirl-symbol-ios.cjs.entry.js +1 -1
  36. package/dist/cjs/swirl-symbol-language.cjs.entry.js +1 -1
  37. package/dist/cjs/swirl-symbol-leaderboard.cjs.entry.js +1 -1
  38. package/dist/cjs/swirl-symbol-lightbulb.cjs.entry.js +1 -1
  39. package/dist/cjs/swirl-symbol-linkedin.cjs.entry.js +1 -1
  40. package/dist/cjs/swirl-symbol-location-on.cjs.entry.js +1 -1
  41. package/dist/cjs/swirl-symbol-loyalty.cjs.entry.js +1 -1
  42. package/dist/cjs/swirl-symbol-maps-home-work.cjs.entry.js +1 -1
  43. package/dist/cjs/swirl-symbol-notifications.cjs.entry.js +1 -1
  44. package/dist/cjs/swirl-symbol-open-in-new.cjs.entry.js +1 -1
  45. package/dist/cjs/swirl-symbol-pedal-bike.cjs.entry.js +1 -1
  46. package/dist/cjs/swirl-symbol-pinterest.cjs.entry.js +1 -1
  47. package/dist/cjs/swirl-symbol-policy.cjs.entry.js +1 -1
  48. package/dist/cjs/swirl-symbol-push-pin.cjs.entry.js +1 -1
  49. package/dist/cjs/swirl-symbol-redeem.cjs.entry.js +1 -1
  50. package/dist/cjs/swirl-symbol-report-problem.cjs.entry.js +1 -1
  51. package/dist/cjs/swirl-symbol-restaurant.cjs.entry.js +1 -1
  52. package/dist/cjs/swirl-symbol-roadmap.cjs.entry.js +1 -1
  53. package/dist/cjs/swirl-symbol-room.cjs.entry.js +1 -1
  54. package/dist/cjs/swirl-symbol-savings.cjs.entry.js +1 -1
  55. package/dist/cjs/swirl-symbol-settings-voice.cjs.entry.js +1 -1
  56. package/dist/cjs/swirl-symbol-shopping-cart.cjs.entry.js +1 -1
  57. package/dist/cjs/swirl-symbol-smartphone.cjs.entry.js +1 -1
  58. package/dist/cjs/swirl-symbol-star.cjs.entry.js +1 -1
  59. package/dist/cjs/swirl-symbol-supervisor-account.cjs.entry.js +1 -1
  60. package/dist/cjs/swirl-symbol-thumbs-up-down.cjs.entry.js +1 -1
  61. package/dist/cjs/swirl-symbol-twitter.cjs.entry.js +1 -1
  62. package/dist/cjs/swirl-symbol-wb-sunny.cjs.entry.js +1 -1
  63. package/dist/cjs/swirl-symbol-wechat.cjs.entry.js +1 -1
  64. package/dist/cjs/swirl-symbol-weibo.cjs.entry.js +1 -1
  65. package/dist/cjs/swirl-symbol-work.cjs.entry.js +1 -1
  66. package/dist/cjs/swirl-symbol-xing.cjs.entry.js +1 -1
  67. package/dist/cjs/swirl-symbol-youtube.cjs.entry.js +1 -1
  68. package/dist/cjs/swirl-symbol.cjs.entry.js +1 -1
  69. package/dist/cjs/swirl-table-cell.cjs.entry.js +1 -1
  70. package/dist/cjs/swirl-table-row-group.cjs.entry.js +2 -2
  71. package/dist/cjs/swirl-table-row.cjs.entry.js +1 -1
  72. package/dist/cjs/swirl-table.cjs.entry.js +1 -1
  73. package/dist/cjs/swirl-tabs.cjs.entry.js +1 -1
  74. package/dist/cjs/swirl-theme-provider.cjs.entry.js +1 -1
  75. package/dist/cjs/swirl-time-input.cjs.entry.js +1 -1
  76. package/dist/cjs/swirl-tooltip.cjs.entry.js +5 -3
  77. package/dist/cjs/swirl-tree-navigation-item.cjs.entry.js +1 -1
  78. package/dist/cjs/swirl-video-thumbnail.cjs.entry.js +1 -1
  79. package/dist/cjs/swirl-visually-hidden.cjs.entry.js +1 -1
  80. package/dist/collection/assets/pdfjs/pdf.worker.min.js +1 -1
  81. package/dist/collection/components/swirl-app-icon/swirl-app-icon.css +2 -0
  82. package/dist/collection/components/swirl-shell-layout/swirl-shell-layout.css +49 -21
  83. package/dist/collection/components/swirl-shell-layout/swirl-shell-layout.js +174 -3
  84. package/dist/collection/components/swirl-shell-layout/swirl-shell-layout.spec.js +6 -1
  85. package/dist/collection/components/swirl-shell-layout/swirl-shell-layout.stories.js +33 -17
  86. package/dist/collection/components/swirl-shell-navigation-item/swirl-shell-navigation-item.css +59 -8
  87. package/dist/collection/components/swirl-shell-navigation-item/swirl-shell-navigation-item.js +42 -5
  88. package/dist/collection/components/swirl-shell-navigation-item/swirl-shell-navigation-item.spec.js +13 -9
  89. package/dist/collection/components/swirl-shell-navigation-item/swirl-shell-navigation-item.stories.js +1 -1
  90. package/dist/collection/components/swirl-symbol/swirl-symbol.js +1 -1
  91. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-account-circle.js +1 -1
  92. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-alternate-email.js +1 -1
  93. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-android.js +1 -1
  94. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-announcement.js +1 -1
  95. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-backup.js +1 -1
  96. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-beach-access.js +1 -1
  97. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-bookmark.js +1 -1
  98. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-cloud.js +1 -1
  99. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-coronavirus.js +1 -1
  100. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-desktop-windows.js +1 -1
  101. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-directions-car-filled.js +1 -1
  102. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-edit-calendar.js +1 -1
  103. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-email.js +1 -1
  104. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-emoji-food-beverage.js +1 -1
  105. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-event-menu.js +1 -1
  106. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-facebook.js +1 -1
  107. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-favorite.js +1 -1
  108. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-fitness-center.js +1 -1
  109. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-flag.js +1 -1
  110. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-folder.js +1 -1
  111. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-globe.js +1 -1
  112. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-groups.js +1 -1
  113. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-help.js +1 -1
  114. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-image.js +1 -1
  115. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-info-menu.js +1 -1
  116. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-instagram.js +1 -1
  117. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-ios.js +1 -1
  118. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-language.js +1 -1
  119. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-leaderboard.js +1 -1
  120. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-lightbulb.js +1 -1
  121. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-linkedin.js +1 -1
  122. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-location-on.js +1 -1
  123. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-loyalty.js +1 -1
  124. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-maps-home-work.js +1 -1
  125. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-notifications.js +1 -1
  126. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-open-in-new.js +1 -1
  127. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-pedal-bike.js +1 -1
  128. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-pinterest.js +1 -1
  129. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-policy.js +1 -1
  130. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-push-pin.js +1 -1
  131. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-redeem.js +1 -1
  132. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-report-problem.js +1 -1
  133. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-restaurant.js +1 -1
  134. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-roadmap.js +1 -1
  135. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-room.js +1 -1
  136. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-savings.js +1 -1
  137. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-settings-voice.js +1 -1
  138. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-shopping-cart.js +1 -1
  139. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-smartphone.js +1 -1
  140. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-star.js +1 -1
  141. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-supervisor-account.js +1 -1
  142. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-thumbs-up-down.js +1 -1
  143. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-twitter.js +1 -1
  144. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-wb-sunny.js +1 -1
  145. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-wechat.js +1 -1
  146. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-weibo.js +1 -1
  147. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-work.js +1 -1
  148. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-xing.js +1 -1
  149. package/dist/collection/components/swirl-symbol/symbols/swirl-symbol-youtube.js +1 -1
  150. package/dist/collection/components/swirl-table/swirl-table.js +1 -1
  151. package/dist/collection/components/swirl-table-cell/swirl-table-cell.js +1 -1
  152. package/dist/collection/components/swirl-table-row/swirl-table-row.js +1 -1
  153. package/dist/collection/components/swirl-table-row-group/swirl-table-row-group.js +2 -2
  154. package/dist/collection/components/swirl-tabs/swirl-tabs.js +1 -1
  155. package/dist/collection/components/swirl-theme-provider/swirl-theme-provider.js +1 -1
  156. package/dist/collection/components/swirl-time-input/swirl-time-input.js +1 -1
  157. package/dist/collection/components/swirl-tooltip/swirl-tooltip.css +5 -0
  158. package/dist/collection/components/swirl-tooltip/swirl-tooltip.js +22 -2
  159. package/dist/collection/components/swirl-tooltip/swirl-tooltip.spec.js +2 -2
  160. package/dist/collection/components/swirl-tree-navigation-item/swirl-tree-navigation-item.js +1 -1
  161. package/dist/collection/components/swirl-video-thumbnail/swirl-video-thumbnail.js +1 -1
  162. package/dist/collection/components/swirl-visually-hidden/swirl-visually-hidden.js +1 -1
  163. package/dist/collection/prototypes/file-manager/file-manager.js +1 -1
  164. package/dist/components/assets/pdfjs/pdf.worker.min.js +1 -1
  165. package/dist/components/file-manager.js +1 -1
  166. package/dist/components/swirl-app-icon.js +1 -1
  167. package/dist/components/swirl-shell-layout.js +125 -15
  168. package/dist/components/swirl-shell-navigation-item.js +18 -7
  169. package/dist/components/swirl-symbol-account-circle.js +1 -1
  170. package/dist/components/swirl-symbol-alternate-email.js +1 -1
  171. package/dist/components/swirl-symbol-android.js +1 -1
  172. package/dist/components/swirl-symbol-announcement.js +1 -1
  173. package/dist/components/swirl-symbol-backup.js +1 -1
  174. package/dist/components/swirl-symbol-beach-access.js +1 -1
  175. package/dist/components/swirl-symbol-bookmark.js +1 -1
  176. package/dist/components/swirl-symbol-cloud.js +1 -1
  177. package/dist/components/swirl-symbol-coronavirus.js +1 -1
  178. package/dist/components/swirl-symbol-desktop-windows.js +1 -1
  179. package/dist/components/swirl-symbol-directions-car-filled.js +1 -1
  180. package/dist/components/swirl-symbol-edit-calendar.js +1 -1
  181. package/dist/components/swirl-symbol-email.js +1 -1
  182. package/dist/components/swirl-symbol-emoji-food-beverage.js +1 -1
  183. package/dist/components/swirl-symbol-event-menu.js +1 -1
  184. package/dist/components/swirl-symbol-facebook.js +1 -1
  185. package/dist/components/swirl-symbol-favorite.js +1 -1
  186. package/dist/components/swirl-symbol-fitness-center.js +1 -1
  187. package/dist/components/swirl-symbol-flag.js +1 -1
  188. package/dist/components/swirl-symbol-folder.js +1 -1
  189. package/dist/components/swirl-symbol-globe.js +1 -1
  190. package/dist/components/swirl-symbol-groups.js +1 -1
  191. package/dist/components/swirl-symbol-help.js +1 -1
  192. package/dist/components/swirl-symbol-image.js +1 -1
  193. package/dist/components/swirl-symbol-info-menu.js +1 -1
  194. package/dist/components/swirl-symbol-instagram.js +1 -1
  195. package/dist/components/swirl-symbol-ios.js +1 -1
  196. package/dist/components/swirl-symbol-language.js +1 -1
  197. package/dist/components/swirl-symbol-leaderboard.js +1 -1
  198. package/dist/components/swirl-symbol-lightbulb.js +1 -1
  199. package/dist/components/swirl-symbol-linkedin.js +1 -1
  200. package/dist/components/swirl-symbol-location-on.js +1 -1
  201. package/dist/components/swirl-symbol-loyalty.js +1 -1
  202. package/dist/components/swirl-symbol-maps-home-work.js +1 -1
  203. package/dist/components/swirl-symbol-notifications.js +1 -1
  204. package/dist/components/swirl-symbol-open-in-new.js +1 -1
  205. package/dist/components/swirl-symbol-pedal-bike.js +1 -1
  206. package/dist/components/swirl-symbol-pinterest.js +1 -1
  207. package/dist/components/swirl-symbol-policy.js +1 -1
  208. package/dist/components/swirl-symbol-push-pin.js +1 -1
  209. package/dist/components/swirl-symbol-redeem.js +1 -1
  210. package/dist/components/swirl-symbol-report-problem.js +1 -1
  211. package/dist/components/swirl-symbol-restaurant.js +1 -1
  212. package/dist/components/swirl-symbol-roadmap.js +1 -1
  213. package/dist/components/swirl-symbol-room.js +1 -1
  214. package/dist/components/swirl-symbol-savings.js +1 -1
  215. package/dist/components/swirl-symbol-settings-voice.js +1 -1
  216. package/dist/components/swirl-symbol-shopping-cart.js +1 -1
  217. package/dist/components/swirl-symbol-smartphone.js +1 -1
  218. package/dist/components/swirl-symbol-star.js +1 -1
  219. package/dist/components/swirl-symbol-supervisor-account.js +1 -1
  220. package/dist/components/swirl-symbol-thumbs-up-down.js +1 -1
  221. package/dist/components/swirl-symbol-twitter.js +1 -1
  222. package/dist/components/swirl-symbol-wb-sunny.js +1 -1
  223. package/dist/components/swirl-symbol-wechat.js +1 -1
  224. package/dist/components/swirl-symbol-weibo.js +1 -1
  225. package/dist/components/swirl-symbol-work.js +1 -1
  226. package/dist/components/swirl-symbol-xing.js +1 -1
  227. package/dist/components/swirl-symbol-youtube.js +1 -1
  228. package/dist/components/swirl-symbol.js +1 -1
  229. package/dist/components/swirl-table-cell.js +1 -1
  230. package/dist/components/swirl-table-row-group.js +2 -2
  231. package/dist/components/swirl-table-row.js +1 -1
  232. package/dist/components/swirl-table.js +1 -1
  233. package/dist/components/swirl-tabs.js +1 -1
  234. package/dist/components/swirl-theme-provider.js +1 -1
  235. package/dist/components/swirl-time-input.js +1 -1
  236. package/dist/components/swirl-tooltip2.js +6 -3
  237. package/dist/components/swirl-tree-navigation-item.js +1 -1
  238. package/dist/components/swirl-video-thumbnail.js +1 -1
  239. package/dist/components/swirl-visually-hidden2.js +1 -1
  240. package/dist/esm/file-manager.entry.js +1 -1
  241. package/dist/esm/index-2d054a87.js +4 -4
  242. package/dist/esm/loader.js +1 -1
  243. package/dist/esm/swirl-app-icon.entry.js +1 -1
  244. package/dist/esm/swirl-components.js +1 -1
  245. package/dist/esm/swirl-shell-layout.entry.js +83 -4
  246. package/dist/esm/swirl-shell-navigation-item.entry.js +7 -4
  247. package/dist/esm/swirl-symbol-account-circle.entry.js +1 -1
  248. package/dist/esm/swirl-symbol-alternate-email.entry.js +1 -1
  249. package/dist/esm/swirl-symbol-android.entry.js +1 -1
  250. package/dist/esm/swirl-symbol-announcement.entry.js +1 -1
  251. package/dist/esm/swirl-symbol-backup.entry.js +1 -1
  252. package/dist/esm/swirl-symbol-beach-access.entry.js +1 -1
  253. package/dist/esm/swirl-symbol-bookmark.entry.js +1 -1
  254. package/dist/esm/swirl-symbol-cloud.entry.js +1 -1
  255. package/dist/esm/swirl-symbol-coronavirus.entry.js +1 -1
  256. package/dist/esm/swirl-symbol-desktop-windows.entry.js +1 -1
  257. package/dist/esm/swirl-symbol-directions-car-filled.entry.js +1 -1
  258. package/dist/esm/swirl-symbol-edit-calendar.entry.js +1 -1
  259. package/dist/esm/swirl-symbol-email.entry.js +1 -1
  260. package/dist/esm/swirl-symbol-emoji-food-beverage.entry.js +1 -1
  261. package/dist/esm/swirl-symbol-event-menu.entry.js +1 -1
  262. package/dist/esm/swirl-symbol-facebook.entry.js +1 -1
  263. package/dist/esm/swirl-symbol-favorite.entry.js +1 -1
  264. package/dist/esm/swirl-symbol-fitness-center.entry.js +1 -1
  265. package/dist/esm/swirl-symbol-flag.entry.js +1 -1
  266. package/dist/esm/swirl-symbol-folder.entry.js +1 -1
  267. package/dist/esm/swirl-symbol-globe.entry.js +1 -1
  268. package/dist/esm/swirl-symbol-groups.entry.js +1 -1
  269. package/dist/esm/swirl-symbol-help.entry.js +1 -1
  270. package/dist/esm/swirl-symbol-image.entry.js +1 -1
  271. package/dist/esm/swirl-symbol-info-menu.entry.js +1 -1
  272. package/dist/esm/swirl-symbol-instagram.entry.js +1 -1
  273. package/dist/esm/swirl-symbol-ios.entry.js +1 -1
  274. package/dist/esm/swirl-symbol-language.entry.js +1 -1
  275. package/dist/esm/swirl-symbol-leaderboard.entry.js +1 -1
  276. package/dist/esm/swirl-symbol-lightbulb.entry.js +1 -1
  277. package/dist/esm/swirl-symbol-linkedin.entry.js +1 -1
  278. package/dist/esm/swirl-symbol-location-on.entry.js +1 -1
  279. package/dist/esm/swirl-symbol-loyalty.entry.js +1 -1
  280. package/dist/esm/swirl-symbol-maps-home-work.entry.js +1 -1
  281. package/dist/esm/swirl-symbol-notifications.entry.js +1 -1
  282. package/dist/esm/swirl-symbol-open-in-new.entry.js +1 -1
  283. package/dist/esm/swirl-symbol-pedal-bike.entry.js +1 -1
  284. package/dist/esm/swirl-symbol-pinterest.entry.js +1 -1
  285. package/dist/esm/swirl-symbol-policy.entry.js +1 -1
  286. package/dist/esm/swirl-symbol-push-pin.entry.js +1 -1
  287. package/dist/esm/swirl-symbol-redeem.entry.js +1 -1
  288. package/dist/esm/swirl-symbol-report-problem.entry.js +1 -1
  289. package/dist/esm/swirl-symbol-restaurant.entry.js +1 -1
  290. package/dist/esm/swirl-symbol-roadmap.entry.js +1 -1
  291. package/dist/esm/swirl-symbol-room.entry.js +1 -1
  292. package/dist/esm/swirl-symbol-savings.entry.js +1 -1
  293. package/dist/esm/swirl-symbol-settings-voice.entry.js +1 -1
  294. package/dist/esm/swirl-symbol-shopping-cart.entry.js +1 -1
  295. package/dist/esm/swirl-symbol-smartphone.entry.js +1 -1
  296. package/dist/esm/swirl-symbol-star.entry.js +1 -1
  297. package/dist/esm/swirl-symbol-supervisor-account.entry.js +1 -1
  298. package/dist/esm/swirl-symbol-thumbs-up-down.entry.js +1 -1
  299. package/dist/esm/swirl-symbol-twitter.entry.js +1 -1
  300. package/dist/esm/swirl-symbol-wb-sunny.entry.js +1 -1
  301. package/dist/esm/swirl-symbol-wechat.entry.js +1 -1
  302. package/dist/esm/swirl-symbol-weibo.entry.js +1 -1
  303. package/dist/esm/swirl-symbol-work.entry.js +1 -1
  304. package/dist/esm/swirl-symbol-xing.entry.js +1 -1
  305. package/dist/esm/swirl-symbol-youtube.entry.js +1 -1
  306. package/dist/esm/swirl-symbol.entry.js +1 -1
  307. package/dist/esm/swirl-table-cell.entry.js +1 -1
  308. package/dist/esm/swirl-table-row-group.entry.js +2 -2
  309. package/dist/esm/swirl-table-row.entry.js +1 -1
  310. package/dist/esm/swirl-table.entry.js +1 -1
  311. package/dist/esm/swirl-tabs.entry.js +1 -1
  312. package/dist/esm/swirl-theme-provider.entry.js +1 -1
  313. package/dist/esm/swirl-time-input.entry.js +1 -1
  314. package/dist/esm/swirl-tooltip.entry.js +5 -3
  315. package/dist/esm/swirl-tree-navigation-item.entry.js +1 -1
  316. package/dist/esm/swirl-video-thumbnail.entry.js +1 -1
  317. package/dist/esm/swirl-visually-hidden.entry.js +1 -1
  318. package/dist/swirl-components/{p-79e2f29e.entry.js → p-0142f199.entry.js} +1 -1
  319. package/dist/swirl-components/{p-95510ee4.entry.js → p-01e4db07.entry.js} +1 -1
  320. package/dist/swirl-components/{p-0fae6a8e.entry.js → p-0390cc40.entry.js} +1 -1
  321. package/dist/swirl-components/{p-b411f25b.entry.js → p-05f79727.entry.js} +1 -1
  322. package/dist/swirl-components/{p-c7ee7078.entry.js → p-08d14c15.entry.js} +1 -1
  323. package/dist/swirl-components/{p-79fdfaea.entry.js → p-0cfdf19f.entry.js} +1 -1
  324. package/dist/swirl-components/{p-1b7c7483.entry.js → p-120f2a92.entry.js} +1 -1
  325. package/dist/swirl-components/p-121a7871.entry.js +1 -0
  326. package/dist/swirl-components/{p-99cec8d5.entry.js → p-17c40b2b.entry.js} +1 -1
  327. package/dist/swirl-components/{p-d6fbfcc0.entry.js → p-1b2df762.entry.js} +1 -1
  328. package/dist/swirl-components/p-1c0f8418.entry.js +1 -0
  329. package/dist/swirl-components/{p-fb1f65f4.entry.js → p-267ada5c.entry.js} +1 -1
  330. package/dist/swirl-components/{p-8fde9b34.entry.js → p-293d4ced.entry.js} +1 -1
  331. package/dist/swirl-components/{p-a9c8ab8b.entry.js → p-2ae0f0af.entry.js} +1 -1
  332. package/dist/swirl-components/{p-1f9a96b7.entry.js → p-2b04c73a.entry.js} +1 -1
  333. package/dist/swirl-components/{p-d974bbd8.entry.js → p-2cc68b68.entry.js} +1 -1
  334. package/dist/swirl-components/{p-3b74ebb4.entry.js → p-322234fc.entry.js} +1 -1
  335. package/dist/swirl-components/{p-76eb20cb.entry.js → p-32c53ee7.entry.js} +1 -1
  336. package/dist/swirl-components/{p-04aa45d9.entry.js → p-3c032b20.entry.js} +1 -1
  337. package/dist/swirl-components/{p-4dd5d770.entry.js → p-4034fb94.entry.js} +1 -1
  338. package/dist/swirl-components/{p-78a988c1.entry.js → p-443af7a9.entry.js} +1 -1
  339. package/dist/swirl-components/{p-1f8d57a1.entry.js → p-4c77be59.entry.js} +1 -1
  340. package/dist/swirl-components/{p-fa507f81.entry.js → p-5252c5ee.entry.js} +1 -1
  341. package/dist/swirl-components/p-5408d04c.entry.js +1 -0
  342. package/dist/swirl-components/p-592044c4.entry.js +1 -0
  343. package/dist/swirl-components/{p-036070f8.entry.js → p-5cb7183b.entry.js} +1 -1
  344. package/dist/swirl-components/p-633b13fc.entry.js +1 -0
  345. package/dist/swirl-components/{p-ab40af46.entry.js → p-6517f970.entry.js} +1 -1
  346. package/dist/swirl-components/{p-56da2313.entry.js → p-65bf38b9.entry.js} +1 -1
  347. package/dist/swirl-components/{p-7792a13b.entry.js → p-6acba3db.entry.js} +1 -1
  348. package/dist/swirl-components/{p-e8b448e6.entry.js → p-70af5a39.entry.js} +1 -1
  349. package/dist/swirl-components/{p-6ffce345.entry.js → p-71259db0.entry.js} +1 -1
  350. package/dist/swirl-components/{p-fe9b5a12.entry.js → p-754a96f9.entry.js} +1 -1
  351. package/dist/swirl-components/{p-1ad4c9c5.entry.js → p-7662d585.entry.js} +1 -1
  352. package/dist/swirl-components/{p-019854f4.entry.js → p-7a81c0d3.entry.js} +1 -1
  353. package/dist/swirl-components/{p-c1335818.entry.js → p-7ed7f07e.entry.js} +1 -1
  354. package/dist/swirl-components/{p-64cc9e73.entry.js → p-82960755.entry.js} +1 -1
  355. package/dist/swirl-components/{p-29ab12da.entry.js → p-8b79bd86.entry.js} +1 -1
  356. package/dist/swirl-components/{p-633898e4.entry.js → p-8f5f6cb2.entry.js} +1 -1
  357. package/dist/swirl-components/{p-29d34426.entry.js → p-915b20f4.entry.js} +1 -1
  358. package/dist/swirl-components/{p-27d97097.entry.js → p-97727cea.entry.js} +1 -1
  359. package/dist/swirl-components/{p-d9cafaf7.entry.js → p-9ae9cffe.entry.js} +1 -1
  360. package/dist/swirl-components/{p-37cc247a.entry.js → p-9ead1077.entry.js} +1 -1
  361. package/dist/swirl-components/p-a1ff9a0c.entry.js +1 -0
  362. package/dist/swirl-components/{p-8349f7bf.entry.js → p-a3725df2.entry.js} +1 -1
  363. package/dist/swirl-components/p-a3757487.entry.js +1 -0
  364. package/dist/swirl-components/{p-955ad6a8.entry.js → p-a42a39a9.entry.js} +1 -1
  365. package/dist/swirl-components/{p-046ecfa7.entry.js → p-a6dc4cef.entry.js} +1 -1
  366. package/dist/swirl-components/{p-dd4e2a9b.entry.js → p-a80e1294.entry.js} +1 -1
  367. package/dist/swirl-components/{p-18e25a45.entry.js → p-abd6bebc.entry.js} +1 -1
  368. package/dist/swirl-components/{p-c3f0502d.entry.js → p-af2944de.entry.js} +1 -1
  369. package/dist/swirl-components/p-b44b722e.entry.js +1 -0
  370. package/dist/swirl-components/{p-383eb34b.entry.js → p-b9b0d6fd.entry.js} +1 -1
  371. package/dist/swirl-components/{p-19ff7c93.entry.js → p-bacb87fc.entry.js} +1 -1
  372. package/dist/swirl-components/{p-f4f1928b.entry.js → p-bf8f1fb1.entry.js} +1 -1
  373. package/dist/swirl-components/{p-0a7357c8.entry.js → p-c2018c3c.entry.js} +1 -1
  374. package/dist/swirl-components/{p-971e023f.entry.js → p-c719ebfb.entry.js} +1 -1
  375. package/dist/swirl-components/{p-1d40a37d.entry.js → p-ca7590f9.entry.js} +1 -1
  376. package/dist/swirl-components/p-cc01cabb.entry.js +1 -0
  377. package/dist/swirl-components/p-ce67255d.entry.js +1 -0
  378. package/dist/swirl-components/{p-dede7f70.entry.js → p-cf61e1bd.entry.js} +1 -1
  379. package/dist/swirl-components/{p-966ded64.entry.js → p-d051fc8f.entry.js} +1 -1
  380. package/dist/swirl-components/{p-7011b613.entry.js → p-d0f5d01d.entry.js} +1 -1
  381. package/dist/swirl-components/{p-3919d2c8.entry.js → p-d26d2442.entry.js} +1 -1
  382. package/dist/swirl-components/{p-8532cf35.entry.js → p-d35aaf8f.entry.js} +1 -1
  383. package/dist/swirl-components/p-d51ef5db.entry.js +1 -0
  384. package/dist/swirl-components/p-d8815b75.entry.js +1 -0
  385. package/dist/swirl-components/p-d9d1a534.entry.js +1 -0
  386. package/dist/swirl-components/{p-97bc5c71.entry.js → p-e41f6920.entry.js} +1 -1
  387. package/dist/swirl-components/{p-6fbcd9ba.entry.js → p-eaa5b42f.entry.js} +1 -1
  388. package/dist/swirl-components/{p-49145b28.entry.js → p-ec4196cf.entry.js} +1 -1
  389. package/dist/swirl-components/{p-76777de1.entry.js → p-f3cb753f.entry.js} +1 -1
  390. package/dist/swirl-components/{p-e6973f9e.entry.js → p-fa19c235.entry.js} +1 -1
  391. package/dist/swirl-components/{p-85891e4a.entry.js → p-fc8b76fd.entry.js} +1 -1
  392. package/dist/swirl-components/{p-f8a4eb22.entry.js → p-ff55c4de.entry.js} +1 -1
  393. package/dist/swirl-components/swirl-components.esm.js +1 -1
  394. package/dist/types/components/swirl-shell-layout/swirl-shell-layout.d.ts +17 -0
  395. package/dist/types/components/swirl-shell-navigation-item/swirl-shell-navigation-item.d.ts +3 -1
  396. package/dist/types/components/swirl-tooltip/swirl-tooltip.d.ts +1 -0
  397. package/dist/types/components.d.ts +16 -0
  398. package/package.json +1 -1
  399. package/vscode-data.json +32 -0
  400. package/dist/swirl-components/p-0c38b13e.entry.js +0 -1
  401. package/dist/swirl-components/p-1dd447f5.entry.js +0 -1
  402. package/dist/swirl-components/p-26ca4370.entry.js +0 -1
  403. package/dist/swirl-components/p-293c452f.entry.js +0 -1
  404. package/dist/swirl-components/p-2d322d46.entry.js +0 -1
  405. package/dist/swirl-components/p-3792f649.entry.js +0 -1
  406. package/dist/swirl-components/p-48041804.entry.js +0 -1
  407. package/dist/swirl-components/p-6f423a50.entry.js +0 -1
  408. package/dist/swirl-components/p-7bd160d2.entry.js +0 -1
  409. package/dist/swirl-components/p-8c9f4b5d.entry.js +0 -1
  410. package/dist/swirl-components/p-cea6c241.entry.js +0 -1
  411. package/dist/swirl-components/p-d733e24a.entry.js +0 -1
  412. package/dist/swirl-components/p-e6b70044.entry.js +0 -1
@@ -17,6 +17,8 @@
17
17
  .app-icon > img {
18
18
  width: 100%;
19
19
  height: 100%;
20
+ -o-object-fit: cover;
21
+ object-fit: cover;
20
22
  }
21
23
 
22
24
  .app-icon__icon {
@@ -5,7 +5,7 @@
5
5
  --swirl-shell-header-height: 3.25rem;
6
6
 
7
7
  --swirl-shell-collapsed-nav-width: 4rem;
8
- --swirl-shell-extended-nav-width: 14rem;
8
+ --swirl-shell-extended-nav-width: 18rem;
9
9
  --swirl-shell-sidebar-width: 21rem;
10
10
 
11
11
  display: flex;
@@ -23,7 +23,7 @@
23
23
  width: 100%;
24
24
  min-height: 100%;
25
25
  background-color: var(--swirl-shell-background);
26
- transition: grid-template-columns 0.2s;
26
+ transition: grid-template-columns 0.1s;
27
27
  grid-template-columns: 0 1fr 0;
28
28
  grid-template-rows: 1fr;
29
29
  grid-template-areas: "nav main";
@@ -75,22 +75,21 @@
75
75
 
76
76
  @media (min-width: 992px) {
77
77
 
78
- .shell-layout--navigation-collapsed .shell-layout__nav:hover {
79
- width: var(--swirl-shell-extended-nav-width);
80
- padding-right: var(--s-space-12)
81
- }
82
- }
78
+ .shell-layout--navigation-collapsed .shell-layout__nav {
79
+ scrollbar-width: none
80
+ }
83
81
 
84
- @media (min-width: 992px) {
85
- .shell-layout--navigation-collapsed .shell-layout__nav:not(:hover) {
86
- scrollbar-width: none;
82
+ .shell-layout--navigation-collapsed .shell-layout__nav::-webkit-scrollbar {
83
+ width: 0;
84
+ background: transparent;
85
+ -webkit-appearance: none;
87
86
  }
87
+ }
88
88
 
89
- .shell-layout--navigation-collapsed .shell-layout__nav:not(:hover)::-webkit-scrollbar {
90
- width: 0;
91
- background: transparent;
92
- -webkit-appearance: none;
93
- }
89
+ .shell-layout--navigation-collapsed .shell-layout__secondary-nav-items--grid-view ::slotted(*) {
90
+ max-width: 100%;
91
+ flex-basis: 100%;
92
+ max-height: 3rem;
94
93
  }
95
94
 
96
95
  @media (min-width: 992px) {
@@ -138,7 +137,7 @@
138
137
  }
139
138
 
140
139
  :not(.shell-layout--sidebar-active) .shell-layout__sidebar {
141
- animation: shell-layout-no-overflow-after-transition 0.2s;
140
+ animation: shell-layout-no-overflow-after-transition 0.1s;
142
141
  animation-fill-mode: forwards;
143
142
  }
144
143
 
@@ -166,6 +165,14 @@
166
165
  }
167
166
  }
168
167
 
168
+ .shell-layout--has-secondary-nav .shell-layout__secondary-nav {
169
+ display: block;
170
+ }
171
+
172
+ .shell-layout--secondary-nav-collapsed .shell-layout__secondary-nav-items {
173
+ display: none;
174
+ }
175
+
169
176
  .shell-layout__header {
170
177
  position: relative;
171
178
  display: none;
@@ -306,12 +313,13 @@
306
313
  top: 0;
307
314
  bottom: 0;
308
315
  left: 0;
309
- overflow: auto;
316
+ overflow-x: hidden;
317
+ overflow-y: auto;
310
318
  width: 100%;
311
319
  max-width: 18.75rem;
312
320
  color: var(--swirl-shell-text-color);
313
321
  background-color: var(--s-surface-overlay-default);
314
- transition: transform 0.2s, box-shadow 0.2s, width 0.2s;
322
+ transition: transform 0.1s, box-shadow 0.1s, width 0.1s;
315
323
  transform: translate3d(-100%, 0, 0);
316
324
  grid-area: nav;
317
325
  }
@@ -326,7 +334,7 @@
326
334
  @media (min-width: 992px) {
327
335
 
328
336
  .shell-layout__nav {
329
- position: static;
337
+ position: relative;
330
338
  max-width: none;
331
339
  padding-top: 0;
332
340
  padding-right: var(--s-space-4);
@@ -408,10 +416,30 @@
408
416
  z-index: 8;
409
417
  display: none;
410
418
  background-color: rgba(0, 0, 0, 0.25);
411
- animation: shell-layout-backdrop-fade-in 0.2s;
419
+ animation: shell-layout-backdrop-fade-in 0.1s;
412
420
  inset: 0;
413
421
  }
414
422
 
423
+ .shell-layout__secondary-nav {
424
+ display: none;
425
+ }
426
+
427
+ .shell-layout__secondary-nav-items {
428
+ display: flex;
429
+ flex-direction: column;
430
+ gap: var(--s-space-2);
431
+ }
432
+
433
+ .shell-layout__secondary-nav-items--grid-view {
434
+ flex-direction: row;
435
+ flex-wrap: wrap;
436
+ gap: var(--s-space-16);
437
+ }
438
+
439
+ .shell-layout__secondary-nav-items--grid-view ::slotted(*) {
440
+ flex-basis: calc(50% - var(--s-space-8));
441
+ }
442
+
415
443
  .shell-layout__main {
416
444
  overflow: hidden;
417
445
  background-color: var(--s-background-default);
@@ -458,7 +486,7 @@
458
486
  top: 0;
459
487
  right: 0;
460
488
  bottom: 0;
461
- transition: transform 0.2s;
489
+ transition: transform 0.1s;
462
490
  transform: translate3d(calc(100% + var(--s-space-24)), 0, 0);
463
491
  box-shadow: var(--s-shadow-level-3)
464
492
  }
@@ -1,6 +1,8 @@
1
1
  import { h, Host, } from "@stencil/core";
2
2
  import classnames from "classnames";
3
3
  import * as focusTrap from "focus-trap";
4
+ const SECONDARY_NAVIGATION_COLLAPSE_STORAGE_KEY = "SWIRL_SHELL_SECONDARY_NAVIGATION_COLLAPSE_STATE";
5
+ const SECONDARY_NAVIGATION_VIEW_STORAGE_KEY = "SWIRL_SHELL_SECONDARY_NAVIGATION_VIEW_STATE";
4
6
  const NAVIGATION_COLLAPSE_STORAGE_KEY = "SWIRL_SHELL_NAVIGATION_COLLAPSE_STATE";
5
7
  const SIDEBAR_STORAGE_KEY = "SWIRL_SHELL_SIDEBAR_STATE";
6
8
  /**
@@ -17,6 +19,25 @@ const SIDEBAR_STORAGE_KEY = "SWIRL_SHELL_SIDEBAR_STATE";
17
19
  */
18
20
  export class SwirlShellLayout {
19
21
  constructor() {
22
+ this.collectNavItems = () => {
23
+ this.mainNavItems = Array.from(this.el.querySelectorAll("swirl-shell-navigation-item[slot='nav'], [slot='nav'] swirl-shell-navigation-item"));
24
+ this.secondaryNavItems = Array.from(this.el.querySelectorAll("swirl-shell-navigation-item[slot='secondary-nav'], [slot='secondary-nav'] swirl-shell-navigation-item"));
25
+ this.toggleNavItemLabels();
26
+ };
27
+ this.toggleSecondaryNavView = () => {
28
+ if (this.secondaryNavView === "grid") {
29
+ this.secondaryNavView = "list";
30
+ }
31
+ else {
32
+ this.secondaryNavView = "grid";
33
+ }
34
+ this.setSecondaryNavItemsTiled();
35
+ localStorage.setItem(SECONDARY_NAVIGATION_VIEW_STORAGE_KEY, String(this.secondaryNavView));
36
+ };
37
+ this.toggleSecondaryNavCollapse = () => {
38
+ this.secondaryNavCollapsed = !this.secondaryNavCollapsed;
39
+ localStorage.setItem(SECONDARY_NAVIGATION_COLLAPSE_STORAGE_KEY, String(this.secondaryNavCollapsed));
40
+ };
20
41
  this.onNavigationToggleClick = () => {
21
42
  this.navigationCollapsed = !this.navigationCollapsed;
22
43
  };
@@ -26,9 +47,14 @@ export class SwirlShellLayout {
26
47
  this.brandedHeader = undefined;
27
48
  this.browserBackButtonLabel = "Navigate back";
28
49
  this.browserForwardButtonLabel = "Navigate forward";
50
+ this.enableSecondaryNavGridLayout = true;
51
+ this.gridNavLayoutToggleLabel = "Grid";
29
52
  this.hideMobileNavigationButtonLabel = "Close navigation";
53
+ this.listNavLayoutToggleLabel = "List";
30
54
  this.navigationLabel = "Main";
31
55
  this.navigationToggleLabel = "Toggle navigation";
56
+ this.secondaryNavCollapseLabel = "Show less";
57
+ this.secondaryNavExpandLabel = "Show more";
32
58
  this.sidebarActive = undefined;
33
59
  this.sidebarToggleBadge = undefined;
34
60
  this.sidebarToggleBadgeAriaLabel = undefined;
@@ -37,8 +63,11 @@ export class SwirlShellLayout {
37
63
  this.skipLinkLabel = "Skip to main content";
38
64
  this.mobileNavigationActive = undefined;
39
65
  this.navigationCollapsed = undefined;
66
+ this.secondaryNavCollapsed = undefined;
67
+ this.secondaryNavView = "list";
40
68
  }
41
69
  componentWillLoad() {
70
+ this.collectNavItems();
42
71
  const restoredSidebarState = localStorage.getItem(SIDEBAR_STORAGE_KEY) === "true";
43
72
  this.sidebarActive =
44
73
  this.sidebarActive === undefined
@@ -46,6 +75,14 @@ export class SwirlShellLayout {
46
75
  : this.sidebarActive;
47
76
  const restoredNavigationCollapseState = localStorage.getItem(NAVIGATION_COLLAPSE_STORAGE_KEY) === "true";
48
77
  this.navigationCollapsed = restoredNavigationCollapseState;
78
+ if (this.enableSecondaryNavGridLayout) {
79
+ const restoredSecondaryNavigationCollapseState = localStorage.getItem(SECONDARY_NAVIGATION_COLLAPSE_STORAGE_KEY) ===
80
+ "true";
81
+ this.secondaryNavCollapsed = restoredSecondaryNavigationCollapseState;
82
+ const restoredSecondaryNavigationViewState = localStorage.getItem(SECONDARY_NAVIGATION_VIEW_STORAGE_KEY);
83
+ this.secondaryNavView =
84
+ restoredSecondaryNavigationViewState;
85
+ }
49
86
  }
50
87
  componentDidLoad() {
51
88
  this.focusTrap = focusTrap.createFocusTrap(this.navElement, {
@@ -56,12 +93,23 @@ export class SwirlShellLayout {
56
93
  },
57
94
  },
58
95
  });
96
+ this.toggleNavItemLabels();
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
+ });
59
106
  }
60
107
  componentDidRender() {
61
108
  this.focusTrap?.updateContainerElements(this.navElement);
62
109
  }
63
110
  disconnectedCallback() {
64
111
  this.focusTrap?.deactivate();
112
+ this.navMutationObserver?.disconnect();
65
113
  }
66
114
  onWindowKeyDown(event) {
67
115
  if (event.key === "Escape" && this.mobileNavigationActive) {
@@ -81,6 +129,7 @@ export class SwirlShellLayout {
81
129
  }
82
130
  watchNavigationCollapsed() {
83
131
  localStorage.setItem(NAVIGATION_COLLAPSE_STORAGE_KEY, String(this.navigationCollapsed));
132
+ this.toggleNavItemLabels();
84
133
  }
85
134
  watchSidebarActive() {
86
135
  localStorage.setItem(SIDEBAR_STORAGE_KEY, String(this.sidebarActive));
@@ -97,17 +146,46 @@ export class SwirlShellLayout {
97
146
  async hideMobileNavigation() {
98
147
  this.mobileNavigationActive = false;
99
148
  }
149
+ toggleNavItemLabels() {
150
+ [...this.secondaryNavItems, ...this.mainNavItems].forEach((item) => {
151
+ item.hideLabel =
152
+ !!(this.enableSecondaryNavGridLayout && this.navigationCollapsed) ||
153
+ (!this.enableSecondaryNavGridLayout && this.navigationCollapsed);
154
+ });
155
+ }
156
+ setSecondaryNavItemsTiled() {
157
+ this.secondaryNavItems.forEach((item) => {
158
+ item.tiled =
159
+ this.enableSecondaryNavGridLayout && this.secondaryNavView === "grid";
160
+ });
161
+ }
100
162
  render() {
101
163
  const hasSidebarToggleBadgeWithLabel = this.sidebarToggleBadge !== true && this.sidebarToggleBadge !== "true";
164
+ const hasSecondaryNav = Boolean(this.el.querySelector("[slot='secondary-nav']"));
102
165
  const className = classnames("shell-layout", {
103
166
  "shell-layout--branded-header": this.brandedHeader,
167
+ "shell-layout--secondary-nav-collapsed": this.secondaryNavCollapsed,
168
+ "shell-layout--has-secondary-nav": hasSecondaryNav,
104
169
  "shell-layout--mobile-navigation-active": this.mobileNavigationActive,
105
170
  "shell-layout--navigation-collapsed": this.navigationCollapsed,
106
171
  "shell-layout--sidebar-active": this.sidebarActive,
107
172
  });
108
- return (h(Host, { key: '8ac0a3465331a44666498b9a7dcd7aa35c9dc9e2' }, h("div", { key: '4990de7803e46f2a814b05f20f5a7e88d636d3dd', class: className }, h("header", { key: '06e3f3b6b362909584c7d34cf5d0479eb100479b', class: "shell-layout__header", "data-tauri-drag-region": "true" }, h("button", { key: 'a56882f44359fdcfa8d6252af97c7c8d69f2f5ce', class: "shell-layout__skip-link", onClick: this.skipLinkClick.emit, type: "button" }, this.skipLinkLabel), h("div", { key: '73cdc9deef606505fe5688df02416f5801491443', class: "shell-layout__header-left" }, h("button", { key: '69c526bef11fff511472b143400a8da2972503f2', class: "shell-layout__header-tool", onClick: this.onNavigationToggleClick, type: "button" }, h("swirl-icon-dock-left", { key: 'adef92a3da2d1b132f62036acb83787f1a68b4e2', size: 20 }), h("swirl-visually-hidden", { key: '9080a2cbba25c27a5a284132adb95b7951d34bec' }, this.navigationToggleLabel)), h("a", { key: 'ef4e3e985069d0e8b110366e9cfdc6f3a49d178f', class: "shell-layout__header-tool", href: "javascript:history.back()" }, h("swirl-icon-arrow-back", { key: '87ebb8eece4655739db57d69e1562fae38d221ad', size: 20 }), h("swirl-visually-hidden", { key: '3f9d98cb9195ee053cd8fbc343b06479f469a594' }, this.browserBackButtonLabel)), h("a", { key: '7eb4924c19e8ecf5ae45f69852ae561e4d7dafbd', class: "shell-layout__header-tool", href: "javascript:history.forward()" }, h("swirl-icon-arrow-forward", { key: '91e946148ea45549e0d35bbdeb47e6c22cefd6d4', size: 20 }), h("swirl-visually-hidden", { key: 'ecec5526b9b6e74ceeb6d83e3738ab96eff8ea68' }, this.browserForwardButtonLabel)), h("slot", { key: 'ca532ef7ab1f8c352ad59bc16186e32e382db4b1', name: "left-header-tools" })), h("div", { key: 'ad2abae49d4f64eabae7a320d67c093d82c8c349', class: "shell-layout__logo" }, h("slot", { key: '75c99c3413488ad7fc160841a11cf825eecbefef', name: "logo" })), h("div", { key: 'e2b4c098b54990bc06e9f397e2f850a0c9b9cf1b', class: "shell-layout__header-right" }, h("slot", { key: '6ef73c889c02603496700e1080bad71adeee31ce', name: "right-header-tools" }), h("button", { key: '0e7be546e2d34c112ad31a71035f75e895d5bbea', class: "shell-layout__header-tool shell-layout__sidebar-toggle", onClick: this.sidebarToggleClick.emit, type: "button" }, h("swirl-icon", { key: '08592492884a6a64db04a416591bb74dc367726d', glyph: this.sidebarToggleIcon, size: 20 }), h("swirl-visually-hidden", { key: 'b3c23f63e10d842eba7780f79fd46372b4c81cd1' }, this.sidebarToggleLabel), this.sidebarToggleBadge && (h("swirl-badge", { key: 'c7a783b312f60615cfa001d2b1db6b6fb4b4bc8e', "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
109
174
  ? this.sidebarToggleBadgeAriaLabel
110
- : String(this.sidebarToggleBadge), size: "xs", variant: !hasSidebarToggleBadgeWithLabel ? "dot" : "default" }))), h("slot", { key: '99852428a24bbbadbd285a0b2ed3e7fd90a38970', name: "avatar" }))), h("div", { key: 'd69831fb8f238cbae18eb5f9c505e7902b628d98', class: "shell-layout__mobile-nav-backdrop", onClick: this.onNavigationClick }), h("nav", { key: '6eef2506fc69ea0cb7d7565a63eca8adf891ab99', "aria-labelledby": "main-navigation-label", class: "shell-layout__nav", onClick: this.onNavigationClick, ref: (el) => (this.navElement = el) }, h("div", { key: '8bb9bc97e7be1668013b53ead35c7a01182e8e94', class: "shell-layout__mobile-header" }, h("slot", { key: 'dc8f336880c5116183fb1573df941ebbf639bc2a', name: "mobile-logo" }), h("div", { key: '3c397987d9f90786184c9444089e921bb7379dfb', class: "shell-layout__mobile-header-tools" }, h("slot", { key: '89046b89f2b4cc2a7f5de187c8e54063d9dcbfd5', name: "mobile-header-tools" }), h("button", { key: '8c7f0363424b0cd5bc44cb9ad88a83b76fbf8cf2', class: "shell-layout__header-tool", type: "button" }, h("swirl-icon-double-arrow-left", { key: 'c8b0456df01d59bacf20b2d25039fb4498a0edcd', size: 20 }), h("swirl-visually-hidden", { key: '8ef9963a157261abd9e04d7bc7aa53a2d0cc6165' }, this.hideMobileNavigationButtonLabel)))), h("div", { key: '3bae7ef27857a2ff9294bd6cd07dfe0c5c897e1e', class: "shell-layout__nav-body" }, h("swirl-visually-hidden", { key: 'f0c2439e9e75520472bd45cb00ea953a07e3983b' }, h("span", { key: '9f7b141d6463aa5d29e82ec57203f4a7379ccfa0', id: "main-navigation-label" }, this.navigationLabel)), h("slot", { key: 'dd3365f92be9db1a298b1ff835a8926147cc1d47', name: "nav" }))), h("main", { key: '1bb60af55eed8e0c2598f5cac6ba0fc151438d74', class: "shell-layout__main", id: "main-content" }, h("slot", { key: 'b9cd60540271214cd862852ba7c53a9ab6c376f8' })), h("aside", { key: 'e334a5c70d6bdbac1bff054dfb0ae4781f7423b5', class: "shell-layout__sidebar", inert: this.sidebarActive ? undefined : true }, h("div", { key: '440f261ccae7b5c78d084e4c22eb67d0d8d1e1df', class: "shell-layout__sidebar-body" }, h("div", { key: '683d4f88994e7b25a929481ea6e8bff83d0772bf', class: "shell-layout__sidebar-app-bar" }, h("slot", { key: '93156047bcd62b1bb1de6021a4c230c3c63f5c70', name: "sidebar-app-bar" })), h("div", { key: 'd686b6fd3961fbaf07c9e8a6531e6a2cbba3aa0a', class: "shell-layout__sidebar-content" }, h("slot", { key: 'a2c90fda9603557c075e99e76a1b2c3c7c54269a', name: "sidebar" })))))));
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
176
+ ? "<swirl-icon-expand-more></swirl-icon-expand-more>"
177
+ : "<swirl-icon-expand-less></swirl-icon-expand-less>", label: this.secondaryNavCollapsed
178
+ ? this.secondaryNavExpandLabel
179
+ : this.secondaryNavCollapseLabel, onClick: this.toggleSecondaryNavCollapse, variant: "plain" }), !this.navigationCollapsed &&
180
+ !this.secondaryNavCollapsed && (h("swirl-button", { key: '907779e749bf62369d80c8c9ede8b29c1f8875ee', icon: this.secondaryNavView === "grid"
181
+ ? "<swirl-icon-menu></swirl-icon-menu>"
182
+ : "<swirl-icon-hamburger-menu></swirl-icon-hamburger-menu>", iconPosition: "end", label: this.secondaryNavView === "grid"
183
+ ? this.gridNavLayoutToggleLabel
184
+ : this.listNavLayoutToggleLabel, onClick: this.toggleSecondaryNavView, variant: "plain" }))))), h("ul", { key: '329aa0e2fc43a301b935580e136dff2ded4f3278', class: {
185
+ "shell-layout__secondary-nav-items": true,
186
+ "shell-layout__secondary-nav-items--grid-view": this.enableSecondaryNavGridLayout &&
187
+ this.secondaryNavView === "grid",
188
+ } }, h("slot", { key: '422269185dc3b2b3c6cea0a09e7857128e50af71', name: "secondary-nav", onSlotchange: this.collectNavItems }))))), h("main", { key: 'ea6015af362cfff1535995a4bc9b0188378ef755', class: "shell-layout__main", id: "main-content" }, h("slot", { key: '71863925b9b8e4430e236920edec978e3852dd2e' })), h("aside", { key: 'ece8a7300a11336a48769ccbcb11e769ce0f82d6', class: "shell-layout__sidebar", inert: this.sidebarActive ? undefined : true }, h("div", { key: '3eceb6b713a38976380315d20b98ece681fc43cd', class: "shell-layout__sidebar-body" }, h("div", { key: '4848e6a1069a475ddc43b0a29f789be5aae0314a', class: "shell-layout__sidebar-app-bar" }, h("slot", { key: '3889563150445f7fb0d1825441488946f14c3a71', name: "sidebar-app-bar" })), h("div", { key: '4247f7afb9c55615d039ef9758a3407163f00c99', class: "shell-layout__sidebar-content" }, h("slot", { key: '74e5c9a3d91ff76381431a1319d323f285003a24', name: "sidebar" })))))));
111
189
  }
112
190
  static get is() { return "swirl-shell-layout"; }
113
191
  static get encapsulation() { return "scoped"; }
@@ -176,6 +254,42 @@ export class SwirlShellLayout {
176
254
  "reflect": false,
177
255
  "defaultValue": "\"Navigate forward\""
178
256
  },
257
+ "enableSecondaryNavGridLayout": {
258
+ "type": "boolean",
259
+ "mutable": false,
260
+ "complexType": {
261
+ "original": "boolean",
262
+ "resolved": "boolean",
263
+ "references": {}
264
+ },
265
+ "required": false,
266
+ "optional": true,
267
+ "docs": {
268
+ "tags": [],
269
+ "text": ""
270
+ },
271
+ "attribute": "enable-secondary-nav-grid-layout",
272
+ "reflect": false,
273
+ "defaultValue": "true"
274
+ },
275
+ "gridNavLayoutToggleLabel": {
276
+ "type": "string",
277
+ "mutable": false,
278
+ "complexType": {
279
+ "original": "string",
280
+ "resolved": "string",
281
+ "references": {}
282
+ },
283
+ "required": false,
284
+ "optional": true,
285
+ "docs": {
286
+ "tags": [],
287
+ "text": ""
288
+ },
289
+ "attribute": "grid-nav-layout-toggle-label",
290
+ "reflect": false,
291
+ "defaultValue": "\"Grid\""
292
+ },
179
293
  "hideMobileNavigationButtonLabel": {
180
294
  "type": "string",
181
295
  "mutable": false,
@@ -194,6 +308,24 @@ export class SwirlShellLayout {
194
308
  "reflect": false,
195
309
  "defaultValue": "\"Close navigation\""
196
310
  },
311
+ "listNavLayoutToggleLabel": {
312
+ "type": "string",
313
+ "mutable": false,
314
+ "complexType": {
315
+ "original": "string",
316
+ "resolved": "string",
317
+ "references": {}
318
+ },
319
+ "required": false,
320
+ "optional": true,
321
+ "docs": {
322
+ "tags": [],
323
+ "text": ""
324
+ },
325
+ "attribute": "list-nav-layout-toggle-label",
326
+ "reflect": false,
327
+ "defaultValue": "\"List\""
328
+ },
197
329
  "navigationLabel": {
198
330
  "type": "string",
199
331
  "mutable": false,
@@ -230,6 +362,42 @@ export class SwirlShellLayout {
230
362
  "reflect": false,
231
363
  "defaultValue": "\"Toggle navigation\""
232
364
  },
365
+ "secondaryNavCollapseLabel": {
366
+ "type": "string",
367
+ "mutable": false,
368
+ "complexType": {
369
+ "original": "string",
370
+ "resolved": "string",
371
+ "references": {}
372
+ },
373
+ "required": false,
374
+ "optional": true,
375
+ "docs": {
376
+ "tags": [],
377
+ "text": ""
378
+ },
379
+ "attribute": "secondary-nav-collapse-label",
380
+ "reflect": false,
381
+ "defaultValue": "\"Show less\""
382
+ },
383
+ "secondaryNavExpandLabel": {
384
+ "type": "string",
385
+ "mutable": false,
386
+ "complexType": {
387
+ "original": "string",
388
+ "resolved": "string",
389
+ "references": {}
390
+ },
391
+ "required": false,
392
+ "optional": true,
393
+ "docs": {
394
+ "tags": [],
395
+ "text": ""
396
+ },
397
+ "attribute": "secondary-nav-expand-label",
398
+ "reflect": false,
399
+ "defaultValue": "\"Show more\""
400
+ },
233
401
  "sidebarActive": {
234
402
  "type": "boolean",
235
403
  "mutable": true,
@@ -340,7 +508,9 @@ export class SwirlShellLayout {
340
508
  static get states() {
341
509
  return {
342
510
  "mobileNavigationActive": {},
343
- "navigationCollapsed": {}
511
+ "navigationCollapsed": {},
512
+ "secondaryNavCollapsed": {},
513
+ "secondaryNavView": {}
344
514
  };
345
515
  }
346
516
  static get events() {
@@ -424,6 +594,7 @@ export class SwirlShellLayout {
424
594
  }
425
595
  };
426
596
  }
597
+ static get elementRef() { return "el"; }
427
598
  static get watchers() {
428
599
  return [{
429
600
  "propName": "mobileNavigationActive",
@@ -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({
@@ -14,6 +19,6 @@ describe("swirl-shell-layout", () => {
14
19
  <div slot="sidebar">Sidebar</div>
15
20
  </swirl-shell-layout>`,
16
21
  });
17
- expect(page.root.innerHTML).toMatchInlineSnapshot(`"<!----> <div slot=\\"header-tools\\" hidden=\\"\\">Tools</div> <div slot=\\"sidebar-header\\" hidden=\\"\\">Sidebar header</div> <div class=\\"shell-layout\\"><header class=\\"shell-layout__header\\" data-tauri-drag-region=\\"true\\"><button class=\\"shell-layout__skip-link\\" type=\\"button\\">Skip to main content</button><div class=\\"shell-layout__header-left\\"><button class=\\"shell-layout__header-tool\\" type=\\"button\\"><swirl-icon-dock-left size=\\"20\\"></swirl-icon-dock-left><swirl-visually-hidden>Toggle navigation</swirl-visually-hidden></button><a class=\\"shell-layout__header-tool\\" href=\\"javascript:history.back()\\"><swirl-icon-arrow-back size=\\"20\\"></swirl-icon-arrow-back><swirl-visually-hidden>Navigate back</swirl-visually-hidden></a><a class=\\"shell-layout__header-tool\\" href=\\"javascript:history.forward()\\"><swirl-icon-arrow-forward size=\\"20\\"></swirl-icon-arrow-forward><swirl-visually-hidden>Navigate forward</swirl-visually-hidden></a> </div><div class=\\"shell-layout__logo\\"> <div slot=\\"logo\\">Logo</div></div><div class=\\"shell-layout__header-right\\"> <button class=\\"shell-layout__header-tool shell-layout__sidebar-toggle\\" type=\\"button\\"><swirl-icon glyph=\\"notifications\\" size=\\"20\\"></swirl-icon><swirl-visually-hidden>Toggle sidebar</swirl-visually-hidden></button> </div></header><div class=\\"shell-layout__mobile-nav-backdrop\\"></div><nav aria-labelledby=\\"main-navigation-label\\" class=\\"shell-layout__nav\\"><div class=\\"shell-layout__mobile-header\\"> <div slot=\\"mobile-logo\\">Mobile logo</div><div class=\\"shell-layout__mobile-header-tools\\"> <button class=\\"shell-layout__header-tool\\" type=\\"button\\"><swirl-icon-double-arrow-left size=\\"20\\"></swirl-icon-double-arrow-left><swirl-visually-hidden>Close navigation</swirl-visually-hidden></button></div></div><div class=\\"shell-layout__nav-body\\"><swirl-visually-hidden><span id=\\"main-navigation-label\\">Main</span></swirl-visually-hidden> <div slot=\\"nav\\">nav</div></div></nav><main class=\\"shell-layout__main\\" id=\\"main-content\\"> <div>Main</div> </main><aside class=\\"shell-layout__sidebar\\" inert=\\"\\"><div class=\\"shell-layout__sidebar-body\\"><div class=\\"shell-layout__sidebar-app-bar\\"></div><div class=\\"shell-layout__sidebar-content\\"> <div slot=\\"sidebar\\">Sidebar</div></div></div></aside></div>"`);
22
+ expect(page.root.innerHTML).toMatchInlineSnapshot(`"<!----> <div slot=\\"header-tools\\" hidden=\\"\\">Tools</div> <div slot=\\"sidebar-header\\" hidden=\\"\\">Sidebar header</div> <div class=\\"shell-layout\\"><header class=\\"shell-layout__header\\" data-tauri-drag-region=\\"true\\"><button class=\\"shell-layout__skip-link\\" type=\\"button\\">Skip to main content</button><div class=\\"shell-layout__header-left\\"><button class=\\"shell-layout__header-tool\\" type=\\"button\\"><swirl-icon-dock-left size=\\"20\\"></swirl-icon-dock-left><swirl-visually-hidden>Toggle navigation</swirl-visually-hidden></button><a class=\\"shell-layout__header-tool\\" href=\\"javascript:history.back()\\"><swirl-icon-arrow-back size=\\"20\\"></swirl-icon-arrow-back><swirl-visually-hidden>Navigate back</swirl-visually-hidden></a><a class=\\"shell-layout__header-tool\\" href=\\"javascript:history.forward()\\"><swirl-icon-arrow-forward size=\\"20\\"></swirl-icon-arrow-forward><swirl-visually-hidden>Navigate forward</swirl-visually-hidden></a> </div><div class=\\"shell-layout__logo\\"> <div slot=\\"logo\\">Logo</div></div><div class=\\"shell-layout__header-right\\"> <button class=\\"shell-layout__header-tool shell-layout__sidebar-toggle\\" type=\\"button\\"><swirl-icon glyph=\\"notifications\\" size=\\"20\\"></swirl-icon><swirl-visually-hidden>Toggle sidebar</swirl-visually-hidden></button> </div></header><div class=\\"shell-layout__mobile-nav-backdrop\\"></div><nav aria-labelledby=\\"main-navigation-label\\" class=\\"shell-layout__nav\\"><div class=\\"shell-layout__mobile-header\\"> <div slot=\\"mobile-logo\\">Mobile logo</div><div class=\\"shell-layout__mobile-header-tools\\"> <button class=\\"shell-layout__header-tool\\" type=\\"button\\"><swirl-icon-double-arrow-left size=\\"20\\"></swirl-icon-double-arrow-left><swirl-visually-hidden>Close navigation</swirl-visually-hidden></button></div></div><div class=\\"shell-layout__nav-body\\"><swirl-visually-hidden><span id=\\"main-navigation-label\\">Main</span></swirl-visually-hidden> <div slot=\\"nav\\">nav</div><div class=\\"shell-layout__secondary-nav\\"><swirl-separator bordercolor=\\"strong\\" spacing=\\"16\\"></swirl-separator><swirl-box paddingblockend=\\"16\\"><swirl-stack justify=\\"space-between\\" orientation=\\"horizontal\\"><swirl-button icon=\\"<swirl-icon-expand-less></swirl-icon-expand-less>\\" label=\\"Show less\\" variant=\\"plain\\"></swirl-button><swirl-button icon=\\"<swirl-icon-hamburger-menu></swirl-icon-hamburger-menu>\\" iconposition=\\"end\\" label=\\"List\\" variant=\\"plain\\"></swirl-button></swirl-stack></swirl-box><ul class=\\"shell-layout__secondary-nav-items\\"></ul></div></div></nav><main class=\\"shell-layout__main\\" id=\\"main-content\\"> <div>Main</div> </main><aside class=\\"shell-layout__sidebar\\" inert=\\"\\"><div class=\\"shell-layout__sidebar-body\\"><div class=\\"shell-layout__sidebar-app-bar\\"></div><div class=\\"shell-layout__sidebar-content\\"> <div slot=\\"sidebar\\">Sidebar</div></div></div></aside></div>"`);
18
23
  });
19
24
  });
@@ -37,40 +37,56 @@ const Template = (args) => {
37
37
  <swirl-button label="Header tool" slot="right-header-tools" variant="outline"></swirl-button>
38
38
 
39
39
  <div slot="nav">
40
- <ul>
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;20&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;20&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;20&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;20&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
59
  </swirl-shell-navigation-item>
60
60
  </li>
61
61
  <li>
62
- <swirl-shell-navigation-item label="Employee directory" boxed="true">
63
- <swirl-app-icon icon="<swirl-icon-groups-filled size=&quot;20&quot;></swirl-icon-groups-filled>" slot="icon"></swirl-app-icon>
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>
64
64
  </swirl-shell-navigation-item>
65
65
  </li>
66
- <li>
67
- <swirl-shell-navigation-item label="Custom Link" boxed="true">
68
- <swirl-app-icon slot="icon" label="link" src="https://picsum.photos/id/433/144/144" slot="icon"></swirl-app-icon>
69
- </swirl-shell-navigation-item>
70
- </li>
71
- </ul>
66
+ </swirl-stack>
72
67
  </div>
73
68
 
69
+ <li slot="secondary-nav">
70
+ <swirl-shell-navigation-item label="Reporting hub">
71
+ <swirl-app-icon src="/menu-item-1.png" slot="icon"></swirl-app-icon>
72
+ </swirl-shell-navigation-item>
73
+ </li>
74
+ <li slot="secondary-nav">
75
+ <swirl-shell-navigation-item label="My absences">
76
+ <swirl-app-icon src="/menu-item-2.png" slot="icon"></swirl-app-icon>
77
+ </swirl-shell-navigation-item>
78
+ </li>
79
+ <li slot="secondary-nav">
80
+ <swirl-shell-navigation-item label="IT self-service">
81
+ <swirl-app-icon src="/menu-item-3.png" slot="icon"></swirl-app-icon>
82
+ </swirl-shell-navigation-item>
83
+ </li>
84
+ <li slot="secondary-nav">
85
+ <swirl-shell-navigation-item label="Office door key">
86
+ <swirl-app-icon src="/menu-item-4.png" slot="icon"></swirl-app-icon>
87
+ </swirl-shell-navigation-item>
88
+ </li>
89
+
74
90
  <swirl-app-layout app-name="App name">
75
91
  <swirl-button hide-label="true" icon="<swirl-icon-menu></swirl-icon-menu>" label="Menu" slot="navigation-mobile-menu-button"></swirl-button>
76
92
  <swirl-resource-list label="Items" slot="navigation">