@rio-cloud/uikit-mcp 1.0.0 → 1.1.0

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 -40
  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 +2016 -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 +3223 -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 +2785 -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 +525 -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 +932 -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 +17550 -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 +483 -0
  112. package/dist/docs/foundations.md +20901 -0
  113. package/dist/docs/start/changelog.md +439 -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
@@ -1,139 +0,0 @@
1
- {
2
- "metadata": {
3
- "captured_at": "2025-11-21T12:08:48.955Z",
4
- "source": "https://uikit.developers.rio.cloud/#utilities/useSorting",
5
- "category": "Utilities",
6
- "section": "Table & data hooks",
7
- "slug": "utilities/usesorting",
8
- "version": "v1.13.2",
9
- "hash_algorithm": "sha256",
10
- "hash": "ea7009a45e751b3f14290f1360cb5ec0da7536efff17f26f6fc0b40bd56e912b"
11
- },
12
- "title": "useSorting",
13
- "lead": "The useSorting hook provides an easy way to sort any list by a specified key using natural sort order. It offers flexible control over sorting direction and key selection, making it ideal for dynamic sorting use cases.",
14
- "content": [
15
- {
16
- "heading": "useSorting",
17
- "body": "",
18
- "examples": [
19
- {
20
- "caption": "Example 1",
21
- "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div class=\"table-responsive\"><table class=\"table table-head-filled\"><thead><tr><th class=\"user-select-none sort-column\"><span><span class=\"sort-arrows sort-asc\"></span><span>Name</span></span></th><th class=\"user-select-none sort-column\"><span><span class=\"sort-arrows \"></span><span>Quantity</span></span></th></tr></thead><tbody><tr><td>Box</td><td>20</td></tr><tr><td>Container</td><td>1</td></tr><tr><td>Crate</td><td>15</td></tr><tr><td>Drum</td><td>12</td></tr><tr><td>Pallet</td><td>10</td></tr><tr><td>Parcel</td><td>8</td></tr></tbody></table></div></div>",
22
- "tabs": [
23
- {
24
- "label": "React",
25
- "language": "tsx",
26
- "code": "import SortArrows from '@rio-cloud/rio-uikit/SortArrows';\nimport useSorting from '@rio-cloud/rio-uikit/useSorting';\n\ntype Item = {\n name: string;\n quantity: number;\n};\n\nconst items: Item[] = [\n { name: 'Pallet', quantity: 10 },\n { name: 'Container', quantity: 1 },\n { name: 'Crate', quantity: 15 },\n { name: 'Parcel', quantity: 8 },\n { name: 'Drum', quantity: 12 },\n { name: 'Box', quantity: 20 },\n];\n\nexport default () => {\n const { sortedItems, sortKey, sortDirection, setSortKey, toggleDirection } = useSorting(items, 'name');\n\n const handleSortByColumn = (column: keyof Item) => {\n setSortKey(column);\n if (column === sortKey) {\n toggleDirection();\n }\n };\n\n return (\n <div className='table-responsive'>\n <table className='table table-head-filled'>\n <thead>\n <tr>\n <th className='user-select-none sort-column' onClick={() => handleSortByColumn('name')}>\n <span>\n {sortKey === 'name' ? <SortArrows direction={sortDirection} /> : <SortArrows />}\n <span>Name</span>\n </span>\n </th>\n <th className='user-select-none sort-column' onClick={() => handleSortByColumn('quantity')}>\n <span>\n {sortKey === 'quantity' ? <SortArrows direction={sortDirection} /> : <SortArrows />}\n <span>Quantity</span>\n </span>\n </th>\n </tr>\n </thead>\n <tbody>\n {sortedItems.map(({ name, quantity }) => (\n <tr key={name}>\n <td key={name}>{name}</td>\n <td key={quantity}>{quantity}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n};"
27
- },
28
- {
29
- "label": "HTML",
30
- "language": "html",
31
- "code": "<div class=\"table-responsive\">\n <table class=\"table table-head-filled\">\n <thead>\n <tr>\n <th class=\"user-select-none sort-column\">\n <span>\n <span class=\"sort-arrows sort-asc\">\n </span>\n <span>Name</span>\n </span>\n </th>\n <th class=\"user-select-none sort-column\">\n <span>\n <span class=\"sort-arrows \">\n </span>\n <span>Quantity</span>\n </span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Box</td>\n <td>20</td>\n </tr>\n <tr>\n <td>Container</td>\n <td>1</td>\n </tr>\n <tr>\n <td>Crate</td>\n <td>15</td>\n </tr>\n <tr>\n <td>Drum</td>\n <td>12</td>\n </tr>\n <tr>\n <td>Pallet</td>\n <td>10</td>\n </tr>\n <tr>\n <td>Parcel</td>\n <td>8</td>\n </tr>\n </tbody>\n </table>\n</div>"
32
- },
33
- {
34
- "label": "Props",
35
- "language": "json",
36
- "code": null,
37
- "props": [
38
- {
39
- "heading": null,
40
- "rows": [
41
- {
42
- "name": "items",
43
- "type": "T[]",
44
- "default": "",
45
- "description": "The array of items to be sorted."
46
- },
47
- {
48
- "name": "initialKey",
49
- "type": "SortKey<T> = keyof T | [keyof T, keyof T]",
50
- "default": "",
51
- "description": "The initial key or keys to sort by. Must be a property of the items in the array. It can be either a single string or a tuple like ['name', 'date']"
52
- },
53
- {
54
- "name": "initialDirection",
55
- "type": "SortDirectionType",
56
- "default": "SortDirection.ASCENDING",
57
- "description": "The initial sort direction. Can be SortDirection.ASCENDING or SortDirection.DESCENDING."
58
- },
59
- {
60
- "name": "enableNaturalSort",
61
- "type": "boolean",
62
- "default": "true",
63
- "description": "Whether to use natural sort order. Defaults to false."
64
- },
65
- {
66
- "name": "{ sortedItems, sortKey, sortDirection, setSortKey, setSortDirection, toggleDirection }",
67
- "type": "Object",
68
- "default": "",
69
- "description": "Returns an object containing: \"sortedItems\" - the sorted array \"sortKey\" - the key(s) to sort the data for \"sortDirection\" - the current direction that the data is sorted \"setSortKey\" - function to change the sorting key(s) afterwards \"setSortDirection\" - function to change the sorting order afterwards \"toggleDirection\" - function to toggle sort direction"
70
- }
71
- ]
72
- }
73
- ]
74
- }
75
- ]
76
- },
77
- {
78
- "caption": "Example 2",
79
- "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><p>Sort by a primary column. Hold <kbd class=\"text-normal\">shift</kbd> key to sort by a secondary column</p><div class=\"table-responsive\"><table class=\"table table-head-filled\"><thead><tr><th class=\"user-select-none sort-column\"><span><span class=\"sort-arrows sort-asc\"></span><span>Category</span></span></th><th class=\"user-select-none sort-column\"><span><span class=\"sort-arrows \"></span><span>Name</span></span></th><th class=\"user-select-none sort-column\"><span><span class=\"sort-arrows \"></span><span>Quantity</span></span></th></tr></thead><tbody><tr><td>Shipping</td><td>Parcel</td><td>8</td></tr><tr><td>Shipping</td><td>Box</td><td>20</td></tr><tr><td>Shipping</td><td>Envelope</td><td>50</td></tr><tr><td>Shipping</td><td>Bag</td><td>30</td></tr><tr><td>Storage</td><td>Pallet</td><td>10</td></tr><tr><td>Storage</td><td>Container</td><td>1</td></tr><tr><td>Storage</td><td>Crate</td><td>15</td></tr><tr><td>Storage</td><td>Drum</td><td>12</td></tr></tbody></table></div></div>",
80
- "tabs": [
81
- {
82
- "label": "React",
83
- "language": "tsx",
84
- "code": "import SortArrows from '@rio-cloud/rio-uikit/SortArrows';\nimport useSorting from '@rio-cloud/rio-uikit/useSorting';\n\ntype Item = {\n name: string;\n category: string;\n quantity: number;\n};\n\nconst items: Item[] = [\n { name: 'Pallet', category: 'Storage', quantity: 10 },\n { name: 'Container', category: 'Storage', quantity: 1 },\n { name: 'Crate', category: 'Storage', quantity: 15 },\n { name: 'Parcel', category: 'Shipping', quantity: 8 },\n { name: 'Drum', category: 'Storage', quantity: 12 },\n { name: 'Box', category: 'Shipping', quantity: 20 },\n { name: 'Envelope', category: 'Shipping', quantity: 50 },\n { name: 'Bag', category: 'Shipping', quantity: 30 },\n];\n\nexport default () => {\n const { sortedItems, sortKey, sortDirection, setSortKey, toggleDirection } = useSorting(items, 'category');\n\n const handleSortByColumn = (column: keyof Item, event: React.MouseEvent) => {\n if (event.shiftKey) {\n // Secondary sort\n if (Array.isArray(sortKey) && sortKey[1] === column) {\n // If already secondary, toggle direction\n toggleDirection();\n } else if (Array.isArray(sortKey)) {\n // If already using secondary sort, update secondary key\n setSortKey([sortKey[0], column]);\n } else {\n // If not using secondary sort, add secondary key\n setSortKey([sortKey, column]);\n }\n } else {\n // Primary sort\n if (sortKey === column || (Array.isArray(sortKey) && sortKey[0] === column)) {\n // If already primary, toggle direction\n toggleDirection();\n } else {\n // Set new primary key\n setSortKey(column);\n }\n }\n };\n\n const renderSortArrows = (column: keyof Item) => {\n if (sortKey === column || (Array.isArray(sortKey) && sortKey[0] === column)) {\n return <SortArrows direction={sortDirection} />;\n }\n if (Array.isArray(sortKey) && sortKey[1] === column) {\n return <SortArrows direction={sortDirection} />;\n }\n return <SortArrows />;\n };\n\n return (\n <>\n <p>\n Sort by a primary column. Hold <kbd className='text-normal'>shift</kbd> key to sort by a secondary\n column\n </p>\n <div className='table-responsive'>\n <table className='table table-head-filled'>\n <thead>\n <tr>\n <th\n className='user-select-none sort-column'\n onClick={event => handleSortByColumn('category', event)}\n >\n <span>\n {renderSortArrows('category')}\n <span>Category</span>\n </span>\n </th>\n <th\n className='user-select-none sort-column'\n onClick={event => handleSortByColumn('name', event)}\n >\n <span>\n {renderSortArrows('name')}\n <span>Name</span>\n </span>\n </th>\n <th\n className='user-select-none sort-column'\n onClick={event => handleSortByColumn('quantity', event)}\n >\n <span>\n {renderSortArrows('quantity')}\n <span>Quantity</span>\n </span>\n </th>\n </tr>\n </thead>\n <tbody>\n {sortedItems.map(item => (\n <tr key={item.name}>\n <td>{item.category}</td>\n <td>{item.name}</td>\n <td>{item.quantity}</td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </>\n );\n};"
85
- },
86
- {
87
- "label": "HTML",
88
- "language": "html",
89
- "code": "<p>Sort by a primary column. Hold <kbd class=\"text-normal\">shift</kbd> key to sort by a secondary column</p>\n<div class=\"table-responsive\">\n <table class=\"table table-head-filled\">\n <thead>\n <tr>\n <th class=\"user-select-none sort-column\">\n <span>\n <span class=\"sort-arrows sort-asc\">\n </span>\n <span>Category</span>\n </span>\n </th>\n <th class=\"user-select-none sort-column\">\n <span>\n <span class=\"sort-arrows \">\n </span>\n <span>Name</span>\n </span>\n </th>\n <th class=\"user-select-none sort-column\">\n <span>\n <span class=\"sort-arrows \">\n </span>\n <span>Quantity</span>\n </span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>Shipping</td>\n <td>Parcel</td>\n <td>8</td>\n </tr>\n <tr>\n <td>Shipping</td>\n <td>Box</td>\n <td>20</td>\n </tr>\n <tr>\n <td>Shipping</td>\n <td>Envelope</td>\n <td>50</td>\n </tr>\n <tr>\n <td>Shipping</td>\n <td>Bag</td>\n <td>30</td>\n </tr>\n <tr>\n <td>Storage</td>\n <td>Pallet</td>\n <td>10</td>\n </tr>\n <tr>\n <td>Storage</td>\n <td>Container</td>\n <td>1</td>\n </tr>\n <tr>\n <td>Storage</td>\n <td>Crate</td>\n <td>15</td>\n </tr>\n <tr>\n <td>Storage</td>\n <td>Drum</td>\n <td>12</td>\n </tr>\n </tbody>\n </table>\n</div>"
90
- },
91
- {
92
- "label": "Props",
93
- "language": "json",
94
- "code": null,
95
- "props": [
96
- {
97
- "heading": null,
98
- "rows": [
99
- {
100
- "name": "items",
101
- "type": "T[]",
102
- "default": "",
103
- "description": "The array of items to be sorted."
104
- },
105
- {
106
- "name": "initialKey",
107
- "type": "SortKey<T> = keyof T | [keyof T, keyof T]",
108
- "default": "",
109
- "description": "The initial key or keys to sort by. Must be a property of the items in the array. It can be either a single string or a tuple like ['name', 'date']"
110
- },
111
- {
112
- "name": "initialDirection",
113
- "type": "SortDirectionType",
114
- "default": "SortDirection.ASCENDING",
115
- "description": "The initial sort direction. Can be SortDirection.ASCENDING or SortDirection.DESCENDING."
116
- },
117
- {
118
- "name": "enableNaturalSort",
119
- "type": "boolean",
120
- "default": "true",
121
- "description": "Whether to use natural sort order. Defaults to false."
122
- },
123
- {
124
- "name": "{ sortedItems, sortKey, sortDirection, setSortKey, setSortDirection, toggleDirection }",
125
- "type": "Object",
126
- "default": "",
127
- "description": "Returns an object containing: \"sortedItems\" - the sorted array \"sortKey\" - the key(s) to sort the data for \"sortDirection\" - the current direction that the data is sorted \"setSortKey\" - function to change the sorting key(s) afterwards \"setSortDirection\" - function to change the sorting order afterwards \"toggleDirection\" - function to toggle sort direction"
128
- }
129
- ]
130
- }
131
- ]
132
- }
133
- ]
134
- }
135
- ]
136
- }
137
- ],
138
- "see_also": []
139
- }
@@ -1,69 +0,0 @@
1
- {
2
- "metadata": {
3
- "captured_at": "2025-11-21T12:08:46.703Z",
4
- "source": "https://uikit.developers.rio.cloud/#utilities/useStateWithValidation",
5
- "category": "Utilities",
6
- "section": "UI state & input hooks",
7
- "slug": "utilities/usestatewithvalidation",
8
- "version": "v1.13.2",
9
- "hash_algorithm": "sha256",
10
- "hash": "77e612c9f88d56aa90c328f41234b4f5544ae865f7b4322aee5b67788acc7e9b"
11
- },
12
- "title": "useStateWithValidation",
13
- "lead": "The useStateWithValidation hook allows to easily validate state. This comes in handy when validating form inputs.",
14
- "content": [
15
- {
16
- "heading": "useStateWithValidation",
17
- "body": "",
18
- "examples": [
19
- {
20
- "caption": "Example 1",
21
- "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><div class=\"display-flex flex-column max-width-400\"><div class=\"form-group \"><label for=\"inputUsername\">Username</label><div class=\"form-control-feedback-wrapper\"><input id=\"inputUsername\" type=\"text\" class=\"form-control\" placeholder=\"Please enter your username\" value=\"\"></div></div></div></div>",
22
- "tabs": [
23
- {
24
- "label": "React",
25
- "language": "tsx",
26
- "code": "import useStateWithValidation from '@rio-cloud/rio-uikit/useStateWithValidation';\n\nexport default () => {\n const validationFn = (name: string) => name.length > 5;\n\n const [username, setUsername, isValid] = useStateWithValidation<string>(validationFn, '');\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setUsername(event.target.value);\n };\n\n const showError = username.length > 0 && !isValid;\n\n return (\n <div className='display-flex flex-column max-width-400'>\n <div className={`form-group ${showError ? 'has-error has-feedback' : ''}`}>\n <label htmlFor='inputUsername'>Username</label>\n <div className='form-control-feedback-wrapper'>\n <input\n id='inputUsername'\n type='text'\n className='form-control'\n placeholder='Please enter your username'\n value={username}\n onChange={handleInputChange}\n />\n {showError && (\n <>\n <span className='form-control-feedback rioglyph rioglyph-error-sign' />\n <span className='help-block'>\n <span>Username is to short. Please enter at least 5 characters.</span>\n </span>\n </>\n )}\n </div>\n </div>\n </div>\n );\n};"
27
- },
28
- {
29
- "label": "HTML",
30
- "language": "html",
31
- "code": "<div class=\"display-flex flex-column max-width-400\">\n <div class=\"form-group \">\n <label for=\"inputUsername\">Username</label>\n <div class=\"form-control-feedback-wrapper\">\n <input id=\"inputUsername\" type=\"text\" class=\"form-control\" placeholder=\"Please enter your username\" value=\"\">\n </div>\n </div>\n</div>"
32
- },
33
- {
34
- "label": "Props",
35
- "language": "json",
36
- "code": null,
37
- "props": [
38
- {
39
- "heading": null,
40
- "rows": [
41
- {
42
- "name": "validationFn",
43
- "type": "Function",
44
- "default": "",
45
- "description": "The validation function that gets invoked when the passed state changes."
46
- },
47
- {
48
- "name": "initialValue",
49
- "type": "Any",
50
- "default": "",
51
- "description": "The initial state value."
52
- },
53
- {
54
- "name": "[state, onChange, isValid]",
55
- "type": "Array",
56
- "default": "",
57
- "description": "Returns the actual \"state\", the \"onChange\" function that will be invoked when the state changes, and the \"isValid\" flag."
58
- }
59
- ]
60
- }
61
- ]
62
- }
63
- ]
64
- }
65
- ]
66
- }
67
- ],
68
- "see_also": []
69
- }
@@ -1,86 +0,0 @@
1
- {
2
- "metadata": {
3
- "captured_at": "2025-11-21T12:08:47.989Z",
4
- "source": "https://uikit.developers.rio.cloud/#utilities/useSum",
5
- "category": "Utilities",
6
- "section": "Data aggregation hooks",
7
- "slug": "utilities/usesum",
8
- "version": "v1.13.2",
9
- "hash_algorithm": "sha256",
10
- "hash": "3e33967495c84f3cb1348ac254d23b0aba0e2edfe8d2f40e1b08e54392fa2c84"
11
- },
12
- "title": "useSum",
13
- "lead": "The useSum hook is a versatile utility for calculating the total of numeric, localized values within a list of objects—particularly useful for rendering totals in table footers, dashboards, or KPIs.",
14
- "content": [
15
- {
16
- "heading": "useSum",
17
- "body": "It supports locale-aware number parsing (e.g. 1.234,50 € or 2 500,75 kg)",
18
- "examples": [
19
- {
20
- "caption": "Example 1",
21
- "rendered_html": "<div class=\"playground-content bg-white padding-20 padding-bottom-25\" style=\"width: 100%;\"><ul><li>3.930,75 km</li><li>5.197&nbsp;€</li><li>1860min</li><li>31h</li><li>185 km</li></ul></div>",
22
- "tabs": [
23
- {
24
- "label": "React",
25
- "language": "tsx",
26
- "code": "import { FormattedNumber, IntlProvider } from 'react-intl';\n\nimport useSum from '@rio-cloud/rio-uikit/useSum';\n\nexport default () => {\n const weightSum = useSum(deliveries, 'shipment.weight', { locale: 'de-DE' });\n const valueSum = useSum(deliveries, 'shipment.value', { locale: 'de-DE' });\n\n const durationSum = useSum(deliveries, 'shipment.duration');\n\n const mileage = useSum(deliveries, 'vehicle.mileage');\n\n return (\n <IntlProvider locale='de-DE'>\n <ul>\n <li>\n <FormattedNumber\n value={weightSum}\n minimumFractionDigits={0}\n maximumFractionDigits={2}\n style='unit'\n unit='kilometer'\n />\n </li>\n <li>\n <FormattedNumber\n value={valueSum}\n style='currency'\n currency='EUR'\n minimumFractionDigits={0}\n maximumFractionDigits={0}\n />\n </li>\n <li>{durationSum}min</li>\n <li>\n <FormattedNumber value={durationSum / 60} maximumFractionDigits={1} />h\n </li>\n <li>\n <FormattedNumber value={mileage} maximumFractionDigits={0} style='unit' unit='kilometer' />\n </li>\n </ul>\n </IntlProvider>\n );\n};\n\nconst deliveries = [\n {\n id: 'D-1001',\n vehicle: {\n mileage: 97.5,\n },\n shipment: {\n weight: '1.200,5 kg',\n value: '2.345,50 €',\n duration: 90, // raw minutes\n },\n },\n {\n id: 'D-1002',\n vehicle: {\n mileage: 10,\n },\n shipment: {\n weight: '980,25 kg',\n value: '1,000.75€',\n duration: 150, // raw minutes\n },\n },\n {\n id: 'D-1003',\n vehicle: {\n mileage: 56,\n },\n shipment: {\n weight: '750kg',\n value: 850,\n duration: 1440, // raw minutes\n },\n },\n {\n id: 'D-1004',\n vehicle: {\n mileage: 21,\n },\n shipment: {\n weight: '1.000 kg',\n value: '2.000,00 €',\n duration: 180, // raw minutes\n },\n },\n];"
27
- },
28
- {
29
- "label": "HTML",
30
- "language": "html",
31
- "code": "<ul>\n <li>3.930,75 km</li>\n <li>5.197&nbsp;€</li>\n <li>1860min</li>\n <li>31h</li>\n <li>185 km</li>\n</ul>"
32
- },
33
- {
34
- "label": "Props",
35
- "language": "json",
36
- "code": null,
37
- "props": [
38
- {
39
- "heading": "Options for the `useSum` hook",
40
- "rows": [
41
- {
42
- "name": "items",
43
- "type": "unknown[]",
44
- "default": "",
45
- "description": "The array of objects to aggregate values from."
46
- },
47
- {
48
- "name": "path",
49
- "type": "string",
50
- "default": "",
51
- "description": "Dot-separated path to the numeric value in each object."
52
- },
53
- {
54
- "name": "options",
55
- "type": "object",
56
- "default": "",
57
- "description": "Optional configuration for parsing behavior."
58
- },
59
- {
60
- "name": "└locale",
61
- "type": "string",
62
- "default": "\"en-GB\"",
63
- "description": "Locale string used to parse localized number formats. Affects how grouping and decimal separators are interpreted."
64
- }
65
- ]
66
- },
67
- {
68
- "heading": "Return value of the `useSum` hook",
69
- "rows": [
70
- {
71
- "name": "sum",
72
- "type": "number",
73
- "default": "",
74
- "description": "The total sum of all parsed values from the provided path in the given item list."
75
- }
76
- ]
77
- }
78
- ]
79
- }
80
- ]
81
- }
82
- ]
83
- }
84
- ],
85
- "see_also": []
86
- }
@@ -1,87 +0,0 @@
1
- {
2
- "metadata": {
3
- "captured_at": "2025-11-21T12:08:48.453Z",
4
- "source": "https://uikit.developers.rio.cloud/#utilities/useTableExport",
5
- "category": "Utilities",
6
- "section": "Table & data hooks",
7
- "slug": "utilities/usetableexport",
8
- "version": "v1.13.2",
9
- "hash_algorithm": "sha256",
10
- "hash": "06bc73eccf7c068c3d801e0cd591181440cea0187f99cf7e009173016573a69c"
11
- },
12
- "title": "useTableExport",
13
- "lead": "The useTableExport hook provides a simple and reusable way to export tabular data as a downloadable CSV file in React applications. It supports custom delimiters, UTF-8 BOM for Excel compatibility, and column header mapping for more readable exports. This is especially useful for tables with user-facing data that may need to be downloaded for offline analysis or reporting.",
14
- "content": [
15
- {
16
- "heading": "useTableExport",
17
- "body": "",
18
- "examples": [
19
- {
20
- "caption": "Example 1",
21
- "rendered_html": "<div class=\"playground-content bg-lighter padding-20 padding-bottom-25\" style=\"width: 100%;\"><div><div class=\"table-toolbar\"><div class=\"table-toolbar-container\"><div class=\"table-toolbar-group-right\"><div class=\"table-toolbar-column\"><button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\"><span class=\"rioglyph rioglyph-download\"></span>Export data</button></div></div></div></div><div class=\"table-responsive\"><table class=\"table table-layout-fixed table-column-overflow-hidden table-bordered table-sticky table-hover table-head-filled\"><colgroup><col class=\"\" style=\"min-width: 100px; width: 100px;\"><col class=\"\" style=\"min-width: 200px; width: 200px;\"><col class=\"\"><col class=\"\"></colgroup><thead><tr><th class=\"user-select-none sort-column\" data-field=\"driverId\" data-sortby=\"driverId\" title=\"Id\"><span><span class=\"sort-arrows sort-asc\"></span><span>Id</span></span></th><th class=\"user-select-none sort-column\" data-field=\"firstName\" data-sortby=\"firstName\" title=\"First name\"><span><span class=\"sort-arrows \"></span><span>First name</span></span></th><th class=\"user-select-none sort-column\" data-field=\"lastName\" data-sortby=\"lastName\" title=\"Last name\"><span><span class=\"sort-arrows \"></span><span>Last name</span></span></th><th class=\"user-select-none sort-column\" data-field=\"email\" data-sortby=\"email\" title=\"E-mail\"><span><span class=\"sort-arrows \"></span><span>E-mail</span></span></th></tr></thead><tbody><tr data-id=\"1\" class=\"cursor-pointer\"><td data-field=\"Id\"><span>1</span></td><td data-field=\"First name\"><span>Christa</span></td><td data-field=\"Last name\"><span>O'Connell</span></td><td data-field=\"E-mail\"><span>Elizabeth_McCullough@hotmail.com</span></td></tr><tr data-id=\"2\" class=\"cursor-pointer\"><td data-field=\"Id\"><span>2</span></td><td data-field=\"First name\"><span>Sandrine</span></td><td data-field=\"Last name\"><span>Cartwright</span></td><td data-field=\"E-mail\"><span>Clint55@gmail.com</span></td></tr><tr data-id=\"3\" class=\"cursor-pointer\"><td data-field=\"Id\"><span>3</span></td><td data-field=\"First name\"><span>Jennie</span></td><td data-field=\"Last name\"><span>Lubowitz</span></td><td data-field=\"E-mail\"><span>Arnold.Gusikowski68@gmail.com</span></td></tr><tr data-id=\"4\" class=\"cursor-pointer\"><td data-field=\"Id\"><span>4</span></td><td data-field=\"First name\"><span>Roman</span></td><td data-field=\"Last name\"><span>Davis</span></td><td data-field=\"E-mail\"><span>Rosetta_Johns@hotmail.com</span></td></tr><tr data-id=\"5\" class=\"cursor-pointer\"><td data-field=\"Id\"><span>5</span></td><td data-field=\"First name\"><span>Oren</span></td><td data-field=\"Last name\"><span>Jacobi</span></td><td data-field=\"E-mail\"><span>Sabryna.Lebsack69@gmail.com</span></td></tr><tr data-id=\"6\" class=\"cursor-pointer\"><td data-field=\"Id\"><span>6</span></td><td data-field=\"First name\"><span>Jedediah</span></td><td data-field=\"Last name\"><span>Russel</span></td><td data-field=\"E-mail\"><span>Kennedi_Kerluke@hotmail.com</span></td></tr><tr data-id=\"7\" class=\"cursor-pointer\"><td data-field=\"Id\"><span>7</span></td><td data-field=\"First name\"><span>Brianne</span></td><td data-field=\"Last name\"><span>Heller</span></td><td data-field=\"E-mail\"><span>Jarvis76@yahoo.com</span></td></tr><tr data-id=\"8\" class=\"cursor-pointer\"><td data-field=\"Id\"><span>8</span></td><td data-field=\"First name\"><span>Rosario</span></td><td data-field=\"Last name\"><span>Gleichner</span></td><td data-field=\"E-mail\"><span>Larry.Durgan50@hotmail.com</span></td></tr><tr data-id=\"9\" class=\"cursor-pointer\"><td data-field=\"Id\"><span>9</span></td><td data-field=\"First name\"><span>Crystal</span></td><td data-field=\"Last name\"><span>Carter</span></td><td data-field=\"E-mail\"><span>Elsie63@yahoo.com</span></td></tr><tr data-id=\"10\" class=\"cursor-pointer\"><td data-field=\"Id\"><span>10</span></td><td data-field=\"First name\"><span>Beatrice</span></td><td data-field=\"Last name\"><span>Bashirian</span></td><td data-field=\"E-mail\"><span>Johnpaul71@yahoo.com</span></td></tr></tbody></table></div></div></div>",
22
- "tabs": [
23
- {
24
- "label": "React",
25
- "language": "tsx",
26
- "code": "import classNames from 'classnames';\nimport faker from 'faker';\n\nimport TableHead from '@rio-cloud/rio-uikit/TableHead';\nimport TableCol, { type ColumnDetailsMap } from '@rio-cloud/rio-uikit/TableCol';\nimport TableToolbar from '@rio-cloud/rio-uikit/TableToolbar';\nimport useTableExport from '@rio-cloud/rio-uikit/useTableExport';\nimport useSorting from '@rio-cloud/rio-uikit/useSorting';\nimport Button from '@rio-cloud/rio-uikit/Button';\n\ntype Driver = {\n driverId: string;\n firstName: string;\n lastName: string;\n email: string;\n};\n\ntype ColumnLabel = { [key in keyof Driver]: string };\n\nconst columnLabels: ColumnLabel = {\n driverId: 'Id',\n firstName: 'First name',\n lastName: 'Last name',\n email: 'E-mail',\n};\n\nconst defaultColumnOrder = ['driverId', 'firstName', 'lastName', 'email'];\n\nconst demoColumnsDetails: ColumnDetailsMap = {\n driverId: {\n width: 100,\n defaultWidth: 200,\n maxWidth: 300,\n },\n firstName: {\n width: 200,\n defaultWidth: 200,\n maxWidth: 200,\n },\n lastName: {\n width: 0, // Note: 0 means auto width\n defaultWidth: 0,\n maxWidth: 350,\n },\n};\n\n// Function to generate random entries to work with.\n// Increase length to generate more items.\nconst driverList: Driver[] = Array.from({ length: 10 }, (_, index) => ({\n driverId: `${index + 1}`,\n firstName: faker.name.firstName(),\n lastName: faker.name.lastName(),\n email: faker.internet.email(),\n}));\n\nexport default () => {\n const { sortedItems, sortKey, sortDirection, setSortKey, toggleDirection } = useSorting(driverList, 'driverId');\n\n // Hook to export the Table data\n const { exportToCSV } = useTableExport<Driver>();\n\n const handleTableExport = () => {\n exportToCSV({\n data: sortedItems,\n fileName: 'drivers.csv',\n headers: columnLabels,\n });\n };\n\n const handleSortChange = (event: React.MouseEvent<HTMLTableCellElement>) => {\n const newSortBy = event.currentTarget.getAttribute('data-sortby');\n if (newSortBy) {\n setSortKey(newSortBy as keyof Driver);\n }\n if (newSortBy === sortKey) {\n toggleDirection();\n }\n };\n\n const tableClassNames = classNames(\n 'table',\n 'table-layout-fixed',\n 'table-column-overflow-hidden',\n 'table-bordered',\n 'table-sticky',\n 'table-hover',\n 'table-head-filled'\n );\n\n return (\n <div>\n <TableToolbar>\n <div className='table-toolbar-container'>\n <div className='table-toolbar-group-right'>\n <div className='table-toolbar-column'>\n <Button iconName='rioglyph-download' onClick={handleTableExport}>\n Export data\n </Button>\n </div>\n </div>\n </div>\n </TableToolbar>\n\n <div className='table-responsive'>\n <table className={tableClassNames}>\n <colgroup>\n {defaultColumnOrder.map(column => (\n <TableCol key={column} columnDetails={demoColumnsDetails[column]} />\n ))}\n </colgroup>\n <thead>\n <tr>\n {defaultColumnOrder.map(column => (\n <TableHead\n key={column}\n column={column}\n label={columnLabels[column as keyof ColumnLabel]}\n sortBy={sortKey as string}\n sortDir={sortDirection}\n onClick={handleSortChange}\n />\n ))}\n </tr>\n </thead>\n <tbody>\n {sortedItems.map(row => (\n <tr key={row.driverId} data-id={row.driverId} className='cursor-pointer'>\n {defaultColumnOrder.map(col => (\n <td key={col} data-field={columnLabels[col as keyof Driver]}>\n <span>{row[col as keyof Driver]}</span>\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </div>\n );\n};"
27
- },
28
- {
29
- "label": "HTML",
30
- "language": "html",
31
- "code": "<div>\n <div class=\"table-toolbar\">\n <div class=\"table-toolbar-container\">\n <div class=\"table-toolbar-group-right\">\n <div class=\"table-toolbar-column\">\n <button type=\"button\" class=\"btn btn-default btn-component\" tabindex=\"0\">\n <span class=\"rioglyph rioglyph-download\">\n </span>Export data</button>\n </div>\n </div>\n </div>\n </div>\n <div class=\"table-responsive\">\n <table class=\"table table-layout-fixed table-column-overflow-hidden table-bordered table-sticky table-hover table-head-filled\">\n <colgroup>\n <col class=\"\" style=\"min-width: 100px; width: 100px;\">\n <col class=\"\" style=\"min-width: 200px; width: 200px;\">\n <col class=\"\">\n <col class=\"\">\n </colgroup>\n <thead>\n <tr>\n <th class=\"user-select-none sort-column\" data-field=\"driverId\" data-sortby=\"driverId\" title=\"Id\">\n <span>\n <span class=\"sort-arrows sort-asc\">\n </span>\n <span>Id</span>\n </span>\n </th>\n <th class=\"user-select-none sort-column\" data-field=\"firstName\" data-sortby=\"firstName\" title=\"First name\">\n <span>\n <span class=\"sort-arrows \">\n </span>\n <span>First name</span>\n </span>\n </th>\n <th class=\"user-select-none sort-column\" data-field=\"lastName\" data-sortby=\"lastName\" title=\"Last name\">\n <span>\n <span class=\"sort-arrows \">\n </span>\n <span>Last name</span>\n </span>\n </th>\n <th class=\"user-select-none sort-column\" data-field=\"email\" data-sortby=\"email\" title=\"E-mail\">\n <span>\n <span class=\"sort-arrows \">\n </span>\n <span>E-mail</span>\n </span>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr data-id=\"1\" class=\"cursor-pointer\">\n <td data-field=\"Id\">\n <span>1</span>\n </td>\n <td data-field=\"First name\">\n <span>Christa</span>\n </td>\n <td data-field=\"Last name\">\n <span>O'Connell</span>\n </td>\n <td data-field=\"E-mail\">\n <span>Elizabeth_McCullough@hotmail.com</span>\n </td>\n </tr>\n <tr data-id=\"2\" class=\"cursor-pointer\">\n <td data-field=\"Id\">\n <span>2</span>\n </td>\n <td data-field=\"First name\">\n <span>Sandrine</span>\n </td>\n <td data-field=\"Last name\">\n <span>Cartwright</span>\n </td>\n <td data-field=\"E-mail\">\n <span>Clint55@gmail.com</span>\n </td>\n </tr>\n <tr data-id=\"3\" class=\"cursor-pointer\">\n <td data-field=\"Id\">\n <span>3</span>\n </td>\n <td data-field=\"First name\">\n <span>Jennie</span>\n </td>\n <td data-field=\"Last name\">\n <span>Lubowitz</span>\n </td>\n <td data-field=\"E-mail\">\n <span>Arnold.Gusikowski68@gmail.com</span>\n </td>\n </tr>\n <tr data-id=\"4\" class=\"cursor-pointer\">\n <td data-field=\"Id\">\n <span>4</span>\n </td>\n <td data-field=\"First name\">\n <span>Roman</span>\n </td>\n <td data-field=\"Last name\">\n <span>Davis</span>\n </td>\n <td data-field=\"E-mail\">\n <span>Rosetta_Johns@hotmail.com</span>\n </td>\n </tr>\n <tr data-id=\"5\" class=\"cursor-pointer\">\n <td data-field=\"Id\">\n <span>5</span>\n </td>\n <td data-field=\"First name\">\n <span>Oren</span>\n </td>\n <td data-field=\"Last name\">\n <span>Jacobi</span>\n </td>\n <td data-field=\"E-mail\">\n <span>Sabryna.Lebsack69@gmail.com</span>\n </td>\n </tr>\n <tr data-id=\"6\" class=\"cursor-pointer\">\n <td data-field=\"Id\">\n <span>6</span>\n </td>\n <td data-field=\"First name\">\n <span>Jedediah</span>\n </td>\n <td data-field=\"Last name\">\n <span>Russel</span>\n </td>\n <td data-field=\"E-mail\">\n <span>Kennedi_Kerluke@hotmail.com</span>\n </td>\n </tr>\n <tr data-id=\"7\" class=\"cursor-pointer\">\n <td data-field=\"Id\">\n <span>7</span>\n </td>\n <td data-field=\"First name\">\n <span>Brianne</span>\n </td>\n <td data-field=\"Last name\">\n <span>Heller</span>\n </td>\n <td data-field=\"E-mail\">\n <span>Jarvis76@yahoo.com</span>\n </td>\n </tr>\n <tr data-id=\"8\" class=\"cursor-pointer\">\n <td data-field=\"Id\">\n <span>8</span>\n </td>\n <td data-field=\"First name\">\n <span>Rosario</span>\n </td>\n <td data-field=\"Last name\">\n <span>Gleichner</span>\n </td>\n <td data-field=\"E-mail\">\n <span>Larry.Durgan50@hotmail.com</span>\n </td>\n </tr>\n <tr data-id=\"9\" class=\"cursor-pointer\">\n <td data-field=\"Id\">\n <span>9</span>\n </td>\n <td data-field=\"First name\">\n <span>Crystal</span>\n </td>\n <td data-field=\"Last name\">\n <span>Carter</span>\n </td>\n <td data-field=\"E-mail\">\n <span>Elsie63@yahoo.com</span>\n </td>\n </tr>\n <tr data-id=\"10\" class=\"cursor-pointer\">\n <td data-field=\"Id\">\n <span>10</span>\n </td>\n <td data-field=\"First name\">\n <span>Beatrice</span>\n </td>\n <td data-field=\"Last name\">\n <span>Bashirian</span>\n </td>\n <td data-field=\"E-mail\">\n <span>Johnpaul71@yahoo.com</span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</div>"
32
- },
33
- {
34
- "label": "Props",
35
- "language": "json",
36
- "code": null,
37
- "props": [
38
- {
39
- "heading": "Options of the returned `exportToCSV` function",
40
- "rows": [
41
- {
42
- "name": "data",
43
- "type": "T[]",
44
- "default": "",
45
- "description": "Array of data objects to export. Each object represents one row in the table."
46
- },
47
- {
48
- "name": "fileName",
49
- "type": "string",
50
- "default": "export.csv",
51
- "description": "Optional name for the exported file."
52
- },
53
- {
54
- "name": "columns",
55
- "type": "(keyof T)[]",
56
- "default": "",
57
- "description": "Optional list of object keys to export as columns. If omitted, all keys from the first row will be used."
58
- },
59
- {
60
- "name": "headers",
61
- "type": "Partial<Record<keyof T, string>>",
62
- "default": "",
63
- "description": "Optional map of column keys to custom header labels. Example: { firstName: 'First Name' }"
64
- },
65
- {
66
- "name": "delimiter",
67
- "type": "string",
68
- "default": ",",
69
- "description": "Optional delimiter to use between values in the CSV. You can use `\";\"` or `\"\\t\"` for other formats."
70
- },
71
- {
72
- "name": "withBom",
73
- "type": "boolean",
74
- "default": "true",
75
- "description": "Whether to include UTF-8 BOM (useful for Excel)."
76
- }
77
- ]
78
- }
79
- ]
80
- }
81
- ]
82
- }
83
- ]
84
- }
85
- ],
86
- "see_also": []
87
- }