@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,721 @@
1
+ # BottomSheet
2
+
3
+ *Category:* Components
4
+ *Section:* Application
5
+ *Source:* https://uikit.developers.rio.cloud/#components/bottomSheet
6
+ *Captured:* 2025-12-12T14:20:10.714Z
7
+
8
+ The TimedBottomSheet is a wrapper component for the BottomSheet that allows to control it's visibility via timers and to use the localStorage to save user interaction for handling it's visibility.
9
+
10
+ ## BottomSheet
11
+
12
+ ### Example: Example 1
13
+
14
+ This demonstrates a small bottom sheet use case on desktop. This can be used for providing additional information, upselling, feedback etc.
15
+ Trigger small BottomSheet
16
+
17
+ #### Summary
18
+
19
+ This demonstrates a small bottom sheet use case on desktop. This can be used for providing additional information, upselling, feedback etc.
20
+ Trigger small BottomSheet
21
+
22
+ #### React (tsx)
23
+
24
+ ```tsx
25
+ import React, { useState } from 'react';
26
+
27
+ import BottomSheet from '@rio-cloud/rio-uikit/BottomSheet';
28
+
29
+ export default () => {
30
+ const [showBottomSheet, setShowBottomSheet] = useState(false);
31
+ return (
32
+ <div>
33
+ <p className='margin-top-0'>
34
+ This demonstrates a small bottom sheet use case on <b>desktop.</b> This can be used for providing
35
+ additional information, upselling, feedback etc.
36
+ </p>
37
+ <button className='btn btn-primary' type='button' onClick={() => setShowBottomSheet(true)}>
38
+ Trigger small BottomSheet
39
+ </button>
40
+
41
+ <BottomSheet
42
+ show={showBottomSheet}
43
+ width={400}
44
+ onClose={() => setShowBottomSheet(false)}
45
+ detach
46
+ bodyClassName='padding-25 margin-right-25'
47
+ >
48
+ {content}
49
+ </BottomSheet>
50
+ </div>
51
+ );
52
+ };
53
+
54
+ const content = (
55
+ <React.Fragment>
56
+ <div>Hi there! Would you be interested in the latest features?</div>
57
+ <div className='btn-toolbar margin-top-15 display-flex justify-content-end'>
58
+ <button type='button' className='btn btn-link btn-sm'>
59
+ No, thanks
60
+ </button>
61
+ <button type='button' className='btn btn-default btn-sm'>
62
+ <span className='rioglyph rioglyph-heart' />
63
+ Yes, show me more
64
+ </button>
65
+ </div>
66
+ </React.Fragment>
67
+ );
68
+ ```
69
+
70
+ #### HTML (html)
71
+
72
+ ```html
73
+ <div>
74
+ <p class="margin-top-0">This demonstrates a small bottom sheet use case on <b>desktop.</b> This can be used for providing additional information, upselling, feedback etc.</p>
75
+ <button class="btn btn-primary" type="button">Trigger small BottomSheet</button>
76
+ </div>
77
+ ```
78
+
79
+ #### Props
80
+
81
+ | Name | Type | Default | Description |
82
+ | --- | --- | --- | --- |
83
+ | show | Boolean | false | Set the visibility of the bottom sheet. The component is already mounted and just moved offscreen. |
84
+ | onClose | Function | () => {}) | Callback for when the sheet closes. |
85
+ | width | Number / String | — | The width of the bottom sheet. This is useful for desktop when not using the entire screen width. When no width is given it will take the width of the content and maximum 100% of the screen. So it this case you might want to apply a "max-width-xxx" via className to control it better. |
86
+ | height | Number / String | — | The height of the bottom sheet. If no height is given, the height is automatically calculated from the content. |
87
+ | title | Node / String | — | The title content shown in the header. If no title is given, the bottom sheet header is not shown. |
88
+ | showCloseButton | Boolean | true | Defines whether or not the close button is shown. |
89
+ | showMaximizeButton | Boolean | false | Defines whether or not the maximize button in the header is shown. |
90
+ | onHeightChange | Function | () => {} | The callback function triggered when the maximize button is clicked and the height changes. |
91
+ | detach | Boolean | false | Set to "true" to detach the bottom sheet from the left side and the bottom and create a little offset. |
92
+ | detachOffset | Number | 15 | Defines the amount of pixels for the sheet. |
93
+ | hasBackdrop | Boolean | false | Set to "true" to render a modal like backdrop to emphasize the bottom sheet. |
94
+ | onBackdropClick | Function | () => {} | Callback function triggered when the backdrop is clicked. Usually used to close the bottom sheet. |
95
+ | bodyRef | React Ref | — | A react ref added to the bottom sheet body. |
96
+ | bodyClassName | String | — | Additional classes to be set on the body element. |
97
+ | className | String | — | Additional classes to be set on the wrapping element. |
98
+
99
+ ### Example: Example 2
100
+
101
+ This demonstrates a bottom sheet use case on mobile. This can be used for providing additional information on mobile instead of using a sidebar, onboarding, alternative for dialogs etc.
102
+ NoteThis example does not make sense on desktop with wider screens. Handle responsive modes and use a dialog or sidebar on desktop instead.
103
+ Trigger mobile BottomSheet
104
+
105
+ #### Summary
106
+
107
+ This demonstrates a bottom sheet use case on mobile. This can be used for providing additional information on mobile instead of using a sidebar, onboarding, alternative for dialogs etc.
108
+ NoteThis example does not make sense on desktop with wider screens. Handle responsive modes and use a dialog or sidebar on desktop instead.
109
+ Trigger mobile BottomSheet
110
+
111
+ #### React (tsx)
112
+
113
+ ```tsx
114
+ import { useState, useRef, useEffect } from 'react';
115
+ import { throttle } from 'es-toolkit/function';
116
+
117
+ import BottomSheet from '@rio-cloud/rio-uikit/BottomSheet';
118
+ import useElementSize from '@rio-cloud/rio-uikit/useElementSize';
119
+
120
+ export default () => {
121
+ const [showBottomSheet, setShowBottomSheet] = useState(false);
122
+ const [listHeight, setListHeight] = useState(300);
123
+
124
+ const sheetBodyRef = useRef<HTMLDivElement>(null);
125
+ const [_, bodyHeight] = useElementSize(sheetBodyRef);
126
+
127
+ // To adjust the height of the list elements according to the current height of the bottom sheet body,
128
+ // we use the element size hook and check for the body height. When it changes, we set the height of the
129
+ // list throttled to skip some renderings in between
130
+ useEffect(() => {
131
+ // Note that we need to subtract the height of the menu from the sheet body height since it fix.
132
+ // In this example we assume roughly a height of 130 pixels for the nav pills menu
133
+ const navPillsHeight = 130;
134
+ const throttledHeightChange = throttle(newHeight => setListHeight(newHeight - navPillsHeight), 1000);
135
+
136
+ if (bodyHeight) {
137
+ throttledHeightChange(bodyHeight);
138
+ }
139
+ }, [bodyHeight]);
140
+
141
+ return (
142
+ <div>
143
+ <p className='margin-top-0'>
144
+ {'This demonstrates a bottom sheet use case on '}
145
+ <b>{'mobile. '}</b>
146
+ {'This can be used for providing additional information on mobile instead of using a sidebar, '}
147
+ onboarding, alternative for dialogs etc.
148
+ </p>
149
+ <p>
150
+ <span className='label label-info label-condensed margin-right-5'>Note</span>
151
+ {'This example does not make sense on desktop with wider screens. '}
152
+ Handle responsive modes and use a dialog or sidebar on desktop instead.
153
+ </p>
154
+ <button className='btn btn-primary' type='button' onClick={() => setShowBottomSheet(true)}>
155
+ Trigger mobile BottomSheet
156
+ </button>
157
+
158
+ <BottomSheet
159
+ show={showBottomSheet}
160
+ onClose={() => setShowBottomSheet(false)}
161
+ title={
162
+ <div>
163
+ <div className='text-medium'>Lorem ipsum dolor sit amet</div>
164
+ <div className='text-size-14 text-color-darker'>consectetur adipiscing elit</div>
165
+ </div>
166
+ }
167
+ height={500}
168
+ showMaximizeButton
169
+ className='max-width-800'
170
+ bodyRef={sheetBodyRef}
171
+ >
172
+ <div>
173
+ <div className='padding-15'>
174
+ <ul className='nav nav-pills nav-pills-filled nav-justified'>
175
+ <li className='active shadow-default'>
176
+ <span>First tab</span>
177
+ </li>
178
+ <li>
179
+ <span>Second tab with longer content</span>
180
+ </li>
181
+ <li>
182
+ <span>Third tab</span>
183
+ </li>
184
+ </ul>
185
+ </div>
186
+ <div
187
+ className='padding-15 padding-top-0 padding-bottom-25 overflow-scroll'
188
+ style={{ height: listHeight }}
189
+ >
190
+ <div>Content for Pill 1 ...</div>
191
+ <ul className='panel-list margin-top-10 margin-bottom-0'>
192
+ {Array.from({ length: 15 }, (_, index) => (
193
+ <li key={index}>
194
+ <div className='text-medium'>{`${index + 1}. Lorem ipsum dolor sit amet`}</div>
195
+ <div>
196
+ {'consectetur adipiscing elit. In pharetra dui eget massa efficitur aliquam '}
197
+ condimentum in felis.
198
+ </div>
199
+ </li>
200
+ ))}
201
+ </ul>
202
+ </div>
203
+ </div>
204
+ </BottomSheet>
205
+ </div>
206
+ );
207
+ };
208
+ ```
209
+
210
+ #### HTML (html)
211
+
212
+ ```html
213
+ <div data-capture-callout="true">
214
+ <p class="margin-top-0">This demonstrates a bottom sheet use case on <b>mobile. </b>This can be used for providing additional information on mobile instead of using a sidebar, onboarding, alternative for dialogs etc.</p>
215
+ <p>
216
+ <span class="label label-info label-condensed margin-right-5">Note</span>This example does not make sense on desktop with wider screens. Handle responsive modes and use a dialog or sidebar on desktop instead.
217
+ </p>
218
+ <button class="btn btn-primary" type="button">Trigger mobile BottomSheet</button>
219
+ </div>
220
+ ```
221
+
222
+ #### Props
223
+
224
+ | Name | Type | Default | Description |
225
+ | --- | --- | --- | --- |
226
+ | show | Boolean | false | Set the visibility of the bottom sheet. The component is already mounted and just moved offscreen. |
227
+ | onClose | Function | () => {}) | Callback for when the sheet closes. |
228
+ | width | Number / String | — | The width of the bottom sheet. This is useful for desktop when not using the entire screen width. When no width is given it will take the width of the content and maximum 100% of the screen. So it this case you might want to apply a "max-width-xxx" via className to control it better. |
229
+ | height | Number / String | — | The height of the bottom sheet. If no height is given, the height is automatically calculated from the content. |
230
+ | title | Node / String | — | The title content shown in the header. If no title is given, the bottom sheet header is not shown. |
231
+ | showCloseButton | Boolean | true | Defines whether or not the close button is shown. |
232
+ | showMaximizeButton | Boolean | false | Defines whether or not the maximize button in the header is shown. |
233
+ | onHeightChange | Function | () => {} | The callback function triggered when the maximize button is clicked and the height changes. |
234
+ | detach | Boolean | false | Set to "true" to detach the bottom sheet from the left side and the bottom and create a little offset. |
235
+ | detachOffset | Number | 15 | Defines the amount of pixels for the sheet. |
236
+ | hasBackdrop | Boolean | false | Set to "true" to render a modal like backdrop to emphasize the bottom sheet. |
237
+ | onBackdropClick | Function | () => {} | Callback function triggered when the backdrop is clicked. Usually used to close the bottom sheet. |
238
+ | bodyRef | React Ref | — | A react ref added to the bottom sheet body. |
239
+ | bodyClassName | String | — | Additional classes to be set on the body element. |
240
+ | className | String | — | Additional classes to be set on the wrapping element. |
241
+
242
+ ### Example: Example 3
243
+
244
+ This demonstrates a bottom sheet use case on mobile. It demonstrates a bottom sheet for smartphones to perform an action.
245
+ Trigger mobile BottomSheet
246
+
247
+ #### Summary
248
+
249
+ This demonstrates a bottom sheet use case on mobile. It demonstrates a bottom sheet for smartphones to perform an action.
250
+ Trigger mobile BottomSheet
251
+
252
+ #### React (tsx)
253
+
254
+ ```tsx
255
+ import { useState } from 'react';
256
+
257
+ import BottomSheet from '@rio-cloud/rio-uikit/BottomSheet';
258
+ import Switch from '@rio-cloud/rio-uikit/Switch';
259
+ import RadioButton from '@rio-cloud/rio-uikit/RadioButton';
260
+ import Button from '@rio-cloud/rio-uikit/Button';
261
+
262
+ export default () => {
263
+ const [showBottomSheet, setShowBottomSheet] = useState(false);
264
+
265
+ return (
266
+ <div>
267
+ <p className='margin-top-0'>
268
+ This demonstrates a bottom sheet use case on <b>mobile.</b> It demonstrates a bottom sheet for
269
+ smartphones to perform an action.
270
+ </p>
271
+ <button className='btn btn-primary' type='button' onClick={() => setShowBottomSheet(true)}>
272
+ Trigger mobile BottomSheet
273
+ </button>
274
+
275
+ <BottomSheet
276
+ show={showBottomSheet}
277
+ onClose={() => setShowBottomSheet(false)}
278
+ title='New Collection'
279
+ hasBackdrop
280
+ onBackdropClick={() => console.log('foobar')}
281
+ className='max-width-400'
282
+ >
283
+ <div className='padding-15'>
284
+ <div className='display-flex justify-content-between align-items-center margin-top-15 margin-bottom-15 padding-15 bg-lightest rounded'>
285
+ <div>
286
+ <div className='text-medium text-size-16 text-color-darker'>Private</div>
287
+ <div className='text-size-12 text-color-dark margin-top-5'>
288
+ Only viewable by people you invite
289
+ </div>
290
+ </div>
291
+ <Switch checked />
292
+ </div>
293
+
294
+ <label className='margin-left-10 margin-top-20 margin-bottom-0'>Contribution Settings</label>
295
+ <div className='display-flex justify-content-between align-items-center margin-top-15 margin-bottom-15 padding-15 bg-lightest rounded'>
296
+ <div>
297
+ <div className='text-medium text-size-16 text-color-darker'>Controlled</div>
298
+ <div className='text-size-12 text-color-dark margin-top-5'>
299
+ Only allow members that are contributors to add content
300
+ </div>
301
+ </div>
302
+ <RadioButton name='radioGroup' id='onlyMember' defaultChecked />
303
+ </div>
304
+ <div className='display-flex justify-content-between align-items-center margin-top-15 margin-bottom-15 padding-15 bg-lightest rounded'>
305
+ <div>
306
+ <div className='text-medium text-size-16 text-color-darker'>Open</div>
307
+ <div className='text-size-12 text-color-dark margin-top-5'>
308
+ Allow all members to add content
309
+ </div>
310
+ </div>
311
+ <RadioButton name='radioGroup' id='open' />
312
+ </div>
313
+
314
+ <Button
315
+ bsStyle='primary'
316
+ bsSize={Button.LG}
317
+ block
318
+ className='margin-top-25'
319
+ onClick={() => setShowBottomSheet(false)}
320
+ >
321
+ Create Collection
322
+ </Button>
323
+ </div>
324
+ </BottomSheet>
325
+ </div>
326
+ );
327
+ };
328
+ ```
329
+
330
+ #### HTML (html)
331
+
332
+ ```html
333
+ <div>
334
+ <p class="margin-top-0">This demonstrates a bottom sheet use case on <b>mobile.</b> It demonstrates a bottom sheet for smartphones to perform an action.</p>
335
+ <button class="btn btn-primary" type="button">Trigger mobile BottomSheet</button>
336
+ </div>
337
+ ```
338
+
339
+ #### Props
340
+
341
+ | Name | Type | Default | Description |
342
+ | --- | --- | --- | --- |
343
+ | show | Boolean | false | Set the visibility of the bottom sheet. The component is already mounted and just moved offscreen. |
344
+ | onClose | Function | () => {}) | Callback for when the sheet closes. |
345
+ | width | Number / String | — | The width of the bottom sheet. This is useful for desktop when not using the entire screen width. When no width is given it will take the width of the content and maximum 100% of the screen. So it this case you might want to apply a "max-width-xxx" via className to control it better. |
346
+ | height | Number / String | — | The height of the bottom sheet. If no height is given, the height is automatically calculated from the content. |
347
+ | title | Node / String | — | The title content shown in the header. If no title is given, the bottom sheet header is not shown. |
348
+ | showCloseButton | Boolean | true | Defines whether or not the close button is shown. |
349
+ | showMaximizeButton | Boolean | false | Defines whether or not the maximize button in the header is shown. |
350
+ | onHeightChange | Function | () => {} | The callback function triggered when the maximize button is clicked and the height changes. |
351
+ | detach | Boolean | false | Set to "true" to detach the bottom sheet from the left side and the bottom and create a little offset. |
352
+ | detachOffset | Number | 15 | Defines the amount of pixels for the sheet. |
353
+ | hasBackdrop | Boolean | false | Set to "true" to render a modal like backdrop to emphasize the bottom sheet. |
354
+ | onBackdropClick | Function | () => {} | Callback function triggered when the backdrop is clicked. Usually used to close the bottom sheet. |
355
+ | bodyRef | React Ref | — | A react ref added to the bottom sheet body. |
356
+ | bodyClassName | String | — | Additional classes to be set on the body element. |
357
+ | className | String | — | Additional classes to be set on the wrapping element. |
358
+
359
+ ### Example: Example 4
360
+
361
+ This demonstrates a bottom sheet use case on mobile. It demonstrates a bottom sheet for an example of how you could do onboarding on smartphones.
362
+ Trigger mobile onboarding BottomSheet
363
+
364
+ #### Summary
365
+
366
+ This demonstrates a bottom sheet use case on mobile. It demonstrates a bottom sheet for an example of how you could do onboarding on smartphones.
367
+ Trigger mobile onboarding BottomSheet
368
+
369
+ #### React (tsx)
370
+
371
+ ```tsx
372
+ import { useState } from 'react';
373
+
374
+ import imageSliderDemoService1 from '../../demoService/assets/imageSliderDemoService1.png';
375
+ import imageSliderDemoService2 from '../../demoService/assets/imageSliderDemoService2.png';
376
+ import imageSliderDemoService3 from '../../demoService/assets/imageSliderDemoService3.png';
377
+ import imageSliderDemoService4 from '../../demoService/assets/imageSliderDemoService4.png';
378
+
379
+ import BottomSheet from '@rio-cloud/rio-uikit/BottomSheet';
380
+ import Carousel from '@rio-cloud/rio-uikit/Carousel';
381
+
382
+ export default () => {
383
+ const [showBottomSheet, setShowBottomSheet] = useState(false);
384
+ return (
385
+ <div>
386
+ <p className='margin-top-0'>
387
+ {'This demonstrates a bottom sheet use case on '}
388
+ <b>{'mobile. '}</b>
389
+ It demonstrates a bottom sheet for an example of how you could do onboarding on smartphones.
390
+ </p>
391
+ <button className='btn btn-primary' type='button' onClick={() => setShowBottomSheet(true)}>
392
+ Trigger mobile onboarding BottomSheet
393
+ </button>
394
+
395
+ <BottomSheet
396
+ show={showBottomSheet}
397
+ onClose={() => setShowBottomSheet(false)}
398
+ hasBackdrop
399
+ className='max-width-400'
400
+ >
401
+ <div className='padding-25 padding-bottom-10 margin-top-20'>
402
+ <Carousel className='arrow-color-dark show-indicators offset-indicators shadow-default'>
403
+ <Carousel.Item>
404
+ <div className='panel panel-default margin-bottom-0 overflow-hidden'>
405
+ <img className='img-responsive' src={imageSliderDemoService1} />
406
+ </div>
407
+ </Carousel.Item>
408
+
409
+ <Carousel.Item>
410
+ <div className='panel panel-default margin-bottom-0 overflow-hidden'>
411
+ <img className='img-responsive' src={imageSliderDemoService2} />
412
+ </div>
413
+ </Carousel.Item>
414
+
415
+ <Carousel.Item>
416
+ <div className='panel panel-default margin-bottom-0 overflow-hidden'>
417
+ <img className='img-responsive' src={imageSliderDemoService3} />
418
+ </div>
419
+ </Carousel.Item>
420
+
421
+ <Carousel.Item>
422
+ <div className='panel panel-default margin-bottom-0 overflow-hidden'>
423
+ <img className='img-responsive' src={imageSliderDemoService4} />
424
+ </div>
425
+ </Carousel.Item>
426
+ </Carousel>
427
+ </div>
428
+ </BottomSheet>
429
+ </div>
430
+ );
431
+ };
432
+ ```
433
+
434
+ #### HTML (html)
435
+
436
+ ```html
437
+ <div>
438
+ <p class="margin-top-0">This demonstrates a bottom sheet use case on <b>mobile. </b>It demonstrates a bottom sheet for an example of how you could do onboarding on smartphones.</p>
439
+ <button class="btn btn-primary" type="button">Trigger mobile onboarding BottomSheet</button>
440
+ </div>
441
+ ```
442
+
443
+ #### Props
444
+
445
+ | Name | Type | Default | Description |
446
+ | --- | --- | --- | --- |
447
+ | show | Boolean | false | Set the visibility of the bottom sheet. The component is already mounted and just moved offscreen. |
448
+ | onClose | Function | () => {}) | Callback for when the sheet closes. |
449
+ | width | Number / String | — | The width of the bottom sheet. This is useful for desktop when not using the entire screen width. When no width is given it will take the width of the content and maximum 100% of the screen. So it this case you might want to apply a "max-width-xxx" via className to control it better. |
450
+ | height | Number / String | — | The height of the bottom sheet. If no height is given, the height is automatically calculated from the content. |
451
+ | title | Node / String | — | The title content shown in the header. If no title is given, the bottom sheet header is not shown. |
452
+ | showCloseButton | Boolean | true | Defines whether or not the close button is shown. |
453
+ | showMaximizeButton | Boolean | false | Defines whether or not the maximize button in the header is shown. |
454
+ | onHeightChange | Function | () => {} | The callback function triggered when the maximize button is clicked and the height changes. |
455
+ | detach | Boolean | false | Set to "true" to detach the bottom sheet from the left side and the bottom and create a little offset. |
456
+ | detachOffset | Number | 15 | Defines the amount of pixels for the sheet. |
457
+ | hasBackdrop | Boolean | false | Set to "true" to render a modal like backdrop to emphasize the bottom sheet. |
458
+ | onBackdropClick | Function | () => {} | Callback function triggered when the backdrop is clicked. Usually used to close the bottom sheet. |
459
+ | bodyRef | React Ref | — | A react ref added to the bottom sheet body. |
460
+ | bodyClassName | String | — | Additional classes to be set on the body element. |
461
+ | className | String | — | Additional classes to be set on the wrapping element. |
462
+
463
+ ## TimedBottomSheet
464
+
465
+ ### Example: Example 5
466
+
467
+ Showcase of a timed bottom sheet used for requesting feedback from the user after a major feature was released or updated.
468
+ Trigger timed bottom sheet
469
+
470
+ #### Summary
471
+
472
+ Showcase of a timed bottom sheet used for requesting feedback from the user after a major feature was released or updated.
473
+ Trigger timed bottom sheet
474
+
475
+ #### React (tsx)
476
+
477
+ ```tsx
478
+ import { useState } from 'react';
479
+
480
+ import Button from '@rio-cloud/rio-uikit/Button';
481
+ import ToggleButton from '@rio-cloud/rio-uikit/ToggleButton';
482
+ import SimpleTooltip from '@rio-cloud/rio-uikit/SimpleTooltip';
483
+ import TimedBottomSheet from '@rio-cloud/rio-uikit/TimedBottomSheet';
484
+ import { motion } from '@rio-cloud/rio-uikit/motion';
485
+ import useLocalStorage from '@rio-cloud/rio-uikit/useLocalStorage';
486
+
487
+ /*
488
+ * Don't forget to cleanup the localStorage for the user when removing a feature
489
+ * by setting "cleanupLocalStorage" to "true" and deploy it like this.
490
+ * The cleanup will remove the localStorage flag on mount and will not show the bottom sheet.
491
+ */
492
+
493
+ const IS_DISABLED = false;
494
+
495
+ const SHOW_AFTER_IN_MS = 2_000; // 2 seconds
496
+ const HIDE_AFTER_IN_MS = 120_000; // 2 minutes
497
+ const HIDE_AFTER_SUBMIT_IN_MS = 2_000;
498
+
499
+ export const FeedbackBottomSheet = ({ onClose }: { onClose: VoidFunction }) => {
500
+ const [isDismissed, setIsDismissed] = useState(false);
501
+ const [isSubmitted, setIsSubmitted] = useState(false);
502
+ const [isPostponed, setIsPostponed] = useState(false);
503
+
504
+ const [rating, setRating] = useState<number>();
505
+
506
+ // Don't close itself if the user types in into the textfield or
507
+ // interacts with the bottom sheet
508
+ const [isDirty, setIsDirty] = useState(false);
509
+
510
+ const handleCloseBottomSheet = () => {
511
+ setIsDismissed(true);
512
+ onClose();
513
+ };
514
+
515
+ const handlePostpone = () => {
516
+ setIsPostponed(true);
517
+ onClose();
518
+ };
519
+
520
+ const handleRating = (value: number | undefined) => {
521
+ setIsDirty(true);
522
+ setRating(value);
523
+ };
524
+
525
+ const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {
526
+ // Avoid page reload on submit
527
+ event.preventDefault();
528
+
529
+ // Get form data of all inputs
530
+ const data = new FormData(event.target as HTMLFormElement);
531
+ console.log(Object.fromEntries(data.entries()));
532
+
533
+ sendFeedback(data.get('mapFeedbackText')?.toString() || '', rating);
534
+
535
+ // show thank you message and close bottom sheet after 5 sec
536
+ setIsSubmitted(true);
537
+
538
+ // After showing the thank you message, set the bottom sheet to dismissed, so it won't be
539
+ // shown again on next page load
540
+ setTimeout(() => {
541
+ setIsDismissed(true);
542
+ onClose();
543
+ }, HIDE_AFTER_SUBMIT_IN_MS);
544
+ };
545
+
546
+ const sendFeedback = (messageToSend: string, featureRating: number | undefined) => {
547
+ console.log(`Sending email with message \n${messageToSend}`);
548
+ };
549
+
550
+ let hideTimeout: number | undefined = isSubmitted ? HIDE_AFTER_SUBMIT_IN_MS : HIDE_AFTER_IN_MS;
551
+ if (isDirty) {
552
+ hideTimeout = undefined;
553
+ }
554
+
555
+ if (isPostponed) {
556
+ return null;
557
+ }
558
+
559
+ return (
560
+ <TimedBottomSheet
561
+ featureName='mapUpdateFeedbackBottomSheet'
562
+ localStoragePrefix='uikit.'
563
+ dismissed={isDismissed}
564
+ showAfter={SHOW_AFTER_IN_MS}
565
+ hideAfter={hideTimeout}
566
+ onClose={handleCloseBottomSheet}
567
+ bodyClassName='padding-25'
568
+ className='width-400'
569
+ cleanupLocalStorage={IS_DISABLED}
570
+ >
571
+ {!isSubmitted && !isPostponed && (
572
+ <form onSubmit={handleSubmit}>
573
+ <div className='text-size-18 text-medium'>Map update feedback</div>
574
+ <p className='margin-top-5 margin-bottom-25 text-color-darker'>
575
+ Please take a moment to tell us what you think of the new map update. Haven't noticed a change?{' '}
576
+ <a href='#'>Read here what's new...</a>
577
+ </p>
578
+ <div className='text-color-darker text-medium'>Rate your experience with the map</div>
579
+ <div className='btn-toolbar text-size-14 align-items-center margin-top-5 margin-bottom-25'>
580
+ <div className='text-size-200pct text-color-danger rioglyph rioglyph-thumbs-down' />
581
+ <ToggleButton
582
+ active={rating === 1}
583
+ onClick={(toggled: boolean) => handleRating(toggled ? 1 : undefined)}
584
+ >
585
+ 1
586
+ </ToggleButton>
587
+ <ToggleButton
588
+ active={rating === 2}
589
+ onClick={(toggled: boolean) => handleRating(toggled ? 2 : undefined)}
590
+ >
591
+ 2
592
+ </ToggleButton>
593
+ <ToggleButton
594
+ active={rating === 3}
595
+ onClick={(toggled: boolean) => handleRating(toggled ? 3 : undefined)}
596
+ >
597
+ 3
598
+ </ToggleButton>
599
+ <ToggleButton
600
+ active={rating === 4}
601
+ onClick={(toggled: boolean) => handleRating(toggled ? 4 : undefined)}
602
+ >
603
+ 4
604
+ </ToggleButton>
605
+ <ToggleButton
606
+ active={rating === 5}
607
+ onClick={(toggled: boolean) => handleRating(toggled ? 5 : undefined)}
608
+ >
609
+ 5
610
+ </ToggleButton>
611
+ <div className='text-size-200pct text-color-success rioglyph rioglyph-thumbs-up' />
612
+ </div>
613
+ <div className='margin-bottom-15'>
614
+ <div className='text-color-darker text-medium margin-bottom-5 margin-right-20'>
615
+ Anything that can be improved or something you want to tell us
616
+ </div>
617
+ <textarea
618
+ name='mapFeedbackText'
619
+ className='form-control'
620
+ cols={3}
621
+ placeholder='Your feedback (optional)'
622
+ onClick={() => setIsDirty(true)}
623
+ />
624
+ </div>
625
+ <div className='btn-toolbar display-flex justify-content-end align-items-center margin-top-15'>
626
+ <Button
627
+ bsStyle='muted'
628
+ className='hover-bg-lightest text-color-dark hover-text-color-darker'
629
+ onClick={handlePostpone}
630
+ >
631
+ Ask me later
632
+ </Button>
633
+ {rating === undefined ? (
634
+ <SimpleTooltip content='Please give a rating' placement='top'>
635
+ <div>
636
+ <Button bsStyle='primary' type='submit' disabled>
637
+ Send feedback
638
+ </Button>
639
+ </div>
640
+ </SimpleTooltip>
641
+ ) : (
642
+ <Button bsStyle='primary' type='submit'>
643
+ Send feedback
644
+ </Button>
645
+ )}
646
+ </div>
647
+ </form>
648
+ )}
649
+ {isSubmitted && (
650
+ <motion.div
651
+ initial={{ opacity: 0, x: 20 }}
652
+ animate={{ opacity: 1, x: 0 }}
653
+ className='display-flex gap-10 align-items-center'
654
+ >
655
+ <div className='text-color-success text-size-20'>
656
+ <span className='rioglyph rioglyph-ok-sign' />
657
+ </div>
658
+ <div className='text-medium text-color-darker text-size-16'>Thank you for your feedback</div>
659
+ </motion.div>
660
+ )}
661
+ </TimedBottomSheet>
662
+ );
663
+ };
664
+
665
+ export default () => {
666
+ const [showFeedback, setShowFeedback] = useState(false);
667
+
668
+ // For demo purpose, we have to cleanup the local storage to show the bottom sheet again
669
+ const [, , removeFlag] = useLocalStorage('uikit.hideMapUpdateFeedbackBottomSheet', false);
670
+
671
+ const handleShowFeedback = () => {
672
+ removeFlag();
673
+
674
+ setTimeout(() => {
675
+ setShowFeedback(true);
676
+ });
677
+ };
678
+
679
+ const handleCloseFeedback = () => {
680
+ removeFlag();
681
+ setShowFeedback(false);
682
+ };
683
+
684
+ return (
685
+ <>
686
+ <p>
687
+ Showcase of a timed bottom sheet used for requesting feedback from the user after a major feature was
688
+ released or updated.
689
+ </p>
690
+ <Button bsStyle='primary' onClick={handleShowFeedback}>
691
+ Trigger timed bottom sheet
692
+ </Button>
693
+ {showFeedback && <FeedbackBottomSheet onClose={handleCloseFeedback} />}
694
+ </>
695
+ );
696
+ };
697
+ ```
698
+
699
+ #### HTML (html)
700
+
701
+ ```html
702
+ <p>Showcase of a timed bottom sheet used for requesting feedback from the user after a major feature was released or updated.</p>
703
+ <button type="button" class="btn btn-primary btn-component" tabindex="0">Trigger timed bottom sheet</button>
704
+ ```
705
+
706
+ #### Props
707
+
708
+ | Name | Type | Default | Description |
709
+ | --- | --- | --- | --- |
710
+ | dismissed | Boolean | false | The "dismissed" flag can be used to tell this component that the user has clicked on the content of the component like a button or a link. In this case, the bottom sheet will store a flag in the localStorage to hide the bottom sheet for the next time and it will close the sheet right away. |
711
+ | featureName | String | 0 | The "featureName" prop is used to name the localStorage flag that is used to control the visibility. It should be unique to avoid conflicts with other timed bottom sheets. |
712
+ | localStoragePrefix | String | — | A prefix that will be used for the local storage flag to store whether the bottom sheet should be hidden. Use this prefix for your service name for instance. |
713
+ | showAfter | Number | 0 | Defines the time in milliseconds when the bottom sheet shall be shown. Default value is 0 to show it right away. |
714
+ | hideAfter | Number | 3_600_000 | Defines the time in milliseconds when the bottom sheet hides itself automatically. Default value is 3_600_000 to hide it after 1 hour. In this case, the localStorage flag is not set and the bottom sheet will be shown on the next page load. |
715
+ | alwaysOn | Boolean | false | With this enabled, the BottomSheet will not hide automatically. |
716
+ | showCloseButton | Boolean | true | Enables or disabled the close button. |
717
+ | width | Number | — | Optional width of the bottom sheet. Alternatively, you can set a `max-width-xxx` via className instead. |
718
+ | cleanupLocalStorage | Boolean | false | Flag to allow to remove the localStorage flag again once the component is not needed anymore. |
719
+ | onClose | () => void | — | Callback function that gets triggered when the user closed the bottom sheet with the close button. |
720
+ | bodyClassName | String | — | Optional className to be set on the body. |
721
+ | className | String | — | Optional className to be set on the component. Use this to define a max-width value. |