@rio-cloud/uikit-mcp 1.0.1 → 1.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 (388) hide show
  1. package/README.md +75 -39
  2. package/dist/doc-metadata.json +1872 -0
  3. package/dist/docs/components/accentBar.md +582 -0
  4. package/dist/docs/components/activity.md +330 -0
  5. package/dist/docs/components/animatedNumber.md +88 -0
  6. package/dist/docs/components/animatedTextReveal.md +381 -0
  7. package/dist/docs/components/animations.md +459 -0
  8. package/dist/docs/components/appHeader.md +737 -0
  9. package/dist/docs/components/appLayout.md +2033 -0
  10. package/dist/docs/components/appNavigationBar.md +274 -0
  11. package/dist/docs/components/areaCharts.md +828 -0
  12. package/dist/docs/components/aspectRatioPlaceholder.md +106 -0
  13. package/dist/docs/components/assetTree.md +3132 -0
  14. package/dist/docs/components/autosuggests.md +1177 -0
  15. package/dist/docs/components/avatar.md +206 -0
  16. package/dist/docs/components/banner.md +668 -0
  17. package/dist/docs/components/barCharts.md +2765 -0
  18. package/dist/docs/components/barList.md +517 -0
  19. package/dist/docs/components/basicMap.md +167 -0
  20. package/dist/docs/components/bottomSheet.md +721 -0
  21. package/dist/docs/components/button.md +775 -0
  22. package/dist/docs/components/buttonToolbar.md +134 -0
  23. package/dist/docs/components/calendarStripe.md +533 -0
  24. package/dist/docs/components/card.md +86 -0
  25. package/dist/docs/components/carousel.md +128 -0
  26. package/dist/docs/components/chartColors.md +716 -0
  27. package/dist/docs/components/chartsGettingStarted.md +28 -0
  28. package/dist/docs/components/chat.md +935 -0
  29. package/dist/docs/components/checkbox.md +996 -0
  30. package/dist/docs/components/clearableInput.md +806 -0
  31. package/dist/docs/components/collapse.md +189 -0
  32. package/dist/docs/components/composedCharts.md +424 -0
  33. package/dist/docs/components/contentLoader.md +674 -0
  34. package/dist/docs/components/dataTabs.md +1251 -0
  35. package/dist/docs/components/datepickers.md +2543 -0
  36. package/dist/docs/components/dialogs.md +2244 -0
  37. package/dist/docs/components/divider.md +219 -0
  38. package/dist/docs/components/dropdowns.md +17538 -0
  39. package/dist/docs/components/editableContent.md +1127 -0
  40. package/dist/docs/components/expander.md +970 -0
  41. package/dist/docs/components/fade.md +836 -0
  42. package/dist/docs/components/fadeExpander.md +180 -0
  43. package/dist/docs/components/fadeUp.md +396 -0
  44. package/dist/docs/components/feedback.md +758 -0
  45. package/dist/docs/components/filePickers.md +370 -0
  46. package/dist/docs/components/formLabel.md +251 -0
  47. package/dist/docs/components/fullscreenMap.md +10 -0
  48. package/dist/docs/components/groupedItemList.md +1001 -0
  49. package/dist/docs/components/iconList.md +306 -0
  50. package/dist/docs/components/imagePreloader.md +167 -0
  51. package/dist/docs/components/labeledElement.md +115 -0
  52. package/dist/docs/components/licensePlate.md +412 -0
  53. package/dist/docs/components/lineCharts.md +2014 -0
  54. package/dist/docs/components/listMenu.md +392 -0
  55. package/dist/docs/components/loadMore.md +219 -0
  56. package/dist/docs/components/mainNavigation.md +129 -0
  57. package/dist/docs/components/mapCircle.md +93 -0
  58. package/dist/docs/components/mapCluster.md +337 -0
  59. package/dist/docs/components/mapContext.md +284 -0
  60. package/dist/docs/components/mapDraggableMarker.md +150 -0
  61. package/dist/docs/components/mapGettingStarted.md +39 -0
  62. package/dist/docs/components/mapInfoBubble.md +135 -0
  63. package/dist/docs/components/mapLayerGroup.md +94 -0
  64. package/dist/docs/components/mapMarker.md +1814 -0
  65. package/dist/docs/components/mapPolygon.md +959 -0
  66. package/dist/docs/components/mapRoute.md +3816 -0
  67. package/dist/docs/components/mapRouteGenerator.md +6 -0
  68. package/dist/docs/components/mapSettings.md +1040 -0
  69. package/dist/docs/components/mapUtils.md +132 -0
  70. package/dist/docs/components/multiselects.md +1921 -0
  71. package/dist/docs/components/noData.md +210 -0
  72. package/dist/docs/components/notifications.md +314 -0
  73. package/dist/docs/components/numbercontrol.md +706 -0
  74. package/dist/docs/components/onboarding.md +297 -0
  75. package/dist/docs/components/page.md +241 -0
  76. package/dist/docs/components/pager.md +133 -0
  77. package/dist/docs/components/pieCharts.md +1284 -0
  78. package/dist/docs/components/popover.md +222 -0
  79. package/dist/docs/components/position.md +50 -0
  80. package/dist/docs/components/radialBarCharts.md +3663 -0
  81. package/dist/docs/components/radiobutton.md +1271 -0
  82. package/dist/docs/components/releaseNotes.md +135 -0
  83. package/dist/docs/components/resizer.md +162 -0
  84. package/dist/docs/components/responsiveColumnStripe.md +435 -0
  85. package/dist/docs/components/responsiveVideo.md +71 -0
  86. package/dist/docs/components/rioglyph.md +331 -0
  87. package/dist/docs/components/rules.md +965 -0
  88. package/dist/docs/components/saveableInput.md +1721 -0
  89. package/dist/docs/components/selects.md +1993 -0
  90. package/dist/docs/components/sidebar.md +332 -0
  91. package/dist/docs/components/sliders.md +376 -0
  92. package/dist/docs/components/smoothScrollbars.md +1180 -0
  93. package/dist/docs/components/spinners.md +506 -0
  94. package/dist/docs/components/states.md +1176 -0
  95. package/dist/docs/components/statsWidgets.md +636 -0
  96. package/dist/docs/components/statusBar.md +644 -0
  97. package/dist/docs/components/stepButton.md +61 -0
  98. package/dist/docs/components/steppedProgressBars.md +1064 -0
  99. package/dist/docs/components/subNavigation.md +470 -0
  100. package/dist/docs/components/supportMarker.md +115 -0
  101. package/dist/docs/components/svgImage.md +248 -0
  102. package/dist/docs/components/switch.md +554 -0
  103. package/dist/docs/components/tables.md +8 -0
  104. package/dist/docs/components/tagManager.md +476 -0
  105. package/dist/docs/components/tags.md +785 -0
  106. package/dist/docs/components/teaser.md +925 -0
  107. package/dist/docs/components/timeline.md +514 -0
  108. package/dist/docs/components/timepicker.md +262 -0
  109. package/dist/docs/components/toggleButton.md +178 -0
  110. package/dist/docs/components/tooltip.md +454 -0
  111. package/dist/docs/components/virtualList.md +486 -0
  112. package/dist/docs/foundations.md +20901 -0
  113. package/dist/docs/start/changelog.md +714 -0
  114. package/dist/docs/start/goodtoknow.md +14 -0
  115. package/dist/docs/start/guidelines/color-combinations.md +678 -0
  116. package/dist/docs/start/guidelines/custom-css.md +42 -0
  117. package/dist/docs/start/guidelines/custom-rioglyph.md +35 -0
  118. package/dist/docs/start/guidelines/formatting.md +587 -0
  119. package/dist/docs/start/guidelines/iframe.md +323 -0
  120. package/dist/docs/start/guidelines/obfuscate-data.md +30 -0
  121. package/dist/docs/start/guidelines/print-css.md +36 -0
  122. package/dist/docs/start/guidelines/spinner.md +710 -0
  123. package/dist/docs/start/guidelines/supported-browsers.md +10 -0
  124. package/dist/docs/start/guidelines/writing.md +635 -0
  125. package/dist/docs/start/howto.md +187 -0
  126. package/dist/docs/start/intro.md +43 -0
  127. package/dist/docs/start/responsiveness.md +98 -0
  128. package/dist/docs/templates/common-table.md +1111 -0
  129. package/dist/docs/templates/detail-views.md +942 -0
  130. package/dist/docs/templates/expandable-details.md +228 -0
  131. package/dist/docs/templates/feature-cards.md +549 -0
  132. package/dist/docs/templates/form-summary.md +199 -0
  133. package/dist/docs/templates/form-toggle.md +367 -0
  134. package/dist/docs/templates/list-blocks.md +1021 -0
  135. package/dist/docs/templates/loading-progress.md +109 -0
  136. package/dist/docs/templates/options-panel.md +152 -0
  137. package/dist/docs/templates/panel-variants.md +164 -0
  138. package/dist/docs/templates/progress-cards.md +607 -0
  139. package/dist/docs/templates/progress-success.md +142 -0
  140. package/dist/docs/templates/settings-form.md +434 -0
  141. package/dist/docs/templates/stats-blocks.md +1381 -0
  142. package/dist/docs/templates/table-panel.md +184 -0
  143. package/dist/docs/templates/table-row-animation.md +317 -0
  144. package/dist/docs/templates/usage-cards.md +227 -0
  145. package/dist/docs/utilities/deviceUtils.md +123 -0
  146. package/dist/docs/utilities/featureToggles.md +90 -0
  147. package/dist/docs/utilities/fuelTypeUtils.md +186 -0
  148. package/dist/docs/utilities/routeUtils.md +138 -0
  149. package/dist/docs/utilities/useAfterMount.md +66 -0
  150. package/dist/docs/utilities/useAutoAnimate.md +193 -0
  151. package/dist/docs/utilities/useAverage.md +95 -0
  152. package/dist/docs/utilities/useClickOutside.md +61 -0
  153. package/dist/docs/utilities/useClipboard.md +93 -0
  154. package/dist/docs/utilities/useCount.md +178 -0
  155. package/dist/docs/utilities/useDarkMode.md +49 -0
  156. package/dist/docs/utilities/useDebugInfo.md +126 -0
  157. package/dist/docs/utilities/useEffectOnce.md +58 -0
  158. package/dist/docs/utilities/useElapsedTime.md +58 -0
  159. package/dist/docs/utilities/useElementSize.md +71 -0
  160. package/dist/docs/utilities/useEsc.md +58 -0
  161. package/dist/docs/utilities/useEvent.md +64 -0
  162. package/dist/docs/utilities/useFocusTrap.md +85 -0
  163. package/dist/docs/utilities/useFullscreen.md +198 -0
  164. package/dist/docs/utilities/useHover.md +55 -0
  165. package/dist/docs/utilities/useIncomingPostMessages.md +237 -0
  166. package/dist/docs/utilities/useInterval.md +85 -0
  167. package/dist/docs/utilities/useIsFocusWithin.md +114 -0
  168. package/dist/docs/utilities/useKey.md +151 -0
  169. package/dist/docs/utilities/useLocalStorage.md +91 -0
  170. package/dist/docs/utilities/useLocationSuggestions.md +114 -0
  171. package/dist/docs/utilities/useMax.md +62 -0
  172. package/dist/docs/utilities/useMin.md +78 -0
  173. package/dist/docs/utilities/useMutationObserver.md +113 -0
  174. package/dist/docs/utilities/useOnScreen.md +138 -0
  175. package/dist/docs/utilities/useOnlineStatus.md +49 -0
  176. package/dist/docs/utilities/usePostMessage.md +117 -0
  177. package/dist/docs/utilities/usePostMessageSender.md +257 -0
  178. package/dist/docs/utilities/usePrevious.md +101 -0
  179. package/dist/docs/utilities/useResizeObserver.md +151 -0
  180. package/dist/docs/utilities/useScrollPosition.md +252 -0
  181. package/dist/docs/utilities/useSearch.md +228 -0
  182. package/dist/docs/utilities/useSorting.md +389 -0
  183. package/dist/docs/utilities/useStateWithValidation.md +83 -0
  184. package/dist/docs/utilities/useSum.md +155 -0
  185. package/dist/docs/utilities/useTableExport.md +404 -0
  186. package/dist/docs/utilities/useTableSelection.md +1120 -0
  187. package/dist/docs/utilities/useTimeout.md +55 -0
  188. package/dist/docs/utilities/useToggle.md +115 -0
  189. package/dist/docs/utilities/useWindowResize.md +70 -0
  190. package/dist/index.mjs +271 -0
  191. package/dist/search-synonyms.json +134 -0
  192. package/dist/version.json +4 -0
  193. package/package.json +23 -19
  194. package/bin/uikit-mcp.mjs +0 -23
  195. package/data/pages/Components/components/accentbar.json +0 -207
  196. package/data/pages/Components/components/activity.json +0 -87
  197. package/data/pages/Components/components/animatednumber.json +0 -99
  198. package/data/pages/Components/components/animations.json +0 -87
  199. package/data/pages/Components/components/appheader.json +0 -291
  200. package/data/pages/Components/components/applayout.json +0 -1198
  201. package/data/pages/Components/components/appnavigationbar.json +0 -327
  202. package/data/pages/Components/components/areacharts.json +0 -563
  203. package/data/pages/Components/components/aspectratioplaceholder.json +0 -75
  204. package/data/pages/Components/components/assettree.json +0 -3080
  205. package/data/pages/Components/components/autosuggests.json +0 -710
  206. package/data/pages/Components/components/avatar.json +0 -157
  207. package/data/pages/Components/components/banner.json +0 -599
  208. package/data/pages/Components/components/barcharts.json +0 -1507
  209. package/data/pages/Components/components/barlist.json +0 -223
  210. package/data/pages/Components/components/basicmap.json +0 -68
  211. package/data/pages/Components/components/bottomsheet.json +0 -601
  212. package/data/pages/Components/components/button.json +0 -583
  213. package/data/pages/Components/components/buttontoolbar.json +0 -63
  214. package/data/pages/Components/components/calendarstripe.json +0 -235
  215. package/data/pages/Components/components/card.json +0 -69
  216. package/data/pages/Components/components/carousel.json +0 -39
  217. package/data/pages/Components/components/chartcolors.json +0 -34
  218. package/data/pages/Components/components/chartsgettingstarted.json +0 -32
  219. package/data/pages/Components/components/chat.json +0 -39
  220. package/data/pages/Components/components/checkbox.json +0 -847
  221. package/data/pages/Components/components/clearableinput.json +0 -789
  222. package/data/pages/Components/components/collapse.json +0 -175
  223. package/data/pages/Components/components/composedcharts.json +0 -159
  224. package/data/pages/Components/components/contentloader.json +0 -233
  225. package/data/pages/Components/components/datatabs.json +0 -680
  226. package/data/pages/Components/components/datepickers.json +0 -287
  227. package/data/pages/Components/components/dialogs.json +0 -1492
  228. package/data/pages/Components/components/divider.json +0 -93
  229. package/data/pages/Components/components/dropdowns.json +0 -936
  230. package/data/pages/Components/components/editablecontent.json +0 -1117
  231. package/data/pages/Components/components/expander.json +0 -377
  232. package/data/pages/Components/components/fade.json +0 -403
  233. package/data/pages/Components/components/fadeexpander.json +0 -75
  234. package/data/pages/Components/components/fadeup.json +0 -127
  235. package/data/pages/Components/components/feedback.json +0 -269
  236. package/data/pages/Components/components/filepickers.json +0 -269
  237. package/data/pages/Components/components/formlabel.json +0 -115
  238. package/data/pages/Components/components/fullscreenmap.json +0 -22
  239. package/data/pages/Components/components/groupeditemlist.json +0 -323
  240. package/data/pages/Components/components/iconlist.json +0 -45
  241. package/data/pages/Components/components/imagepreloader.json +0 -81
  242. package/data/pages/Components/components/labeledelement.json +0 -75
  243. package/data/pages/Components/components/licenseplate.json +0 -69
  244. package/data/pages/Components/components/linecharts.json +0 -987
  245. package/data/pages/Components/components/listmenu.json +0 -313
  246. package/data/pages/Components/components/loadmore.json +0 -175
  247. package/data/pages/Components/components/mainnavigation.json +0 -39
  248. package/data/pages/Components/components/mapcircle.json +0 -34
  249. package/data/pages/Components/components/mapcluster.json +0 -51
  250. package/data/pages/Components/components/mapcontext.json +0 -105
  251. package/data/pages/Components/components/mapdraggablemarker.json +0 -34
  252. package/data/pages/Components/components/mapgettingstarted.json +0 -27
  253. package/data/pages/Components/components/mapgroup.json +0 -1198
  254. package/data/pages/Components/components/mapinfobubble.json +0 -34
  255. package/data/pages/Components/components/maplayergroup.json +0 -34
  256. package/data/pages/Components/components/mapmarker.json +0 -700
  257. package/data/pages/Components/components/mappolygon.json +0 -45
  258. package/data/pages/Components/components/maproute.json +0 -623
  259. package/data/pages/Components/components/maproutegenerator.json +0 -16
  260. package/data/pages/Components/components/mapsettings.json +0 -51
  261. package/data/pages/Components/components/maputils.json +0 -34
  262. package/data/pages/Components/components/multiselects.json +0 -1451
  263. package/data/pages/Components/components/nodata.json +0 -139
  264. package/data/pages/Components/components/notifications.json +0 -65
  265. package/data/pages/Components/components/numbercontrol.json +0 -301
  266. package/data/pages/Components/components/onboarding.json +0 -302
  267. package/data/pages/Components/components/page.json +0 -197
  268. package/data/pages/Components/components/pager.json +0 -93
  269. package/data/pages/Components/components/piecharts.json +0 -731
  270. package/data/pages/Components/components/popover.json +0 -251
  271. package/data/pages/Components/components/position.json +0 -69
  272. package/data/pages/Components/components/radialbarcharts.json +0 -1304
  273. package/data/pages/Components/components/radiobutton.json +0 -1105
  274. package/data/pages/Components/components/releasenotes.json +0 -44
  275. package/data/pages/Components/components/resizer.json +0 -93
  276. package/data/pages/Components/components/responsivecolumnstripe.json +0 -123
  277. package/data/pages/Components/components/responsivevideo.json +0 -75
  278. package/data/pages/Components/components/rioglyph.json +0 -93
  279. package/data/pages/Components/components/rules.json +0 -410
  280. package/data/pages/Components/components/saveableinput.json +0 -703
  281. package/data/pages/Components/components/selects.json +0 -701
  282. package/data/pages/Components/components/sidebar.json +0 -243
  283. package/data/pages/Components/components/sliders.json +0 -235
  284. package/data/pages/Components/components/smoothscrollbars.json +0 -335
  285. package/data/pages/Components/components/spinners.json +0 -343
  286. package/data/pages/Components/components/states.json +0 -1705
  287. package/data/pages/Components/components/statswidgets.json +0 -314
  288. package/data/pages/Components/components/statusbar.json +0 -177
  289. package/data/pages/Components/components/stepbutton.json +0 -57
  290. package/data/pages/Components/components/steppedprogressbars.json +0 -417
  291. package/data/pages/Components/components/subnavigation.json +0 -107
  292. package/data/pages/Components/components/supportmarker.json +0 -45
  293. package/data/pages/Components/components/svgimage.json +0 -81
  294. package/data/pages/Components/components/switch.json +0 -111
  295. package/data/pages/Components/components/tables.json +0 -144
  296. package/data/pages/Components/components/tagmanager.json +0 -86
  297. package/data/pages/Components/components/tags.json +0 -146
  298. package/data/pages/Components/components/teaser.json +0 -188
  299. package/data/pages/Components/components/timeline.json +0 -45
  300. package/data/pages/Components/components/timepicker.json +0 -163
  301. package/data/pages/Components/components/togglebutton.json +0 -247
  302. package/data/pages/Components/components/tooltip.json +0 -270
  303. package/data/pages/Components/components/virtuallist.json +0 -175
  304. package/data/pages/Foundations/foundations.json +0 -2475
  305. package/data/pages/Getting-started/start/changelog.json +0 -22
  306. package/data/pages/Getting-started/start/goodtoknow.json +0 -32
  307. package/data/pages/Getting-started/start/guidelines/color-combinations.json +0 -58
  308. package/data/pages/Getting-started/start/guidelines/custom-css.json +0 -27
  309. package/data/pages/Getting-started/start/guidelines/custom-rioglyph.json +0 -22
  310. package/data/pages/Getting-started/start/guidelines/formatting.json +0 -97
  311. package/data/pages/Getting-started/start/guidelines/iframe.json +0 -93
  312. package/data/pages/Getting-started/start/guidelines/obfuscate-data.json +0 -22
  313. package/data/pages/Getting-started/start/guidelines/print-css.json +0 -37
  314. package/data/pages/Getting-started/start/guidelines/spinner.json +0 -144
  315. package/data/pages/Getting-started/start/guidelines/supported-browsers.json +0 -22
  316. package/data/pages/Getting-started/start/guidelines/writing.json +0 -242
  317. package/data/pages/Getting-started/start/howto.json +0 -72
  318. package/data/pages/Getting-started/start/intro.json +0 -37
  319. package/data/pages/Getting-started/start/responsiveness.json +0 -52
  320. package/data/pages/Templates/templates/common-table.json +0 -39
  321. package/data/pages/Templates/templates/detail-views.json +0 -71
  322. package/data/pages/Templates/templates/expandable-details.json +0 -39
  323. package/data/pages/Templates/templates/feature-cards.json +0 -103
  324. package/data/pages/Templates/templates/form-summary.json +0 -39
  325. package/data/pages/Templates/templates/form-toggle.json +0 -39
  326. package/data/pages/Templates/templates/list-blocks.json +0 -119
  327. package/data/pages/Templates/templates/loading-progress.json +0 -39
  328. package/data/pages/Templates/templates/options-panel.json +0 -39
  329. package/data/pages/Templates/templates/panel-variants.json +0 -39
  330. package/data/pages/Templates/templates/progress-cards.json +0 -71
  331. package/data/pages/Templates/templates/progress-success.json +0 -39
  332. package/data/pages/Templates/templates/settings-form.json +0 -39
  333. package/data/pages/Templates/templates/stats-blocks.json +0 -135
  334. package/data/pages/Templates/templates/table-panel.json +0 -39
  335. package/data/pages/Templates/templates/table-row-animation.json +0 -39
  336. package/data/pages/Templates/templates/usage-cards.json +0 -39
  337. package/data/pages/Utilities/utilities/deviceutils.json +0 -39
  338. package/data/pages/Utilities/utilities/featuretoggles.json +0 -42
  339. package/data/pages/Utilities/utilities/fueltypeutils.json +0 -118
  340. package/data/pages/Utilities/utilities/routeutils.json +0 -34
  341. package/data/pages/Utilities/utilities/useaftermount.json +0 -63
  342. package/data/pages/Utilities/utilities/useaverage.json +0 -86
  343. package/data/pages/Utilities/utilities/useclickoutside.json +0 -69
  344. package/data/pages/Utilities/utilities/useclipboard.json +0 -57
  345. package/data/pages/Utilities/utilities/usecount.json +0 -92
  346. package/data/pages/Utilities/utilities/usedarkmode.json +0 -50
  347. package/data/pages/Utilities/utilities/usedebuginfo.json +0 -63
  348. package/data/pages/Utilities/utilities/useeffectonce.json +0 -57
  349. package/data/pages/Utilities/utilities/useelapsedtime.json +0 -57
  350. package/data/pages/Utilities/utilities/useelementsize.json +0 -63
  351. package/data/pages/Utilities/utilities/useesc.json +0 -57
  352. package/data/pages/Utilities/utilities/useevent.json +0 -75
  353. package/data/pages/Utilities/utilities/usefocustrap.json +0 -57
  354. package/data/pages/Utilities/utilities/usefullscreen.json +0 -197
  355. package/data/pages/Utilities/utilities/usehover.json +0 -57
  356. package/data/pages/Utilities/utilities/useinterval.json +0 -63
  357. package/data/pages/Utilities/utilities/useisfocuswithin.json +0 -75
  358. package/data/pages/Utilities/utilities/usekey.json +0 -75
  359. package/data/pages/Utilities/utilities/uselocalstorage.json +0 -69
  360. package/data/pages/Utilities/utilities/uselocationsuggestions.json +0 -110
  361. package/data/pages/Utilities/utilities/usemax.json +0 -86
  362. package/data/pages/Utilities/utilities/usemin.json +0 -86
  363. package/data/pages/Utilities/utilities/usemutationobserver.json +0 -69
  364. package/data/pages/Utilities/utilities/useonlinestatus.json +0 -39
  365. package/data/pages/Utilities/utilities/useonscreen.json +0 -63
  366. package/data/pages/Utilities/utilities/usepostmessage.json +0 -80
  367. package/data/pages/Utilities/utilities/useprevious.json +0 -63
  368. package/data/pages/Utilities/utilities/useresizeobserver.json +0 -65
  369. package/data/pages/Utilities/utilities/usescrollposition.json +0 -103
  370. package/data/pages/Utilities/utilities/usesearch.json +0 -197
  371. package/data/pages/Utilities/utilities/usesorting.json +0 -139
  372. package/data/pages/Utilities/utilities/usestatewithvalidation.json +0 -69
  373. package/data/pages/Utilities/utilities/usesum.json +0 -86
  374. package/data/pages/Utilities/utilities/usetableexport.json +0 -87
  375. package/data/pages/Utilities/utilities/usetableselection.json +0 -311
  376. package/data/pages/Utilities/utilities/usetimeout.json +0 -63
  377. package/data/pages/Utilities/utilities/usetoggle.json +0 -75
  378. package/data/pages/Utilities/utilities/usewindowresize.json +0 -63
  379. package/data/version.json +0 -4
  380. package/docs/content-schema.md +0 -147
  381. package/docs/navigation-inventory.json +0 -1310
  382. package/docs/search-synonyms.json +0 -43
  383. package/server/index.mjs +0 -268
  384. package/server/lib/load-docs.mjs +0 -48
  385. package/server/lib/normalise-doc.mjs +0 -220
  386. package/server/lib/render-markdown.mjs +0 -82
  387. package/server/lib/search-index.mjs +0 -49
  388. package/server/lib/types.js +0 -99
@@ -0,0 +1,2033 @@
1
+ # ApplicationLayout
2
+
3
+ *Category:* Components
4
+ *Section:* Application
5
+ *Source:* https://uikit.developers.rio.cloud/#components/appLayout
6
+ *Captured:* 2025-12-12T14:20:11.441Z
7
+
8
+ The ApplicationLayout components consists of three sub-components: ApplicationHeader, ApplicationBody, ApplicationSidebar
9
+
10
+ ## ApplicationLayout
11
+
12
+ The ApplicationHeader and ApplicationSidebar components are optional. The Body component is dedicated to the actual service content.
13
+
14
+ > Note: Do not wrap direct children of ApplicationLayout, due to css height calculations. If you really need to wrap your children, use<React.Fragment> instead
15
+
16
+ > Note: If you remove the ApplicationHeader from you SPA, other elements, for example the ApplicationBody, will resize the height to fill the <body> node.
17
+
18
+ ## Default example
19
+
20
+ ### Example: Example 1
21
+
22
+ RIO Service
23
+
24
+ Navigation 1
25
+ Navigation 2
26
+ Navigation 3
27
+
28
+ #### Summary
29
+
30
+ RIO Service
31
+
32
+ Navigation 1
33
+ Navigation 2
34
+ Navigation 3
35
+
36
+ #### React (tsx)
37
+
38
+ ```tsx
39
+ import { NavLink } from 'react-router-dom';
40
+
41
+ import ApplicationLayout from '@rio-cloud/rio-uikit/ApplicationLayout';
42
+ import ApplicationHeader from '@rio-cloud/rio-uikit/ApplicationHeader';
43
+
44
+ const navItems = [
45
+ { key: '1', route: <NavLink to='/components/appLayout'>Navigation 1</NavLink> },
46
+ {
47
+ key: '2',
48
+ route: (
49
+ <NavLink to='/2' onClick={event => event.preventDefault()}>
50
+ Navigation 2
51
+ </NavLink>
52
+ ),
53
+ },
54
+ {
55
+ key: '3',
56
+ route: (
57
+ <NavLink to='/3' onClick={event => event.preventDefault()}>
58
+ Navigation 3
59
+ </NavLink>
60
+ ),
61
+ },
62
+ ];
63
+
64
+ export default () => (
65
+ <ApplicationLayout className='bg-lighter'>
66
+ <ApplicationLayout.Header>
67
+ <ApplicationHeader label='RIO Service' navItems={navItems} />
68
+ </ApplicationLayout.Header>
69
+ <ApplicationLayout.Body className='uikitDemo'>
70
+ <div className='dummy-class' />
71
+ </ApplicationLayout.Body>
72
+ </ApplicationLayout>
73
+ );
74
+ ```
75
+
76
+ #### HTML (html)
77
+
78
+ ```html
79
+ <div class="ApplicationLayout bg-lighter" style="--ApplicationLayoutBodyBottomBarHeight: 54px;">
80
+ <div class="ApplicationLayoutHeader" id="ApplicationLayoutHeader">
81
+ <nav class="ApplicationHeader user-select-none">
82
+ <div class="navbar-header">
83
+ <span class="navbar-brand home-icon">
84
+ </span>
85
+ </div>
86
+ <ul class="ModuleNavigation AppMenu user-select-none pointer-events-none">
87
+ <li class="dropdown">
88
+ <a class="ModuleNavigation-dropdown dropdown-toggle justify-content-between inactive" role="button" id="basic-nav-dropdown">
89
+ <span>RIO Service</span>
90
+ </a>
91
+ </li>
92
+ </ul>
93
+ <ul class="SubmoduleNavigation nav">
94
+ <li class="submodule " data-nav-item-key="1">
95
+ <a aria-current="page" class="active" href="#components/appLayout">Navigation 1</a>
96
+ </li>
97
+ <li class="submodule " data-nav-item-key="2">
98
+ <a href="#2">Navigation 2</a>
99
+ </li>
100
+ <li class="submodule " data-nav-item-key="3">
101
+ <a href="#3">Navigation 3</a>
102
+ </li>
103
+ </ul>
104
+ <ul class="ApplicationActionBar nav navbar-nav navbar-right ">
105
+ </ul>
106
+ </nav>
107
+ </div>
108
+ <div class="ApplicationLayoutBody uikitDemo">
109
+ <div class="module-content-wrapper">
110
+ <div class="module-content smooth-scrollbar-wrapper" style="position: relative; overflow: hidden; width: 100%; height: 100%;">
111
+ <div class="scrollbar-view" style="position: absolute; inset: 0px; overflow: scroll; margin-right: 0px; margin-bottom: 0px;">
112
+ <div class="scrollbar-content-wrapper">
113
+ <div class="scrollbar-content">
114
+ <div class="dummy-class">
115
+ </div>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ <div class="scrollbar-track-horizontal scrollbar-track-size-large scrollbar-track-offset" style="position: absolute; height: 6px; display: none;">
120
+ <div class="scrollbar-thumb-horizontal scrollbar-thumb-size-large" style="position: relative; display: block; height: 100%;">
121
+ </div>
122
+ </div>
123
+ <div class="scrollbar-track-vertical scrollbar-track-size-large scrollbar-track-offset" style="position: absolute; width: 6px; display: none;">
124
+ <div class="scrollbar-thumb-vertical scrollbar-thumb-size-large" style="position: relative; display: block; width: 100%;">
125
+ </div>
126
+ </div>
127
+ </div>
128
+ </div>
129
+ <span class="scroll-to-top">
130
+ <button type="button" class="btn btn-primary btn-icon-only">
131
+ <span class="rioglyph rioglyph-arrow-up">
132
+ </span>
133
+ </button>
134
+ </span>
135
+ </div>
136
+ </div>
137
+ ```
138
+
139
+ #### Props: ApplicationLayout
140
+
141
+ ### ApplicationLayout
142
+
143
+ | Name | Type | Default | Description |
144
+ | --- | --- | --- | --- |
145
+ | layoutRef | React.ref | — | A React ref function assigned to the wrapper element. |
146
+ | className | String | — | Additional class names that are added to the respective component. |
147
+
148
+ #### Props: ApplicationLayoutHeader
149
+
150
+ ### ApplicationLayoutHeader
151
+
152
+ | Name | Type | Default | Description |
153
+ | --- | --- | --- | --- |
154
+ | className | String | — | Additional class names that are added to the respective component. |
155
+
156
+ #### Props: ApplicationLayoutSidebar
157
+
158
+ ### ApplicationLayoutSidebar
159
+
160
+ | Name | Type | Default | Description |
161
+ | --- | --- | --- | --- |
162
+ | ref | React.ref | — | A React ref function assigned to the wrapper element. |
163
+ | className | String | — | Additional class names that are added to the respective component. |
164
+
165
+ #### Props: ApplicationLayoutBody
166
+
167
+ ### ApplicationLayoutBody
168
+
169
+ | Name | Type | Default | Description |
170
+ | --- | --- | --- | --- |
171
+ | className | String | — | Additional class names that are added to the respective component. |
172
+ | innerClassName | String | — | Additional class names that are added to the inner module-content component. |
173
+ | children | any | — | Any component given to the layout components will be rendered |
174
+ | navigation | any | — | The ApplicationLayoutBodyNavigation component. |
175
+ | enableScrollToTop | Boolean | true | Show scroll to top button after scrolling the content. |
176
+ | forceScrollbar | Boolean | false | Always show vertical scrollbar to prevent the content from jumping. |
177
+ | bottomBar | Node \| String | — | Optional bottom bar component or a simple string. |
178
+ | bottomBarHeight | Number | 54 | Height of the bottomBar in pixel. |
179
+ | banner | any | — | The ApplicationLayoutBodyBanner component. |
180
+
181
+ #### Props: ApplicationLayoutBodyNavigation
182
+
183
+ ### ApplicationLayoutBodyNavigation
184
+
185
+ | Name | Type | Default | Description |
186
+ | --- | --- | --- | --- |
187
+ | className | String | — | Additional class names that are added to the respective component. Example: "has-offset" |
188
+
189
+ #### Props: ApplicationLayoutBodyBottomBar
190
+
191
+ ### ApplicationLayoutBodyBottomBar
192
+
193
+ | Name | Type | Default | Description |
194
+ | --- | --- | --- | --- |
195
+ | className | String | — | Additional class names that are added to the respective component. |
196
+ | buttonAlignment | String | — | Tells the buttons if they are left or right aligned. Default behavior is: 1st button left and 2nd button right. ApplicationLayoutBodyBottomBar.LEFT, ApplicationLayoutBodyBottomBar.RIGHT or 'left''right' |
197
+ | useBodyPaddings | Boolean | false | Use same paddings (left and right) as the ApplicationLayoutBody. |
198
+
199
+ #### Props: ApplicationLayoutBodyBanner
200
+
201
+ ### ApplicationLayoutBodyBanner
202
+
203
+ | Name | Type | Default | Description |
204
+ | --- | --- | --- | --- |
205
+ | className | String | — | Additional class names that are added to the respective component. |
206
+ | backgroundColor | String | bg-primary | One of our bg-color utility classes. |
207
+ | textColor | string | text-color-white | One of our text-color utility classes. |
208
+ | isSticky | Boolean | false | Sticky while scrolling. |
209
+
210
+ ## SubNavigation example
211
+
212
+ ### Example: Example 2
213
+
214
+ RIO Service
215
+
216
+ Navigation 1
217
+ Navigation 2
218
+ Navigation 3
219
+
220
+ Subnavigation 1
221
+ Subnavigation 2
222
+ Subnavigation 3
223
+
224
+ #### Summary
225
+
226
+ RIO Service
227
+
228
+ Navigation 1
229
+ Navigation 2
230
+ Navigation 3
231
+
232
+ Subnavigation 1
233
+ Subnavigation 2
234
+ Subnavigation 3
235
+
236
+ #### React (tsx)
237
+
238
+ ```tsx
239
+ import { useState, useEffect } from 'react';
240
+ import { NavLink } from 'react-router-dom';
241
+
242
+ import ApplicationLayout from '@rio-cloud/rio-uikit/ApplicationLayout';
243
+ import ApplicationHeader from '@rio-cloud/rio-uikit/ApplicationHeader';
244
+ import ApplicationLayoutBodyNavigation from '@rio-cloud/rio-uikit/ApplicationLayoutBodyNavigation';
245
+ import SubNavigation from '@rio-cloud/rio-uikit/SubNavigation';
246
+ import useResizeObserver from '@rio-cloud/rio-uikit/useResizeObserver';
247
+ import { SCREEN_MD } from '@rio-cloud/rio-uikit/DeviceUtils';
248
+
249
+ export default () => {
250
+ const currentLocation = window.location.hash.replace('#', '/');
251
+ const navItems = [
252
+ { key: '1', route: <NavLink to={currentLocation}>Navigation 1</NavLink> },
253
+ {
254
+ key: '2',
255
+ route: (
256
+ <NavLink to='/2' onClick={event => event.preventDefault()}>
257
+ Navigation 2
258
+ </NavLink>
259
+ ),
260
+ },
261
+ {
262
+ key: '3',
263
+ route: (
264
+ <NavLink to='/3' onClick={event => event.preventDefault()}>
265
+ Navigation 3
266
+ </NavLink>
267
+ ),
268
+ },
269
+ ];
270
+
271
+ // Listen for resize changes of the target element defined by the ref
272
+ // Note: this is for demo purpose only when resizing the demo playground.
273
+ // The SubNavigation component handles this case internally
274
+ const { ref, isMobile } = useResizer();
275
+ const bodyNavigationClasses = isMobile ? '' : 'has-offset';
276
+
277
+ return (
278
+ <ApplicationLayout className='bg-lighter' layoutRef={ref}>
279
+ <ApplicationLayout.Header>
280
+ <ApplicationHeader label='RIO Service' navItems={navItems} />
281
+ </ApplicationLayout.Header>
282
+ <ApplicationLayout.Body
283
+ className='uikitDemo'
284
+ navigation={
285
+ <ApplicationLayoutBodyNavigation className={bodyNavigationClasses}>
286
+ <SubNavigation
287
+ navItems={[
288
+ {
289
+ key: '1',
290
+ route: <NavLink to={currentLocation}>Subnavigation 1</NavLink>,
291
+ },
292
+ {
293
+ key: '2',
294
+ route: (
295
+ <NavLink to='/2' onClick={event => event.preventDefault()}>
296
+ Subnavigation 2
297
+ </NavLink>
298
+ ),
299
+ },
300
+ {
301
+ key: '3',
302
+ route: (
303
+ <NavLink to='/3' onClick={event => event.preventDefault()}>
304
+ Subnavigation 3
305
+ </NavLink>
306
+ ),
307
+ },
308
+ ]}
309
+ />
310
+ </ApplicationLayoutBodyNavigation>
311
+ }
312
+ >
313
+ <div className='dummy-class' />
314
+ </ApplicationLayout.Body>
315
+ </ApplicationLayout>
316
+ );
317
+ };
318
+
319
+ const useResizer = () => {
320
+ const [isMobile, setIsMobile] = useState(false);
321
+ const [ref, observerEntry] = useResizeObserver();
322
+ const contentRect = observerEntry?.contentRect;
323
+ useEffect(() => {
324
+ if (!contentRect) {
325
+ return;
326
+ }
327
+ const width = Math.round(contentRect.width);
328
+ if (width <= SCREEN_MD) {
329
+ setIsMobile(true);
330
+ } else {
331
+ setIsMobile(false);
332
+ }
333
+ }, [contentRect]);
334
+
335
+ return { ref, isMobile };
336
+ };
337
+ ```
338
+
339
+ #### HTML (html)
340
+
341
+ ```html
342
+ <div class="ApplicationLayout bg-lighter" style="--ApplicationLayoutBodyBottomBarHeight: 54px;">
343
+ <div class="ApplicationLayoutHeader" id="ApplicationLayoutHeader">
344
+ <nav class="ApplicationHeader user-select-none">
345
+ <div class="navbar-header">
346
+ <span class="navbar-brand home-icon">
347
+ </span>
348
+ </div>
349
+ <ul class="ModuleNavigation AppMenu user-select-none pointer-events-none">
350
+ <li class="dropdown">
351
+ <a class="ModuleNavigation-dropdown dropdown-toggle justify-content-between inactive" role="button" id="basic-nav-dropdown">
352
+ <span>RIO Service</span>
353
+ </a>
354
+ </li>
355
+ </ul>
356
+ <ul class="SubmoduleNavigation nav">
357
+ <li class="submodule " data-nav-item-key="1">
358
+ <a aria-current="page" class="active" href="#components/appLayout">Navigation 1</a>
359
+ </li>
360
+ <li class="submodule " data-nav-item-key="2">
361
+ <a href="#2">Navigation 2</a>
362
+ </li>
363
+ <li class="submodule " data-nav-item-key="3">
364
+ <a href="#3">Navigation 3</a>
365
+ </li>
366
+ </ul>
367
+ <ul class="ApplicationActionBar nav navbar-nav navbar-right ">
368
+ </ul>
369
+ </nav>
370
+ </div>
371
+ <div class="ApplicationLayoutBody uikitDemo">
372
+ <div class="module-content-wrapper">
373
+ <div class="ApplicationLayoutBodyNavigation">
374
+ <div class="SubNavigation width-100pct overflow-auto">
375
+ <ul class="SubmoduleNavigation nav">
376
+ <li class="submodule" data-nav-item-key="1">
377
+ <a aria-current="page" class="active" href="#components/appLayout">Subnavigation 1</a>
378
+ </li>
379
+ <li class="submodule" data-nav-item-key="2">
380
+ <a href="#2">Subnavigation 2</a>
381
+ </li>
382
+ <li class="submodule" data-nav-item-key="3">
383
+ <a href="#3">Subnavigation 3</a>
384
+ </li>
385
+ </ul>
386
+ </div>
387
+ </div>
388
+ <div class="module-content smooth-scrollbar-wrapper" style="position: relative; overflow: hidden; width: 100%; height: 100%;">
389
+ <div class="scrollbar-view" style="position: absolute; inset: 0px; overflow: scroll; margin-right: 0px; margin-bottom: 0px;">
390
+ <div class="scrollbar-content-wrapper">
391
+ <div class="scrollbar-content">
392
+ <div class="dummy-class">
393
+ </div>
394
+ </div>
395
+ </div>
396
+ </div>
397
+ <div class="scrollbar-track-horizontal scrollbar-track-size-large scrollbar-track-offset" style="position: absolute; height: 6px; display: none;">
398
+ <div class="scrollbar-thumb-horizontal scrollbar-thumb-size-large" style="position: relative; display: block; height: 100%;">
399
+ </div>
400
+ </div>
401
+ <div class="scrollbar-track-vertical scrollbar-track-size-large scrollbar-track-offset" style="position: absolute; width: 6px; display: none;">
402
+ <div class="scrollbar-thumb-vertical scrollbar-thumb-size-large" style="position: relative; display: block; width: 100%;">
403
+ </div>
404
+ </div>
405
+ </div>
406
+ </div>
407
+ <span class="scroll-to-top">
408
+ <button type="button" class="btn btn-primary btn-icon-only">
409
+ <span class="rioglyph rioglyph-arrow-up">
410
+ </span>
411
+ </button>
412
+ </span>
413
+ </div>
414
+ </div>
415
+ ```
416
+
417
+ #### Props: ApplicationLayout
418
+
419
+ ### ApplicationLayout
420
+
421
+ | Name | Type | Default | Description |
422
+ | --- | --- | --- | --- |
423
+ | layoutRef | React.ref | — | A React ref function assigned to the wrapper element. |
424
+ | className | String | — | Additional class names that are added to the respective component. |
425
+
426
+ #### Props: ApplicationLayoutHeader
427
+
428
+ ### ApplicationLayoutHeader
429
+
430
+ | Name | Type | Default | Description |
431
+ | --- | --- | --- | --- |
432
+ | className | String | — | Additional class names that are added to the respective component. |
433
+
434
+ #### Props: ApplicationLayoutSidebar
435
+
436
+ ### ApplicationLayoutSidebar
437
+
438
+ | Name | Type | Default | Description |
439
+ | --- | --- | --- | --- |
440
+ | ref | React.ref | — | A React ref function assigned to the wrapper element. |
441
+ | className | String | — | Additional class names that are added to the respective component. |
442
+
443
+ #### Props: ApplicationLayoutBody
444
+
445
+ ### ApplicationLayoutBody
446
+
447
+ | Name | Type | Default | Description |
448
+ | --- | --- | --- | --- |
449
+ | className | String | — | Additional class names that are added to the respective component. |
450
+ | innerClassName | String | — | Additional class names that are added to the inner module-content component. |
451
+ | children | any | — | Any component given to the layout components will be rendered |
452
+ | navigation | any | — | The ApplicationLayoutBodyNavigation component. |
453
+ | enableScrollToTop | Boolean | true | Show scroll to top button after scrolling the content. |
454
+ | forceScrollbar | Boolean | false | Always show vertical scrollbar to prevent the content from jumping. |
455
+ | bottomBar | Node \| String | — | Optional bottom bar component or a simple string. |
456
+ | bottomBarHeight | Number | 54 | Height of the bottomBar in pixel. |
457
+ | banner | any | — | The ApplicationLayoutBodyBanner component. |
458
+
459
+ #### Props: ApplicationLayoutBodyNavigation
460
+
461
+ ### ApplicationLayoutBodyNavigation
462
+
463
+ | Name | Type | Default | Description |
464
+ | --- | --- | --- | --- |
465
+ | className | String | — | Additional class names that are added to the respective component. Example: "has-offset" |
466
+
467
+ #### Props: ApplicationLayoutBodyBottomBar
468
+
469
+ ### ApplicationLayoutBodyBottomBar
470
+
471
+ | Name | Type | Default | Description |
472
+ | --- | --- | --- | --- |
473
+ | className | String | — | Additional class names that are added to the respective component. |
474
+ | buttonAlignment | String | — | Tells the buttons if they are left or right aligned. Default behavior is: 1st button left and 2nd button right. ApplicationLayoutBodyBottomBar.LEFT, ApplicationLayoutBodyBottomBar.RIGHT or 'left''right' |
475
+ | useBodyPaddings | Boolean | false | Use same paddings (left and right) as the ApplicationLayoutBody. |
476
+
477
+ #### Props: ApplicationLayoutBodyBanner
478
+
479
+ ### ApplicationLayoutBodyBanner
480
+
481
+ | Name | Type | Default | Description |
482
+ | --- | --- | --- | --- |
483
+ | className | String | — | Additional class names that are added to the respective component. |
484
+ | backgroundColor | String | bg-primary | One of our bg-color utility classes. |
485
+ | textColor | string | text-color-white | One of our text-color utility classes. |
486
+ | isSticky | Boolean | false | Sticky while scrolling. |
487
+
488
+ ## Body banner example
489
+
490
+ ### Example: Example 3
491
+
492
+ RIO Service
493
+
494
+ Navigation 1
495
+ Navigation 2
496
+ Navigation 3
497
+
498
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, diam nonumy eirmod tempor invidunt.
499
+
500
+ #### Summary
501
+
502
+ RIO Service
503
+
504
+ Navigation 1
505
+ Navigation 2
506
+ Navigation 3
507
+
508
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, diam nonumy eirmod tempor invidunt.
509
+
510
+ #### React (tsx)
511
+
512
+ ```tsx
513
+ import { NavLink } from 'react-router-dom';
514
+
515
+ import ApplicationLayout from '@rio-cloud/rio-uikit/ApplicationLayout';
516
+ import ApplicationHeader from '@rio-cloud/rio-uikit/ApplicationHeader';
517
+ import ApplicationLayoutBodyBanner from '@rio-cloud/rio-uikit/ApplicationLayoutBodyBanner';
518
+
519
+ const navItems = [
520
+ { key: '1', route: <NavLink to='/components/appLayout'>Navigation 1</NavLink> },
521
+ {
522
+ key: '2',
523
+ route: (
524
+ <NavLink to='/2' onClick={event => event.preventDefault()}>
525
+ Navigation 2
526
+ </NavLink>
527
+ ),
528
+ },
529
+ {
530
+ key: '3',
531
+ route: (
532
+ <NavLink to='/3' onClick={event => event.preventDefault()}>
533
+ Navigation 3
534
+ </NavLink>
535
+ ),
536
+ },
537
+ ];
538
+
539
+ export default () => (
540
+ <ApplicationLayout className='bg-lighter'>
541
+ <ApplicationLayout.Header>
542
+ <ApplicationHeader label='RIO Service' navItems={navItems} />
543
+ </ApplicationLayout.Header>
544
+ <ApplicationLayout.Body
545
+ className='uikitDemo'
546
+ banner={
547
+ <ApplicationLayoutBodyBanner>
548
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, diam nonumy eirmod tempor invidunt.
549
+ </ApplicationLayoutBodyBanner>
550
+ }
551
+ >
552
+ <div className='dummy-class' />
553
+ </ApplicationLayout.Body>
554
+ </ApplicationLayout>
555
+ );
556
+ ```
557
+
558
+ #### HTML (html)
559
+
560
+ ```html
561
+ <div class="ApplicationLayout bg-lighter" style="--ApplicationLayoutBodyBottomBarHeight: 54px;">
562
+ <div class="ApplicationLayoutHeader" id="ApplicationLayoutHeader">
563
+ <nav class="ApplicationHeader user-select-none">
564
+ <div class="navbar-header">
565
+ <span class="navbar-brand home-icon">
566
+ </span>
567
+ </div>
568
+ <ul class="ModuleNavigation AppMenu user-select-none pointer-events-none">
569
+ <li class="dropdown">
570
+ <a class="ModuleNavigation-dropdown dropdown-toggle justify-content-between inactive" role="button" id="basic-nav-dropdown">
571
+ <span>RIO Service</span>
572
+ </a>
573
+ </li>
574
+ </ul>
575
+ <ul class="SubmoduleNavigation nav">
576
+ <li class="submodule " data-nav-item-key="1">
577
+ <a aria-current="page" class="active" href="#components/appLayout">Navigation 1</a>
578
+ </li>
579
+ <li class="submodule " data-nav-item-key="2">
580
+ <a href="#2">Navigation 2</a>
581
+ </li>
582
+ <li class="submodule " data-nav-item-key="3">
583
+ <a href="#3">Navigation 3</a>
584
+ </li>
585
+ </ul>
586
+ <ul class="ApplicationActionBar nav navbar-nav navbar-right ">
587
+ </ul>
588
+ </nav>
589
+ </div>
590
+ <div class="ApplicationLayoutBody uikitDemo">
591
+ <div class="module-content-wrapper">
592
+ <div class="ApplicationLayoutBodyBanner text-color-white bg-primary position-sticky top-0 z-index-3">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, diam nonumy eirmod tempor invidunt.</div>
593
+ <div class="module-content smooth-scrollbar-wrapper" style="position: relative; overflow: hidden; width: 100%; height: 100%;">
594
+ <div class="scrollbar-view" style="position: absolute; inset: 0px; overflow: scroll; margin-right: 0px; margin-bottom: 0px;">
595
+ <div class="scrollbar-content-wrapper">
596
+ <div class="scrollbar-content">
597
+ <div class="dummy-class">
598
+ </div>
599
+ </div>
600
+ </div>
601
+ </div>
602
+ <div class="scrollbar-track-horizontal scrollbar-track-size-large scrollbar-track-offset" style="position: absolute; height: 6px; display: none;">
603
+ <div class="scrollbar-thumb-horizontal scrollbar-thumb-size-large" style="position: relative; display: block; height: 100%;">
604
+ </div>
605
+ </div>
606
+ <div class="scrollbar-track-vertical scrollbar-track-size-large scrollbar-track-offset" style="position: absolute; width: 6px; display: none;">
607
+ <div class="scrollbar-thumb-vertical scrollbar-thumb-size-large" style="position: relative; display: block; width: 100%;">
608
+ </div>
609
+ </div>
610
+ </div>
611
+ </div>
612
+ <span class="scroll-to-top">
613
+ <button type="button" class="btn btn-primary btn-icon-only">
614
+ <span class="rioglyph rioglyph-arrow-up">
615
+ </span>
616
+ </button>
617
+ </span>
618
+ </div>
619
+ </div>
620
+ ```
621
+
622
+ #### Props: ApplicationLayout
623
+
624
+ ### ApplicationLayout
625
+
626
+ | Name | Type | Default | Description |
627
+ | --- | --- | --- | --- |
628
+ | layoutRef | React.ref | — | A React ref function assigned to the wrapper element. |
629
+ | className | String | — | Additional class names that are added to the respective component. |
630
+
631
+ #### Props: ApplicationLayoutHeader
632
+
633
+ ### ApplicationLayoutHeader
634
+
635
+ | Name | Type | Default | Description |
636
+ | --- | --- | --- | --- |
637
+ | className | String | — | Additional class names that are added to the respective component. |
638
+
639
+ #### Props: ApplicationLayoutSidebar
640
+
641
+ ### ApplicationLayoutSidebar
642
+
643
+ | Name | Type | Default | Description |
644
+ | --- | --- | --- | --- |
645
+ | ref | React.ref | — | A React ref function assigned to the wrapper element. |
646
+ | className | String | — | Additional class names that are added to the respective component. |
647
+
648
+ #### Props: ApplicationLayoutBody
649
+
650
+ ### ApplicationLayoutBody
651
+
652
+ | Name | Type | Default | Description |
653
+ | --- | --- | --- | --- |
654
+ | className | String | — | Additional class names that are added to the respective component. |
655
+ | innerClassName | String | — | Additional class names that are added to the inner module-content component. |
656
+ | children | any | — | Any component given to the layout components will be rendered |
657
+ | navigation | any | — | The ApplicationLayoutBodyNavigation component. |
658
+ | enableScrollToTop | Boolean | true | Show scroll to top button after scrolling the content. |
659
+ | forceScrollbar | Boolean | false | Always show vertical scrollbar to prevent the content from jumping. |
660
+ | bottomBar | Node \| String | — | Optional bottom bar component or a simple string. |
661
+ | bottomBarHeight | Number | 54 | Height of the bottomBar in pixel. |
662
+ | banner | any | — | The ApplicationLayoutBodyBanner component. |
663
+
664
+ #### Props: ApplicationLayoutBodyNavigation
665
+
666
+ ### ApplicationLayoutBodyNavigation
667
+
668
+ | Name | Type | Default | Description |
669
+ | --- | --- | --- | --- |
670
+ | className | String | — | Additional class names that are added to the respective component. Example: "has-offset" |
671
+
672
+ #### Props: ApplicationLayoutBodyBottomBar
673
+
674
+ ### ApplicationLayoutBodyBottomBar
675
+
676
+ | Name | Type | Default | Description |
677
+ | --- | --- | --- | --- |
678
+ | className | String | — | Additional class names that are added to the respective component. |
679
+ | buttonAlignment | String | — | Tells the buttons if they are left or right aligned. Default behavior is: 1st button left and 2nd button right. ApplicationLayoutBodyBottomBar.LEFT, ApplicationLayoutBodyBottomBar.RIGHT or 'left''right' |
680
+ | useBodyPaddings | Boolean | false | Use same paddings (left and right) as the ApplicationLayoutBody. |
681
+
682
+ #### Props: ApplicationLayoutBodyBanner
683
+
684
+ ### ApplicationLayoutBodyBanner
685
+
686
+ | Name | Type | Default | Description |
687
+ | --- | --- | --- | --- |
688
+ | className | String | — | Additional class names that are added to the respective component. |
689
+ | backgroundColor | String | bg-primary | One of our bg-color utility classes. |
690
+ | textColor | string | text-color-white | One of our text-color utility classes. |
691
+ | isSticky | Boolean | false | Sticky while scrolling. |
692
+
693
+ ## Bottom bar example
694
+
695
+ ### Example: Example 4
696
+
697
+ RIO Service
698
+
699
+ Navigation 1
700
+ Navigation 2
701
+ Navigation 3
702
+
703
+ Button
704
+
705
+ #### Summary
706
+
707
+ RIO Service
708
+
709
+ Navigation 1
710
+ Navigation 2
711
+ Navigation 3
712
+
713
+ Button
714
+
715
+ #### React (tsx)
716
+
717
+ ```tsx
718
+ import { NavLink } from 'react-router-dom';
719
+
720
+ import ApplicationLayout from '@rio-cloud/rio-uikit/ApplicationLayout';
721
+ import ApplicationHeader from '@rio-cloud/rio-uikit/ApplicationHeader';
722
+ import ApplicationLayoutBodyBottomBar from '@rio-cloud/rio-uikit/ApplicationLayoutBodyBottomBar';
723
+
724
+ const navItems = [
725
+ { key: '1', route: <NavLink to='/components/appLayout'>Navigation 1</NavLink> },
726
+ {
727
+ key: '2',
728
+ route: (
729
+ <NavLink to='/2' onClick={event => event.preventDefault()}>
730
+ Navigation 2
731
+ </NavLink>
732
+ ),
733
+ },
734
+ {
735
+ key: '3',
736
+ route: (
737
+ <NavLink to='/3' onClick={event => event.preventDefault()}>
738
+ Navigation 3
739
+ </NavLink>
740
+ ),
741
+ },
742
+ ];
743
+
744
+ export default () => (
745
+ <ApplicationLayout className='bg-lighter'>
746
+ <ApplicationLayout.Header>
747
+ <ApplicationHeader label='RIO Service' navItems={navItems} />
748
+ </ApplicationLayout.Header>
749
+ <ApplicationLayout.Body
750
+ className='uikitDemo'
751
+ bottomBar={
752
+ <ApplicationLayoutBodyBottomBar>
753
+ <button type='button' className='btn btn-primary'>
754
+ Button
755
+ </button>
756
+ </ApplicationLayoutBodyBottomBar>
757
+ }
758
+ >
759
+ <div className='dummy-class' />
760
+ </ApplicationLayout.Body>
761
+ </ApplicationLayout>
762
+ );
763
+ ```
764
+
765
+ #### HTML (html)
766
+
767
+ ```html
768
+ <div class="ApplicationLayout bg-lighter" style="--ApplicationLayoutBodyBottomBarHeight: 54px;">
769
+ <div class="ApplicationLayoutHeader" id="ApplicationLayoutHeader">
770
+ <nav class="ApplicationHeader user-select-none">
771
+ <div class="navbar-header">
772
+ <span class="navbar-brand home-icon">
773
+ </span>
774
+ </div>
775
+ <ul class="ModuleNavigation AppMenu user-select-none pointer-events-none">
776
+ <li class="dropdown">
777
+ <a class="ModuleNavigation-dropdown dropdown-toggle justify-content-between inactive" role="button" id="basic-nav-dropdown">
778
+ <span>RIO Service</span>
779
+ </a>
780
+ </li>
781
+ </ul>
782
+ <ul class="SubmoduleNavigation nav">
783
+ <li class="submodule " data-nav-item-key="1">
784
+ <a aria-current="page" class="active" href="#components/appLayout">Navigation 1</a>
785
+ </li>
786
+ <li class="submodule " data-nav-item-key="2">
787
+ <a href="#2">Navigation 2</a>
788
+ </li>
789
+ <li class="submodule " data-nav-item-key="3">
790
+ <a href="#3">Navigation 3</a>
791
+ </li>
792
+ </ul>
793
+ <ul class="ApplicationActionBar nav navbar-nav navbar-right ">
794
+ </ul>
795
+ </nav>
796
+ </div>
797
+ <div class="ApplicationLayoutBody has-footer uikitDemo">
798
+ <div class="module-content-wrapper">
799
+ <div class="module-content smooth-scrollbar-wrapper" style="position: relative; overflow: hidden; width: 100%; height: 100%;">
800
+ <div class="scrollbar-view" style="position: absolute; inset: 0px; overflow: scroll; margin-right: 0px; margin-bottom: 0px;">
801
+ <div class="scrollbar-content-wrapper">
802
+ <div class="scrollbar-content">
803
+ <div class="dummy-class">
804
+ </div>
805
+ </div>
806
+ </div>
807
+ </div>
808
+ <div class="scrollbar-track-horizontal scrollbar-track-size-large scrollbar-track-offset" style="position: absolute; height: 6px; display: none;">
809
+ <div class="scrollbar-thumb-horizontal scrollbar-thumb-size-large" style="position: relative; display: block; height: 100%;">
810
+ </div>
811
+ </div>
812
+ <div class="scrollbar-track-vertical scrollbar-track-size-large scrollbar-track-offset" style="position: absolute; width: 6px; display: none;">
813
+ <div class="scrollbar-thumb-vertical scrollbar-thumb-size-large" style="position: relative; display: block; width: 100%;">
814
+ </div>
815
+ </div>
816
+ </div>
817
+ </div>
818
+ <span class="scroll-to-top">
819
+ <button type="button" class="btn btn-primary btn-icon-only">
820
+ <span class="rioglyph rioglyph-arrow-up">
821
+ </span>
822
+ </button>
823
+ </span>
824
+ </div>
825
+ <div class="ApplicationLayoutBodyBottomBar justify-content-between">
826
+ <button type="button" class="btn btn-primary">Button</button>
827
+ </div>
828
+ </div>
829
+ ```
830
+
831
+ #### Props: ApplicationLayout
832
+
833
+ ### ApplicationLayout
834
+
835
+ | Name | Type | Default | Description |
836
+ | --- | --- | --- | --- |
837
+ | layoutRef | React.ref | — | A React ref function assigned to the wrapper element. |
838
+ | className | String | — | Additional class names that are added to the respective component. |
839
+
840
+ #### Props: ApplicationLayoutHeader
841
+
842
+ ### ApplicationLayoutHeader
843
+
844
+ | Name | Type | Default | Description |
845
+ | --- | --- | --- | --- |
846
+ | className | String | — | Additional class names that are added to the respective component. |
847
+
848
+ #### Props: ApplicationLayoutSidebar
849
+
850
+ ### ApplicationLayoutSidebar
851
+
852
+ | Name | Type | Default | Description |
853
+ | --- | --- | --- | --- |
854
+ | ref | React.ref | — | A React ref function assigned to the wrapper element. |
855
+ | className | String | — | Additional class names that are added to the respective component. |
856
+
857
+ #### Props: ApplicationLayoutBody
858
+
859
+ ### ApplicationLayoutBody
860
+
861
+ | Name | Type | Default | Description |
862
+ | --- | --- | --- | --- |
863
+ | className | String | — | Additional class names that are added to the respective component. |
864
+ | innerClassName | String | — | Additional class names that are added to the inner module-content component. |
865
+ | children | any | — | Any component given to the layout components will be rendered |
866
+ | navigation | any | — | The ApplicationLayoutBodyNavigation component. |
867
+ | enableScrollToTop | Boolean | true | Show scroll to top button after scrolling the content. |
868
+ | forceScrollbar | Boolean | false | Always show vertical scrollbar to prevent the content from jumping. |
869
+ | bottomBar | Node \| String | — | Optional bottom bar component or a simple string. |
870
+ | bottomBarHeight | Number | 54 | Height of the bottomBar in pixel. |
871
+ | banner | any | — | The ApplicationLayoutBodyBanner component. |
872
+
873
+ #### Props: ApplicationLayoutBodyNavigation
874
+
875
+ ### ApplicationLayoutBodyNavigation
876
+
877
+ | Name | Type | Default | Description |
878
+ | --- | --- | --- | --- |
879
+ | className | String | — | Additional class names that are added to the respective component. Example: "has-offset" |
880
+
881
+ #### Props: ApplicationLayoutBodyBottomBar
882
+
883
+ ### ApplicationLayoutBodyBottomBar
884
+
885
+ | Name | Type | Default | Description |
886
+ | --- | --- | --- | --- |
887
+ | className | String | — | Additional class names that are added to the respective component. |
888
+ | buttonAlignment | String | — | Tells the buttons if they are left or right aligned. Default behavior is: 1st button left and 2nd button right. ApplicationLayoutBodyBottomBar.LEFT, ApplicationLayoutBodyBottomBar.RIGHT or 'left''right' |
889
+ | useBodyPaddings | Boolean | false | Use same paddings (left and right) as the ApplicationLayoutBody. |
890
+
891
+ #### Props: ApplicationLayoutBodyBanner
892
+
893
+ ### ApplicationLayoutBodyBanner
894
+
895
+ | Name | Type | Default | Description |
896
+ | --- | --- | --- | --- |
897
+ | className | String | — | Additional class names that are added to the respective component. |
898
+ | backgroundColor | String | bg-primary | One of our bg-color utility classes. |
899
+ | textColor | string | text-color-white | One of our text-color utility classes. |
900
+ | isSticky | Boolean | false | Sticky while scrolling. |
901
+
902
+ ## Sidebar Example
903
+
904
+ ### Example: Example 5
905
+
906
+ RIO Service
907
+
908
+ Navigation 1
909
+ Navigation 2
910
+ Navigation 3
911
+
912
+ Sidebar Right
913
+
914
+ Sidebar components may be added here...
915
+
916
+ Button
917
+
918
+ #### Summary
919
+
920
+ RIO Service
921
+
922
+ Navigation 1
923
+ Navigation 2
924
+ Navigation 3
925
+
926
+ Sidebar Right
927
+
928
+ Sidebar components may be added here...
929
+
930
+ Button
931
+
932
+ #### React (tsx)
933
+
934
+ ```tsx
935
+ import { NavLink } from 'react-router-dom';
936
+
937
+ import ApplicationLayout from '@rio-cloud/rio-uikit/ApplicationLayout';
938
+ import ApplicationHeader from '@rio-cloud/rio-uikit/ApplicationHeader';
939
+ import Sidebar from '@rio-cloud/rio-uikit/Sidebar';
940
+
941
+ const navItems = [
942
+ { key: '1', route: <NavLink to='/components/appLayout'>Navigation 1</NavLink> },
943
+ {
944
+ key: '2',
945
+ route: (
946
+ <NavLink to='/2' onClick={event => event.preventDefault()}>
947
+ Navigation 2
948
+ </NavLink>
949
+ ),
950
+ },
951
+ {
952
+ key: '3',
953
+ route: (
954
+ <NavLink to='/3' onClick={event => event.preventDefault()}>
955
+ Navigation 3
956
+ </NavLink>
957
+ ),
958
+ },
959
+ ];
960
+
961
+ export default () => (
962
+ <ApplicationLayout className='bg-lighter'>
963
+ <ApplicationLayout.Header>
964
+ <ApplicationHeader label='RIO Service' navItems={navItems} />
965
+ </ApplicationLayout.Header>
966
+ <ApplicationLayout.Sidebar className='right bg-white'>
967
+ <Sidebar
968
+ title='Sidebar Right'
969
+ titleClassName='padding-left-10'
970
+ closed={false}
971
+ onClose={() => {}}
972
+ position={Sidebar.RIGHT}
973
+ resizable
974
+ minWidth={300}
975
+ maxWidth={600}
976
+ footer={
977
+ <button className='btn btn-primary' type='button' onClick={() => {}}>
978
+ Button
979
+ </button>
980
+ }
981
+ >
982
+ <div className='padding-left-20 padding-right-20'>Sidebar components may be added here...</div>
983
+ </Sidebar>
984
+ </ApplicationLayout.Sidebar>
985
+ <ApplicationLayout.Body className='uikitDemo'>
986
+ <div className='dummy-class' />
987
+ </ApplicationLayout.Body>
988
+ </ApplicationLayout>
989
+ );
990
+ ```
991
+
992
+ #### HTML (html)
993
+
994
+ ```html
995
+ <div class="ApplicationLayout bg-lighter" style="--ApplicationLayoutBodyBottomBarHeight: 54px;">
996
+ <div class="ApplicationLayoutHeader" id="ApplicationLayoutHeader">
997
+ <nav class="ApplicationHeader user-select-none">
998
+ <div class="navbar-header">
999
+ <span class="navbar-brand home-icon">
1000
+ </span>
1001
+ </div>
1002
+ <ul class="ModuleNavigation AppMenu user-select-none pointer-events-none">
1003
+ <li class="dropdown">
1004
+ <a class="ModuleNavigation-dropdown dropdown-toggle justify-content-between inactive" role="button" id="basic-nav-dropdown">
1005
+ <span>RIO Service</span>
1006
+ </a>
1007
+ </li>
1008
+ </ul>
1009
+ <ul class="SubmoduleNavigation nav">
1010
+ <li class="submodule " data-nav-item-key="1">
1011
+ <a aria-current="page" class="active" href="#components/appLayout">Navigation 1</a>
1012
+ </li>
1013
+ <li class="submodule " data-nav-item-key="2">
1014
+ <a href="#2">Navigation 2</a>
1015
+ </li>
1016
+ <li class="submodule " data-nav-item-key="3">
1017
+ <a href="#3">Navigation 3</a>
1018
+ </li>
1019
+ </ul>
1020
+ <ul class="ApplicationActionBar nav navbar-nav navbar-right ">
1021
+ </ul>
1022
+ </nav>
1023
+ </div>
1024
+ <div class="ApplicationLayoutSidebar right bg-white">
1025
+ <div class="Sidebar fluid" style="width: 350px; opacity: 1; display: block; transform: none;">
1026
+ <div class="SidebarResizeLimit" style="right: 600px;">
1027
+ </div>
1028
+ <div class="SidebarContent">
1029
+ <div class="SidebarHeader">
1030
+ <div class="SidebarTitle padding-left-10">Sidebar Right</div>
1031
+ <div class="SidebarButtons non-printable close">
1032
+ <button type="button" data-testid="sidebarCloseButton" class="btn btn-muted btn-icon-only btn-component" tabindex="0">
1033
+ <span class="rioglyph rioglyph-remove">
1034
+ </span>
1035
+ </button>
1036
+ </div>
1037
+ </div>
1038
+ <div class="SidebarBody">
1039
+ <div class="padding-left-20 padding-right-20">Sidebar components may be added here...</div>
1040
+ </div>
1041
+ <div class="SidebarFooter">
1042
+ <button class="btn btn-primary" type="button">Button</button>
1043
+ </div>
1044
+ </div>
1045
+ <div class="Resizer resize-horizontal resize-left">
1046
+ </div>
1047
+ </div>
1048
+ </div>
1049
+ <div class="ApplicationLayoutBody uikitDemo">
1050
+ <div class="module-content-wrapper">
1051
+ <div class="module-content smooth-scrollbar-wrapper" style="position: relative; overflow: hidden; width: 100%; height: 100%;">
1052
+ <div class="scrollbar-view" style="position: absolute; inset: 0px; overflow: scroll; margin-right: 0px; margin-bottom: 0px;">
1053
+ <div class="scrollbar-content-wrapper">
1054
+ <div class="scrollbar-content">
1055
+ <div class="dummy-class">
1056
+ </div>
1057
+ </div>
1058
+ </div>
1059
+ </div>
1060
+ <div class="scrollbar-track-horizontal scrollbar-track-size-large scrollbar-track-offset" style="position: absolute; height: 6px; display: none;">
1061
+ <div class="scrollbar-thumb-horizontal scrollbar-thumb-size-large" style="position: relative; display: block; height: 100%;">
1062
+ </div>
1063
+ </div>
1064
+ <div class="scrollbar-track-vertical scrollbar-track-size-large scrollbar-track-offset" style="position: absolute; width: 6px; display: none;">
1065
+ <div class="scrollbar-thumb-vertical scrollbar-thumb-size-large" style="position: relative; display: block; width: 100%;">
1066
+ </div>
1067
+ </div>
1068
+ </div>
1069
+ </div>
1070
+ <span class="scroll-to-top">
1071
+ <button type="button" class="btn btn-primary btn-icon-only">
1072
+ <span class="rioglyph rioglyph-arrow-up">
1073
+ </span>
1074
+ </button>
1075
+ </span>
1076
+ </div>
1077
+ </div>
1078
+ ```
1079
+
1080
+ #### Props: ApplicationLayout
1081
+
1082
+ ### ApplicationLayout
1083
+
1084
+ | Name | Type | Default | Description |
1085
+ | --- | --- | --- | --- |
1086
+ | layoutRef | React.ref | — | A React ref function assigned to the wrapper element. |
1087
+ | className | String | — | Additional class names that are added to the respective component. |
1088
+
1089
+ #### Props: ApplicationLayoutHeader
1090
+
1091
+ ### ApplicationLayoutHeader
1092
+
1093
+ | Name | Type | Default | Description |
1094
+ | --- | --- | --- | --- |
1095
+ | className | String | — | Additional class names that are added to the respective component. |
1096
+
1097
+ #### Props: ApplicationLayoutSidebar
1098
+
1099
+ ### ApplicationLayoutSidebar
1100
+
1101
+ | Name | Type | Default | Description |
1102
+ | --- | --- | --- | --- |
1103
+ | ref | React.ref | — | A React ref function assigned to the wrapper element. |
1104
+ | className | String | — | Additional class names that are added to the respective component. |
1105
+
1106
+ #### Props: ApplicationLayoutBody
1107
+
1108
+ ### ApplicationLayoutBody
1109
+
1110
+ | Name | Type | Default | Description |
1111
+ | --- | --- | --- | --- |
1112
+ | className | String | — | Additional class names that are added to the respective component. |
1113
+ | innerClassName | String | — | Additional class names that are added to the inner module-content component. |
1114
+ | children | any | — | Any component given to the layout components will be rendered |
1115
+ | navigation | any | — | The ApplicationLayoutBodyNavigation component. |
1116
+ | enableScrollToTop | Boolean | true | Show scroll to top button after scrolling the content. |
1117
+ | forceScrollbar | Boolean | false | Always show vertical scrollbar to prevent the content from jumping. |
1118
+ | bottomBar | Node \| String | — | Optional bottom bar component or a simple string. |
1119
+ | bottomBarHeight | Number | 54 | Height of the bottomBar in pixel. |
1120
+ | banner | any | — | The ApplicationLayoutBodyBanner component. |
1121
+
1122
+ #### Props: ApplicationLayoutBodyNavigation
1123
+
1124
+ ### ApplicationLayoutBodyNavigation
1125
+
1126
+ | Name | Type | Default | Description |
1127
+ | --- | --- | --- | --- |
1128
+ | className | String | — | Additional class names that are added to the respective component. Example: "has-offset" |
1129
+
1130
+ #### Props: ApplicationLayoutBodyBottomBar
1131
+
1132
+ ### ApplicationLayoutBodyBottomBar
1133
+
1134
+ | Name | Type | Default | Description |
1135
+ | --- | --- | --- | --- |
1136
+ | className | String | — | Additional class names that are added to the respective component. |
1137
+ | buttonAlignment | String | — | Tells the buttons if they are left or right aligned. Default behavior is: 1st button left and 2nd button right. ApplicationLayoutBodyBottomBar.LEFT, ApplicationLayoutBodyBottomBar.RIGHT or 'left''right' |
1138
+ | useBodyPaddings | Boolean | false | Use same paddings (left and right) as the ApplicationLayoutBody. |
1139
+
1140
+ #### Props: ApplicationLayoutBodyBanner
1141
+
1142
+ ### ApplicationLayoutBodyBanner
1143
+
1144
+ | Name | Type | Default | Description |
1145
+ | --- | --- | --- | --- |
1146
+ | className | String | — | Additional class names that are added to the respective component. |
1147
+ | backgroundColor | String | bg-primary | One of our bg-color utility classes. |
1148
+ | textColor | string | text-color-white | One of our text-color utility classes. |
1149
+ | isSticky | Boolean | false | Sticky while scrolling. |
1150
+
1151
+ ## Complete example with all components
1152
+
1153
+ ### Example: Example 6
1154
+
1155
+ RIO Service
1156
+
1157
+ Navigation 1
1158
+ Navigation 2
1159
+ Navigation 3
1160
+
1161
+ 4
1162
+
1163
+ 5
1164
+ 2
1165
+ 1
1166
+
1167
+ Asset Group3
1168
+ Vehicle-2115Asset 1005
1169
+ Vehicle-2747Asset 1001
1170
+ Vehicle-5156Asset 1000
1171
+
1172
+ Ungrouped5
1173
+
1174
+ 200
1175
+
1176
+ Sidebar Right
1177
+
1178
+ Sidebar components may be added here...
1179
+
1180
+ Close
1181
+
1182
+ Subnavigation 1
1183
+ Subnavigation 2
1184
+ Subnavigation 3
1185
+
1186
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, diam nonumy eirmod tempor invidunt.
1187
+ Sample Service Content
1188
+ Open Sidebar
1189
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est sagittis semper. Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis, viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus lorem in, fringilla pretium velit.
1190
+
1191
+ In mattis massa a tellus laoreet volutpat. Integer placerat convallis tempor. Quisque id diam nec ex iaculis pulvinar. Nunc urna dui, varius at tempus sit amet, euismod id risus. Cras placerat imperdiet mattis. Etiam vehicula finibus magna. Nullam ornare diam at molestie faucibus. Aenean dictum magna a ipsum scelerisque, a vehicula massa vehicula. Suspendisse blandit tellus vulputate enim ullamcorper tincidunt. Vivamus enim justo, sollicitudin sit amet pulvinar vitae, vehicula sed leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
1192
+
1193
+ Praesent mattis purus et velit maximus hendrerit. Aenean vehicula tempus dapibus. Mauris convallis pharetra purus, non vulputate erat rutrum quis. Sed in tincidunt justo. Ut eu venenatis augue. Aliquam ullamcorper vitae tellus et egestas. Integer eget metus quis odio elementum auctor quis et ipsum. Duis lobortis eros lacinia sapien rutrum egestas. Phasellus ornare, elit non efficitur fringilla, arcu risus molestie enim, sit amet blandit lorem ex in lectus. Vestibulum quis tempor nisi, at pretium erat.
1194
+
1195
+ Bottom Button
1196
+
1197
+ #### Summary
1198
+
1199
+ RIO Service
1200
+
1201
+ Navigation 1
1202
+ Navigation 2
1203
+ Navigation 3
1204
+
1205
+ 4
1206
+
1207
+ 5
1208
+ 2
1209
+ 1
1210
+
1211
+ Asset Group3
1212
+ Vehicle-2115Asset 1005
1213
+ Vehicle-2747Asset 1001
1214
+ Vehicle-5156Asset 1000
1215
+
1216
+ Ungrouped5
1217
+
1218
+ 200
1219
+
1220
+ Sidebar Right
1221
+
1222
+ Sidebar components may be added here...
1223
+
1224
+ Close
1225
+
1226
+ Subnavigation 1
1227
+ Subnavigation 2
1228
+ Subnavigation 3
1229
+
1230
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, diam nonumy eirmod tempor invidunt.
1231
+ Sample Service Content
1232
+ Open Sidebar
1233
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est sagittis semper. Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis, viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus lorem in, fringilla pretium velit.
1234
+
1235
+ In mattis massa a tellus laoreet volutpat. Integer placerat convallis tempor. Quisque id diam nec ex iaculis pulvinar. Nunc urna dui, varius at tempus sit amet, euismod id risus. Cras placerat imperdiet mattis. Etiam vehicula finibus magna. Nullam ornare diam at molestie faucibus. Aenean dictum magna a ipsum scelerisque, a vehicula massa vehicula. Suspendisse blandit tellus vulputate enim ullamcorper tincidunt. Vivamus enim justo, sollicitudin sit amet pulvinar vitae, vehicula sed leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
1236
+
1237
+ Praesent mattis purus et velit maximus hendrerit. Aenean vehicula tempus dapibus. Mauris convallis pharetra purus, non vulputate erat rutrum quis. Sed in tincidunt justo. Ut eu venenatis augue. Aliquam ullamcorper vitae tellus et egestas. Integer eget metus quis odio elementum auctor quis et ipsum. Duis lobortis eros lacinia sapien rutrum egestas. Phasellus ornare, elit non efficitur fringilla, arcu risus molestie enim, sit amet blandit lorem ex in lectus. Vestibulum quis tempor nisi, at pretium erat.
1238
+
1239
+ Bottom Button
1240
+
1241
+ #### React (tsx)
1242
+
1243
+ ```tsx
1244
+ import { useState, useEffect } from 'react';
1245
+ import { Link, NavLink } from 'react-router-dom';
1246
+ import { random } from 'es-toolkit/compat';
1247
+ import faker from 'faker';
1248
+ import IframeResizer from 'iframe-resizer-react';
1249
+
1250
+ import ApplicationLayout from '@rio-cloud/rio-uikit/ApplicationLayout';
1251
+ import ApplicationHeader from '@rio-cloud/rio-uikit/ApplicationHeader';
1252
+ import ActionBarItem from '@rio-cloud/rio-uikit/ActionBarItem';
1253
+ import ApplicationLayoutBodyBanner from '@rio-cloud/rio-uikit/ApplicationLayoutBodyBanner';
1254
+ import ApplicationLayoutBodyBottomBar from '@rio-cloud/rio-uikit/ApplicationLayoutBodyBottomBar';
1255
+ import ApplicationLayoutBodyNavigation from '@rio-cloud/rio-uikit/ApplicationLayoutBodyNavigation';
1256
+ import SubNavigation from '@rio-cloud/rio-uikit/SubNavigation';
1257
+ import useResizeObserver from '@rio-cloud/rio-uikit/useResizeObserver';
1258
+ import { SCREEN_MD } from '@rio-cloud/rio-uikit/DeviceUtils';
1259
+ import Sidebar from '@rio-cloud/rio-uikit/Sidebar';
1260
+ import Button from '@rio-cloud/rio-uikit/Button';
1261
+ import Notification from '@rio-cloud/rio-uikit/Notification';
1262
+ import AssetTree from '@rio-cloud/rio-uikit/AssetTree';
1263
+ import TreeCategory from '@rio-cloud/rio-uikit/TreeCategory';
1264
+ import Tree, { type TreeGroup } from '@rio-cloud/rio-uikit/Tree';
1265
+
1266
+ import { dummyTextLong } from '../../../utils/data';
1267
+
1268
+ const CATEGORY_ASSETS = 'trucks';
1269
+ const CATEGORY_DRIVER = 'driver';
1270
+
1271
+ const navItems = [
1272
+ { key: '1', route: <NavLink to='/components/appLayout'>Navigation 1</NavLink> },
1273
+ {
1274
+ key: '2',
1275
+ route: (
1276
+ <NavLink to='/2' onClick={event => event.preventDefault()}>
1277
+ Navigation 2
1278
+ </NavLink>
1279
+ ),
1280
+ },
1281
+ {
1282
+ key: '3',
1283
+ route: (
1284
+ <NavLink to='/3' onClick={event => event.preventDefault()}>
1285
+ Navigation 3
1286
+ </NavLink>
1287
+ ),
1288
+ },
1289
+ ];
1290
+
1291
+ const ServiceInfo = () => (
1292
+ <ActionBarItem.List>
1293
+ <ActionBarItem.ListItem icon='rioglyph-hand-right' onClick={() => Notification.info('Show Welcome Dialog')}>
1294
+ <div className='display-flex align-items-center gap-5'>
1295
+ <span>Welcome</span>
1296
+ <span className='badge badge-primary'>1</span>
1297
+ </div>
1298
+ </ActionBarItem.ListItem>
1299
+ <ActionBarItem.ListItem
1300
+ icon='rioglyph-exclamation-sign'
1301
+ onClick={() => Notification.info("Show What's New Dialog")}
1302
+ >
1303
+ What's new?
1304
+ </ActionBarItem.ListItem>
1305
+ <ActionBarItem.ListItem icon='rioglyph-question-sign' onClick={() => Notification.info('Show Features Dialog')}>
1306
+ Features
1307
+ </ActionBarItem.ListItem>
1308
+ <ActionBarItem.ListItem icon='rioglyph-envelope' hasLink>
1309
+ <Link to='/components/appHeader'>Feedback</Link>
1310
+ </ActionBarItem.ListItem>
1311
+ </ActionBarItem.List>
1312
+ );
1313
+
1314
+ const ServiceInfoComponent = (
1315
+ <ActionBarItem id='serviceInfo' className='myItem'>
1316
+ <ActionBarItem.Icon>
1317
+ <span className='icon rioglyph rioglyph-info-sign' />
1318
+ </ActionBarItem.Icon>
1319
+ <ActionBarItem.Popover
1320
+ className='myItemPopover'
1321
+ title={
1322
+ <div>
1323
+ <span>Service XYZ</span>
1324
+ <span className='text-color-gray margin-left-10'>v1.1.0</span>
1325
+ </div>
1326
+ }
1327
+ >
1328
+ <ServiceInfo />
1329
+ </ActionBarItem.Popover>
1330
+ </ActionBarItem>
1331
+ );
1332
+
1333
+ const AccountMenuComponent = (
1334
+ <ActionBarItem id='accountMenu' hidePopoverOnClick={false}>
1335
+ <ActionBarItem.Icon>
1336
+ <span className='icon rioglyph rioglyph-user' />
1337
+ </ActionBarItem.Icon>
1338
+ <ActionBarItem.Popover>
1339
+ <ActionBarItem.List>
1340
+ <ActionBarItem.ListItem>
1341
+ <div>
1342
+ <div className='text-medium'>This is just an example</div>
1343
+ <div>The real account menu comes here...</div>
1344
+ </div>
1345
+ </ActionBarItem.ListItem>
1346
+ <ActionBarItem.ListSeparator />
1347
+ <ActionBarItem.ListItem className='padding-0'>
1348
+ <iframe
1349
+ className='buyButton height-30 padding-top-5 padding-bottom-5'
1350
+ title='ContactForm'
1351
+ src='https://contact-form.rio.cloud/contact_link.html?opener=https%3A%2F%2Fhome.rio.cloud%2F&amp;locale=en-GB'
1352
+ />
1353
+ </ActionBarItem.ListItem>
1354
+ <ActionBarItem.ListSeparator />
1355
+ <ActionBarItem.ListItem className='padding-0'>
1356
+ <button
1357
+ type='button'
1358
+ className='btn btn-link btn-link-inline text-color-dark'
1359
+ onClick={() => Notification.info('Logout')}
1360
+ >
1361
+ <span className='rioglyph rioglyph-off margin-right-5 text-size-16 text-color-dark' />
1362
+ <span>Logout</span>
1363
+ </button>
1364
+ </ActionBarItem.ListItem>
1365
+ </ActionBarItem.List>
1366
+ </ActionBarItem.Popover>
1367
+ </ActionBarItem>
1368
+ );
1369
+
1370
+ const Notifications = (
1371
+ <ActionBarItem id='notifications'>
1372
+ <ActionBarItem.Icon>
1373
+ <span className='icon rioglyph rioglyph-notification' />
1374
+ <span className='badge badge-primary badge-indicator badge-indicator-pinging'>4</span>
1375
+ </ActionBarItem.Icon>
1376
+ </ActionBarItem>
1377
+ );
1378
+
1379
+ export default () => {
1380
+ const [showSidebar, setShowSidebar] = useState(true);
1381
+ const [isTreeOpen, setIsTreeOpen] = useState(true);
1382
+ const [currentCategoryId, setCurrentCategoryId] = useState(CATEGORY_ASSETS);
1383
+ const [selectedGroupIds, setSelectedGroupIds] = useState([]);
1384
+ const [selectedItemIds, setSelectedItemIds] = useState([]);
1385
+ const [expandedGroups, setExpandedGroups] = useState([assetGroups[0].id]);
1386
+
1387
+ // Listen for resize changes of the target element defined by the ref
1388
+ // Note: this is for demo purpose only when resizing the demo playground.
1389
+ // The SubNavigation component handles this case internally
1390
+ const { ref, isMobile } = useResizer();
1391
+ const bodyNavigationClasses = ''; // isMobile ? '' : 'has-offset';
1392
+
1393
+ const handleCloseSidebar = () => setShowSidebar(false);
1394
+ const handleOpenSidebar = () => setShowSidebar(true);
1395
+ const handleToggleTree = (toggle: boolean) => setIsTreeOpen(toggle);
1396
+ const handleChangeCategories = (categoryId: string) => setCurrentCategoryId(categoryId);
1397
+ const handleExpandGroup = (newExpandedGroups: string[]) => setExpandedGroups(newExpandedGroups);
1398
+ const handleSelection = ({ items, groups }: any) => {
1399
+ setSelectedItemIds(items);
1400
+ setSelectedGroupIds(groups);
1401
+ };
1402
+
1403
+ return (
1404
+ <ApplicationLayout className='bg-lighter height-500' layoutRef={ref}>
1405
+ <ApplicationLayout.Header>
1406
+ <ApplicationHeader
1407
+ label='RIO Service'
1408
+ appNavigator={
1409
+ <IframeResizer className='iFrameResizer' src='https://menu.rio.cloud' checkOrigin={false} />
1410
+ }
1411
+ navItems={navItems}
1412
+ actionBarItems={[ServiceInfoComponent, Notifications, AccountMenuComponent]}
1413
+ />
1414
+ </ApplicationLayout.Header>
1415
+ <ApplicationLayout.Sidebar>
1416
+ <AssetTree
1417
+ minWidth={300}
1418
+ maxWidth={450}
1419
+ currentCategoryId={currentCategoryId}
1420
+ onCategoryChange={handleChangeCategories}
1421
+ height={500}
1422
+ isOpen={isTreeOpen}
1423
+ onToggleTree={handleToggleTree}
1424
+ useOffscreen
1425
+ >
1426
+ <TreeCategory key={CATEGORY_ASSETS} id={CATEGORY_ASSETS} label='Assets' icon='rioglyph-truck'>
1427
+ <Tree
1428
+ groups={assetGroups}
1429
+ items={assets}
1430
+ searchPlaceholder='Find asset'
1431
+ expandedGroups={expandedGroups}
1432
+ onExpandGroupsChange={handleExpandGroup}
1433
+ selectedGroups={selectedGroupIds}
1434
+ selectedItems={selectedItemIds}
1435
+ onSelectionChange={handleSelection}
1436
+ />
1437
+ </TreeCategory>
1438
+ <TreeCategory key={CATEGORY_DRIVER} id={CATEGORY_DRIVER} label='My Drivers' icon='rioglyph-driver'>
1439
+ <Tree items={randomDrivers} hasMultiselect={false} />
1440
+ </TreeCategory>
1441
+ </AssetTree>
1442
+ </ApplicationLayout.Sidebar>
1443
+ <ApplicationLayout.Sidebar className='right bg-white height-450'>
1444
+ <Sidebar
1445
+ title='Sidebar Right'
1446
+ titleClassName='padding-left-10'
1447
+ closed={!showSidebar}
1448
+ onClose={handleCloseSidebar}
1449
+ position={Sidebar.RIGHT}
1450
+ enableFullscreenToggle
1451
+ resizable
1452
+ minWidth={300}
1453
+ maxWidth={600}
1454
+ switchModeBreakpoint={1400}
1455
+ footer={
1456
+ <button className='btn btn-primary' type='button' onClick={handleCloseSidebar}>
1457
+ Close
1458
+ </button>
1459
+ }
1460
+ >
1461
+ <div className='padding-left-20 padding-right-20'>Sidebar components may be added here...</div>
1462
+ </Sidebar>
1463
+ </ApplicationLayout.Sidebar>
1464
+ <ApplicationLayout.Body
1465
+ className='uikitDemo'
1466
+ banner={
1467
+ <ApplicationLayoutBodyBanner>
1468
+ Lorem ipsum dolor sit amet, consetetur sadipscing elitr, diam nonumy eirmod tempor invidunt.
1469
+ </ApplicationLayoutBodyBanner>
1470
+ }
1471
+ navigation={
1472
+ <ApplicationLayoutBodyNavigation className={bodyNavigationClasses}>
1473
+ <SubNavigation
1474
+ navItems={[
1475
+ {
1476
+ key: '1',
1477
+ route: <NavLink to='/components/appLayout'>Subnavigation 1</NavLink>,
1478
+ },
1479
+ {
1480
+ key: '2',
1481
+ route: (
1482
+ <NavLink to='/2' onClick={event => event.preventDefault()}>
1483
+ Subnavigation 2
1484
+ </NavLink>
1485
+ ),
1486
+ },
1487
+ {
1488
+ key: '3',
1489
+ route: (
1490
+ <NavLink to='/3' onClick={event => event.preventDefault()}>
1491
+ Subnavigation 3
1492
+ </NavLink>
1493
+ ),
1494
+ },
1495
+ ]}
1496
+ />
1497
+ </ApplicationLayoutBodyNavigation>
1498
+ }
1499
+ bottomBar={
1500
+ <ApplicationLayoutBodyBottomBar>
1501
+ <button type='button' className='btn btn-primary'>
1502
+ Bottom Button
1503
+ </button>
1504
+ </ApplicationLayoutBodyBottomBar>
1505
+ }
1506
+ >
1507
+ <div>
1508
+ <div className='panel panel-default shadow-default'>
1509
+ <div className='panel-heading'>Sample Service Content</div>
1510
+ <div className='panel-body overflow-auto'>
1511
+ <Button onClick={handleOpenSidebar}>Open Sidebar</Button>
1512
+ <div className='margin-top-15'>{dummyTextLong}</div>
1513
+ </div>
1514
+ </div>
1515
+ </div>
1516
+ </ApplicationLayout.Body>
1517
+ </ApplicationLayout>
1518
+ );
1519
+ };
1520
+
1521
+ const useResizer = () => {
1522
+ const [isMobile, setIsMobile] = useState(false);
1523
+ const [ref, observerEntry] = useResizeObserver();
1524
+ const contentRect = observerEntry?.contentRect;
1525
+ useEffect(() => {
1526
+ if (!contentRect) {
1527
+ return;
1528
+ }
1529
+ const width = Math.round(contentRect.width);
1530
+ if (width <= SCREEN_MD) {
1531
+ setIsMobile(true);
1532
+ } else {
1533
+ setIsMobile(false);
1534
+ }
1535
+ }, [contentRect]);
1536
+
1537
+ return { ref, isMobile };
1538
+ };
1539
+
1540
+ const assetGroups: TreeGroup[] = [
1541
+ {
1542
+ id: '0250a8aa-721e-40b4-b1ea-7908acddfdf4',
1543
+ name: 'Asset Group',
1544
+ },
1545
+ {
1546
+ id: 'unassigned',
1547
+ name: 'Ungrouped',
1548
+ position: 'last',
1549
+ },
1550
+ ];
1551
+
1552
+ const assets = Array.from({ length: random(5, 20) }, (_, index) => ({
1553
+ id: `010191ac-d06d-4567-b13a-7b7fd85d97${index}`,
1554
+ name: `Vehicle-${random(1000, 9999)}`,
1555
+ info: `Asset 1${String(index).padStart(3, '0')}`,
1556
+ type: faker.random.arrayElement(['truck', 'trailer', 'van', 'bus']),
1557
+ groupIds: [faker.random.arrayElement(assetGroups).id],
1558
+ }));
1559
+
1560
+ const randomDrivers = Array.from({ length: 200 }, (_, index) => ({
1561
+ id: `74e8eb86-18a1-4abe-90cb-aeee7909f85${index}`,
1562
+ name: {
1563
+ firstName: faker.internet.userName(),
1564
+ lastName: faker.name.firstName(),
1565
+ },
1566
+ type: 'driver',
1567
+ }));
1568
+ ```
1569
+
1570
+ #### HTML (html)
1571
+
1572
+ ```html
1573
+ <div class="ApplicationLayout bg-lighter height-500" style="--ApplicationLayoutBodyBottomBarHeight: 54px;">
1574
+ <div class="ApplicationLayoutHeader" id="ApplicationLayoutHeader">
1575
+ <nav class="ApplicationHeader user-select-none">
1576
+ <div class="navbar-header">
1577
+ <span class="navbar-brand home-icon">
1578
+ </span>
1579
+ </div>
1580
+ <ul class="ModuleNavigation AppMenu user-select-none hasModules">
1581
+ <li class="dropdown">
1582
+ <a class="ModuleNavigation-dropdown dropdown-toggle justify-content-between" role="button" id="basic-nav-dropdown">
1583
+ <span>RIO Service</span>
1584
+ <span class="caret">
1585
+ </span>
1586
+ </a>
1587
+ <ul role="menu" class="dropdown-menu ModuleNavigation-dropdown-menu">
1588
+ <li role="presentation">
1589
+ <iframe title="iframe" class="iFrameResizer" src="https://menu.rio.cloud" id="iFrameResizer0" scrolling="no" style="overflow: hidden; height: 139px;">
1590
+ </iframe>
1591
+ </li>
1592
+ </ul>
1593
+ </li>
1594
+ </ul>
1595
+ <ul class="SubmoduleNavigation nav">
1596
+ <li class="submodule " data-nav-item-key="1">
1597
+ <a aria-current="page" class="active" href="#components/appLayout">Navigation 1</a>
1598
+ </li>
1599
+ <li class="submodule " data-nav-item-key="2">
1600
+ <a href="#2">Navigation 2</a>
1601
+ </li>
1602
+ <li class="CollapsedDropdown dropdown ">
1603
+ <a id="basic-nav-dropdown" role="button" class="dropdown-toggle text-color-gray" aria-haspopup="true" aria-expanded="true">
1604
+ <span class="rioglyph rioglyph-option-horizontal" aria-hidden="true">
1605
+ </span>
1606
+ </a>
1607
+ <ul class="dropdown-menu" role="menu" aria-labelledby="basic-nav-dropdown">
1608
+ <li class="submodule" data-nav-item-key="3">
1609
+ <a href="#3">Navigation 3</a>
1610
+ </li>
1611
+ </ul>
1612
+ </li>
1613
+ </ul>
1614
+ <ul class="ApplicationActionBar nav navbar-nav navbar-right ">
1615
+ <li role="presentation" class="navigationItem">
1616
+ <div class="ActionBarItem myItem">
1617
+ <div class="ActionBarItemIcon">
1618
+ <span class="icon rioglyph rioglyph-info-sign">
1619
+ </span>
1620
+ </div>
1621
+ </div>
1622
+ </li>
1623
+ <li role="presentation" class="navigationItem">
1624
+ <div class="ActionBarItem">
1625
+ <div class="ActionBarItemIcon">
1626
+ <span class="icon rioglyph rioglyph-notification">
1627
+ </span>
1628
+ <span class="badge badge-primary badge-indicator badge-indicator-pinging">4</span>
1629
+ </div>
1630
+ </div>
1631
+ </li>
1632
+ <li role="presentation" class="navigationItem">
1633
+ <div class="ActionBarItem">
1634
+ <div class="ActionBarItemIcon">
1635
+ <span class="icon rioglyph rioglyph-user">
1636
+ </span>
1637
+ </div>
1638
+ </div>
1639
+ </li>
1640
+ </ul>
1641
+ </nav>
1642
+ </div>
1643
+ <div class="ApplicationLayoutSidebar">
1644
+ <div class="AssetTree fluid" style="width: 350px; height: 500px;">
1645
+ <div class="AssetTreeResizeLimit" style="left: 450px;">
1646
+ </div>
1647
+ <div class="AssetTreeContent">
1648
+ <div class="TreeSidebar">
1649
+ <ul class="TreeSidebarNavigation">
1650
+ <li class="active">
1651
+ <div class="selection-bubble">
1652
+ <span class="rioglyph rioglyph-truck">
1653
+ </span>
1654
+ </div>
1655
+ </li>
1656
+ <li class="">
1657
+ <div class="selection-bubble">
1658
+ <span class="rioglyph rioglyph-driver">
1659
+ </span>
1660
+ </div>
1661
+ </li>
1662
+ </ul>
1663
+ <div class="TreeSidebarToggle">
1664
+ <span class="rioglyph rioglyph-chevron-left">
1665
+ </span>
1666
+ </div>
1667
+ </div>
1668
+ <div class="AssetTreeBody scrollbar-fly-in smooth-scrollbar-wrapper" style="position: relative; overflow: hidden; width: 100%; height: 100%;">
1669
+ <div class="scrollbar-view" style="position: absolute; inset: 0px; overflow: scroll; margin-right: 0px; margin-bottom: 0px;">
1670
+ <div class="scrollbar-content-wrapper">
1671
+ <div class="TreeOffscreenWrapper">
1672
+ <div class="Tree">
1673
+ <div class="TreeHeader">
1674
+ <div class="TreeSearch">
1675
+ <div class="input-group flex-1-0">
1676
+ <span class="input-group-addon">
1677
+ <span class="rioglyph rioglyph-search" aria-hidden="true">
1678
+ </span>
1679
+ </span>
1680
+ <div class="ClearableInput input-group">
1681
+ <input placeholder="Find asset" class="form-control" type="text" tabindex="0" value="">
1682
+ <span class="clearButton hide">
1683
+ <span class="clearButtonIcon rioglyph rioglyph-remove-sign">
1684
+ </span>
1685
+ </span>
1686
+ </div>
1687
+ </div>
1688
+ </div>
1689
+ <div class="TreeHead display-flex gap-5 padding-15">
1690
+ <div class="border border-right-only hidden-empty padding-right-10 margin-right-2">
1691
+ <div class="TreeSelectAll display-flex align-items-center">
1692
+ <label class="checkbox margin-top--1" tabindex="0">
1693
+ <input type="checkbox" class="margin-top--1">
1694
+ <span class="checkbox-text">
1695
+ </span>
1696
+ </label>
1697
+ </div>
1698
+ </div>
1699
+ <div class="display-flex justify-content-between align-items-start width-100pct">
1700
+ <div class="TreeSummary display-flex flex-wrap align-items-center gap-10 padding-left-3">
1701
+ <div class="TypeCounter display-flex align-items-center user-select-none margin-right-2 cursor-pointer">
1702
+ <span class="rioglyph rioglyph-trailer text-size-16 margin-right-2">
1703
+ </span>
1704
+ <span class="TreeLabelCount label label-condensed label-muted label-filled">5</span>
1705
+ </div>
1706
+ <div class="TypeCounter display-flex align-items-center user-select-none margin-right-2 cursor-pointer">
1707
+ <span class="rioglyph rioglyph-bus text-size-16 margin-right-2">
1708
+ </span>
1709
+ <span class="TreeLabelCount label label-condensed label-muted label-filled">2</span>
1710
+ </div>
1711
+ <div class="TypeCounter display-flex align-items-center user-select-none margin-right-2 cursor-pointer">
1712
+ <span class="rioglyph rioglyph-van text-size-16 margin-right-2">
1713
+ </span>
1714
+ <span class="TreeLabelCount label label-condensed label-muted label-filled">1</span>
1715
+ </div>
1716
+ </div>
1717
+ </div>
1718
+ </div>
1719
+ </div>
1720
+ <div class="TreeRoot user-select-none overflow-hidden" style="position: relative;">
1721
+ <div class="TreeNodeContainer user-select-none overflow-hidden open" data-id="0250a8aa-721e-40b4-b1ea-7908acddfdf4">
1722
+ <div class="TreeNode from-group" data-key="0250a8aa-721e-40b4-b1ea-7908acddfdf4">
1723
+ <label class="checkbox TreeCheckbox" tabindex="0">
1724
+ <input type="checkbox" class="TreeCheckbox">
1725
+ <span class="checkbox-text">
1726
+ </span>
1727
+ </label>
1728
+ <span class="TreeLabel TreeLabelName">
1729
+ <span class="TreeLabelNameText">
1730
+ <span class="TreeLabelNameTextHeadline">Asset Group</span>
1731
+ </span>
1732
+ <span class="TreeLabelCount label label-muted label-filled label-condensed">3</span>
1733
+ <span class="TreeLabelExpander rioglyph rioglyph-chevron-down ">
1734
+ </span>
1735
+ </span>
1736
+ </div>
1737
+ <div class="TreeLeaf form-group margin-bottom-0" data-key="010191ac-d06d-4567-b13a-7b7fd85d975">
1738
+ <label class="checkbox TreeCheckbox" tabindex="0">
1739
+ <input type="checkbox" class="TreeCheckbox">
1740
+ <span class="checkbox-text">
1741
+ </span>
1742
+ </label>
1743
+ <span class="TreeLabel TreeLabelName">
1744
+ <span class="rioglyph rioglyph-trailer">
1745
+ </span>
1746
+ <span class="TreeLabelNameText">
1747
+ <span class="TreeLabelNameTextHeadline">Vehicle-2115</span>
1748
+ <span class="TreeLabelNameTextSubline">Asset 1005</span>
1749
+ </span>
1750
+ </span>
1751
+ </div>
1752
+ <div class="TreeLeaf form-group margin-bottom-0" data-key="010191ac-d06d-4567-b13a-7b7fd85d971">
1753
+ <label class="checkbox TreeCheckbox" tabindex="0">
1754
+ <input type="checkbox" class="TreeCheckbox">
1755
+ <span class="checkbox-text">
1756
+ </span>
1757
+ </label>
1758
+ <span class="TreeLabel TreeLabelName">
1759
+ <span class="rioglyph rioglyph-bus">
1760
+ </span>
1761
+ <span class="TreeLabelNameText">
1762
+ <span class="TreeLabelNameTextHeadline">Vehicle-2747</span>
1763
+ <span class="TreeLabelNameTextSubline">Asset 1001</span>
1764
+ </span>
1765
+ </span>
1766
+ </div>
1767
+ <div class="TreeLeaf form-group margin-bottom-0" data-key="010191ac-d06d-4567-b13a-7b7fd85d970">
1768
+ <label class="checkbox TreeCheckbox" tabindex="0">
1769
+ <input type="checkbox" class="TreeCheckbox">
1770
+ <span class="checkbox-text">
1771
+ </span>
1772
+ </label>
1773
+ <span class="TreeLabel TreeLabelName">
1774
+ <span class="rioglyph rioglyph-trailer">
1775
+ </span>
1776
+ <span class="TreeLabelNameText">
1777
+ <span class="TreeLabelNameTextHeadline">Vehicle-5156</span>
1778
+ <span class="TreeLabelNameTextSubline">Asset 1000</span>
1779
+ </span>
1780
+ </span>
1781
+ </div>
1782
+ </div>
1783
+ <div class="TreeNodeContainer user-select-none overflow-hidden" data-id="unassigned">
1784
+ <div class="TreeNode from-group" data-key="unassigned">
1785
+ <label class="checkbox TreeCheckbox" tabindex="0">
1786
+ <input type="checkbox" class="TreeCheckbox">
1787
+ <span class="checkbox-text">
1788
+ </span>
1789
+ </label>
1790
+ <span class="TreeLabel TreeLabelName">
1791
+ <span class="TreeLabelNameText">
1792
+ <span class="TreeLabelNameTextHeadline">Ungrouped</span>
1793
+ </span>
1794
+ <span class="TreeLabelCount label label-muted label-filled label-condensed">5</span>
1795
+ <span class="TreeLabelExpander rioglyph rioglyph-chevron-down ">
1796
+ </span>
1797
+ </span>
1798
+ </div>
1799
+ </div>
1800
+ </div>
1801
+ </div>
1802
+ </div>
1803
+ <div class="TreeOffscreenWrapper position-offscreen pointer-events-none">
1804
+ <div class="Tree">
1805
+ <div class="TreeHeader">
1806
+ <div class="TreeSearch">
1807
+ <div class="input-group flex-1-0">
1808
+ <span class="input-group-addon">
1809
+ <span class="rioglyph rioglyph-search" aria-hidden="true">
1810
+ </span>
1811
+ </span>
1812
+ <div class="ClearableInput input-group">
1813
+ <input placeholder="Type here to filter by name" class="form-control" type="text" tabindex="0" value="">
1814
+ <span class="clearButton hide">
1815
+ <span class="clearButtonIcon rioglyph rioglyph-remove-sign">
1816
+ </span>
1817
+ </span>
1818
+ </div>
1819
+ </div>
1820
+ </div>
1821
+ <div class="TreeHead display-flex gap-5 padding-15">
1822
+ <div class="border border-right-only hidden-empty padding-right-10 margin-right-2">
1823
+ </div>
1824
+ <div class="display-flex justify-content-between align-items-start width-100pct">
1825
+ <div class="TreeSummary display-flex flex-wrap align-items-center gap-10 padding-left-3">
1826
+ <div class="TypeCounter display-flex align-items-center user-select-none margin-right-2 pointer-events-none">
1827
+ <span class="rioglyph rioglyph-driver text-size-16 margin-right-2">
1828
+ </span>
1829
+ <span class="TreeLabelCount label label-condensed label-muted label-filled">200</span>
1830
+ </div>
1831
+ </div>
1832
+ </div>
1833
+ </div>
1834
+ </div>
1835
+ <div class="TreeRoot user-select-none overflow-hidden" style="position: relative;">
1836
+ <div class="tree-virtual-scrollbar scrollbar-fly-in smooth-scrollbar-wrapper" style="position: relative; overflow: hidden; width: 100%; height: 100%;">
1837
+ <div class="scrollbar-view" style="position: absolute; inset: 0px; overflow: scroll; margin-right: 0px; margin-bottom: 0px;">
1838
+ <div class="scrollbar-content-wrapper">
1839
+ <div class="flat-list" style="height: 8200px; position: relative;">
1840
+ </div>
1841
+ </div>
1842
+ </div>
1843
+ <div class="scrollbar-track-horizontal" style="position: absolute; height: 6px; display: none;">
1844
+ <div class="scrollbar-thumb-horizontal" style="position: relative; display: block; height: 100%;">
1845
+ </div>
1846
+ </div>
1847
+ <div class="scrollbar-track-vertical" style="position: absolute; width: 6px; display: none;">
1848
+ <div class="scrollbar-thumb-vertical" style="position: relative; display: block; width: 100%;">
1849
+ </div>
1850
+ </div>
1851
+ </div>
1852
+ </div>
1853
+ </div>
1854
+ </div>
1855
+ </div>
1856
+ </div>
1857
+ <div class="scrollbar-track-horizontal" style="position: absolute; height: 6px; display: none;">
1858
+ <div class="scrollbar-thumb-horizontal" style="position: relative; display: block; height: 100%;">
1859
+ </div>
1860
+ </div>
1861
+ <div class="scrollbar-track-vertical" style="position: absolute; width: 6px; display: none;">
1862
+ <div class="scrollbar-thumb-vertical" style="position: relative; display: block; width: 100%;">
1863
+ </div>
1864
+ </div>
1865
+ </div>
1866
+ </div>
1867
+ <div class="Resizer resize-horizontal resize-right">
1868
+ </div>
1869
+ </div>
1870
+ </div>
1871
+ <div class="ApplicationLayoutSidebar right bg-white height-450">
1872
+ <div class="Sidebar fly" style="width: 350px; opacity: 1; display: block; transform: none;">
1873
+ <div class="SidebarResizeLimit" style="right: 600px;">
1874
+ </div>
1875
+ <div class="SidebarContent">
1876
+ <div class="SidebarHeader">
1877
+ <div class="SidebarTitle padding-left-10">Sidebar Right</div>
1878
+ <div class="SidebarButtons non-printable close">
1879
+ <button type="button" data-testid="sidebarFullscreenToggle" class="btn btn-muted btn-icon-only btn-component" tabindex="0">
1880
+ <span class="rioglyph rioglyph-resize-full">
1881
+ </span>
1882
+ </button>
1883
+ <div class="SidebarButtons-spacer">
1884
+ </div>
1885
+ <button type="button" data-testid="sidebarCloseButton" class="btn btn-muted btn-icon-only btn-component" tabindex="0">
1886
+ <span class="rioglyph rioglyph-remove">
1887
+ </span>
1888
+ </button>
1889
+ </div>
1890
+ </div>
1891
+ <div class="SidebarBody">
1892
+ <div class="padding-left-20 padding-right-20">Sidebar components may be added here...</div>
1893
+ </div>
1894
+ <div class="SidebarFooter">
1895
+ <button class="btn btn-primary" type="button">Close</button>
1896
+ </div>
1897
+ </div>
1898
+ <div class="Resizer resize-horizontal resize-left">
1899
+ </div>
1900
+ </div>
1901
+ </div>
1902
+ <div class="ApplicationLayoutBody has-footer uikitDemo">
1903
+ <div class="module-content-wrapper">
1904
+ <div class="ApplicationLayoutBodyNavigation">
1905
+ <div class="SubNavigation width-100pct overflow-auto">
1906
+ <ul class="SubmoduleNavigation nav">
1907
+ <li class="submodule" data-nav-item-key="1">
1908
+ <a aria-current="page" class="active" href="#components/appLayout">Subnavigation 1</a>
1909
+ </li>
1910
+ <li class="submodule" data-nav-item-key="2">
1911
+ <a href="#2">Subnavigation 2</a>
1912
+ </li>
1913
+ <li class="submodule" data-nav-item-key="3">
1914
+ <a href="#3">Subnavigation 3</a>
1915
+ </li>
1916
+ </ul>
1917
+ </div>
1918
+ </div>
1919
+ <div class="ApplicationLayoutBodyBanner text-color-white bg-primary position-sticky top-0 z-index-3">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, diam nonumy eirmod tempor invidunt.</div>
1920
+ <div class="module-content smooth-scrollbar-wrapper" style="position: relative; overflow: hidden; width: 100%; height: 100%;">
1921
+ <div class="scrollbar-view" style="position: absolute; inset: 0px; overflow: scroll; margin-right: 0px; margin-bottom: 0px;">
1922
+ <div class="scrollbar-content-wrapper">
1923
+ <div class="scrollbar-content">
1924
+ <div>
1925
+ <div class="panel panel-default shadow-default">
1926
+ <div class="panel-heading">Sample Service Content</div>
1927
+ <div class="panel-body overflow-auto">
1928
+ <button type="button" class="btn btn-default btn-component" tabindex="0">Open Sidebar</button>
1929
+ <div class="margin-top-15">
1930
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam condimentum in felis. Integer eget metus vel nunc efficitur iaculis. Vivamus elementum ante et est sagittis semper. Ut consectetur enim nec tortor scelerisque tincidunt. Fusce ac ligula bibendum, rutrum libero quis, viverra sem. Interdum et malesuada fames ac ante ipsum primis in faucibus. Duis ut hendrerit massa, in molestie elit. Sed vitae orci ac purus volutpat posuere ac ut neque. Mauris ante orci, semper finibus lorem in, fringilla pretium velit.
1931
+
1932
+ In mattis massa a tellus laoreet volutpat. Integer placerat convallis tempor. Quisque id diam nec ex iaculis pulvinar. Nunc urna dui, varius at tempus sit amet, euismod id risus. Cras placerat imperdiet mattis. Etiam vehicula finibus magna. Nullam ornare diam at molestie faucibus. Aenean dictum magna a ipsum scelerisque, a vehicula massa vehicula. Suspendisse blandit tellus vulputate enim ullamcorper tincidunt. Vivamus enim justo, sollicitudin sit amet pulvinar vitae, vehicula sed leo. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
1933
+
1934
+ Praesent mattis purus et velit maximus hendrerit. Aenean vehicula tempus dapibus. Mauris convallis pharetra purus, non vulputate erat rutrum quis. Sed in tincidunt justo. Ut eu venenatis augue. Aliquam ullamcorper vitae tellus et egestas. Integer eget metus quis odio elementum auctor quis et ipsum. Duis lobortis eros lacinia sapien rutrum egestas. Phasellus ornare, elit non efficitur fringilla, arcu risus molestie enim, sit amet blandit lorem ex in lectus. Vestibulum quis tempor nisi, at pretium erat.</div>
1935
+ </div>
1936
+ </div>
1937
+ </div>
1938
+ </div>
1939
+ </div>
1940
+ </div>
1941
+ <div class="scrollbar-track-horizontal scrollbar-track-size-large scrollbar-track-offset" style="position: absolute; height: 6px; display: none;">
1942
+ <div class="scrollbar-thumb-horizontal scrollbar-thumb-size-large" style="position: relative; display: block; height: 100%;">
1943
+ </div>
1944
+ </div>
1945
+ <div class="scrollbar-track-vertical scrollbar-track-size-large scrollbar-track-offset" style="position: absolute; width: 6px; display: none;">
1946
+ <div class="scrollbar-thumb-vertical scrollbar-thumb-size-large" style="position: relative; display: block; width: 100%;">
1947
+ </div>
1948
+ </div>
1949
+ </div>
1950
+ </div>
1951
+ <span class="scroll-to-top">
1952
+ <button type="button" class="btn btn-primary btn-icon-only">
1953
+ <span class="rioglyph rioglyph-arrow-up">
1954
+ </span>
1955
+ </button>
1956
+ </span>
1957
+ </div>
1958
+ <div class="ApplicationLayoutBodyBottomBar justify-content-between">
1959
+ <button type="button" class="btn btn-primary">Bottom Button</button>
1960
+ </div>
1961
+ </div>
1962
+ ```
1963
+
1964
+ #### Props: ApplicationLayout
1965
+
1966
+ ### ApplicationLayout
1967
+
1968
+ | Name | Type | Default | Description |
1969
+ | --- | --- | --- | --- |
1970
+ | layoutRef | React.ref | — | A React ref function assigned to the wrapper element. |
1971
+ | className | String | — | Additional class names that are added to the respective component. |
1972
+
1973
+ #### Props: ApplicationLayoutHeader
1974
+
1975
+ ### ApplicationLayoutHeader
1976
+
1977
+ | Name | Type | Default | Description |
1978
+ | --- | --- | --- | --- |
1979
+ | className | String | — | Additional class names that are added to the respective component. |
1980
+
1981
+ #### Props: ApplicationLayoutSidebar
1982
+
1983
+ ### ApplicationLayoutSidebar
1984
+
1985
+ | Name | Type | Default | Description |
1986
+ | --- | --- | --- | --- |
1987
+ | ref | React.ref | — | A React ref function assigned to the wrapper element. |
1988
+ | className | String | — | Additional class names that are added to the respective component. |
1989
+
1990
+ #### Props: ApplicationLayoutBody
1991
+
1992
+ ### ApplicationLayoutBody
1993
+
1994
+ | Name | Type | Default | Description |
1995
+ | --- | --- | --- | --- |
1996
+ | className | String | — | Additional class names that are added to the respective component. |
1997
+ | innerClassName | String | — | Additional class names that are added to the inner module-content component. |
1998
+ | children | any | — | Any component given to the layout components will be rendered |
1999
+ | navigation | any | — | The ApplicationLayoutBodyNavigation component. |
2000
+ | enableScrollToTop | Boolean | true | Show scroll to top button after scrolling the content. |
2001
+ | forceScrollbar | Boolean | false | Always show vertical scrollbar to prevent the content from jumping. |
2002
+ | bottomBar | Node \| String | — | Optional bottom bar component or a simple string. |
2003
+ | bottomBarHeight | Number | 54 | Height of the bottomBar in pixel. |
2004
+ | banner | any | — | The ApplicationLayoutBodyBanner component. |
2005
+
2006
+ #### Props: ApplicationLayoutBodyNavigation
2007
+
2008
+ ### ApplicationLayoutBodyNavigation
2009
+
2010
+ | Name | Type | Default | Description |
2011
+ | --- | --- | --- | --- |
2012
+ | className | String | — | Additional class names that are added to the respective component. Example: "has-offset" |
2013
+
2014
+ #### Props: ApplicationLayoutBodyBottomBar
2015
+
2016
+ ### ApplicationLayoutBodyBottomBar
2017
+
2018
+ | Name | Type | Default | Description |
2019
+ | --- | --- | --- | --- |
2020
+ | className | String | — | Additional class names that are added to the respective component. |
2021
+ | buttonAlignment | String | — | Tells the buttons if they are left or right aligned. Default behavior is: 1st button left and 2nd button right. ApplicationLayoutBodyBottomBar.LEFT, ApplicationLayoutBodyBottomBar.RIGHT or 'left''right' |
2022
+ | useBodyPaddings | Boolean | false | Use same paddings (left and right) as the ApplicationLayoutBody. |
2023
+
2024
+ #### Props: ApplicationLayoutBodyBanner
2025
+
2026
+ ### ApplicationLayoutBodyBanner
2027
+
2028
+ | Name | Type | Default | Description |
2029
+ | --- | --- | --- | --- |
2030
+ | className | String | — | Additional class names that are added to the respective component. |
2031
+ | backgroundColor | String | bg-primary | One of our bg-color utility classes. |
2032
+ | textColor | string | text-color-white | One of our text-color utility classes. |
2033
+ | isSticky | Boolean | false | Sticky while scrolling. |